Skip to content

Commit 7c38b71

Browse files
add additional check: reward caller is already set
1 parent 84cd2fe commit 7c38b71

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

contracts/bonding/BondingManager.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ contract BondingManager is ManagerProxyTarget, IBondingManager {
211211
*/
212212
function confirmRewardCaller(address _rewardCaller) external whenSystemNotPaused {
213213
require(rewardCallerToTranscoderProposed[_rewardCaller] == msg.sender, "reward caller was not proposed");
214+
require(rewardCallerToTranscoderConfirmed[_rewardCaller] == address(0), "reward caller is already set");
214215
rewardCallerToTranscoderProposed[_rewardCaller] = address(0);
215216
rewardCallerToTranscoderConfirmed[_rewardCaller] = msg.sender;
216217
emit RewardCallerConfirmed(msg.sender, _rewardCaller);
@@ -222,7 +223,7 @@ contract BondingManager is ManagerProxyTarget, IBondingManager {
222223
* @dev Only callable by the transcoder, when the _rewardCaller was already proposed
223224
*/
224225
function removeRewardCaller(address _rewardCaller) external whenSystemNotPaused {
225-
require(rewardCallerToTranscoderConfirmed[_rewardCaller] == msg.sender, "only relevant transcoder can unset");
226+
require(rewardCallerToTranscoderConfirmed[_rewardCaller] == msg.sender, "only relevant transcoder can remove");
226227
rewardCallerToTranscoderConfirmed[_rewardCaller] = address(0);
227228
emit RewardCallerRemoved(msg.sender, _rewardCaller);
228229
}

test/unit/BondingManager.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5414,12 +5414,14 @@ describe("BondingManager", () => {
54145414

54155415
describe("reward", () => {
54165416
let transcoder
5417+
let transcoder2
54175418
let nonTranscoder
54185419
let currentRound
54195420

54205421
beforeEach(async () => {
54215422
transcoder = signers[0]
5422-
nonTranscoder = signers[1]
5423+
transcoder2 = signers[1]
5424+
nonTranscoder = signers[2]
54235425
currentRound = 100
54245426

54255427
await fixture.roundsManager.setMockBool(
@@ -6208,7 +6210,26 @@ describe("BondingManager", () => {
62086210
.connect(nonTranscoder)
62096211
.removeRewardCaller(nonTranscoder.address)
62106212
await expect(removeRewardCallerTx).to.be.revertedWith(
6211-
"only relevant transcoder can unset"
6213+
"only relevant transcoder can remove"
6214+
)
6215+
})
6216+
6217+
it("impossible to confirm RewardCaller for a second transcoder", async () => {
6218+
await bondingManager
6219+
.connect(nonTranscoder)
6220+
.proposeTranscoderForRewardCaller(transcoder.address)
6221+
await bondingManager
6222+
.connect(transcoder)
6223+
.confirmRewardCaller(nonTranscoder.address)
6224+
await bondingManager
6225+
.connect(nonTranscoder)
6226+
.proposeTranscoderForRewardCaller(transcoder2.address)
6227+
6228+
const removeRewardCallerTx = bondingManager
6229+
.connect(transcoder2)
6230+
.confirmRewardCaller(nonTranscoder.address)
6231+
await expect(removeRewardCallerTx).to.be.revertedWith(
6232+
"reward caller is already set"
62126233
)
62136234
})
62146235

0 commit comments

Comments
 (0)