Skip to content

Commit

Permalink
Merge branch 'main' into joel/add-slashing-params-vaa
Browse files Browse the repository at this point in the history
  • Loading branch information
joelsmith-2019 authored Jan 28, 2025
2 parents b8eafd1 + c888252 commit a29a60a
Show file tree
Hide file tree
Showing 27 changed files with 2,242 additions and 749 deletions.
4 changes: 3 additions & 1 deletion deployments/testnet/tokenBridgeVAAs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,13 @@ Blast (36) Testnet Token Bridge,0100000000010052b4615add1ca354feb81a7f90b70a0d78
XLayer (37) Testnet Token Bridge,01000000000100c983babda02e84e346e49f823aa201d65c82e19c51cdfb555cc9aa2fa6809f4500f6344d86722b1a8023906d185c96bc9b4e332402ae2e05ec69d0d95c39ea81000000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000005b1293100000000000000000000000000000000000000000000546f6b656e4272696467650100000025000000000000000000000000da91a06299bbf302091b053c6b9ef86eff0f930d
Linea (38) Testnet Token Bridge,01000000000100411f65a20405ad0d85d6718a91bc16cf645a7eb7dbd29d4b2d0b9cc2d872dc01112cf96dc40c07ddf648325a5dcdba42c70612179126178e7fb9e9bcfef1cb4a01000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000183785600000000000000000000000000000000000000000000546f6b656e4272696467650100000026000000000000000000000000c7a204bdbfe983fcd8d8e61d02b475d4073ff97e
Berachain (39) Testnet Token Bridge,01000000000100c19d35faa10139fef5b3244f120efb67ad22d2d9ece7d777bcb6e957506ba9f15e2e6fd91a18dcdd6bf434d96d624fd725f957437f2e86dfdcbb6d0e97f3eeb100000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000404250300000000000000000000000000000000000000000000546f6b656e4272696467650100000027000000000000000000000000a10f2ef61de1f19f586ab8b6f2eba89bace63f7a
SeiEVM (40) Testnet Token Bridge,0100000000010041e411c483dcf8a1dcd9ec21ca63a0265904418577f894089d4d4931b728369f1a7e088f72ff725184d0be107ef8d42069ee1b37257b98a7b276c09e03cb47e501000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000260150f00000000000000000000000000000000000000000000546f6b656e427269646765010000002800000000000000000000000023908a62110e21c04f3a4e011d24f901f911744a
SeiEVM (40) Testnet Token Bridge,0100000000010095c3bd258103e0ba1b26f63753ffd5468c3c7434ecc731e2f3e3cd84ce8e76087d7307c261470b83b4b756bed6ebd88ff5d4c9fa85d1fc9463c6802eba5e2e230000000001000000010001000000000000000000000000000000000000000000000000000000000000000400000000041ba71f00000000000000000000000000000000000000000000546f6b656e427269646765010000002800000000000000000000000023908a62110e21c04f3a4e011d24f901f911744a
Snaxchain (43) Testnet Token Bridge,010000000001008ed60dec76f13f6da695fc5f134c8cf3527f264712e7bb98d2e54a5f457759e0491e3f1cb42eed9b84edc60a96836df98a3752c8a4e10977801e6c35a39f211b000000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000005ba971e00000000000000000000000000000000000000000000546f6b656e427269646765010000002b000000000000000000000000a10f2ef61de1f19f586ab8b6f2eba89bace63f7a
Unichain (44) Testnet Token Bridge,010000000001004f9c7be0694bcabbf1fec2300004b9d82f6a122c459fababcfdc897e894769290c9a9655015909b5c17667d63f8edcec9ad9ee2d05e7cdb24a7a64136a4312c70100000001000000010001000000000000000000000000000000000000000000000000000000000000000400000000008006e100000000000000000000000000000000000000000000546f6b656e427269646765010000002c000000000000000000000000a10f2ef61de1f19f586ab8b6f2eba89bace63f7a
Worldchain (45) Testnet Token Bridge,01000000000100f1ae141e77e67110aecade87c6a5f9b34545638aba1a3a7dbf6a311fe58c99fd351650c8593a8161a03cc7f94b76cdc0a5978fa3e0ffbfb3738085a070172cc5010000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000004f3500a00000000000000000000000000000000000000000000546f6b656e427269646765010000002d000000000000000000000000430855b4d43b8aeb9d2b9869b74d58dda79c0db2
HyperEVM (47) Testnet Token Bridge,010000000001003f9a225a8b004c871374f69c29e8a3335614270886719a9ce30b1e5afb1df04d144208fb42b74fbfb140977a13e4fb4fa6107e625745ede6d6ddca0e4eafcb3c01000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000456642800000000000000000000000000000000000000000000546f6b656e427269646765010000002f0000000000000000000000004a8bc80ed5a4067f1ccf107057b8270e0cc11a78
Monad (48) Testnet Token Bridge,01000000000100f55193326b0cf4dc1fe356b47a9842ff751c033e0b002b1d572ccbf8b1cb45b6770d4ce7f415fb29b4d87f75fec9e5dd15df56fc20ba401a4f07e5956394225501000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000521e4d200000000000000000000000000000000000000000000546f6b656e4272696467650100000030000000000000000000000000f323dcde4d33efe83cf455f78f9f6cc656e6b659
Movement (49) Testnet Token Bridge,010000000001006e366ef014166b9618721b6e7c37d6a0dab510a6526061c219f88d46f39ada887a870c4aeff812795a4a78d0334567af817c54c1bfe197f0b92c357f4e49a311000000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000003d9804a00000000000000000000000000000000000000000000546f6b656e42726964676501000000310000000000000000000000000000000000000000000000000000000000000002
Gateway (3104) Testnet Token Bridge,01000000000100117d1c7a124a9e2e29d82b3803b825be7c8a1dc7f19013669f7d11d42d448aa72339fe3657e4bd156c5c28dd10e78aab3e06e9e76c4bbd38c81e057533d577c40000000000d09296c5000100000000000000000000000000000000000000000000000000000000000000049ea4b9942b23298c20000000000000000000000000000000000000000000546f6b656e4272696467650100000c20ef5251ea1e99ae48732800ccc7b83b57881232a73eb796b63b1d86ed2ea44e27
Sepolia (10002) (Ethereum) Testnet Token Bridge,01000000000100a03841125d40e9df3cd80d027bc660191755587980e49f6a46e9baa1b5c3f6b46e51256c225bd242139ae11d3c84439acdc204a5f39a2e1acb750ae98bb759f1000000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000005491ea100000000000000000000000000000000000000000000546f6b656e4272696467650100002712000000000000000000000000db5492265f6038831e89f495670ff909ade94bd9
Arbitrum Sepolia (10003) Testnet Token Bridge,010000000001001b0fbbcc7a3e8c491dc25f0a611075513032fe444d8e6585153e6ae2cf8c7514152b050e95a3e0af11e5b2705b2efb717bec3cfaa3b1617ff623c14e61a69224000000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000001b8de3c00000000000000000000000000000000000000000000546f6b656e4272696467650100002713000000000000000000000000c7a204bdbfe983fcd8d8e61d02b475d4073ff97e
Expand Down
7 changes: 6 additions & 1 deletion ethereum/env/.env.monad.testnet
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,9 @@ INIT_GOV_CHAIN_ID=0x1
INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
INIT_EVM_CHAIN_ID=10143

