Skip to content

Commit 379dee2

Browse files
authored
Merge pull request #164 from bane-labs/governance-fix
systemcontracts: fix totalVotes when candidate exits
2 parents 9f2a0c9 + 7e855dd commit 379dee2

File tree

8 files changed

+17
-8
lines changed

8 files changed

+17
-8
lines changed

config/genesis_testnet.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

contracts/solidity/Governance.sol

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,9 @@ contract Governance is IGovernance, ReentrancyGuard, UUPSUpgradeable {
163163
require(!candidateList.contains(msg.sender), "candidate exists");
164164
require(exitHeightOf[msg.sender] == 0, "left not claimed");
165165
candidateList.add(msg.sender);
166+
if (receivedVotes[msg.sender] > 0) {
167+
totalVotes += receivedVotes[msg.sender];
168+
}
166169

167170
// record share rate and balance
168171
shareRateOf[msg.sender] = shareRate;
@@ -175,6 +178,9 @@ contract Governance is IGovernance, ReentrancyGuard, UUPSUpgradeable {
175178
// remove candidate list, balance still locked
176179
candidateList.remove(msg.sender);
177180
exitHeightOf[msg.sender] = block.number;
181+
if (receivedVotes[msg.sender] > 0) {
182+
totalVotes -= receivedVotes[msg.sender];
183+
}
178184
emit Exit(msg.sender);
179185
}
180186

@@ -242,7 +248,10 @@ contract Governance is IGovernance, ReentrancyGuard, UUPSUpgradeable {
242248

243249
// update votes
244250
receivedVotes[candidateFrom] -= amount;
245-
totalVotes -= amount;
251+
// only decrease totalVotes for active candidate
252+
if (candidateList.contains(candidateFrom)) {
253+
totalVotes -= amount;
254+
}
246255
delete votedTo[msg.sender];
247256
delete votedAmount[msg.sender];
248257

privnet/four/genesis_privnet.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

privnet/four/genesis_template.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

privnet/seven/genesis_privnet.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

privnet/seven/genesis_template.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

privnet/single/genesis_privnet.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

privnet/single/genesis_template.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)