Skip to content

Commit 2b9345e

Browse files
refactor register validator
1 parent 353e9fc commit 2b9345e

File tree

3 files changed

+209
-149
lines changed

3 files changed

+209
-149
lines changed

cmd/blockchaincmd/add_validator.go

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -652,32 +652,64 @@ func CallAddValidator(
652652
ctx, cancel := sdkutils.GetTimedContext(constants.EVMEventLookupTimeout)
653653
defer cancel()
654654

655+
subnetID, err := contract.GetSubnetID(
656+
app,
657+
network,
658+
contract.ChainSpec{
659+
BlockchainID: validatorManagerBlockchainID.String(),
660+
},
661+
)
662+
if err != nil {
663+
return err
664+
}
665+
666+
validatorManagerParams := validatormanager.ValidatorManagerParams{
667+
RpcURL: validatorManagerRPCEndpoint,
668+
Signer: signer,
669+
NodeID: nodeID,
670+
BlsPublicKey: blsInfo.PublicKey[:],
671+
BalanceOwners: remainingBalanceOwners,
672+
DisableOwners: disableOwners,
673+
ManagerAddressStr: validatorManagerAddress,
674+
Weight: weight,
675+
}
676+
677+
getRegisterValidatorSignedMessageParams := validatormanager.GetRegisterValidatorSignedMessageParams{
678+
Network: network,
679+
Expiry: expiry,
680+
SubnetID: subnetID,
681+
BlockchainID: validatorManagerBlockchainID,
682+
SigAggParams: validatormanager.SignatureAggregatorParams{
683+
AggregatorLogger: aggregatorLogger,
684+
SignatureAggregatorEndpoint: signatureAggregatorEndpoint,
685+
PchainHeight: pChainEpoch.PChainHeight,
686+
},
687+
}
688+
689+
initValidatorRegistrationParams := validatormanager.InitValidatorRegistrationParams{
690+
ValidatorManager: validatorManagerParams,
691+
SignedMessageParams: getRegisterValidatorSignedMessageParams,
692+
TxHash: initiateTxHash,
693+
}
694+
if pos {
695+
posParams := validatormanager.ProofOfStakeParams{
696+
delegationFee,
697+
duration,
698+
common.HexToAddress(rewardsRecipientAddr),
699+
}
700+
initValidatorRegistrationParams.PoS = &posParams
701+
}
702+
initValidatorRegistrationOpts := validatormanager.InitValidatorRegistrationOptions{
703+
// Execution behavior (don’t broadcast; return unsigned init tx)
704+
BuildOnly: externalValidatorManagerOwner,
705+
Logger: duallogger.NewDualLogger(true, app),
706+
}
707+
655708
// Example of using the HybridLogger with SDK functions
656709
signedMessage, validationID, rawTx, err := validatormanager.InitValidatorRegistration(
657710
ctx,
658-
duallogger.NewDualLogger(true, app),
659-
app,
660-
network,
661-
validatorManagerRPCEndpoint,
662-
chainSpec,
663-
externalValidatorManagerOwner,
664-
signer,
665-
nodeID,
666-
blsInfo.PublicKey[:],
667-
expiry,
668-
remainingBalanceOwners,
669-
disableOwners,
670-
weight,
671-
aggregatorLogger,
672-
pos,
673-
delegationFee,
674-
duration,
675-
common.HexToAddress(rewardsRecipientAddr),
676-
validatorManagerBlockchainID,
677-
validatorManagerAddress,
678-
initiateTxHash,
679-
signatureAggregatorEndpoint,
680-
pChainEpoch.PChainHeight,
711+
initValidatorRegistrationParams,
712+
initValidatorRegistrationOpts,
681713
)
682714
if err != nil {
683715
return err

cmd/nodecmd/local.go

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -665,31 +665,61 @@ func addAsValidator(
665665
if err != nil {
666666
return fmt.Errorf("failure parsing blockchain ID: %w", err)
667667
}
668-
signedMessage, validationID, _, err := validatormanager.InitValidatorRegistration(
669-
ctx,
670-
duallogger.NewDualLogger(true, app),
668+
669+
subnetID, err := contract.GetSubnetID(
671670
app,
672671
network,
673-
localValidateFlags.RPC,
674-
chainSpec,
675-
false,
676-
signer,
677-
nodeID,
678-
blsInfo.PublicKey[:],
679-
expiry,
680-
remainingBalanceOwners,
681-
disableOwners,
682-
0,
683-
aggregatorLogger,
684-
true,
672+
contract.ChainSpec{
673+
BlockchainID: l1BlockchainID.String(),
674+
},
675+
)
676+
if err != nil {
677+
return err
678+
}
679+
680+
validatorManagerParams := validatormanager.ValidatorManagerParams{
681+
RpcURL: localValidateFlags.RPC,
682+
Signer: signer,
683+
NodeID: nodeID,
684+
BlsPublicKey: blsInfo.PublicKey[:],
685+
BalanceOwners: remainingBalanceOwners,
686+
DisableOwners: disableOwners,
687+
ManagerAddressStr: validatorManagerAddress,
688+
Weight: weight,
689+
}
690+
691+
getRegisterValidatorSignedMessageParams := validatormanager.GetRegisterValidatorSignedMessageParams{
692+
Network: network,
693+
Expiry: expiry,
694+
SubnetID: subnetID,
695+
BlockchainID: l1BlockchainID,
696+
SigAggParams: validatormanager.SignatureAggregatorParams{
697+
AggregatorLogger: aggregatorLogger,
698+
SignatureAggregatorEndpoint: signatureAggregatorEndpoint,
699+
PchainHeight: pChainEpoch.PChainHeight,
700+
},
701+
}
702+
703+
initValidatorRegistrationParams := validatormanager.InitValidatorRegistrationParams{
704+
ValidatorManager: validatorManagerParams,
705+
SignedMessageParams: getRegisterValidatorSignedMessageParams,
706+
}
707+
posParams := validatormanager.ProofOfStakeParams{
685708
delegationFee,
686-
time.Duration(minimumStakeDuration)*time.Second,
709+
time.Duration(minimumStakeDuration) * time.Second,
687710
common.HexToAddress(rewardsRecipientAddr),
688-
l1BlockchainID,
689-
validatorManagerAddress,
690-
"",
691-
signatureAggregatorEndpoint,
692-
pChainEpoch.PChainHeight,
711+
}
712+
initValidatorRegistrationParams.PoS = &posParams
713+
initValidatorRegistrationOpts := validatormanager.InitValidatorRegistrationOptions{
714+
// Execution behavior (don’t broadcast; return unsigned init tx)
715+
BuildOnly: false,
716+
Logger: duallogger.NewDualLogger(true, app),
717+
}
718+
719+
signedMessage, validationID, _, err := validatormanager.InitValidatorRegistration(
720+
ctx,
721+
initValidatorRegistrationParams,
722+
initValidatorRegistrationOpts,
693723
)
694724
if err != nil {
695725
return err

0 commit comments

Comments
 (0)