# Not deploying the token bridge at this time.
# Bridge Migrations
BRIDGE_INIT_CHAIN_ID=48
BRIDGE_INIT_GOV_CHAIN_ID=0x1
BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
BRIDGE_INIT_FINALITY=1
BRIDGE_INIT_WETH=0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701
27 changes: 18 additions & 9 deletions node/cmd/guardiand/adminnodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,51 +85,60 @@ func runListNodes(cmd *cobra.Command, args []string) {
vaa.ChainID
}

// NOTE: Please keep these in numerical order by chain ID.
networks := []network{
{"Solana", vaa.ChainIDSolana},
{"Ethereum", vaa.ChainIDEthereum},
{"Terra", vaa.ChainIDTerra},
{"BSC", vaa.ChainIDBSC},
{"Polygon", vaa.ChainIDPolygon},
{"Avalanche", vaa.ChainIDAvalanche},
{"Algorand", vaa.ChainIDAlgorand},
{"Aptos", vaa.ChainIDAptos},
{"Sui", vaa.ChainIDSui},
{"Oasis", vaa.ChainIDOasis},
{"Algorand", vaa.ChainIDAlgorand},
{"Aurora", vaa.ChainIDAurora},
{"Fantom", vaa.ChainIDFantom},
{"Karura", vaa.ChainIDKarura},
{"Acala", vaa.ChainIDAcala},
{"Klaytn", vaa.ChainIDKlaytn},
{"Celo", vaa.ChainIDCelo},
{"Near", vaa.ChainIDNear},
{"Terra2", vaa.ChainIDTerra2},
{"Pythnet", vaa.ChainIDPythNet},
{"Moonbeam", vaa.ChainIDMoonbeam},
{"Terra2", vaa.ChainIDTerra2},
{"Injective", vaa.ChainIDInjective},
// Osmosis is not supported in the guardian.
{"Sui", vaa.ChainIDSui},
{"Aptos", vaa.ChainIDAptos},
{"Arbitrum", vaa.ChainIDArbitrum},
{"Optimism", vaa.ChainIDOptimism},
// Gnosis is not supported in the guardian.
{"Pythnet", vaa.ChainIDPythNet},
{"Xpla", vaa.ChainIDXpla},
{"Btc", vaa.ChainIDBtc},
{"Injective", vaa.ChainIDInjective},
{"Ink", vaa.ChainIDInk},
{"Base", vaa.ChainIDBase},
// Filecoin is not supported in the guardian.
{"Sei", vaa.ChainIDSei},
// Rootstock is not supported in the guardian.
{"Scroll", vaa.ChainIDScroll},
{"Mantle", vaa.ChainIDMantle},
{"Movement", vaa.ChainIDMovement},
{"Blast", vaa.ChainIDBlast},
{"XLayer", vaa.ChainIDXLayer},
{"Linea", vaa.ChainIDLinea},
{"Berachain", vaa.ChainIDBerachain},
{"SeiEVM", vaa.ChainIDSeiEVM},
{"Snaxchain", vaa.ChainIDSnaxchain},
{"Unichain", vaa.ChainIDUnichain},
{"Worldchain", vaa.ChainIDWorldchain},
{"Ink", vaa.ChainIDInk},
{"HyperEVM", vaa.ChainIDHyperEVM},
{"Monad", vaa.ChainIDMonad},
{"Movement", vaa.ChainIDMovement},
{"Wormchain", vaa.ChainIDWormchain},
// The IBC chains (4000 range) are not included here.
{"Sepolia", vaa.ChainIDSepolia},
{"Holesky", vaa.ChainIDHolesky},
{"ArbitrumSepolia", vaa.ChainIDArbitrumSepolia},
{"BaseSepolia", vaa.ChainIDBaseSepolia},
{"OptimismSepolia", vaa.ChainIDOptimismSepolia},
{"Holesky", vaa.ChainIDHolesky},
{"PolygonSepolia", vaa.ChainIDPolygonSepolia},
{"MonadDevnet", vaa.ChainIDMonadDevnet},
}
Expand Down
128 changes: 79 additions & 49 deletions node/cmd/guardiand/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ var (

guardianKeyPath *string
guardianSignerUri *string
solanaContract *string

ethRPC *string
ethContract *string
Expand Down Expand Up @@ -157,7 +156,9 @@ var (
suiRPC *string
suiMoveEventType *string

solanaRPC *string
solanaRPC *string
solanaContract *string
solanaShimContract *string

pythnetContract *string
pythnetRPC *string
Expand Down Expand Up @@ -296,7 +297,8 @@ func init() {

guardianKeyPath = NodeCmd.Flags().String("guardianKey", "", "Path to guardian key")
guardianSignerUri = NodeCmd.Flags().String("guardianSignerUri", "", "Guardian signer URI")
solanaContract = NodeCmd.Flags().String("solanaContract", "", "Address of the Solana program (required)")
solanaContract = NodeCmd.Flags().String("solanaContract", "", "Address of the Solana program (required if solanaRpc is specified)")
solanaShimContract = NodeCmd.Flags().String("solanaShimContract", "", "Address of the Solana shim program")

ethRPC = node.RegisterFlagWithValidationOrFail(NodeCmd, "ethRPC", "Ethereum RPC URL", "ws://eth-devnet:8545", []string{"ws", "wss"})
ethContract = NodeCmd.Flags().String("ethContract", "", "Ethereum contract address")
Expand Down Expand Up @@ -670,7 +672,7 @@ func runNode(cmd *cobra.Command, args []string) {

// Verify flags

if *nodeName == "" {
if *nodeName == "" && env == common.MainNet {
logger.Fatal("Please specify --nodeName")
}
if *nodeKeyPath == "" && env != common.UnsafeDevNet { // In devnet mode, keys are deterministically generated.
Expand Down Expand Up @@ -780,6 +782,10 @@ func runNode(cmd *cobra.Command, args []string) {
logger.Fatal("Please specify --telemetryLokiURL or set --disableTelemetry=false")
}

if *nodeName == "" {
logger.Fatal("If telemetry is enabled, --nodeName must be set")
}

// Get libp2p peer ID from private key
pk := p2pKey.GetPublic()
peerID, err := peer.IDFromPublicKey(pk)
Expand Down Expand Up @@ -855,6 +861,14 @@ func runNode(cmd *cobra.Command, args []string) {
logger.Fatal("Both --solanaContract and --solanaRPC must be set or both unset")
}

if *solanaShimContract != "" && *solanaContract == "" {
logger.Fatal("--solanaShimContract may only be specified if --solanaContract is specified")
}

if *solanaShimContract != "" && env == common.MainNet {
logger.Fatal("--solanaShimContract is not currently supported in mainnet")
}

if !argsConsistent([]string{*pythnetContract, *pythnetRPC, *pythnetWS}) {
logger.Fatal("Either --pythnetContract, --pythnetRPC and --pythnetWS must all be set or all unset")
}
Expand Down Expand Up @@ -946,72 +960,86 @@ func runNode(cmd *cobra.Command, args []string) {
logger.Fatal("Infura is known to send incorrect blocks - please use your own nodes")
}

// NOTE: Please keep these in numerical order by chain ID.
rpcMap := make(map[string]string)
rpcMap["acalaRPC"] = *acalaRPC
rpcMap["accountantWS"] = *accountantWS
rpcMap["solanaRPC"] = *solanaRPC
rpcMap["ethRPC"] = *ethRPC
rpcMap["terraWS"] = *terraWS
rpcMap["terraLCD"] = *terraLCD
rpcMap["bscRPC"] = *bscRPC
rpcMap["polygonRPC"] = *polygonRPC
rpcMap["avalancheRPC"] = *avalancheRPC
rpcMap["oasisRPC"] = *oasisRPC
rpcMap["algorandIndexerRPC"] = *algorandIndexerRPC
rpcMap["algorandAlgodRPC"] = *algorandAlgodRPC
rpcMap["aptosRPC"] = *aptosRPC
rpcMap["arbitrumRPC"] = *arbitrumRPC
rpcMap["avalancheRPC"] = *avalancheRPC
rpcMap["baseRPC"] = *baseRPC
rpcMap["berachainRPC"] = *berachainRPC
rpcMap["blastRPC"] = *blastRPC
rpcMap["bscRPC"] = *bscRPC
rpcMap["celoRPC"] = *celoRPC
rpcMap["ethRPC"] = *ethRPC
// ChainIDAurora is not supported in the guardian.
rpcMap["fantomRPC"] = *fantomRPC
rpcMap["hyperEvmRPC"] = *hyperEvmRPC
rpcMap["ibcBlockHeightURL"] = *ibcBlockHeightURL
rpcMap["ibcLCD"] = *ibcLCD
rpcMap["ibcWS"] = *ibcWS
rpcMap["injectiveLCD"] = *injectiveLCD
rpcMap["injectiveWS"] = *injectiveWS
rpcMap["inkRPC"] = *inkRPC
rpcMap["karuraRPC"] = *karuraRPC
rpcMap["acalaRPC"] = *acalaRPC
rpcMap["klaytnRPC"] = *klaytnRPC
rpcMap["lineaRPC"] = *lineaRPC
rpcMap["mantleRPC"] = *mantleRPC
rpcMap["monadRPC"] = *monadRPC
rpcMap["moonbeamRPC"] = *moonbeamRPC
rpcMap["movementRPC"] = *movementRPC
rpcMap["celoRPC"] = *celoRPC
rpcMap["nearRPC"] = *nearRPC
rpcMap["oasisRPC"] = *oasisRPC
rpcMap["moonbeamRPC"] = *moonbeamRPC
rpcMap["terra2WS"] = *terra2WS
rpcMap["terra2LCD"] = *terra2LCD
rpcMap["injectiveLCD"] = *injectiveLCD
rpcMap["injectiveWS"] = *injectiveWS
// ChainIDOsmosis is not supported in the guardian.
rpcMap["suiRPC"] = *suiRPC
rpcMap["aptosRPC"] = *aptosRPC
rpcMap["arbitrumRPC"] = *arbitrumRPC
rpcMap["optimismRPC"] = *optimismRPC
rpcMap["polygonRPC"] = *polygonRPC
// ChainIDGnosis is not supported in the guardian.
rpcMap["pythnetRPC"] = *pythnetRPC
rpcMap["pythnetWS"] = *pythnetWS
if env == common.TestNet {
rpcMap["sepoliaRPC"] = *sepoliaRPC
rpcMap["holeskyRPC"] = *holeskyRPC
rpcMap["arbitrumSepoliaRPC"] = *arbitrumSepoliaRPC
rpcMap["baseSepoliaRPC"] = *baseSepoliaRPC
rpcMap["optimismSepoliaRPC"] = *optimismSepoliaRPC
rpcMap["polygonSepoliaRPC"] = *polygonSepoliaRPC
rpcMap["monadDevnetRPC"] = *monadDevnetRPC
}
rpcMap["xplaWS"] = *xplaWS
rpcMap["xplaLCD"] = *xplaLCD
// ChainIDBtc is not supported in the guardian.
rpcMap["baseRPC"] = *baseRPC
// ChainIDSei is supported over IBC, so it's not listed here.
// ChainIDRootstock is not supported in the guardian.
rpcMap["scrollRPC"] = *scrollRPC
rpcMap["mantleRPC"] = *mantleRPC
rpcMap["blastRPC"] = *blastRPC
rpcMap["xlayerRPC"] = *xlayerRPC
rpcMap["lineaRPC"] = *lineaRPC
rpcMap["berachainRPC"] = *berachainRPC
rpcMap["seiEvmRPC"] = *seiEvmRPC
rpcMap["solanaRPC"] = *solanaRPC
rpcMap["snaxchainRPC"] = *snaxchainRPC
rpcMap["suiRPC"] = *suiRPC
rpcMap["terraWS"] = *terraWS
rpcMap["terraLCD"] = *terraLCD
rpcMap["terra2WS"] = *terra2WS
rpcMap["terra2LCD"] = *terra2LCD
rpcMap["unichainRPC"] = *unichainRPC
rpcMap["worldchainRPC"] = *worldchainRPC
rpcMap["gatewayWS"] = *gatewayWS
rpcMap["gatewayLCD"] = *gatewayLCD
rpcMap["inkRPC"] = *inkRPC
rpcMap["hyperEvmRPC"] = *hyperEvmRPC
rpcMap["monadRPC"] = *monadRPC
rpcMap["movementRPC"] = *movementRPC

// Wormchain is in the 3000 range.
rpcMap["wormchainURL"] = *wormchainURL
rpcMap["xlayerRPC"] = *xlayerRPC
rpcMap["xplaWS"] = *xplaWS
rpcMap["xplaLCD"] = *xplaLCD

// Generate the IBC chains (3000 range).
for _, ibcChain := range ibc.Chains {
rpcMap[ibcChain.String()] = "IBC"
}

// The testnet only chains (10000 range) go here.
if env == common.TestNet {
rpcMap["sepoliaRPC"] = *sepoliaRPC
rpcMap["arbitrumSepoliaRPC"] = *arbitrumSepoliaRPC
rpcMap["baseSepoliaRPC"] = *baseSepoliaRPC
rpcMap["optimismSepoliaRPC"] = *optimismSepoliaRPC
rpcMap["holeskyRPC"] = *holeskyRPC
rpcMap["polygonSepoliaRPC"] = *polygonSepoliaRPC
rpcMap["monadDevnetRPC"] = *monadDevnetRPC
}

// Other, non-chain specific parameters go here.
rpcMap["accountantWS"] = *accountantWS
rpcMap["gatewayWS"] = *gatewayWS
rpcMap["gatewayLCD"] = *gatewayLCD
rpcMap["ibcBlockHeightURL"] = *ibcBlockHeightURL
rpcMap["ibcLCD"] = *ibcLCD
rpcMap["ibcWS"] = *ibcWS

// Handle SIGTERM
sigterm := make(chan os.Signal, 1)
signal.Notify(sigterm, syscall.SIGTERM)
Expand Down Expand Up @@ -1613,6 +1641,7 @@ func runNode(cmd *cobra.Command, args []string) {
Rpc: *solanaRPC,
Websocket: "",
Contract: *solanaContract,
ShimContract: *solanaShimContract,
ReceiveObsReq: false,
Commitment: rpc.CommitmentConfirmed,
}
Expand All @@ -1626,6 +1655,7 @@ func runNode(cmd *cobra.Command, args []string) {
Rpc: *solanaRPC,
Websocket: "",
Contract: *solanaContract,
ShimContract: *solanaShimContract,
ReceiveObsReq: true,
Commitment: rpc.CommitmentFinalized,
}
Expand Down
Loading

0 comments on commit a29a60a

Please sign in to comment.