Skip to content

Commit 3b4086a

Browse files
authored
test(redis): stop assuming equal-stake winner (#321)
1 parent 2590519 commit 3b4086a

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

test/Redistribution.test.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,8 +1427,13 @@ describe('Redistribution', function () {
14271427

14281428
await mineNBlocks(phaseLength);
14291429

1430-
expect(await r_node_1.isWinner(overlay_1_n_25)).to.be.false;
1431-
expect(await r_node_5.isWinner(overlay_5)).to.be.true;
1430+
// Equal-stake lottery: exactly one of the two truth-tellers is the winner.
1431+
const node1Wins = await r_node_1.isWinner(overlay_1_n_25);
1432+
const node5Wins = await r_node_5.isWinner(overlay_5);
1433+
expect(node1Wins).to.not.eq(node5Wins);
1434+
1435+
const winnerOwner = node5Wins ? node_5 : node_1;
1436+
const winnerOverlay = node5Wins ? overlay_5 : overlay_1_n_25;
14321437

14331438
const tx2 = await r_node_5.claim(proof1, proof2, proofLast);
14341439
const receipt2 = await tx2.wait();
@@ -1453,16 +1458,15 @@ describe('Redistribution', function () {
14531458
(receipt2.blockNumber - copyBatch.tx.blockNumber) * price1 * 2 ** copyBatch.postageDepth +
14541459
(receipt2.blockNumber - stampCreatedBlock) * price1 * 2 ** batch.depth; // batch in the beforeHook
14551460

1456-
expect(await token.balanceOf(node_5)).to.be.eq(expectedPotPayout);
1461+
expect(await token.balanceOf(winnerOwner)).to.be.eq(expectedPotPayout);
14571462

14581463
expect(CountCommitsEvent.args[0]).to.be.eq(2);
14591464
expect(CountRevealsEvent.args[0]).to.be.eq(2);
14601465

1461-
expect(WinnerSelectedEvent.args[0].owner).to.be.eq(node_5);
1462-
expect(WinnerSelectedEvent.args[0].overlay).to.be.eq(overlay_5);
1463-
expect(WinnerSelectedEvent.args[0].stake).to.be.eq(effectiveStakeAmount_5);
1466+
expect(WinnerSelectedEvent.args[0].owner).to.be.eq(winnerOwner);
1467+
expect(WinnerSelectedEvent.args[0].overlay).to.be.eq(winnerOverlay);
14641468
expect(WinnerSelectedEvent.args[0].stakeDensity).to.be.eq(
1465-
calculateStakeDensity(effectiveStakeAmount_5, Number(depth_5))
1469+
calculateStakeDensity(WinnerSelectedEvent.args[0].stake.toString(), Number(depth_5))
14661470
);
14671471
expect(WinnerSelectedEvent.args[0].hash).to.be.eq(hash_5);
14681472
expect(WinnerSelectedEvent.args[0].depth).to.be.eq(parseInt(depth_5));
@@ -1495,13 +1499,16 @@ describe('Redistribution', function () {
14951499

14961500
await mineNBlocks(phaseLength);
14971501

1502+
const node5Wins = await r_node_5.isWinner(overlay_5);
1503+
const winnerOwner = node5Wins ? node_5 : node_1;
1504+
14981505
const tx2 = await r_node_5.claim(proof1, proof2, proofLast);
14991506
const receipt2 = await tx2.wait();
15001507

15011508
const expectedPotPayout =
15021509
(receipt2.blockNumber - copyBatch.tx.blockNumber) * price1 * 2 ** copyBatch.postageDepth +
15031510
(receipt2.blockNumber - stampCreatedBlock) * price1 * 2 ** batch.depth; // batch in the beforeHook
1504-
expect(await token.balanceOf(node_5)).to.be.eq(expectedPotPayout);
1511+
expect(await token.balanceOf(winnerOwner)).to.be.eq(expectedPotPayout);
15051512

15061513
const sr = await ethers.getContract('StakeRegistry');
15071514

0 commit comments

Comments
 (0)