Skip to content

Commit c43ffdf

Browse files
refactor more register functions
1 parent 9498b4b commit c43ffdf

File tree

5 files changed

+128
-122
lines changed

5 files changed

+128
-122
lines changed

cmd/blockchaincmd/add_validator.go

Lines changed: 85 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -749,24 +749,14 @@ func CallAddValidator(
749749
if err != nil {
750750
return fmt.Errorf("failure getting l1 current epoch: %w", err)
751751
}
752-
752+
initValidatorRegistrationParams.SignedMessageParams.SigAggParams.PchainHeight = l1Epoch.PChainHeight
753753
ctx, cancel = sdkutils.GetTimedContext(constants.EVMEventLookupTimeout)
754754
defer cancel()
755755
rawTx, err = validatormanager.FinishValidatorRegistration(
756756
ctx,
757-
duallogger.NewDualLogger(true, app),
758-
app,
759-
network,
760-
validatorManagerRPCEndpoint,
761-
chainSpec,
762-
externalValidatorManagerOwner,
763-
signer,
757+
initValidatorRegistrationParams,
758+
initValidatorRegistrationOpts,
764759
validationID,
765-
aggregatorLogger,
766-
validatorManagerBlockchainID,
767-
validatorManagerAddress,
768-
signatureAggregatorEndpoint,
769-
l1Epoch.PChainHeight,
770760
)
771761
if err != nil {
772762
return err
@@ -1076,3 +1066,85 @@ func getWeight() (uint64, error) {
10761066
}
10771067
return weight, nil
10781068
}
1069+
1070+
//
1071+
//func RegisterL1Validator(
1072+
// ctx context.Context,
1073+
// initValidatorRegistrationParams validatormanager.InitValidatorRegistrationParams,
1074+
// initValidatorRegistrationOpts validatormanager.InitValidatorRegistrationOptions,
1075+
//) error {
1076+
// // Example of using the HybridLogger with SDK functions
1077+
// signedMessage, validationID, rawTx, err := validatormanager.InitValidatorRegistration(
1078+
// ctx,
1079+
// initValidatorRegistrationParams,
1080+
// initValidatorRegistrationOpts,
1081+
// )
1082+
// if err != nil {
1083+
// return err
1084+
// }
1085+
// if rawTx != nil {
1086+
// dump, err := evm.TxDump("Initializing Validator Registration", rawTx)
1087+
// if err == nil {
1088+
// ux.Logger.PrintToUser("%s", dump)
1089+
// }
1090+
// return err
1091+
// }
1092+
// ux.Logger.PrintToUser("ValidationID: %s", validationID)
1093+
//
1094+
// txID, _, err := deployer.RegisterL1Validator(balance, blsInfo, signedMessage)
1095+
// if err != nil {
1096+
// if !strings.Contains(err.Error(), "warp message already issued for validationID") {
1097+
// return err
1098+
// }
1099+
// ux.Logger.PrintToUser("%s", logging.LightBlue.Wrap("The Validation ID was already registered on the P-Chain. Proceeding to the next step"))
1100+
// } else {
1101+
// ux.Logger.PrintToUser("RegisterL1ValidatorTx ID: %s", txID)
1102+
// if err := blockchain.UpdatePChainHeight(
1103+
// "Waiting for P-Chain to update validator information ...",
1104+
// ); err != nil {
1105+
// return err
1106+
// }
1107+
// }
1108+
//
1109+
// client, err := evm.GetClient(validatorManagerRPCEndpoint)
1110+
// if err != nil {
1111+
// return fmt.Errorf("failure connecting to validator manager L1: %w", err)
1112+
// }
1113+
// if err := client.SetupProposerVM(initValidatorRegistrationParams.ValidatorManager.Signer); err != nil {
1114+
// return fmt.Errorf("failure setting proposer VM on L1: %w", err)
1115+
// }
1116+
// l1Epoch, err := utils.GetCurrentL1Epoch(validatorManagerRPCEndpoint, initValidatorRegistrationParams.SignedMessageParams.BlockchainID.String())
1117+
// if err != nil {
1118+
// return fmt.Errorf("failure getting l1 current epoch: %w", err)
1119+
// }
1120+
//
1121+
// ctx, cancel = sdkutils.GetTimedContext(constants.EVMEventLookupTimeout)
1122+
// defer cancel()
1123+
// rawTx, err = validatormanager.FinishValidatorRegistration(
1124+
// ctx,
1125+
// duallogger.NewDualLogger(true, app),
1126+
// app,
1127+
// network,
1128+
// validatorManagerRPCEndpoint,
1129+
// chainSpec,
1130+
// externalValidatorManagerOwner,
1131+
// signer,
1132+
// validationID,
1133+
// aggregatorLogger,
1134+
// validatorManagerBlockchainID,
1135+
// validatorManagerAddress,
1136+
// signatureAggregatorEndpoint,
1137+
// l1Epoch.PChainHeight,
1138+
// )
1139+
// if err != nil {
1140+
// return err
1141+
// }
1142+
// if rawTx != nil {
1143+
// dump, err := evm.TxDump("Finish Validator Registration", rawTx)
1144+
// if err == nil {
1145+
// ux.Logger.PrintToUser("%s", dump)
1146+
// }
1147+
// return err
1148+
// }
1149+
//
1150+
//}

cmd/blockchaincmd/remove_validator.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -512,21 +512,32 @@ func removeValidatorSOV(
512512

513513
ctx, cancel = sdkutils.GetTimedContext(constants.EVMEventLookupTimeout)
514514
defer cancel()
515+
subnetID, err := contract.GetSubnetID(
516+
app,
517+
network,
518+
contract.ChainSpec{
519+
BlockchainID: validatorManagerBlockchainID.String(),
520+
},
521+
)
522+
if err != nil {
523+
return err
524+
}
525+
sigAggParams := validatormanager.SignatureAggregatorParams{
526+
AggregatorLogger: aggregatorLogger,
527+
SignatureAggregatorEndpoint: signatureAggregatorEndpoint,
528+
PchainHeight: l1Epoch.PChainHeight,
529+
}
515530
rawTx, err = validatormanager.FinishValidatorRemoval(
516531
ctx,
517532
duallogger.NewDualLogger(true, app),
518-
app,
519533
network,
520534
validatorManagerRPCEndpoint,
521-
chainSpec,
535+
subnetID,
522536
externalValidatorManagerOwner,
523537
signer,
524538
validationID,
525-
aggregatorLogger,
526-
validatorManagerBlockchainID,
527539
validatorManagerAddress,
528-
signatureAggregatorEndpoint,
529-
l1Epoch.PChainHeight,
540+
sigAggParams,
530541
)
531542
if err != nil {
532543
return err

cmd/nodecmd/local.go

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -747,24 +747,14 @@ func addAsValidator(
747747
if err != nil {
748748
return fmt.Errorf("failure getting l1 current epoch: %w", err)
749749
}
750-
750+
initValidatorRegistrationParams.SignedMessageParams.SigAggParams.PchainHeight = l1Epoch.PChainHeight
751751
ctx, cancel = sdkutils.GetTimedContext(constants.EVMEventLookupTimeout)
752752
defer cancel()
753753
if _, err := validatormanager.FinishValidatorRegistration(
754754
ctx,
755-
duallogger.NewDualLogger(true, app),
756-
app,
757-
network,
758-
localValidateFlags.RPC,
759-
chainSpec,
760-
false,
761-
signer,
755+
initValidatorRegistrationParams,
756+
initValidatorRegistrationOpts,
762757
validationID,
763-
aggregatorLogger,
764-
l1BlockchainID,
765-
validatorManagerAddress,
766-
signatureAggregatorEndpoint,
767-
l1Epoch.PChainHeight,
768758
); err != nil {
769759
return err
770760
}

pkg/validatormanager/registration.go

Lines changed: 20 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import (
1212
"math/big"
1313
"time"
1414

15-
"github.com/ava-labs/avalanche-cli/pkg/application"
16-
"github.com/ava-labs/avalanche-cli/pkg/contract"
1715
"github.com/ava-labs/avalanche-cli/pkg/models"
1816
"github.com/ava-labs/avalanche-cli/pkg/utils"
1917
"github.com/ava-labs/avalanche-cli/pkg/ux"
@@ -275,14 +273,10 @@ func GetPChainL1ValidatorRegistrationMessage(
275273
ctx context.Context,
276274
network models.Network,
277275
rpcURL string,
278-
aggregatorLogger logging.Logger,
279-
aggregatorQuorumPercentage uint64,
280276
subnetID ids.ID,
281-
managerSubnetID,
282277
validationID ids.ID,
283278
registered bool,
284-
signatureAggregatorEndpoint string,
285-
pChainHeight uint64,
279+
signedMessageParams SignatureAggregatorParams,
286280
) (*warp.Message, error) {
287281
addressedCallPayload, err := warpMessage.NewL1ValidatorRegistration(validationID, registered)
288282
if err != nil {
@@ -313,13 +307,13 @@ func GetPChainL1ValidatorRegistrationMessage(
313307
justification := hex.EncodeToString(justificationBytes)
314308
messageHexStr := hex.EncodeToString(subnetConversionUnsignedMessage.Bytes())
315309
return interchain.SignMessage(
316-
aggregatorLogger,
317-
signatureAggregatorEndpoint,
310+
signedMessageParams.AggregatorLogger,
311+
signedMessageParams.SignatureAggregatorEndpoint,
318312
messageHexStr,
319313
justification,
320-
managerSubnetID.String(),
321-
aggregatorQuorumPercentage,
322-
pChainHeight,
314+
subnetID.String(),
315+
0,
316+
signedMessageParams.PchainHeight,
323317
)
324318
}
325319

@@ -511,75 +505,41 @@ func InitValidatorRegistration(
511505

512506
func FinishValidatorRegistration(
513507
ctx context.Context,
514-
logger logging.Logger,
515-
app *application.Avalanche,
516-
network models.Network,
517-
rpcURL string,
518-
chainSpec contract.ChainSpec,
519-
generateRawTxOnly bool,
520-
ownerSigner *evm.Signer,
508+
initValidatorRegistrationParams InitValidatorRegistrationParams,
509+
opt InitValidatorRegistrationOptions,
521510
validationID ids.ID,
522-
aggregatorLogger logging.Logger,
523-
managerBlockchainID ids.ID,
524-
managerAddressStr string,
525-
signatureAggregatorEndpoint string,
526-
pChainHeight uint64,
527511
) (*types.Transaction, error) {
528-
subnetID, err := contract.GetSubnetID(
529-
app,
530-
network,
531-
chainSpec,
532-
)
533-
if err != nil {
534-
return nil, err
535-
}
536-
537-
managerSubnetID, err := contract.GetSubnetID(
538-
app,
539-
network,
540-
contract.ChainSpec{
541-
BlockchainID: managerBlockchainID.String(),
542-
},
543-
)
544-
if err != nil {
545-
return nil, err
546-
}
547-
548-
managerAddress := common.HexToAddress(managerAddressStr)
512+
managerAddress := common.HexToAddress(initValidatorRegistrationParams.ValidatorManager.ManagerAddressStr)
549513

550514
signedMessage, err := GetPChainL1ValidatorRegistrationMessage(
551515
ctx,
552-
network,
553-
rpcURL,
554-
aggregatorLogger,
555-
0,
556-
subnetID,
557-
managerSubnetID,
516+
initValidatorRegistrationParams.SignedMessageParams.Network,
517+
initValidatorRegistrationParams.ValidatorManager.RpcURL,
518+
initValidatorRegistrationParams.SignedMessageParams.SubnetID,
558519
validationID,
559520
true,
560-
signatureAggregatorEndpoint,
561-
pChainHeight,
521+
initValidatorRegistrationParams.SignedMessageParams.SigAggParams,
562522
)
563523
if err != nil {
564524
return nil, err
565525
}
566-
if isNoOp, err := ownerSigner.IsNoOp(); err != nil {
526+
if isNoOp, err := initValidatorRegistrationParams.ValidatorManager.Signer.IsNoOp(); err != nil {
567527
return nil, err
568528
} else if !isNoOp {
569-
if client, err := evm.GetClient(rpcURL); err != nil {
529+
if client, err := evm.GetClient(initValidatorRegistrationParams.ValidatorManager.RpcURL); err != nil {
570530
logger.Error(fmt.Sprintf("failure connecting to L1 to setup proposer VM: %s", err))
571531
} else {
572-
if err := client.SetupProposerVM(ownerSigner); err != nil {
532+
if err := client.SetupProposerVM(initValidatorRegistrationParams.ValidatorManager.Signer); err != nil {
573533
logger.Error(fmt.Sprintf("failure setting proposer VM on L1: %s", err))
574534
}
575535
client.Close()
576536
}
577537
}
578538
tx, _, err := CompleteValidatorRegistration(
579-
logger,
580-
rpcURL,
539+
opt.Logger,
540+
initValidatorRegistrationParams.ValidatorManager.RpcURL,
581541
managerAddress,
582-
ownerSigner,
542+
initValidatorRegistrationParams.ValidatorManager.Signer,
583543
signedMessage,
584544
)
585545
if err != nil {
@@ -589,7 +549,7 @@ func FinishValidatorRegistration(
589549
return nil, fmt.Errorf("the Validator was already fully registered on the Manager")
590550
}
591551
}
592-
if generateRawTxOnly {
552+
if opt.BuildOnly {
593553
return tx, nil
594554
}
595555
return nil, nil

pkg/validatormanager/removal.go

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -330,52 +330,25 @@ func CompleteValidatorRemoval(
330330
func FinishValidatorRemoval(
331331
ctx context.Context,
332332
logger logging.Logger,
333-
app *application.Avalanche,
334333
network models.Network,
335334
rpcURL string,
336-
chainSpec contract.ChainSpec,
335+
subnetID ids.ID,
337336
generateRawTxOnly bool,
338337
signer *evm.Signer,
339338
validationID ids.ID,
340-
aggregatorLogger logging.Logger,
341-
managerBlockchainID ids.ID,
342339
managerAddressStr string,
343-
signatureAggregatorEndpoint string,
344-
pChainHeight uint64,
340+
signedMessageParams SignatureAggregatorParams,
345341
) (*types.Transaction, error) {
346342
managerAddress := common.HexToAddress(managerAddressStr)
347-
subnetID, err := contract.GetSubnetID(
348-
app,
349-
network,
350-
chainSpec,
351-
)
352-
if err != nil {
353-
return nil, err
354-
}
355-
356-
managerSubnetID, err := contract.GetSubnetID(
357-
app,
358-
network,
359-
contract.ChainSpec{
360-
BlockchainID: managerBlockchainID.String(),
361-
},
362-
)
363-
if err != nil {
364-
return nil, err
365-
}
366343

367344
signedMessage, err := GetPChainL1ValidatorRegistrationMessage(
368345
ctx,
369346
network,
370347
rpcURL,
371-
aggregatorLogger,
372-
0,
373348
subnetID,
374-
managerSubnetID,
375349
validationID,
376350
false,
377-
signatureAggregatorEndpoint,
378-
pChainHeight,
351+
signedMessageParams,
379352
)
380353
if err != nil {
381354
return nil, err

0 commit comments

Comments
 (0)