Skip to content

Commit

Permalink
Update permissions, kill nested terneries with fire
Browse files Browse the repository at this point in the history
  • Loading branch information
area committed Jun 18, 2023
1 parent 1272c2f commit 61a2cae
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 13 deletions.
2 changes: 1 addition & 1 deletion contracts/colony/Colony.sol
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ contract Colony is BasicMetaTransaction, Multicall, ColonyStorage, PatriciaTreeP
sig = bytes4(keccak256("setExpenditureMetadata(uint256,uint256,uint256,string)"));
colonyAuthority.setRoleCapability(uint8(ColonyRole.Arbitration), address(this), sig, true);

sig = bytes4(keccak256("setDomainReputationScaling(uint256,bool,uint256)"));
sig = bytes4(keccak256("setDomainReputationScaling(uint256,uint256)"));
colonyAuthority.setRoleCapability(uint8(ColonyRole.Root), address(this), sig, true);

// Set the default token weighting for the native token
Expand Down
2 changes: 1 addition & 1 deletion contracts/colony/ColonyAuthority.sol
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ contract ColonyAuthority is CommonAuthority {
addRoleCapability(ARBITRATION_ROLE, "setExpenditurePayout(uint256,uint256,uint256,uint256,address,uint256)");

// Added in colony v xxxxx
addRoleCapability(ROOT_ROLE, "setDomainReputationScaling(uint256,bool,uint256)");
addRoleCapability(ROOT_ROLE, "setDomainReputationScaling(uint256,uint256)");
addRoleCapability(ROOT_ROLE, "setReputationDecayRate(uint256,uint256)");
addRoleCapability(ROOT_ROLE, "setReputationMiningCycleRewardReputationScaling(uint256)");

Expand Down
10 changes: 7 additions & 3 deletions contracts/common/ScaleReputation.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,13 @@ contract ScaleReputation is DSMath {
if (reputationAmount == 0 || scaleFactor == 0) { return 0; }

int256 sgnAmount = (reputationAmount >= 0) ? int256(1) : -1;
int256 absAmount = (reputationAmount == type(int256).min)
? type(int256).max // Off by one, but best we can do - probably gets capped anyway
: (reputationAmount >= 0) ? reputationAmount : -reputationAmount;
int256 absAmount;

if (reputationAmount == type(int256).min){
absAmount = type(int256).max; // Off by one, but best we can do - probably gets capped anyway
} else {
absAmount = reputationAmount >= 0 ? reputationAmount : -reputationAmount;
}

// Guard against overflows during calculation with wmul
if (type(uint256).max / scaleFactor < uint256(absAmount)) {
Expand Down
10 changes: 2 additions & 8 deletions test/contracts-network/colony.js
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ contract("Colony", (accounts) => {
});

it("cannot set scale factor to larger than 1", async () => {
await checkErrorRevert(colony.setDomainReputationScaling(1, WAD.muln(2)), "colony-invalid-scale-factor");
await checkErrorRevert(colony.setDomainReputationScaling(1, WAD.muln(2)), "colony-network-invalid-reputation-scale-factor");
});

it("non-root users cannot set domain scale factor", async () => {
Expand All @@ -563,15 +563,9 @@ contract("Colony", (accounts) => {
expect(skill.reputationScalingFactorComplement).to.be.eq.BN(WAD);
});

it("setting domain reputation scaling to false with a nonzero scale factor fails", async () => {
await colony.setDomainReputationScaling(1, WAD.divn(2));

await checkErrorRevert(colony.setDomainReputationScaling(1, 1), "colony-invalid-configuration");
});

it("an event is emitted when reputation scaling is changed", async () => {
const tx = await colony.setDomainReputationScaling(1, WAD.divn(2));
await expectEvent(tx, "DomainReputationScalingSet(uint256,bool,uint256)", [1, true, WAD.divn(2)]);
await expectEvent(tx, "DomainReputationScalingSet(uint256,uint256)", [1, WAD.divn(2)]);
});
});

Expand Down
3 changes: 3 additions & 0 deletions test/reputation-system/root-hash-submissions.js
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,9 @@ contract("Reputation mining - root hash submissions", (accounts) => {

const reputationUpdateLogLength = await inactiveRepCycle.getReputationUpdateLogLength();
expect(reputationUpdateLogLength).to.eq.BN(2);

// Reset scaling factor
await metaColony.setReputationMiningCycleRewardReputationScaling(WAD);
});

it("should only allow 12 entries to back a single hash in each cycle", async () => {
Expand Down

0 comments on commit 61a2cae

Please sign in to comment.