Skip to content

Commit 758cf10

Browse files
authored
Refactor to use *evm.Signer instead of private key strings (#2964)
* Refactor to use *evm.Signer instead of private key strings Update codebase to use evm.Signer struct (passed as pointer) instead of private key strings, following changes in avalanche-tooling-sdk-go. Key changes: - Update all function signatures to accept *evm.Signer instead of string - Use evm.NewSignerFromPrivateKey() to create signers from private keys - Use evm.NewNoOpSigner() for external validator manager owners * address PR comments on SDK side * fix E2E * use latest SDK main * fix compile issues
1 parent 0a73709 commit 758cf10

File tree

32 files changed

+412
-377
lines changed

32 files changed

+412
-377
lines changed

cmd/blockchaincmd/add_validator.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -448,10 +448,10 @@ func CallAddValidator(
448448
validatorManagerOwner = sc.ValidatorManagerOwner
449449
}
450450

451-
var from, privateKey string
452-
453451
pos := sc.PoS()
454452

453+
var signer *evm.Signer
454+
455455
if pos {
456456
stakeAmount, err := validatormanager.PoSWeightToValue(
457457
validatorManagerRPCEndpoint,
@@ -469,7 +469,7 @@ func CallAddValidator(
469469
if err != nil {
470470
return err
471471
}
472-
privateKey, err = stakerPrivateKeyFlags.GetPrivateKey(app, genesisPrivateKey)
472+
privateKey, err := stakerPrivateKeyFlags.GetPrivateKey(app, genesisPrivateKey)
473473
if err != nil {
474474
return err
475475
}
@@ -488,15 +488,18 @@ func CallAddValidator(
488488
return err
489489
}
490490
}
491-
address, err := evm.PrivateKeyToAddress(privateKey)
491+
signer, err = evm.NewSignerFromPrivateKey(privateKey)
492492
if err != nil {
493493
return err
494494
}
495-
from = address.Hex()
496495
} else {
497-
if !externalValidatorManagerOwner {
498-
var ownerPrivateKeyFound bool
499-
ownerPrivateKeyFound, _, _, privateKey, err = contract.SearchForManagedKey(
496+
if externalValidatorManagerOwner {
497+
signer, err = evm.NewNoOpSigner(common.HexToAddress(validatorManagerOwner))
498+
if err != nil {
499+
return err
500+
}
501+
} else {
502+
ownerPrivateKeyFound, _, _, privateKey, err := contract.SearchForManagedKey(
500503
app,
501504
network,
502505
common.HexToAddress(validatorManagerOwner),
@@ -508,8 +511,11 @@ func CallAddValidator(
508511
if !ownerPrivateKeyFound {
509512
return fmt.Errorf("private key for Validator manager owner %s is not found", validatorManagerOwner)
510513
}
514+
signer, err = evm.NewSignerFromPrivateKey(privateKey)
515+
if err != nil {
516+
return err
517+
}
511518
}
512-
from = validatorManagerOwner
513519
}
514520

515521
if pos {
@@ -637,8 +643,7 @@ func CallAddValidator(
637643
validatorManagerRPCEndpoint,
638644
chainSpec,
639645
externalValidatorManagerOwner,
640-
from,
641-
privateKey,
646+
signer,
642647
nodeID,
643648
blsInfo.PublicKey[:],
644649
expiry,
@@ -693,8 +698,7 @@ func CallAddValidator(
693698
validatorManagerRPCEndpoint,
694699
chainSpec,
695700
externalValidatorManagerOwner,
696-
from,
697-
privateKey,
701+
signer,
698702
validationID,
699703
aggregatorLogger,
700704
validatorManagerBlockchainID,

cmd/blockchaincmd/change_weight.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -353,10 +353,14 @@ func changeWeightACP99(
353353
validatorManagerOwner = sc.ValidatorManagerOwner
354354
}
355355

356-
var ownerPrivateKey string
357-
if !externalValidatorManagerOwner {
358-
var ownerPrivateKeyFound bool
359-
ownerPrivateKeyFound, _, _, ownerPrivateKey, err = contract.SearchForManagedKey(
356+
var signer *evm.Signer
357+
if externalValidatorManagerOwner {
358+
signer, err = evm.NewNoOpSigner(common.HexToAddress(validatorManagerOwner))
359+
if err != nil {
360+
return err
361+
}
362+
} else {
363+
ownerPrivateKeyFound, _, _, ownerPrivateKey, err := contract.SearchForManagedKey(
360364
app,
361365
network,
362366
common.HexToAddress(validatorManagerOwner),
@@ -368,6 +372,10 @@ func changeWeightACP99(
368372
if !ownerPrivateKeyFound {
369373
return fmt.Errorf("not private key found for Validator manager owner %s", validatorManagerOwner)
370374
}
375+
signer, err = evm.NewSignerFromPrivateKey(ownerPrivateKey)
376+
if err != nil {
377+
return err
378+
}
371379
}
372380
ux.Logger.PrintToUser(logging.Yellow.Wrap("Validator manager owner %s pays for the initialization of the validator's weight change (Blockchain gas token)"), validatorManagerOwner)
373381

@@ -419,8 +427,7 @@ func changeWeightACP99(
419427
network,
420428
validatorManagerRPCEndpoint,
421429
externalValidatorManagerOwner,
422-
validatorManagerOwner,
423-
ownerPrivateKey,
430+
signer,
424431
nodeID,
425432
aggregatorLogger,
426433
validatorManagerBlockchainID,
@@ -478,8 +485,7 @@ func changeWeightACP99(
478485
network,
479486
validatorManagerRPCEndpoint,
480487
externalValidatorManagerOwner,
481-
validatorManagerOwner,
482-
ownerPrivateKey,
488+
signer,
483489
validationID,
484490
aggregatorLogger,
485491
validatorManagerBlockchainID,

cmd/blockchaincmd/convert.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ func InitializeValidatorManager(
247247
validatorManagerOwnerAddress := common.HexToAddress(validatorManagerOwnerAddressStr)
248248

249249
// needed for ACP99 PoS (that flow will fail if missing)
250+
var validatorManagerOwnerSigner *evm.Signer
250251
_, _, _, validatorManagerOwnerPrivateKey, err := contract.SearchForManagedKey(
251252
app,
252253
network,
@@ -256,6 +257,12 @@ func InitializeValidatorManager(
256257
if err != nil {
257258
return tracked, err
258259
}
260+
if validatorManagerOwnerPrivateKey != "" {
261+
validatorManagerOwnerSigner, err = evm.NewSignerFromPrivateKey(validatorManagerOwnerPrivateKey)
262+
if err != nil {
263+
return tracked, err
264+
}
265+
}
259266

260267
if privateKey == "" {
261268
// try to use prefunded key from genesis of validator manager blockchain
@@ -284,6 +291,11 @@ func InitializeValidatorManager(
284291
}
285292
}
286293

294+
signer, err := evm.NewSignerFromPrivateKey(privateKey)
295+
if err != nil {
296+
return tracked, err
297+
}
298+
287299
validatorManagerSubnetID, err := GetValidatorManagerSubnetID(network, validatorManagerBlockchainID)
288300
if err != nil {
289301
return tracked, err
@@ -298,7 +310,7 @@ func InitializeValidatorManager(
298310
ValidatorManagerAddress: &validatorManagerAddress,
299311
SpecializedValidatorManagerAddress: &specializedValidatorManagerAddress,
300312
ValidatorManagerOwnerAddress: &validatorManagerOwnerAddress,
301-
ValidatorManagerOwnerPrivateKey: validatorManagerOwnerPrivateKey,
313+
ValidatorManagerOwnerSigner: validatorManagerOwnerSigner,
302314
BootstrapValidators: avaGoBootstrapValidators,
303315
}
304316

@@ -340,9 +352,16 @@ func InitializeValidatorManager(
340352
if err != nil {
341353
return tracked, err
342354
}
355+
var nativeMinterSigner *evm.Signer
356+
if nativeMinterPrecompileAdminPrivateKey != "" {
357+
nativeMinterSigner, err = evm.NewSignerFromPrivateKey(nativeMinterPrecompileAdminPrivateKey)
358+
if err != nil {
359+
return tracked, err
360+
}
361+
}
343362
if err := subnetSDK.InitializeProofOfStake(
344363
app.Log,
345-
privateKey,
364+
signer,
346365
aggregatorLogger,
347366
validatormanagerSDK.PoSParams{
348367
MinimumStakeAmount: big.NewInt(int64(proofOfStakeFlags.MinimumStakeAmount)),
@@ -356,7 +375,7 @@ func InitializeValidatorManager(
356375
},
357376
useACP99,
358377
signatureAggregatorEndpoint,
359-
nativeMinterPrecompileAdminPrivateKey,
378+
nativeMinterSigner,
360379
); err != nil {
361380
return tracked, err
362381
}
@@ -365,7 +384,7 @@ func InitializeValidatorManager(
365384
ux.Logger.PrintToUser("Initializing Proof of Authority Validator Manager contract on blockchain %s ...", blockchainName)
366385
if err := subnetSDK.InitializeProofOfAuthority(
367386
app.Log,
368-
privateKey,
387+
signer,
369388
aggregatorLogger,
370389
useACP99,
371390
signatureAggregatorEndpoint,

cmd/blockchaincmd/deploy.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/ava-labs/avalanche-cli/pkg/ux"
3434
"github.com/ava-labs/avalanche-cli/pkg/validatormanager"
3535
"github.com/ava-labs/avalanche-cli/pkg/vm"
36+
"github.com/ava-labs/avalanche-tooling-sdk-go/evm"
3637
sdkutils "github.com/ava-labs/avalanche-tooling-sdk-go/utils"
3738
validatormanagerSDK "github.com/ava-labs/avalanche-tooling-sdk-go/validatormanager"
3839
"github.com/ava-labs/avalanche-tooling-sdk-go/validatormanager/validatormanagertypes"
@@ -943,19 +944,24 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
943944
}
944945
}
945946

947+
vmcSigner, err := evm.NewSignerFromPrivateKey(vmcPrivateKey)
948+
if err != nil {
949+
return err
950+
}
951+
946952
ux.Logger.PrintToUser("")
947953
ux.Logger.PrintToUser("Deploying Validator Manager into %s", validatorManagerRPCEndpoint)
948954
validatorManagerAddress, _, _, err := validatormanager.DeployValidatorManagerV2_0_0Contract(
949955
validatorManagerRPCEndpoint,
950-
vmcPrivateKey,
956+
vmcSigner,
951957
false,
952958
)
953959
if err != nil {
954960
return err
955961
}
956962
proxy, proxyAdmin, _, _, err := validatormanager.DeployTransparentProxy(
957963
validatorManagerRPCEndpoint,
958-
vmcPrivateKey,
964+
vmcSigner,
959965
validatorManagerAddress,
960966
common.HexToAddress(sidecar.ProxyContractOwner),
961967
)
@@ -972,15 +978,15 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
972978
ux.Logger.PrintToUser("Deploying Specialized Validator Manager into %s", validatorManagerRPCEndpoint)
973979
specializedValidatorManagerAddress, _, _, err := validatormanager.DeployPoSValidatorManagerV2_0_0Contract(
974980
validatorManagerRPCEndpoint,
975-
vmcPrivateKey,
981+
vmcSigner,
976982
false,
977983
)
978984
if err != nil {
979985
return err
980986
}
981987
proxy, proxyAdmin, _, _, err := validatormanager.DeployTransparentProxy(
982988
validatorManagerRPCEndpoint,
983-
vmcPrivateKey,
989+
vmcSigner,
984990
specializedValidatorManagerAddress,
985991
common.HexToAddress(sidecar.ProxyContractOwner),
986992
)

cmd/blockchaincmd/helpers.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/ava-labs/avalanche-cli/pkg/ux"
2323
"github.com/ava-labs/avalanche-cli/pkg/validatormanager"
2424
"github.com/ava-labs/avalanche-cli/pkg/vm"
25+
"github.com/ava-labs/avalanche-tooling-sdk-go/evm"
2526
"github.com/ava-labs/avalanchego/config"
2627
"github.com/ava-labs/avalanchego/ids"
2728
"github.com/ava-labs/avalanchego/utils/logging"
@@ -338,23 +339,31 @@ func CompleteValidatorManagerL1Deploy(
338339
if err != nil {
339340
return err
340341
}
342+
genesisSigner, err := evm.NewSignerFromPrivateKey(genesisPrivateKey)
343+
if err != nil {
344+
return err
345+
}
346+
proxyOwnerSigner, err := evm.NewSignerFromPrivateKey(proxyOwnerPrivateKey)
347+
if err != nil {
348+
return err
349+
}
341350
if useACP99 {
342351
_, err := validatormanager.DeployValidatorManagerV2_0_0ContractAndRegisterAtGenesisProxy(
343352
logger,
344353
validatorManagerRPCEndpoint,
345-
genesisPrivateKey,
354+
genesisSigner,
346355
true,
347-
proxyOwnerPrivateKey,
356+
proxyOwnerSigner,
348357
)
349358
if err != nil {
350359
return err
351360
}
352361
_, err = validatormanager.DeployPoSValidatorManagerV2_0_0ContractAndRegisterAtGenesisProxy(
353362
logger,
354363
validatorManagerRPCEndpoint,
355-
genesisPrivateKey,
364+
genesisSigner,
356365
true,
357-
proxyOwnerPrivateKey,
366+
proxyOwnerSigner,
358367
)
359368
if err != nil {
360369
return err
@@ -363,9 +372,9 @@ func CompleteValidatorManagerL1Deploy(
363372
if _, err := validatormanager.DeployPoSValidatorManagerV1_0_0ContractAndRegisterAtGenesisProxy(
364373
logger,
365374
validatorManagerRPCEndpoint,
366-
genesisPrivateKey,
375+
genesisSigner,
367376
true,
368-
proxyOwnerPrivateKey,
377+
proxyOwnerSigner,
369378
); err != nil {
370379
return err
371380
}

0 commit comments

Comments
 (0)