Skip to content

Commit

Permalink
perf: do governor delegation before validator delegation
Browse files Browse the repository at this point in the history
  • Loading branch information
tbruyelle committed Jan 19, 2025
1 parent 9350fc9 commit d1d738a
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions tally_genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,11 @@ func tallyGenesis(goCtx context.Context, genesisFile, nodeAddr string, nodeConsP
numDelegsPerDelegator = 5
delAmt = sdk.NewInt64Coin("uatone", 900_000_000_000/int64(numDelegsPerDelegator)) // deleg 90% of balance
)
for _, a := range append(delAddrs, govAddrs...) {
// first do governors delegation to validators
// NOTE: for performance reason, it is better to first create and delegate to
// governors rather than doing all the validator delegations, because
// DelegateGovernor has bad perf when delegations already exists.
for _, a := range govAddrs {
for j := 0; j < numDelegsPerDelegator; j++ {
msg := stakingtypes.NewMsgDelegate(a, sdk.ValAddress(valAddrs[valIdx]), delAmt)
_, err := stakingMsgServer.Delegate(ctx, msg)
Expand All @@ -184,8 +188,8 @@ func tallyGenesis(goCtx context.Context, genesisFile, nodeAddr string, nodeConsP
// delegate to governors
if numGovs > 0 {
govIdx := 0
for j, d := range delAddrs {
if j > numDels/2 {
for i, d := range delAddrs {
if i > numDels/2 {
break // only half of the delegators delegate to a governor
}
msg := govv1types.NewMsgDelegateGovernor(d, govtypes.GovernorAddress(govAddrs[govIdx]))
Expand All @@ -201,6 +205,21 @@ func tallyGenesis(goCtx context.Context, genesisFile, nodeAddr string, nodeConsP
}
}

// second all the other validator delegations
for _, a := range delAddrs {
for j := 0; j < numDelegsPerDelegator; j++ {
msg := stakingtypes.NewMsgDelegate(a, sdk.ValAddress(valAddrs[valIdx]), delAmt)
_, err := stakingMsgServer.Delegate(ctx, msg)
if err != nil {
panic(err)
}
valIdx++ // next delegation to next validator
if valIdx >= numVals {
valIdx = 0
}
}
}

// create proposal
msg, err := govv1types.NewMsgSubmitProposal(nil, minDeposit, addrs[1].String(), "", "my prop", "")
if err != nil {
Expand Down

0 comments on commit d1d738a

Please sign in to comment.