Skip to content

Commit

Permalink
e2e tests passing
Browse files Browse the repository at this point in the history
  • Loading branch information
cam-schultz committed Jan 23, 2025
1 parent 6211601 commit 32fbf5d
Show file tree
Hide file tree
Showing 6 changed files with 322 additions and 198 deletions.
9 changes: 5 additions & 4 deletions tests/flows/teleporter/validator_churn.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ func ValidatorChurn(network *localnetwork.LocalNetwork, teleporter utils.Telepor
addValidatorsCtx, cancel := context.WithTimeout(ctx, (90+sleepPeriodSeconds)*newNodeCount*time.Second)
defer cancel()
newNodes := network.GetExtraNodes(newNodeCount)
validatorManagerAddress := network.GetValidatorManager(l1AInfo.SubnetID)
validatorManager, err := poavalidatormanager.NewPoAValidatorManager(validatorManagerAddress, l1AInfo.RPCClient)
validatorManagerProxy, poaManagerProxy := network.GetValidatorManager(l1AInfo.SubnetID)
poaManager, err := poavalidatormanager.NewPoAValidatorManager(poaManagerProxy.Address, l1AInfo.RPCClient)
pChainInfo := utils.GetPChainInfo(network.GetPrimaryNetworkInfo())
Expect(err).Should(BeNil())

Expand All @@ -105,8 +105,9 @@ func ValidatorChurn(network *localnetwork.LocalNetwork, teleporter utils.Telepor
fundedKey,
l1AInfo,
pChainInfo,
validatorManager,
validatorManagerAddress,
poaManager,
poaManagerProxy.Address,
validatorManagerProxy.Address,
expiry,
node,
network.GetPChainWallet(),
Expand Down
25 changes: 14 additions & 11 deletions tests/flows/validator-manager/erc20_token_staking.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,17 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {

ctx := context.Background()

nodes, initialValidationIDs, _ := network.ConvertSubnet(
nodes, initialValidationIDs := network.ConvertSubnet(
ctx,
l1AInfo,
utils.ERC20TokenStakingManager,
[]uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits
fundedKey,
false,
)
stakingManagerAddress := network.GetValidatorManager(l1AInfo.SubnetID)
validatorManagerProxy, stakingManagerProxy := network.GetValidatorManager(l1AInfo.SubnetID)
erc20StakingManager, err := erc20tokenstakingmanager.NewERC20TokenStakingManager(
stakingManagerAddress,
stakingManagerProxy.Address,
l1AInfo.RPCClient,
)
Expect(err).Should(BeNil())
Expand All @@ -72,7 +72,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
//
// Delist one initial validator
//
posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, l1AInfo.RPCClient)
posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerProxy.Address, l1AInfo.RPCClient)
Expect(err).Should(BeNil())
utils.InitializeAndCompleteEndInitialPoSValidation(
ctx,
Expand All @@ -81,7 +81,8 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
posStakingManager,
stakingManagerAddress,
stakingManagerProxy.Address,
validatorManagerProxy.Address,
initialValidationIDs[0],
0,
nodes[0].Weight,
Expand All @@ -100,7 +101,8 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
erc20StakingManager,
stakingManagerAddress,
stakingManagerProxy.Address,
validatorManagerProxy.Address,
erc20,
expiry,
nodes[0],
Expand Down Expand Up @@ -137,7 +139,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
validationID,
delegatorStake,
erc20,
stakingManagerAddress,
stakingManagerProxy.Address,
erc20StakingManager,
)
initRegistrationEvent, err := utils.GetEventFromLogs(
Expand Down Expand Up @@ -179,7 +181,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
fundedKey,
delegationID,
l1AInfo,
stakingManagerAddress,
stakingManagerProxy.Address,
registrationSignedMessage,
)
// Check that the validator is registered in the staking contract
Expand All @@ -202,7 +204,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
ctx,
fundedKey,
l1AInfo,
stakingManagerAddress,
stakingManagerProxy.Address,
delegationID,
)
delegatorRemovalEvent, err := utils.GetEventFromLogs(
Expand Down Expand Up @@ -247,7 +249,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
fundedKey,
delegationID,
l1AInfo,
stakingManagerAddress,
stakingManagerProxy.Address,
signedMessage,
)

Expand All @@ -271,7 +273,8 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
posStakingManager,
stakingManagerAddress,
stakingManagerProxy.Address,
validatorManagerProxy.Address,
validationID,
expiry,
nodes[0],
Expand Down
26 changes: 14 additions & 12 deletions tests/flows/validator-manager/native_token_staking.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,21 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {

ctx := context.Background()

nodes, initialValidationIDs, _ := network.ConvertSubnet(
nodes, initialValidationIDs := network.ConvertSubnet(
ctx,
l1AInfo,
utils.NativeTokenStakingManager,
[]uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits
fundedKey,
false,
)
stakingManagerAddress := network.GetValidatorManager(l1AInfo.SubnetID)
validatorManagerProxy, stakingManagerProxy := network.GetValidatorManager(l1AInfo.SubnetID)
nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager(
stakingManagerAddress,
stakingManagerProxy.Address,
l1AInfo.RPCClient,
)
Expect(err).Should(BeNil())
utils.AddNativeMinterAdmin(ctx, l1AInfo, fundedKey, stakingManagerAddress)
utils.AddNativeMinterAdmin(ctx, l1AInfo, fundedKey, stakingManagerProxy.Address)

signatureAggregator := utils.NewSignatureAggregator(
cChainInfo.NodeURIs[0],
Expand All @@ -68,7 +68,7 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
//
// Delist one initial validator
//
posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, l1AInfo.RPCClient)
posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerProxy.Address, l1AInfo.RPCClient)
Expect(err).Should(BeNil())
utils.InitializeAndCompleteEndInitialPoSValidation(
ctx,
Expand All @@ -77,7 +77,8 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
posStakingManager,
stakingManagerAddress,
stakingManagerProxy.Address,
validatorManagerProxy.Address,
initialValidationIDs[0],
0,
nodes[0].Weight,
Expand All @@ -96,7 +97,8 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
nativeStakingManager,
stakingManagerAddress,
stakingManagerProxy.Address,
validatorManagerProxy.Address,
expiry,
nodes[0],
network.GetPChainWallet(),
Expand Down Expand Up @@ -131,7 +133,6 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
validationID,
delegatorStake,
stakingManagerAddress,
nativeStakingManager,
)
initRegistrationEvent, err := utils.GetEventFromLogs(
Expand Down Expand Up @@ -173,7 +174,7 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
fundedKey,
delegationID,
l1AInfo,
stakingManagerAddress,
stakingManagerProxy.Address,
registrationSignedMessage,
)
// Check that the validator is registered in the staking contract
Expand All @@ -195,7 +196,7 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
ctx,
fundedKey,
l1AInfo,
stakingManagerAddress,
stakingManagerProxy.Address,
delegationID,
)
delegatorRemovalEvent, err := utils.GetEventFromLogs(
Expand Down Expand Up @@ -240,7 +241,7 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
fundedKey,
delegationID,
l1AInfo,
stakingManagerAddress,
stakingManagerProxy.Address,
signedMessage,
)

Expand All @@ -264,7 +265,8 @@ func NativeTokenStakingManager(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
posStakingManager,
stakingManagerAddress,
stakingManagerProxy.Address,
validatorManagerProxy.Address,
validationID,
expiry,
nodes[0],
Expand Down
60 changes: 36 additions & 24 deletions tests/flows/validator-manager/poa_to_pos.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/ava-labs/avalanchego/utils/units"
nativetokenstakingmanager "github.com/ava-labs/icm-contracts/abi-bindings/go/validator-manager/NativeTokenStakingManager"
poavalidatormanager "github.com/ava-labs/icm-contracts/abi-bindings/go/validator-manager/PoAValidatorManager"
validatormanager "github.com/ava-labs/icm-contracts/abi-bindings/go/validator-manager/ValidatorManager"
iposvalidatormanager "github.com/ava-labs/icm-contracts/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager"
localnetwork "github.com/ava-labs/icm-contracts/tests/network"
"github.com/ava-labs/icm-contracts/tests/utils"
Expand Down Expand Up @@ -61,16 +62,16 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
)

// Deploy PoAValidatorManager contract with a proxy
nodes, initialValidationIDs, proxyAdmin := network.ConvertSubnet(
nodes, initialValidationIDs := network.ConvertSubnet(
ctx,
l1AInfo,
utils.PoAValidatorManager,
[]uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits
ownerKey,
true,
)
proxyAddress := network.GetValidatorManager(l1AInfo.SubnetID)
poaValidatorManager, err := poavalidatormanager.NewPoAValidatorManager(proxyAddress, l1AInfo.RPCClient)
validatorManagerProxy, poaManagerProxy := network.GetValidatorManager(l1AInfo.SubnetID)
poaValidatorManager, err := poavalidatormanager.NewPoAValidatorManager(poaManagerProxy.Address, l1AInfo.RPCClient)
Expect(err).Should(BeNil())

signatureAggregator := utils.NewSignatureAggregator(
Expand All @@ -92,7 +93,8 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
poaValidatorManager,
proxyAddress,
poaManagerProxy.Address,
validatorManagerProxy.Address,
initialValidationIDs[0],
0,
nodes[0].Weight,
Expand Down Expand Up @@ -127,13 +129,18 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
poaValidatorManager,
proxyAddress,
poaManagerProxy.Address,
validatorManagerProxy.Address,
expiry,
nodes[0],
network.GetPChainWallet(),
network.GetNetworkID(),
)
poaValidator, err := poaValidatorManager.GetValidator(&bind.CallOpts{}, poaValidationID)

validatorManager, err := validatormanager.NewValidatorManager(validatorManagerProxy.Address, l1AInfo.RPCClient)
Expect(err).Should(BeNil())

poaValidator, err := validatorManager.GetValidator(&bind.CallOpts{}, poaValidationID)
Expect(err).Should(BeNil())
poaNodeID := poaValidator.NodeID

Expand All @@ -144,28 +151,34 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
*/

// Deploy PoSValidatorManager contract
newImplAddress, _ := utils.DeployValidatorManager(
ctx,
fundedKey,
l1AInfo,
utils.NativeTokenStakingManager,

// Reset the global binary data for better test isolation
nativetokenstakingmanager.NativeTokenStakingManagerBin =
nativetokenstakingmanager.NativeTokenStakingManagerMetaData.Bin

newImplAddress, tx, _, err := nativetokenstakingmanager.DeployNativeTokenStakingManager(
opts,
l1AInfo.RPCClient,
0, // ICMInitializable.Allowed
)
Expect(err).Should(BeNil())
utils.WaitForTransactionSuccess(ctx, l1AInfo, tx.Hash())

// Upgrade the TransparentUpgradeableProxy contract to use the new logic contract
opts, err = bind.NewKeyedTransactorWithChainID(ownerKey, l1AInfo.EVMChainID)
Expect(err).Should(BeNil())
tx, err := proxyAdmin.UpgradeAndCall(opts, proxyAddress, newImplAddress, []byte{})
tx, err = poaManagerProxy.ProxyAdmin.UpgradeAndCall(opts, poaManagerProxy.Address, newImplAddress, []byte{})
Expect(err).Should(BeNil())
utils.WaitForTransactionSuccess(ctx, l1AInfo, tx.Hash())

// Change the proxy contract type to NativeTokenStakingManager and initialize it
nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager(
proxyAddress,
poaManagerProxy.Address,
l1AInfo.RPCClient,
)
Expect(err).Should(BeNil())

utils.AddNativeMinterAdmin(ctx, l1AInfo, fundedKey, proxyAddress)
utils.AddNativeMinterAdmin(ctx, l1AInfo, fundedKey, poaManagerProxy.Address)

rewardCalculatorAddress, _ := utils.DeployExampleRewardCalculator(
ctx,
Expand All @@ -177,11 +190,7 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
tx, err = nativeStakingManager.Initialize(
opts,
nativetokenstakingmanager.PoSValidatorManagerSettings{
BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{
SubnetID: l1AInfo.SubnetID,
ChurnPeriodSeconds: utils.DefaultChurnPeriodSeconds,
MaximumChurnPercentage: utils.DefaultMaxChurnPercentage,
},
Manager: validatorManagerProxy.Address,
MinimumStakeAmount: big.NewInt(0).SetUint64(utils.DefaultMinStakeAmount),
MaximumStakeAmount: big.NewInt(0).SetUint64(utils.DefaultMaxStakeAmount),
MinimumStakeDuration: utils.DefaultMinStakeDurationSeconds,
Expand All @@ -196,14 +205,14 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
utils.WaitForTransactionSuccess(context.Background(), l1AInfo, tx.Hash())

// Check that previous validator is still registered
validationID, err := nativeStakingManager.RegisteredValidators(&bind.CallOpts{}, poaNodeID)
validationID, err := validatorManager.RegisteredValidators(&bind.CallOpts{}, poaNodeID)
Expect(err).Should(BeNil())
Expect(validationID[:]).Should(Equal(poaValidationID[:]))

//
// Remove the PoA validator and re-register as a PoS validator
//
posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(proxyAddress, l1AInfo.RPCClient)
posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(poaManagerProxy.Address, l1AInfo.RPCClient)
Expect(err).Should(BeNil())
utils.InitializeAndCompleteEndPoSValidation(
ctx,
Expand All @@ -212,7 +221,8 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
posStakingManager,
proxyAddress,
poaManagerProxy.Address,
validatorManagerProxy.Address,
poaValidationID,
expiry,
nodes[0],
Expand All @@ -231,7 +241,8 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
nativeStakingManager,
proxyAddress,
poaManagerProxy.Address,
validatorManagerProxy.Address,
expiry2,
nodes[0],
network.GetPChainWallet(),
Expand All @@ -247,7 +258,8 @@ func PoAMigrationToPoS(network *localnetwork.LocalNetwork) {
l1AInfo,
pChainInfo,
posStakingManager,
proxyAddress,
poaManagerProxy.Address,
validatorManagerProxy.Address,
posValidationID,
expiry2,
nodes[0],
Expand Down
Loading

0 comments on commit 32fbf5d

Please sign in to comment.