diff --git a/chains/ethereum/chain.go b/chains/ethereum/chain.go index 560a7b3b7..8f3d6b0fd 100644 --- a/chains/ethereum/chain.go +++ b/chains/ethereum/chain.go @@ -101,31 +101,31 @@ func InitializeChain(chainCfg *core.ChainConfig, logger log15.Logger, sysErr cha return nil, err } kp, _ := kpI.(*secp256k1.Keypair) - - // delete keypair initialize - kpI.DeleteKeyPair() bs, err := setupBlockstore(cfg, kp.Address()) if err != nil { + kp.DeleteKeyPair() return nil, err } stop := make(chan int) conn := connection.NewConnection(cfg.endpoint, cfg.http, kp, logger, cfg.gasLimit, cfg.maxGasPrice, cfg.gasMultiplier, cfg.egsApiKey, cfg.egsSpeed) - // delete keypair - kp.DeleteKeyPair() + err = conn.Connect() if err != nil { + kp.DeleteKeyPair() return nil, err } err = conn.EnsureHasBytecode(cfg.bridgeContract) if err != nil { + kp.DeleteKeyPair() return nil, err } if cfg.erc20HandlerContract != utils.ZeroAddress { err = conn.EnsureHasBytecode(cfg.erc20HandlerContract) if err != nil { + kp.DeleteKeyPair() return nil, err } } @@ -133,42 +133,50 @@ func InitializeChain(chainCfg *core.ChainConfig, logger log15.Logger, sysErr cha if cfg.genericHandlerContract != utils.ZeroAddress { err = conn.EnsureHasBytecode(cfg.genericHandlerContract) if err != nil { + kp.DeleteKeyPair() return nil, err } } bridgeContract, err := bridge.NewBridge(cfg.bridgeContract, conn.Client()) if err != nil { + kp.DeleteKeyPair() return nil, err } chainId, err := bridgeContract.ChainID(conn.CallOpts()) if err != nil { + kp.DeleteKeyPair() return nil, err } if chainId != uint8(chainCfg.Id) { + kp.DeleteKeyPair() return nil, fmt.Errorf("chainId (%d) and configuration chainId (%d) do not match", chainId, chainCfg.Id) } erc20HandlerContract, err := erc20Handler.NewERC20Handler(cfg.erc20HandlerContract, conn.Client()) if err != nil { + kp.DeleteKeyPair() return nil, err } erc721HandlerContract, err := erc721Handler.NewERC721Handler(cfg.erc721HandlerContract, conn.Client()) if err != nil { + kp.DeleteKeyPair() return nil, err } genericHandlerContract, err := GenericHandler.NewGenericHandler(cfg.genericHandlerContract, conn.Client()) if err != nil { + kp.DeleteKeyPair() return nil, err } if chainCfg.LatestBlock { curr, err := conn.LatestBlock() if err != nil { + kp.DeleteKeyPair() return nil, err } cfg.startBlock = curr @@ -179,6 +187,8 @@ func InitializeChain(chainCfg *core.ChainConfig, logger log15.Logger, sysErr cha writer := NewWriter(conn, cfg, logger, stop, sysErr, m) writer.setContract(bridgeContract) + // delete keypair + kp.DeleteKeyPair() return &Chain{ cfg: chainCfg, diff --git a/cmd/chainbridge/account.go b/cmd/chainbridge/account.go index 66c1da81d..7c9db1f5e 100644 --- a/cmd/chainbridge/account.go +++ b/cmd/chainbridge/account.go @@ -186,7 +186,7 @@ func ValidatePassword(password string) bool { return false } - // Check if all constraints are satisfied + log.Info("Password created successfully") return true } @@ -235,6 +235,7 @@ func importPrivKey(ctx *cli.Context, keytype, datadir, key string, password []by for i := 0; i < len(salt); i++ { salt[i] = 0 } + kp.DeleteKeyPair() return "", fmt.Errorf("could not generate sr25519 keypair from given string: %w", err) } } else if keytype == crypto.Secp256k1Type { @@ -252,6 +253,7 @@ func importPrivKey(ctx *cli.Context, keytype, datadir, key string, password []by for i := 0; i < len(salt); i++ { salt[i] = 0 } + kp.DeleteKeyPair() return "", fmt.Errorf("could not generate secp256k1 keypair from given string: %w", err) } } else { @@ -272,6 +274,7 @@ func importPrivKey(ctx *cli.Context, keytype, datadir, key string, password []by for i := 0; i < len(salt); i++ { salt[i] = 0 } + kp.DeleteKeyPair() return "", fmt.Errorf("invalid filepath: %w", err) } @@ -283,6 +286,7 @@ func importPrivKey(ctx *cli.Context, keytype, datadir, key string, password []by for i := 0; i < len(salt); i++ { salt[i] = 0 } + kp.DeleteKeyPair() return "", fmt.Errorf("Unable to Open File: %w", err) } @@ -301,6 +305,8 @@ func importPrivKey(ctx *cli.Context, keytype, datadir, key string, password []by for i := 0; i < len(salt); i++ { salt[i] = 0 } + + kp.DeleteKeyPair() return "", fmt.Errorf("could not write key to file: %w", err) } for i := 0; i < len(hshPwd); i++ { diff --git a/go.mod b/go.mod index 40cd88273..d4a8a2ca3 100644 --- a/go.mod +++ b/go.mod @@ -15,4 +15,4 @@ require ( golang.org/x/sys v0.14.0 // indirect ) -replace github.com/ChainSafe/chainbridge-utils v1.0.6 => github.com/ChainVerse-Team/chainbridge-utils v0.0.5-alpha +replace github.com/ChainSafe/chainbridge-utils v1.0.6 => github.com/ChainVerse-Team/chainbridge-utils v0.0.5-beta diff --git a/go.sum b/go.sum index aeb6f3afc..dab59bce9 100644 --- a/go.sum +++ b/go.sum @@ -37,8 +37,8 @@ github.com/ChainSafe/chainbridge-substrate-events v0.0.0-20200715141113-87198532 github.com/ChainSafe/chainbridge-substrate-events v0.0.0-20200715141113-87198532025e/go.mod h1:H5fNH57wn/j1oLifOnWEqYbfJZcOWzr7jZjKKrUckSQ= github.com/ChainSafe/log15 v1.0.0 h1:vRDVtWtVwIH5uSCBvgTTZh6FA58UBJ6+QiiypaZfBf8= github.com/ChainSafe/log15 v1.0.0/go.mod h1:5v1+ALHtdW0NfAeeoYyKmzCAMcAeqkdhIg4uxXWIgOg= -github.com/ChainVerse-Team/chainbridge-utils v0.0.5-alpha h1:isR+2RF4pOthPwHb8ldHzXA0Lr1bwLRgG3JapDmRpPY= -github.com/ChainVerse-Team/chainbridge-utils v0.0.5-alpha/go.mod h1:hrkNR9+xaFYyfFaDFN/U6B12TZLUhAHHX2Hnd7v4xl4= +github.com/ChainVerse-Team/chainbridge-utils v0.0.5-beta h1:dYm8gOkj/WaqF2GQTAUTHgIq5bNsF2JRWK7jxUa2SHs= +github.com/ChainVerse-Team/chainbridge-utils v0.0.5-beta/go.mod h1:hrkNR9+xaFYyfFaDFN/U6B12TZLUhAHHX2Hnd7v4xl4= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=