Skip to content

Commit 6869f52

Browse files
committed
fix selecting RandomAssignedMembers
1 parent 0a76db9 commit 6869f52

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

x/tss/keeper/signing.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -254,16 +254,20 @@ func (k Keeper) GetRandomAssignedMembers(
254254
}
255255

256256
var selected []types.Member
257-
for i := uint64(0); i < t; i++ {
258-
randomNumber := rng.NextUint64() % members_size
257+
memberIdx := make([]int, members_size)
258+
for i := 0; i < int(members_size); i++ {
259+
memberIdx[i] = i
260+
}
259261

260-
// Get the selected member.
261-
selected = append(selected, members[randomNumber])
262+
for i := uint64(0); i < t; i++ {
263+
randomNumber := rng.NextUint64() % (members_size - i)
262264

263-
// Remove the selected member from the list.
264-
members = append(members[:randomNumber], members[randomNumber+1:]...)
265+
// Swap the selected member with the last member in the list
266+
memberId := memberIdx[randomNumber]
267+
memberIdx[randomNumber] = memberIdx[members_size-i-1]
265268

266-
members_size -= 1
269+
// Append the selected member to the selected list
270+
selected = append(selected, members[memberId])
267271
}
268272

269273
// Sort selected members

0 commit comments

Comments
 (0)