Skip to content

Commit

Permalink
- fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
iulianpascalau committed Sep 3, 2024
1 parent 703a778 commit 5d860dc
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 25 deletions.
3 changes: 2 additions & 1 deletion cmd/migration/config/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
[MultiversX]
NetworkAddress = "https://devnet-gateway.multiversx.com" # the network address
MultisigContractAddress = "erd1qqqqqqqqqqqqqpgqtvnswnzxxz8susupesys0hvg7q2z5nawrcjq06qdus"
SafeContractAddress = "erd1qqqqqqqqqqqqqpgqhxkc48lt5uv2hejj4wtjqvugfm4wgv6gyfkqw0uuxl"
[MultiversX.Proxy]
CacherExpirationSeconds = 600 # the caching time in seconds

# valid options for ProxyRestAPIEntityType are "observer" and "proxy". Any other value will trigger an error.
# "observer" is useful when querying an observer, directly and "proxy" is useful when querying a squad's proxy (gateway)
RestAPIEntityType = "observer"
RestAPIEntityType = "proxy"
FinalityCheck = true
MaxNoncesDelta = 7 # the number of maximum blocks allowed to be "in front" of what the metachain has notarized

Expand Down
33 changes: 17 additions & 16 deletions cmd/migration/config/migration.json
Original file line number Diff line number Diff line change
@@ -1,76 +1,77 @@
{
"OldSafeContractAddress": "0x92A26975433A61CF1134802586aa669bAB8B69f3",
"NewSafeContractAddress": "0x37aaaf95887624a363effB7762D489E3C05c2a02",
"BatchID": 3547,
"NewSafeContractAddress": "0xA6504Cc508889bbDBd4B748aFf6EA6b5D0d2684c",
"BatchID": 3548,
"MessageHash": "0x9fad9673d99127cf3bfbcb25fdb271c90009e1199e5ae3bd98f516a6d2b46357",
"DepositsInfo": [
{
"DepositNonce": 4651,
"DepositNonce": 4652,
"Token": "ETHUSDC-220753",
"ContractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"Amount": "7245293620507"
"Amount": "7091634513581"
},
{
"DepositNonce": 4652,
"DepositNonce": 4653,
"Token": "ETHUTK-8cdf7a",
"ContractAddress": "0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c",
"Amount": "224564169411881824066539333"
},
{
"DepositNonce": 4653,
"DepositNonce": 4654,
"Token": "ETHUSDT-9c73c6",
"ContractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"Amount": "305146464594"
"Amount": "318715112062"
},
{
"DepositNonce": 4654,
"DepositNonce": 4655,
"Token": "ETHBUSD-450923",
"ContractAddress": "0x4Fabb145d64652a948d72533023f6E7A623C7C53",
"Amount": "22294352736330153151984"
},
{
"DepositNonce": 4655,
"DepositNonce": 4656,
"Token": "ETHHMT-18538a",
"ContractAddress": "0xd1ba9BAC957322D6e8c07a160a3A8dA11A0d2867",
"Amount": "435000000000000000000"
},
{
"DepositNonce": 4656,
"DepositNonce": 4657,
"Token": "ETHCGG-ee4e0c",
"ContractAddress": "0x1fE24F25b1Cf609B9c4e7E12D802e3640dFA5e43",
"Amount": "1500138370967581082219795"
},
{
"DepositNonce": 4657,
"DepositNonce": 4658,
"Token": "ETHINFRA-60a3bf",
"ContractAddress": "0x013062189dc3dcc99e9Cee714c513033b8d99e3c",
"Amount": "141172595980399500424091"
},
{
"DepositNonce": 4658,
"DepositNonce": 4659,
"Token": "ETHWBTC-74e282",
"ContractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"Amount": "3898848955"
},
{
"DepositNonce": 4659,
"DepositNonce": 4660,
"Token": "ETHWETH-e1c126",
"ContractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"Amount": "725921417141355037005"
},
{
"DepositNonce": 4660,
"DepositNonce": 4661,
"Token": "ETHWSDAI-572803",
"ContractAddress": "0x83F20F44975D03b1b09e64809B757c47f942BEeA",
"Amount": "5431516086574385345409"
},
{
"DepositNonce": 4661,
"DepositNonce": 4662,
"Token": "ETHWDAI-bd65f9",
"ContractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"Amount": "127608014625114134146189"
},
{
"DepositNonce": 4662,
"DepositNonce": 4663,
"Token": "ETHUMB-291202",
"ContractAddress": "0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2",
"Amount": "4669367702477323508554075"
Expand Down
2 changes: 1 addition & 1 deletion cmd/migration/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var (
", if set to *:INFO the logs for all packages will have the INFO level. However, if set to *:INFO,api:DEBUG" +
" the logs for all packages will have the INFO level, excepting the api package which will receive a DEBUG" +
" log level.",
Value: "*:" + logger.LogDebug.String(),
Value: "*:" + logger.LogInfo.String(),
}
configurationFile = cli.StringFlag{
Name: "config",
Expand Down
21 changes: 15 additions & 6 deletions cmd/migration/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ func main() {
log.Error(err.Error())
os.Exit(1)
}

log.Info("process finished successfully")
}

func execute(ctx *cli.Context) error {
Expand Down Expand Up @@ -106,9 +108,14 @@ func generateAndSign(ctx *cli.Context, cfg config.MigrationToolConfig) error {
return err
}

safeAddress, err := data.NewAddressFromBech32String(cfg.MultiversX.SafeContractAddress)
if err != nil {
return err
}

argsMXClientDataGetter := multiversx.ArgsMXClientDataGetter{
MultisigContractAddress: multisigAddress,
SafeContractAddress: dummyAddress,
SafeContractAddress: safeAddress,
RelayerAddress: dummyAddress,
Proxy: proxy,
Log: log,
Expand Down Expand Up @@ -143,6 +150,7 @@ func generateAndSign(ctx *cli.Context, cfg config.MigrationToolConfig) error {
Erc20ContractsHolder: erc20ContractsHolder,
SafeContractAddress: safeEthAddress,
SafeContractWrapper: safeInstance,
Logger: log,
}

creator, err := ethereum.NewMigrationBatchCreator(argsCreator)
Expand Down Expand Up @@ -171,16 +179,15 @@ func generateAndSign(ctx *cli.Context, cfg config.MigrationToolConfig) error {
return err
}

log.Info("signing batch", "message hash", batchInfo.MessageHash.String(),
"public key", cryptoHandler.GetAddress().String())

signature, err := cryptoHandler.Sign(batchInfo.MessageHash)
if err != nil {
return err
}

log.Info(string(val))
log.Info("Batch signed",
"public key", cryptoHandler.GetAddress().String(),
"message hash", batchInfo.MessageHash.String(),
"signature", signature)
log.Info("Migration .json file contents: \n" + string(val))

jsonFilename := ctx.GlobalString(migrationJsonFile.Name)
err = os.WriteFile(jsonFilename, val, os.ModePerm)
Expand All @@ -200,6 +207,8 @@ func generateAndSign(ctx *cli.Context, cfg config.MigrationToolConfig) error {
return err
}

log.Info("Signature .json file contents: \n" + string(val))

return os.WriteFile(sigFilename, val, os.ModePerm)
}

Expand Down
4 changes: 3 additions & 1 deletion config/tomlConfigs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,7 @@ func TestMigrationToolConfig(t *testing.T) {
MultiversX: MultiversXConfig{
NetworkAddress: "https://devnet-gateway.multiversx.com",
MultisigContractAddress: "erd1qqqqqqqqqqqqqpgqzyuaqg3dl7rqlkudrsnm5ek0j3a97qevd8sszj0glf",
SafeContractAddress: "erd1qqqqqqqqqqqqqpgqtvnswnzxxz8susupesys0hvg7q2z5nawrcjq06qdus",
Proxy: ProxyConfig{
CacherExpirationSeconds: 600,
RestAPIEntityType: "observer",
Expand Down Expand Up @@ -518,7 +519,8 @@ func TestMigrationToolConfig(t *testing.T) {
[MultiversX]
NetworkAddress = "https://devnet-gateway.multiversx.com" # the network address
MultisigContractAddress = "erd1qqqqqqqqqqqqqpgqzyuaqg3dl7rqlkudrsnm5ek0j3a97qevd8sszj0glf"
MultisigContractAddress = "erd1qqqqqqqqqqqqqpgqzyuaqg3dl7rqlkudrsnm5ek0j3a97qevd8sszj0glf" # the multiversx address for the bridge contract
SafeContractAddress = "erd1qqqqqqqqqqqqqpgqtvnswnzxxz8susupesys0hvg7q2z5nawrcjq06qdus" # the multiversx address for the safe contract
[MultiversX.Proxy]
CacherExpirationSeconds = 600 # the caching time in seconds
Expand Down
1 change: 1 addition & 0 deletions executors/ethereum/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ var (
errNilErc20ContractsHolder = errors.New("nil ERC20 contracts holder")
errNilSafeContractWrapper = errors.New("nil safe contract wrapper")
errWrongERC20AddressResponse = errors.New("wrong ERC20 address response")
errNilLogger = errors.New("nil logger")
)
18 changes: 18 additions & 0 deletions executors/ethereum/migrationBatchCreator.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import (
"context"
"fmt"
"math/big"
"strings"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/multiversx/mx-bridge-eth-go/clients/ethereum"
"github.com/multiversx/mx-bridge-eth-go/core/batchProcessor"
"github.com/multiversx/mx-chain-core-go/core/check"
logger "github.com/multiversx/mx-chain-logger-go"
)

var zero = big.NewInt(0)
Expand All @@ -20,13 +22,15 @@ type ArgsMigrationBatchCreator struct {
Erc20ContractsHolder Erc20ContractsHolder
SafeContractAddress common.Address
SafeContractWrapper SafeContractWrapper
Logger logger.Logger
}

type migrationBatchCreator struct {
mvxDataGetter MvxDataGetter
erc20ContractsHolder Erc20ContractsHolder
safeContractAddress common.Address
safeContractWrapper SafeContractWrapper
logger logger.Logger
}

// NewMigrationBatchCreator creates a new instance of type migrationBatchCreator that is able to generate the migration batch output file
Expand All @@ -40,17 +44,23 @@ func NewMigrationBatchCreator(args ArgsMigrationBatchCreator) (*migrationBatchCr
if check.IfNilReflect(args.SafeContractWrapper) {
return nil, errNilSafeContractWrapper
}
if check.IfNil(args.Logger) {
return nil, errNilLogger
}

return &migrationBatchCreator{
mvxDataGetter: args.MvxDataGetter,
erc20ContractsHolder: args.Erc20ContractsHolder,
safeContractAddress: args.SafeContractAddress,
safeContractWrapper: args.SafeContractWrapper,
logger: args.Logger,
}, nil
}

// CreateBatchInfo creates an instance of type BatchInfo
func (creator *migrationBatchCreator) CreateBatchInfo(ctx context.Context, newSafeAddress common.Address) (*BatchInfo, error) {
creator.logger.Info("started the batch creation process...")

batchesCount, err := creator.safeContractWrapper.BatchesCount(&bind.CallOpts{Context: ctx})
if err != nil {
return nil, err
Expand All @@ -61,21 +71,29 @@ func (creator *migrationBatchCreator) CreateBatchInfo(ctx context.Context, newSa
return nil, err
}

creator.logger.Info("fetched Ethereum contracts state", "batches count", batchesCount, "deposits count", depositsCount)

tokensList, err := creator.getTokensList(ctx)
if err != nil {
return nil, err
}

creator.logger.Info("fetched known tokens", "tokens", strings.Join(tokensList, ", "))

deposits, err := creator.fetchERC20ContractsAddresses(ctx, tokensList, depositsCount)
if err != nil {
return nil, err
}

creator.logger.Info("fetched ERC20 contract addresses")

err = creator.fetchBalances(ctx, deposits)
if err != nil {
return nil, err
}

creator.logger.Info("fetched balances contract addresses")

return creator.assembleBatchInfo(batchesCount, deposits, newSafeAddress)
}

Expand Down
12 changes: 12 additions & 0 deletions executors/ethereum/migrationBatchCreator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/multiversx/mx-bridge-eth-go/testsCommon/bridge"
"github.com/multiversx/mx-chain-go/testscommon"
"github.com/stretchr/testify/assert"
)

Expand All @@ -37,6 +38,7 @@ func createMockArgsForMigrationBatchCreator() ArgsMigrationBatchCreator {
Erc20ContractsHolder: &bridge.ERC20ContractsHolderStub{},
SafeContractAddress: safeContractAddress,
SafeContractWrapper: &bridge.SafeContractWrapperStub{},
Logger: &testscommon.LoggerStub{},
}
}

Expand Down Expand Up @@ -73,6 +75,16 @@ func TestNewMigrationBatchCreator(t *testing.T) {
assert.Nil(t, creator)
assert.Equal(t, errNilSafeContractWrapper, err)
})
t.Run("nil logger should error", func(t *testing.T) {
t.Parallel()

args := createMockArgsForMigrationBatchCreator()
args.Logger = nil

creator, err := NewMigrationBatchCreator(args)
assert.Nil(t, creator)
assert.Equal(t, errNilLogger, err)
})
t.Run("should work", func(t *testing.T) {
t.Parallel()

Expand Down

0 comments on commit 5d860dc

Please sign in to comment.