Skip to content

Commit 21ae75b

Browse files
committed
Allow funds to be sent directly to domains
1 parent 2e44639 commit 21ae75b

25 files changed

+544
-1
lines changed

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetwork.sol:ColonyNetwork.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetwork.sol:ColonyNetwork",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkAuction.sol:ColonyNetworkAuction.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkAuction.sol:ColonyNetworkAuction",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkDeployer.sol:ColonyNetworkDeployer.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkDeployer.sol:ColonyNetworkDeployer",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkENS.sol:ColonyNetworkENS.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkENS.sol:ColonyNetworkENS",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkExtensions.sol:ColonyNetworkExtensions.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkExtensions.sol:ColonyNetworkExtensions",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkMining.sol:ColonyNetworkMining.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkMining.sol:ColonyNetworkMining",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkSkills.sol:ColonyNetworkSkills.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkSkills.sol:ColonyNetworkSkills",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}

.storage-layouts-normalized/contracts/colonyNetwork/ColonyNetworkStorage.sol:ColonyNetworkStorage.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,17 @@
11321132
}
11331133
}
11341134
}
1135+
},
1136+
{
1137+
"contract": "contracts/colonyNetwork/ColonyNetworkStorage.sol:ColonyNetworkStorage",
1138+
"label": "domainReceiverResolverAddress",
1139+
"offset": 0,
1140+
"slot": "50",
1141+
"type": {
1142+
"encoding": "inplace",
1143+
"label": "address",
1144+
"numberOfBytes": "20"
1145+
}
11351146
}
11361147
]
11371148
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"storage": [
3+
{
4+
"contract": "contracts/common/DomainTokenReceiver.sol:DomainTokenReceiver",
5+
"label": "authority",
6+
"offset": 0,
7+
"slot": "0",
8+
"type": {
9+
"encoding": "inplace",
10+
"label": "contract DSAuthority",
11+
"numberOfBytes": "20"
12+
}
13+
},
14+
{
15+
"contract": "contracts/common/DomainTokenReceiver.sol:DomainTokenReceiver",
16+
"label": "owner",
17+
"offset": 0,
18+
"slot": "1",
19+
"type": {
20+
"encoding": "inplace",
21+
"label": "address",
22+
"numberOfBytes": "20"
23+
}
24+
},
25+
{
26+
"contract": "contracts/common/DomainTokenReceiver.sol:DomainTokenReceiver",
27+
"label": "resolver",
28+
"offset": 0,
29+
"slot": "2",
30+
"type": {
31+
"encoding": "inplace",
32+
"label": "address",
33+
"numberOfBytes": "20"
34+
}
35+
},
36+
{
37+
"contract": "contracts/common/DomainTokenReceiver.sol:DomainTokenReceiver",
38+
"label": "colony",
39+
"offset": 0,
40+
"slot": "3",
41+
"type": {
42+
"encoding": "inplace",
43+
"label": "address",
44+
"numberOfBytes": "20"
45+
}
46+
}
47+
]
48+
}

contracts/colony/ColonyFunding.sol

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { ITokenLocking } from "./../tokenLocking/ITokenLocking.sol";
2323
import { ColonyStorage } from "./ColonyStorage.sol";
2424
import { ERC20Extended } from "./../common/ERC20Extended.sol";
2525
import { IColonyNetwork } from "./../colonyNetwork/IColonyNetwork.sol";
26+
import { DomainTokenReceiver } from "./../common/DomainTokenReceiver.sol";
2627

2728
contract ColonyFunding is
2829
ColonyStorage // ignore-swc-123
@@ -106,6 +107,47 @@ contract ColonyFunding is
106107
emit ColonyFundsClaimed(msgSender(), _token, feeToPay, remainder);
107108
}
108109

110+
function claimDomainFunds(address _token, uint256 _domainId) public stoppable {
111+
require(domainExists(_domainId), "colony-funding-domain-does-not-exist");
112+
address domainTokenReceiverAddress = IColonyNetwork(colonyNetworkAddress)
113+
.checkDomainTokenReceiverDeployed(_domainId);
114+
uint256 fundingPotId = domains[_domainId].fundingPotId;
115+
// It's deployed, so check current balance of pot
116+
uint256 balanceBefore = getFundingPotBalance(fundingPotId, _token);
117+
118+
uint256 claimAmount;
119+
uint256 thisBalanceBefore;
120+
121+
if (_token == address(0x0)) {
122+
claimAmount = address(domainTokenReceiverAddress).balance;
123+
thisBalanceBefore = address(this).balance;
124+
} else {
125+
claimAmount = ERC20Extended(_token).balanceOf(address(domainTokenReceiverAddress));
126+
thisBalanceBefore = ERC20Extended(_token).balanceOf(address(this));
127+
}
128+
129+
fundingPots[fundingPotId].balance[_token] += claimAmount;
130+
131+
// Claim funds
132+
133+
DomainTokenReceiver(domainTokenReceiverAddress).transferToColony(_token);
134+
135+
// Add to funding pot
136+
137+
uint256 balanceAfter = getFundingPotBalance(fundingPotId, _token);
138+
139+
assert(balanceAfter - balanceBefore == claimAmount);
140+
141+
uint256 thisBalanceAfter;
142+
if (_token == address(0x0)) {
143+
thisBalanceAfter = address(this).balance;
144+
} else {
145+
thisBalanceAfter = ERC20Extended(_token).balanceOf(address(this));
146+
}
147+
148+
assert(thisBalanceAfter - thisBalanceBefore == claimAmount);
149+
}
150+
109151
function getNonRewardPotsTotal(address _token) public view returns (uint256) {
110152
return nonRewardPotsTotal[_token];
111153
}

0 commit comments

Comments
 (0)