node: add Binance Smart Chain support
BSC is identical to Eth, so we can just re-use our Eth devnet. Fixes certusone/wormhole#185 Change-Id: Ib96a71b5e5873d7cbd8f26dbb655049c6a64cef9
This commit is contained in:
parent
1686b35587
commit
cf9ea6bfde
|
@ -57,6 +57,9 @@ var (
|
|||
ethRPC *string
|
||||
ethContract *string
|
||||
|
||||
bscRPC *string
|
||||
bscContract *string
|
||||
|
||||
terraWS *string
|
||||
terraLCD *string
|
||||
terraChainID *string
|
||||
|
@ -93,6 +96,9 @@ func init() {
|
|||
ethRPC = BridgeCmd.Flags().String("ethRPC", "", "Ethereum RPC URL")
|
||||
ethContract = BridgeCmd.Flags().String("ethContract", "", "Ethereum bridge contract address")
|
||||
|
||||
bscRPC = BridgeCmd.Flags().String("bscRPC", "", "Binance Smart Chain RPC URL")
|
||||
bscContract = BridgeCmd.Flags().String("bscContract", "", "Binance Smart Chain bridge contract address")
|
||||
|
||||
terraWS = BridgeCmd.Flags().String("terraWS", "", "Path to terrad root for websocket connection")
|
||||
terraLCD = BridgeCmd.Flags().String("terraLCD", "", "Path to LCD service root for http calls")
|
||||
terraChainID = BridgeCmd.Flags().String("terraChainID", "", "Terra chain ID, used in LCD client initialization")
|
||||
|
@ -231,6 +237,7 @@ func runBridge(cmd *cobra.Command, args []string) {
|
|||
|
||||
// Deterministic ganache ETH devnet address.
|
||||
*ethContract = devnet.GanacheBridgeContractAddress.Hex()
|
||||
*bscContract = devnet.GanacheBridgeContractAddress.Hex()
|
||||
|
||||
// Use the hostname as nodeName. For production, we don't want to do this to
|
||||
// prevent accidentally leaking sensitive hostnames.
|
||||
|
@ -261,6 +268,12 @@ func runBridge(cmd *cobra.Command, args []string) {
|
|||
if *ethContract == "" {
|
||||
logger.Fatal("Please specify --ethContract")
|
||||
}
|
||||
if *bscRPC == "" {
|
||||
logger.Fatal("Please specify --bscRPC")
|
||||
}
|
||||
if *bscContract == "" {
|
||||
logger.Fatal("Please specify --bscContract")
|
||||
}
|
||||
if *nodeName == "" {
|
||||
logger.Fatal("Please specify --nodeName")
|
||||
}
|
||||
|
@ -289,6 +302,7 @@ func runBridge(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
ethContractAddr := eth_common.HexToAddress(*ethContract)
|
||||
bscContractAddr := eth_common.HexToAddress(*bscContract)
|
||||
solBridgeAddress, err := solana_types.PublicKeyFromBase58(*solanaBridgeAddress)
|
||||
if err != nil {
|
||||
logger.Fatal("invalid Solana bridge address", zap.Error(err))
|
||||
|
@ -378,6 +392,11 @@ func runBridge(cmd *cobra.Command, args []string) {
|
|||
return err
|
||||
}
|
||||
|
||||
if err := supervisor.Run(ctx, "bscwatch",
|
||||
ethereum.NewEthBridgeWatcher(*bscRPC, bscContractAddr, "bsc", vaa.ChainIDBSC, lockC, nil).Run); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Start Terra watcher only if configured
|
||||
logger.Info("Starting Terra watcher")
|
||||
if err := supervisor.Run(ctx, "terrawatch",
|
||||
|
|
|
@ -69,6 +69,8 @@ func (c ChainID) String() string {
|
|||
return "ethereum"
|
||||
case ChainIDTerra:
|
||||
return "terra"
|
||||
case ChainIDBSC:
|
||||
return "bsc"
|
||||
default:
|
||||
return fmt.Sprintf("unknown chain ID: %d", c)
|
||||
}
|
||||
|
@ -81,6 +83,8 @@ const (
|
|||
ChainIDEthereum = 2
|
||||
// ChainIDTerra is the ChainID of Terra
|
||||
ChainIDTerra = 3
|
||||
// ChainIDBSC is the ChainID of Binance Smart Chain
|
||||
ChainIDBSC = 4
|
||||
|
||||
minVAALength = 1 + 4 + 52 + 4 + 1 + 1
|
||||
SupportedVAAVersion = 0x01
|
||||
|
|
|
@ -63,6 +63,8 @@ spec:
|
|||
- bridge
|
||||
- --ethRPC
|
||||
- ws://eth-devnet:8545
|
||||
- --bscRPC
|
||||
- ws://eth-devnet:8545
|
||||
- --terraWS
|
||||
- ws://terra-terrad:26657/websocket
|
||||
- --terraLCD
|
||||
|
|
Loading…
Reference in New Issue