Skip to content

Commit

Permalink
Directly fund domains review changes
Browse files Browse the repository at this point in the history
  • Loading branch information
area committed Oct 23, 2024
1 parent d8d69f2 commit edc7c57
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 29 deletions.
30 changes: 13 additions & 17 deletions contracts/colony/ColonyFunding.sol
Original file line number Diff line number Diff line change
Expand Up @@ -132,25 +132,21 @@ contract ColonyFunding is
fundingPots[0].balance[_token] += feeToPay;

uint256 approvedAmount = domainReputationTokenApprovals[block.chainid][_domainId][_token];
if (!tokenEarnsReputationOnPayout(_token) || approvedAmount >= remainder) {
// Either the token doesn't earn reputation or there is enough approval
// Either way, the domain gets all the funds
fundingPots[fundingPotId].balance[_token] += remainder;
if (tokenEarnsReputationOnPayout(_token)) {
// If it does earn reputation, deduct the approved amount
domainReputationTokenApprovals[block.chainid][_domainId][_token] -= remainder;

if (tokenEarnsReputationOnPayout(_token)) {
uint256 transferrableAmount = min(approvedAmount, remainder);
uint256 untransferrableAmount = remainder - transferrableAmount;

fundingPots[fundingPotId].balance[_token] += transferrableAmount;
domainReputationTokenApprovals[block.chainid][_domainId][_token] -= transferrableAmount;
emit DomainFundsClaimed(msgSender(), _token, _domainId, feeToPay, transferrableAmount);
if (untransferrableAmount > 0) {
fundingPots[domains[1].fundingPotId].balance[_token] += untransferrableAmount;
emit ColonyFundsClaimed(msgSender(), _token, 0, untransferrableAmount);
}
emit DomainFundsClaimed(msgSender(), _token, _domainId, feeToPay, remainder);
} else {
// The token earns reputation and there is not enough approvalable
// The domain gets what was approved
fundingPots[fundingPotId].balance[_token] += approvedAmount;
// And the rest goes to the root pot
Domain storage rootDomain = domains[1];
fundingPots[rootDomain.fundingPotId].balance[_token] += remainder - approvedAmount;
domainReputationTokenApprovals[block.chainid][_domainId][_token] = 0;
emit DomainFundsClaimed(msgSender(), _token, _domainId, feeToPay, approvedAmount);
emit ColonyFundsClaimed(msgSender(), _token, 0, remainder - approvedAmount);
fundingPots[fundingPotId].balance[_token] += remainder;
emit DomainFundsClaimed(msgSender(), _token, _domainId, feeToPay, remainder);
}

// Claim funds
Expand Down
16 changes: 8 additions & 8 deletions contracts/colonyNetwork/ColonyNetworkDeployer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -220,14 +220,6 @@ contract ColonyNetworkDeployer is ColonyNetworkStorage {
return domainTokenReceiverAddress;
}

function isContract(address addr) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(addr)
}
return size > 0;
}

function getDomainTokenReceiverAddress(
address _colony,
uint256 _domainId
Expand Down Expand Up @@ -332,4 +324,12 @@ contract ColonyNetworkDeployer is ColonyNetworkStorage {
);
return address(etherRouter);
}

function isContract(address addr) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(addr)
}
return size > 0;
}
}
6 changes: 2 additions & 4 deletions contracts/common/DomainTokenReceiver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,9 @@ contract DomainTokenReceiver is DSAuth {
payable(colony).transfer(address(this).balance);
return;
} else {
uint256 balanceToTransfer = ERC20Extended(tokenAddress).balanceOf(address(this));
require(
ERC20Extended(tokenAddress).transfer(
colony,
ERC20Extended(tokenAddress).balanceOf(address(this))
),
ERC20Extended(tokenAddress).transfer(colony, balanceToTransfer),
"domain-token-receiver-transfer-failed"
);
}
Expand Down

0 comments on commit edc7c57

Please sign in to comment.