61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"math/big"
|
|
|
|
"github.com/bnb-chain/tss-lib/v2/tss"
|
|
)
|
|
|
|
type Participant struct {
|
|
PartyID string
|
|
PartyIndex int
|
|
}
|
|
|
|
func main() {
|
|
participants := []Participant{
|
|
{PartyID: "party-0", PartyIndex: 0},
|
|
{PartyID: "party-1", PartyIndex: 1},
|
|
{PartyID: "party-2", PartyIndex: 2},
|
|
}
|
|
|
|
tssPartyIDs := make([]*tss.PartyID, len(participants))
|
|
for i, p := range participants {
|
|
tssPartyIDs[i] = tss.NewPartyID(
|
|
p.PartyID,
|
|
fmt.Sprintf("party-%d", p.PartyIndex),
|
|
big.NewInt(int64(p.PartyIndex+1)),
|
|
)
|
|
}
|
|
|
|
fmt.Println("Before sorting:")
|
|
for i, p := range tssPartyIDs {
|
|
fmt.Printf(" [%d] ID=%s, Key=%v\n", i, p.Id, p.Key)
|
|
}
|
|
|
|
sortedPartyIDs := tss.SortPartyIDs(tssPartyIDs)
|
|
|
|
fmt.Println("\nAfter sorting:")
|
|
for i, p := range sortedPartyIDs {
|
|
fmt.Printf(" [%d] ID=%s, Key=%v\n", i, p.Id, p.Key)
|
|
}
|
|
|
|
// Build the buggy map
|
|
partyIndexMap := make(map[int]*tss.PartyID)
|
|
for _, p := range sortedPartyIDs {
|
|
for _, orig := range participants {
|
|
if orig.PartyID == p.Id {
|
|
partyIndexMap[orig.PartyIndex] = p
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
fmt.Println("\nParty index map (current buggy logic):")
|
|
for idx, p := range partyIndexMap {
|
|
fmt.Printf(" FromPartyIndex %d -> PartyID %s (Key=%v)\n", idx, p.Id, p.Key)
|
|
}
|
|
}
|