Skip to content

Commit 0229bb1

Browse files
committed
refactor: update fee calculations in DisputeManager and EscrowManager to use calculate_standard_fees
1 parent d37e00e commit 0229bb1

File tree

2 files changed

+30
-33
lines changed

2 files changed

+30
-33
lines changed

contracts/escrow/src/core/dispute.rs

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ impl DisputeManager {
5050
total = BasicMath::safe_add(total, amount)?;
5151
}
5252

53-
let (trustless_fee, platform_fee, total_fees) =
54-
FeeCalculator::calculate_total_fees(total, escrow.platform_fee)?;
53+
let fee_result =
54+
FeeCalculator::calculate_standard_fees(total, escrow.platform_fee)?;
55+
let total_fees = BasicMath::safe_add(fee_result.trustless_work_fee, fee_result.platform_fee)?;
5556

5657
validate_withdraw_remaining_funds_conditions(
5758
&escrow,
@@ -61,14 +62,14 @@ impl DisputeManager {
6162
total,
6263
)?;
6364

64-
if trustless_fee > 0 {
65-
token_client.transfer(&contract_address, &trustless_work_address, &trustless_fee);
65+
if fee_result.trustless_work_fee > 0 {
66+
token_client.transfer(&contract_address, &trustless_work_address, &fee_result.trustless_work_fee);
6667
}
67-
if platform_fee > 0 {
68+
if fee_result.platform_fee > 0 {
6869
token_client.transfer(
6970
&contract_address,
7071
&escrow.roles.platform_address,
71-
&platform_fee,
72+
&fee_result.platform_fee,
7273
);
7374
}
7475
for (addr, amount) in distributions.iter() {
@@ -129,28 +130,28 @@ impl DisputeManager {
129130
total,
130131
)?;
131132

132-
let (trustless_fee, platform_fee, total_fees) =
133-
FeeCalculator::calculate_total_fees(total, escrow.platform_fee)?;
133+
let fee_result =
134+
FeeCalculator::calculate_standard_fees(total, escrow.platform_fee)?;
135+
let total_fees = BasicMath::safe_add(fee_result.trustless_work_fee, fee_result.platform_fee)?;
134136

135-
if trustless_fee > 0 {
136-
token_client.transfer(&contract_address, &trustless_work_address, &trustless_fee);
137+
if fee_result.trustless_work_fee > 0 {
138+
token_client.transfer(&contract_address, &trustless_work_address, &fee_result.trustless_work_fee);
137139
}
138-
if platform_fee > 0 {
140+
if fee_result.platform_fee > 0 {
139141
token_client.transfer(
140142
&contract_address,
141143
&escrow.roles.platform_address,
142-
&platform_fee,
144+
&fee_result.platform_fee,
143145
);
144146
}
145147

146148
for (addr, amount) in distributions.iter() {
147-
if amount <= 0 {
148-
continue;
149-
}
150-
let fee_share = BasicMath::safe_div(BasicMath::safe_mul(amount, total_fees)?, total)?;
151-
let net_amount = BasicMath::safe_sub(amount, fee_share)?;
152-
if net_amount > 0 {
153-
token_client.transfer(&contract_address, &addr, &net_amount);
149+
if amount > 0 {
150+
let fee_share = BasicMath::safe_div(BasicMath::safe_mul(amount, total_fees)?, total)?;
151+
let net_amount = BasicMath::safe_sub(amount, fee_share)?;
152+
if net_amount > 0 {
153+
token_client.transfer(&contract_address, &addr, &net_amount);
154+
}
154155
}
155156
}
156157

contracts/escrow/src/core/escrow.rs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,28 +76,24 @@ impl EscrowManager {
7676
return Err(ContractError::EscrowBalanceNotEnoughToSendEarnings);
7777
}
7878

79-
let (net_share, trustless_fee_share, platform_fee_share) =
80-
FeeCalculator::calculate_net_share(
81-
milestone.amount as i128,
82-
milestone.amount as i128,
83-
escrow.platform_fee,
84-
)?;
85-
let platform_address = escrow.roles.platform_address.clone();
86-
87-
if trustless_fee_share > 0 {
79+
let fee_result =
80+
FeeCalculator::calculate_standard_fees(milestone.amount, escrow.platform_fee)?;
81+
82+
if fee_result.trustless_work_fee > 0 {
8883
token_client.transfer(
8984
&contract_address,
9085
&trustless_work_address,
91-
&trustless_fee_share,
86+
&fee_result.trustless_work_fee,
9287
);
9388
}
94-
if platform_fee_share > 0 {
95-
token_client.transfer(&contract_address, &platform_address, &platform_fee_share);
89+
90+
if fee_result.platform_fee > 0 {
91+
token_client.transfer(&contract_address, &escrow.roles.platform_address, &fee_result.platform_fee);
9692
}
9793

9894
let receiver = Self::get_receiver(&milestone);
99-
if net_share > 0 {
100-
token_client.transfer(&contract_address, &receiver, &net_share);
95+
if fee_result.receiver_amount > 0 {
96+
token_client.transfer(&contract_address, &receiver, &fee_result.receiver_amount);
10197
}
10298
} else {
10399
return Err(ContractError::MilestoneNotFound);

0 commit comments

Comments
 (0)