From eef3d6dcad3ef22e81f45c236c5216dc17a82111 Mon Sep 17 00:00:00 2001 From: robertcc Date: Mon, 18 Dec 2023 20:50:38 +0800 Subject: [PATCH] modify evm listener server --- .env.bitcoin | 33 ++++++++++++++++++ bitcoin/config.go | 65 +++++++++++++++++++++++++++-------- bitcoin/config_test.go | 13 +++++-- bitcoin/testdata/bitcoin.toml | 4 +-- 4 files changed, 96 insertions(+), 19 deletions(-) create mode 100644 .env.bitcoin diff --git a/.env.bitcoin b/.env.bitcoin new file mode 100644 index 0000000000..183413100e --- /dev/null +++ b/.env.bitcoin @@ -0,0 +1,33 @@ +BITCOIN_NETWORK_NAME="testnet" +BITCOIN_RPC_HOST="127.0.0.1" +BITCOIN_RPC_PORT="8888" +BITCOIN_RPC_USER="test" +BITCOIN_RPC_PASS="123456" +BITCOIN_WALLET_NAME="test" +BITCOIN_DESTINATION="tb1qfhhxljfajcppfhwa09uxwty5dz4xwfptnqmvtv" +BITCOIN_ENABLE_INDEXER="false" +BITCOIN_INDEXER_LISTEN_ADDRESS="tb1qgm39cu009lyvq93afx47pp4h9wxq5x92lxxgnz" +BITCOIN_BRIDGE_ETH_RPC_URL="127.0.0.1:8545" +BITCOIN_BRIDGE_CONTRACT_ADDRESS="0xB457BF68D71a17Fa5030269Fb895e29e6cD2DF22" +BITCOIN_BRIDGE_ETH_PRIV_KEY="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" +BITCOIN_BRIDGE_ABI="aaa.abi" +BITCOIN_BRIDGE_GAS_LIMIT="23333" +BITCOIN_ENABLE_COMMITTER=false +BITCOIN_STATE_HOST="localhost" +BITCOIN_STATE_PORT="5432" +BITCOIN_STATE_USER="user" +BITCOIN_STATE_PASS="password" +BITCOIN_STATE_DB_NAME="db" +BITCOIN_BRIDGE_AA_SCA_REGISTRY="0xB457BF68D71a17Fa5030269Fb895e29e6cD2DF24" +BITCOIN_BRIDGE_AA_KERNEL_FACTORY="0xB457BF68D71a17Fa5030269Fb895e29e6cD2DF25" +BITCOIN_EVM_ENABLE_LISTENER=false +BITCOIN_EVM_RPC_HOST="http://127.0.0.1" +BITCOIN_EVM_RPC_PORT=8123 +BITCOIN_EVM_CONTRACT_ADDRESS="0x3c950C4D15311dB39F85441316983b3845396C6e" +BITCOIN_EVM_START_HEIGHT=0 +BITCOIN_EVM_DEPOSIT="0x01bee1bfa4116bd0440a1108ef6cb6a2f6eb9b611d8f53260aec20d39e84ee89" +BITCOIN_EVM_WITHDRAW="0xda335c6ae73006d1145bdcf9a98bc76d789b653b13fe6200e6fc4c5dd54add86" + + + + diff --git a/bitcoin/config.go b/bitcoin/config.go index 6931162441..e6726a3992 100644 --- a/bitcoin/config.go +++ b/bitcoin/config.go @@ -110,36 +110,71 @@ func LoadBitcoinConfig(homePath string) (*BitconConfig, error) { if err != nil { // if file not exist use default config // TODO: add gen config command after, The default configuration may not be required - if os.IsNotExist(err) { - config.NetworkName = "signet" - config.RPCHost = "localhost" - config.RPCPort = "8332" - config.RPCUser = "user" - config.RPCPass = "password" - config.WalletName = "walletname" - config.Destination = "tb1qgm39cu009lyvq93afx47pp4h9wxq5x92lxxgnz" - config.IndexerListenAddress = "tb1qsja4hvx66jr9grgmt8452letmz37gmludcrnup" - config.EnableIndexer = false - config.EnableCommitter = false - return &config, nil + if !os.IsNotExist(err) { + return nil, err } - return nil, err + //config.NetworkName = "signet" + //config.RPCHost = "localhost" + //config.RPCPort = "8332" + //config.RPCUser = "user" + //config.RPCPass = "password" + //config.WalletName = "walletname" + //config.Destination = "tb1qgm39cu009lyvq93afx47pp4h9wxq5x92lxxgnz" + //config.IndexerListenAddress = "tb1qsja4hvx66jr9grgmt8452letmz37gmludcrnup" + //config.EnableIndexer = false + //config.EnableCommitter = false + //return &config, nil } v := viper.New() v.SetConfigFile(configFile) - v.AutomaticEnv() v.SetEnvPrefix("BITCOIN") v.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")) + v.AutomaticEnv() if err := v.ReadInConfig(); err != nil { - return nil, err + if !os.IsNotExist(err) { + return nil, err + } + // Load from environment variables if not found in the config file + v.BindEnv("network-name", "BITCOIN_NETWORK_NAME") + v.BindEnv("rpc-host", "BITCOIN_RPC_HOST") + v.BindEnv("rpc-port", "BITCOIN_RPC_PORT") + v.BindEnv("rpc-user", "BITCOIN_RPC_USER") + v.BindEnv("rpc-pass", "BITCOIN_RPC_PASS") + v.BindEnv("wallet-name", "BITCOIN_WALLET_NAME") + v.BindEnv("destination", "BITCOIN_DESTINATION") + v.BindEnv("enable-indexer", "BITCOIN_ENABLE_INDEXER") + v.BindEnv("enable-committer", "BITCOIN_ENABLE_COMMITTER") + v.BindEnv("indexer-listen-address", "BITCOIN_INDEXER_LISTEN_ADDRESS") + v.BindEnv("bridge.eth-rpc-url", "BITCOIN_BRIDGE_ETH_RPC_URL") + v.BindEnv("bridge.eth-priv-key", "BITCOIN_BRIDGE_ETH_PRIV_KEY") + v.BindEnv("bridge.contract-address", "BITCOIN_BRIDGE_CONTRACT_ADDRESS") + v.BindEnv("bridge.abi", "BITCOIN_BRIDGE_ABI") + v.BindEnv("bridge.gas-limit", "BITCOIN_BRIDGE_GAS_LIMIT") + v.BindEnv("bridge.aa-sca-registry", "BITCOIN_BRIDGE_AA_SCA_REGISTRY") + v.BindEnv("bridge.aa-kernel-factory", "BITCOIN_BRIDGE_AA_KERNEL_FACTORY") + v.BindEnv("state.host", "BITCOIN_STATE_HOST") + v.BindEnv("state.port", "BITCOIN_STATE_PORT") + v.BindEnv("state.user", "BITCOIN_STATE_USER") + v.BindEnv("state.pass", "BITCOIN_STATE_PASS") + v.BindEnv("state.db-name", "BITCOIN_STATE_DB_NAME") + v.BindEnv("source-address", "BITCOIN_SOURCE_ADDRESS") + v.BindEnv("fee", "BITCOIN_FEE") + v.BindEnv("evm.enable-listener", "BITCOIN_EVM_ENABLE_LISTENER") + v.BindEnv("evm.rpc-host", "BITCOIN_EVM_RPC_HOST") + v.BindEnv("evm.rpc-port", "BITCOIN_EVM_RPC_PORT") + v.BindEnv("evm.contract-address", "BITCOIN_EVM_CONTRACT_ADDRESS") + v.BindEnv("evm.start-height", "BITCOIN_EVM_START_HEIGHT") + v.BindEnv("evm.deposit", "BITCOIN_EVM_DEPOSIT") + v.BindEnv("evm.withdraw", "BITCOIN_EVM_WITHDRAW") } err = v.Unmarshal(&config) if err != nil { return nil, err } + return &config, nil } diff --git a/bitcoin/config_test.go b/bitcoin/config_test.go index 76b6e90066..af7c2ed7bf 100644 --- a/bitcoin/config_test.go +++ b/bitcoin/config_test.go @@ -37,7 +37,7 @@ func TestConfig(t *testing.T) { require.Equal(t, "b2node", config.RPCPass) require.Equal(t, "b2node", config.WalletName) require.Equal(t, "tb1qgm39cu009lyvq93afx47pp4h9wxq5x92lxxgnz", config.Destination) - require.Equal(t, false, config.EnableIndexer) + require.Equal(t, true, config.EnableIndexer) require.Equal(t, "tb1qfhhxljfajcppfhwa09uxwty5dz4xwfptnqmvtv", config.IndexerListenAddress) require.Equal(t, "localhost:8545", config.Bridge.EthRPCURL) require.Equal(t, "0xB457BF68D71a17Fa5030269Fb895e29e6cD2DFF2", config.Bridge.ContractAddress) @@ -68,9 +68,18 @@ func TestConfigEnv(t *testing.T) { os.Setenv("BITCOIN_STATE_USER", "user") os.Setenv("BITCOIN_STATE_PASS", "password") os.Setenv("BITCOIN_STATE_DB_NAME", "db") + os.Setenv("BITCOIN_ENABLE_COMMITTER", "false") os.Setenv("BITCOIN_BRIDGE_AA_SCA_REGISTRY", "0xB457BF68D71a17Fa5030269Fb895e29e6cD2DF23") os.Setenv("BITCOIN_BRIDGE_AA_KERNEL_FACTORY", "0xB457BF68D71a17Fa5030269Fb895e29e6cD2DF24") - config, err := bitcoin.LoadBitcoinConfig("./testdata") + os.Setenv("BITCOIN_EVM_ENABLE_LISTENER", "false") + os.Setenv("BITCOIN_EVM_RPC_HOST", "http://127.0.0.1") + os.Setenv("BITCOIN_EVM_RPC_PORT", "8123") + os.Setenv("BITCOIN_EVM_CONTRACT_ADDRESS", "0x3c950C4D15311dB39F85441316983b3845396C6d") + os.Setenv("BITCOIN_EVM_START_HEIGHT", "0") + os.Setenv("BITCOIN_EVM_DEPOSIT", "0x01bee1bfa4116bd0440a1108ef6cb6a2f6eb9b611d8f53260aec20d39e84ee88") + os.Setenv("BITCOIN_EVM_WITHDRAW", "0xda335c6ae73006d1145bdcf9a98bc76d789b653b13fe6200e6fc4c5dd54add85") + + config, err := bitcoin.LoadBitcoinConfig("./") require.NoError(t, err) require.Equal(t, "testnet", config.NetworkName) require.Equal(t, "127.0.0.1", config.RPCHost) diff --git a/bitcoin/testdata/bitcoin.toml b/bitcoin/testdata/bitcoin.toml index 8b12056ba5..6ee24be797 100644 --- a/bitcoin/testdata/bitcoin.toml +++ b/bitcoin/testdata/bitcoin.toml @@ -5,7 +5,7 @@ rpc-user = "b2node" rpc-pass = "b2node" wallet-name = "b2node" destination = "tb1qgm39cu009lyvq93afx47pp4h9wxq5x92lxxgnz" -enable-indexer = false +enable-indexer = true indexer-listen-address = "tb1qfhhxljfajcppfhwa09uxwty5dz4xwfptnqmvtv" source-address = "tb1qr2ssscefkjeehv5kl0alhwj976v6cpxqlskn7n" fee = 200000 @@ -20,7 +20,7 @@ aa-sca-registry = "0xB457BF68D71a17Fa5030269Fb895e29e6cD2DFF3" aa-kernel-factory = "0xB457BF68D71a17Fa5030269Fb895e29e6cD2DFF4" [evm] -enable-listener = false +enable-listener = true rpc-host = "http://127.0.0.1" rpc-port = 8545 contract-address = "0x47549F0f902F8E0DB96aBb16E06Da60751516F54"