Skip to content

Commit 5646470

Browse files
authored
Merge pull request #651 from ashish10677/rogue-stakerId
Rogue staker id
2 parents fddfb19 + cc208cd commit 5646470

File tree

3 files changed

+62
-52
lines changed

3 files changed

+62
-52
lines changed

cmd/commit.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ func (*UtilsStruct) GetSalt(client *ethclient.Client, epoch uint32) ([32]byte, e
4444
/*
4545
HandleCommitState fetches the collections assigned to the staker and creates the leaves required for the merkle tree generation.
4646
Values for only the collections assigned to the staker is fetched for others, 0 is added to the leaves of tree.
47-
48-
TODO: Add rogue mode changes
4947
*/
5048
func (*UtilsStruct) HandleCommitState(client *ethclient.Client, epoch uint32, seed []byte, rogueData types.Rogue) (types.CommitData, error) {
5149
numActiveCollections, err := utils.UtilsInterface.GetNumActiveCollections(client)
@@ -69,6 +67,9 @@ func (*UtilsStruct) HandleCommitState(client *ethclient.Client, epoch uint32, se
6967
if err != nil {
7068
return types.CommitData{}, err
7169
}
70+
if rogueData.IsRogue && utils.Contains(rogueData.RogueMode, "commit") {
71+
collectionData = utils.GetRogueRandomValue(100000)
72+
}
7273
log.Debugf("Data of collection %d:%s", collectionId, collectionData)
7374
leavesOfTree = append(leavesOfTree, collectionData)
7475
} else {

cmd/propose.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,21 @@ func (*UtilsStruct) Propose(client *ethclient.Client, config types.Configuration
4343
}
4444
log.Debug("Stake: ", staker.Stake)
4545

46-
biggestStake, biggestStakerId, err := cmdUtils.GetBiggestStakeAndId(client, account.Address, epoch)
47-
if err != nil {
48-
log.Error("Error in calculating biggest staker: ", err)
49-
return core.NilHash, err
46+
var (
47+
biggestStake *big.Int
48+
biggestStakerId uint32
49+
biggestStakerErr error
50+
)
51+
52+
if rogueData.IsRogue && utils.Contains(rogueData.RogueMode, "biggestStakerId") {
53+
biggestStake = utils.GetRogueRandomValue(1000000)
54+
biggestStakerId = uint32(rand.Intn(int(numStakers)))
55+
} else {
56+
biggestStake, biggestStakerId, biggestStakerErr = cmdUtils.GetBiggestStakeAndId(client, account.Address, epoch)
57+
if biggestStakerErr != nil {
58+
log.Error("Error in calculating biggest staker: ", biggestStakerErr)
59+
return core.NilHash, biggestStakerErr
60+
}
5061
}
5162

5263
salt, err := cmdUtils.GetSalt(client, epoch)
@@ -296,7 +307,6 @@ func (*UtilsStruct) GetSortedRevealedValues(client *ethclient.Client, blockNumbe
296307

297308
func (*UtilsStruct) MakeBlock(client *ethclient.Client, blockNumber *big.Int, epoch uint32, rogueData types.Rogue) ([]uint32, []uint16, *types.RevealedDataMaps, error) {
298309
revealedDataMaps, err := cmdUtils.GetSortedRevealedValues(client, blockNumber, epoch)
299-
//revealedDataMaps.SortedRevealedValues
300310
if err != nil {
301311
return nil, nil, nil, err
302312
}

cmd/propose_test.go

+44-45
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,14 @@ func TestPropose(t *testing.T) {
4242
copy(saltBytes32[:], salt)
4343

4444
type args struct {
45-
state int64
46-
stateErr error
47-
staker bindings.StructsStaker
48-
//stakerErr error
45+
state int64
46+
stateErr error
47+
staker bindings.StructsStaker
4948
numStakers uint32
5049
numStakerErr error
51-
biggestInfluence *big.Int
52-
biggestInfluenceId uint32
53-
biggestInfluenceErr error
50+
biggestStake *big.Int
51+
biggestStakerId uint32
52+
biggestStakerIdErr error
5453
randaoHash [32]byte
5554
randaoHashErr error
5655
bufferPercent int32
@@ -90,8 +89,8 @@ func TestPropose(t *testing.T) {
9089
state: 2,
9190
staker: bindings.StructsStaker{},
9291
numStakers: 5,
93-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
94-
biggestInfluenceId: 2,
92+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
93+
biggestStakerId: 2,
9594
salt: saltBytes32,
9695
iteration: 1,
9796
numOfProposedBlocks: 3,
@@ -112,8 +111,8 @@ func TestPropose(t *testing.T) {
112111
stateErr: errors.New("state error"),
113112
staker: bindings.StructsStaker{},
114113
numStakers: 5,
115-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
116-
biggestInfluenceId: 2,
114+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
115+
biggestStakerId: 2,
117116
salt: saltBytes32,
118117
iteration: 1,
119118
numOfProposedBlocks: 3,
@@ -134,8 +133,8 @@ func TestPropose(t *testing.T) {
134133
state: 2,
135134
staker: bindings.StructsStaker{},
136135
numStakerErr: errors.New("numberOfStakers error"),
137-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
138-
biggestInfluenceId: 2,
136+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
137+
biggestStakerId: 2,
139138
salt: saltBytes32,
140139
iteration: 1,
141140
numOfProposedBlocks: 2,
@@ -151,12 +150,12 @@ func TestPropose(t *testing.T) {
151150
wantErr: errors.New("numberOfStakers error"),
152151
},
153152
{
154-
name: "Test 4: When there is an error in getting biggest influence staker",
153+
name: "Test 4: When there is an error in getting biggest staker",
155154
args: args{
156155
state: 2,
157156
staker: bindings.StructsStaker{},
158157
numStakers: 5,
159-
biggestInfluenceErr: errors.New("biggest influence staker error"),
158+
biggestStakerIdErr: errors.New("biggest staker error"),
160159
salt: saltBytes32,
161160
iteration: 1,
162161
numOfProposedBlocks: 3,
@@ -169,16 +168,16 @@ func TestPropose(t *testing.T) {
169168
hash: common.BigToHash(big.NewInt(1)),
170169
},
171170
want: core.NilHash,
172-
wantErr: errors.New("biggest influence staker error"),
171+
wantErr: errors.New("biggest staker error"),
173172
},
174173
{
175174
name: "Test 5: When there is an error in getting randaoHash",
176175
args: args{
177176
state: 2,
178177
staker: bindings.StructsStaker{},
179178
numStakers: 5,
180-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
181-
biggestInfluenceId: 2,
179+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
180+
biggestStakerId: 2,
182181
saltErr: errors.New("salt error"),
183182
iteration: 1,
184183
numOfProposedBlocks: 3,
@@ -199,8 +198,8 @@ func TestPropose(t *testing.T) {
199198
state: 2,
200199
staker: bindings.StructsStaker{},
201200
numStakers: 5,
202-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
203-
biggestInfluenceId: 2,
201+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
202+
biggestStakerId: 2,
204203
salt: saltBytes32,
205204
iteration: -1,
206205
numOfProposedBlocks: 3,
@@ -221,8 +220,8 @@ func TestPropose(t *testing.T) {
221220
state: 2,
222221
staker: bindings.StructsStaker{},
223222
numStakers: 5,
224-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
225-
biggestInfluenceId: 2,
223+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
224+
biggestStakerId: 2,
226225
salt: saltBytes32,
227226
iteration: 1,
228227
numOfProposedBlocksErr: errors.New("numOfProposedBlocks error"),
@@ -243,8 +242,8 @@ func TestPropose(t *testing.T) {
243242
state: 2,
244243
staker: bindings.StructsStaker{},
245244
numStakers: 5,
246-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
247-
biggestInfluenceId: 2,
245+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
246+
biggestStakerId: 2,
248247
salt: saltBytes32,
249248
iteration: 1,
250249
numOfProposedBlocks: 2,
@@ -265,8 +264,8 @@ func TestPropose(t *testing.T) {
265264
state: 2,
266265
staker: bindings.StructsStaker{},
267266
numStakers: 5,
268-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
269-
biggestInfluenceId: 2,
267+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
268+
biggestStakerId: 2,
270269
salt: saltBytes32,
271270
iteration: 1,
272271
numOfProposedBlocks: 4,
@@ -287,8 +286,8 @@ func TestPropose(t *testing.T) {
287286
state: 2,
288287
staker: bindings.StructsStaker{},
289288
numStakers: 5,
290-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
291-
biggestInfluenceId: 2,
289+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
290+
biggestStakerId: 2,
292291
salt: saltBytes32,
293292
iteration: 2,
294293
numOfProposedBlocks: 4,
@@ -311,8 +310,8 @@ func TestPropose(t *testing.T) {
311310
state: 2,
312311
staker: bindings.StructsStaker{},
313312
numStakers: 5,
314-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
315-
biggestInfluenceId: 2,
313+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
314+
biggestStakerId: 2,
316315
salt: saltBytes32,
317316
iteration: 1,
318317
numOfProposedBlocks: 4,
@@ -335,8 +334,8 @@ func TestPropose(t *testing.T) {
335334
state: 2,
336335
staker: bindings.StructsStaker{},
337336
numStakers: 5,
338-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
339-
biggestInfluenceId: 2,
337+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
338+
biggestStakerId: 2,
340339
salt: saltBytes32,
341340
iteration: 1,
342341
numOfProposedBlocks: 2,
@@ -357,8 +356,8 @@ func TestPropose(t *testing.T) {
357356
state: 2,
358357
staker: bindings.StructsStaker{},
359358
numStakers: 5,
360-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
361-
biggestInfluenceId: 2,
359+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
360+
biggestStakerId: 2,
362361
salt: saltBytes32,
363362
iteration: 1,
364363
numOfProposedBlocks: 2,
@@ -379,8 +378,8 @@ func TestPropose(t *testing.T) {
379378
state: 2,
380379
staker: bindings.StructsStaker{},
381380
numStakers: 5,
382-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
383-
biggestInfluenceId: 2,
381+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
382+
biggestStakerId: 2,
384383
salt: saltBytes32,
385384
iteration: 1,
386385
numOfProposedBlocks: 3,
@@ -401,8 +400,8 @@ func TestPropose(t *testing.T) {
401400
state: 2,
402401
staker: bindings.StructsStaker{},
403402
numStakers: 5,
404-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
405-
biggestInfluenceId: 2,
403+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
404+
biggestStakerId: 2,
406405
salt: saltBytes32,
407406
iteration: 1,
408407
numOfProposedBlocks: 3,
@@ -420,12 +419,12 @@ func TestPropose(t *testing.T) {
420419
{
421420
name: "Test 17: When there is an error in getting buffer percent",
422421
args: args{
423-
state: 2,
424-
staker: bindings.StructsStaker{},
425-
numStakers: 5,
426-
biggestInfluence: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
427-
biggestInfluenceId: 2,
428-
bufferPercentErr: errors.New("buffer error"),
422+
state: 2,
423+
staker: bindings.StructsStaker{},
424+
numStakers: 5,
425+
biggestStake: big.NewInt(1).Mul(big.NewInt(5356), big.NewInt(1e18)),
426+
biggestStakerId: 2,
427+
bufferPercentErr: errors.New("buffer error"),
429428
},
430429
want: core.NilHash,
431430
wantErr: errors.New("buffer error"),
@@ -445,7 +444,7 @@ func TestPropose(t *testing.T) {
445444

446445
utilsMock.On("GetDelayedState", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("int32")).Return(tt.args.state, tt.args.stateErr)
447446
utilsMock.On("GetNumberOfStakers", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return(tt.args.numStakers, tt.args.numStakerErr)
448-
cmdUtilsMock.On("GetBiggestStakeAndId", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string"), mock.AnythingOfType("uint32")).Return(tt.args.biggestInfluence, tt.args.biggestInfluenceId, tt.args.biggestInfluenceErr)
447+
cmdUtilsMock.On("GetBiggestStakeAndId", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string"), mock.AnythingOfType("uint32")).Return(tt.args.biggestStake, tt.args.biggestStakerId, tt.args.biggestStakerIdErr)
449448
utilsMock.On("GetRandaoHash", mock.AnythingOfType("*ethclient.Client")).Return(tt.args.randaoHash, tt.args.randaoHashErr)
450449
cmdUtilsMock.On("GetIteration", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.iteration)
451450
utilsMock.On("GetMaxAltBlocks", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("string")).Return(tt.args.maxAltBlocks, tt.args.maxAltBlocksErr)

0 commit comments

Comments
 (0)