node: Gateway watcher support (#3275)

* Gateway/Node: Watcher support

* Fix prettier error

* Work around duplicate VAA error
This commit is contained in:
bruce-riley 2023-08-14 10:13:20 -05:00 committed by GitHub
parent 3337783c6d
commit 86e905e1e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 44 additions and 8 deletions

View File

@ -22,4 +22,5 @@ Optimism (24) Token Bridge,01000000030e0034614d6c092ddab582ba61976b34697c2f5bfc2
XPLA (28) Token Bridge,01000000030f00e94b4808ace06e1795157c10dd9e23f3936e326136f179a3fb7b00a18415f5a361c72b195a76d51928b1ed721bad2ef63f509ac852fd46f83fb5800cf2c9fbfc01036ca0758b0992c1a5f18cb5bacce13db20c18e03946084c36478e905d6e36e30b6ef593515ae8b0768a59c4d2632d52aefb8e4921449ba6268bb447de67e75d0d0104a2292bdc92363c459019a820e8834643f35b1477689e7e4a33e62ca9839e44ab3bc7562f893ed75a64afb245355f5a1155797de999aeda645cce8faf885547a0000523fa45cf92d7eeb11c36343ba1c5e17f99e417bee10d9f3a6b73a0e9b251fd46772fa1687d5d0c41e8480c511292bac1f521ed8d329189747abfce3da1f1128f010783727dd2756b30d7b77cbc179915ee150e9647105002d46e4f1d4ae44b19e7434aeef2bdd46c911fa4fdf01dacab3f80e246b752f24633218d0994adaf9f1cf10008192ab5ea8f2206d5b309a9834cb132067b588ab005bc38e181353b8ca9a3750d21be49e99ff8618a9231bec03e78a332379857384a0a130e93c01e6f6f8e32d300099ac58b0f16b460cc987aee0d06256875bbbd541254aefecf891946d93a8c70080183dc2255710acc87a8ccc1dbd41b14fefde1bbd5af2d28077eef081e8b22da010a20c1f57cc59c9fc896ffb347e0a3d4b8d2d8212448d9519a52b1fc5d0e6087f74913fe890c344c0369b30c41167ca19a405159e3ba0dacaa72406b23b0ee735f000beca147e892548b2b771061fcc7674fc027a4cdf86a273cae32be91d3d84a7620421f91562b00ef96da7c2f2a6e4513f1191a93f56d221d52724f3b3b7edf3f48010c24d08d8a33663ce9756c69c744b47ffee750d0f7f1c1a3cea105873f0c0a0279563f4b92b130ae3debd73c7342461d7d177ec9a9fe45d2b6175ba106ec292c86010de1694567f84b429c0fdeee88b0d65b8fbe0b1eb0f9574d6b6d99001bc8532d79203571d8360ef565c7108a25e2f7ade1d61cf808c0a2b436eb86ecd510e652c5010e7079a3a6c9f32ce20e726463d03aa650e81a677d452f76787e639984d6cf3b3e2cfea642b08c8ae6172e5e2f6c6114b787c6d9b2770ad17d1edad2917334bce8010f86d02cdc1cef14d43ddcfb47c9a16020da4feba940b4cfffa474365a3d9e31fa14dd4b10026415178ca4bf9449b9b30f86b4d79664e2f4abbcf183f221539286011136426e8ab92889c310079e1c85e5249d8ff5de32a9576edfefa4950379d6b2002c1ddeb03682d5b68e69b1c1a5aaf54e1763e6ac0ed1eaabdf8d90ab97e432a40012454e859e894e375defb136926a692171a3ddca9ef069ea1cd0501536cbcb3cfb1a4a700a837205237ce44393ed2cf2110592020a11c79ea27d2c3c09095c537e0000000000bb75823600010000000000000000000000000000000000000000000000000000000000000004c55a1c78b494ff3120000000000000000000000000000000000000000000546f6b656e427269646765010000001c8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c
Sui (21) Token Bridge,01000000030d00a42d36048a27a763413bfa1d261daeb86f7feed7a9850d9915d8c44acee97dd4327c0351648ac4d496050e6af6534badd2b86416a5675f373e5a5ebf876505700002349ec8ae9aeef147e87b2b06a475d6ec760c20680285ecdd6b7b400cbd67504232e0cae965d27dc9f0a83fbed40ec0a759bd7ad9a014a69c90364a1df88048dc000323d01a78c01887d981e22ffb0f91d02c1d7f015393513db3f215af64bd9cb74829eb08fc9895f8b1247933dd23c2b71ac1bf5bbefb8bea829ab2f6b94317eaa901040305b91b17227313395a861365c8b110414e961ccf25a2b645226e6a307e488f6dace0896c354425f5dfb6b0cb968ef1f752653cd85179b9344f215b555601dd01060dcfd80b54b6f43e502b9628a5a2b92b453fa96718397ecbe0e279495ff37c0835fff5ee7f3b749de287a0c3440105ddd705d06975d56384792373645b7787df000715985ff2cf28e3a8062d9ffc7ef69fbd7c56082f0938cc564586d0dbcacf14986579e7d7a8629dc8a9cfcbf0c97c46ae6492d05c5fba193400746a43b6f1123d000a5db8adfca6d43dd345e130fa0cae250ac7cfa364a29d47cf219ce2b50d6f930a0e1bc399b5b92cdec3d00fcf6f2c7f0732996344812dae85afcfa077c67d94b8010bf68fe7c2ed3aaa180b01ba28052fa63d72509e642bf45f8b5c14c582d8e6eb99514d41ab7fd3f6451470e02a054a3630e347020b6330a8ec23efdc3e4da4550b010d7f3ec58dbb8ae21a2fb71941ed80d646469f1992e7fdc32706c327bfbe01b98011e8b377fce487237f9238fe9af09991f5da11d85aba5a4a81e99df8d066aead010e18e7de979a55bd568b26754fdd7d9e7b03572d742e5657f944ab35b44398a40e07a0c2399e13a244277138375e7e980bf6b666f39bc2f86afd2605f0249a5a53000f77d089279a354b7faa1f3fdc084f6e0ef684d9bcce8d9fb11b5568c0d0b215f15d54cc4383e1b7112fadc238f750b885f5f81a21f84e00ec4487a8064386cc2e01106d9d3067e19413e985f76852eb0cdd071fef659540ddf3a9d5610d492a68a13c61cd109f64c977c1274f9782dcbddfa46ee94331e02f98ba8fb37e22300bd63e0111819a499e30feb82190736054d2993918aeb591e3098b4df77630e93512fec4c122f2cccfe88f2b735f42a06571944d800f3dfcb07de7956330515ddb3c9a41360000000000764b7752000100000000000000000000000000000000000000000000000000000000000000047654167e9520c1b820000000000000000000000000000000000000000000546f6b656e4272696467650100000015ccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5
Base (30) Token Bridge,01000000030d025ab9fcaa02dfe689251b2e7906e4a19d0badba35758178dcf2f17b80cde8d26c765848111afd52f03aede53c2f560e9760947d9cb2b8f0e5f1b841db41f9831e00039a06438cdc753aa4ae800f10c78fafff1296dc778449869104d26a944f8a735a57da0fe3c867a6741dd98ca589f7f8c293acd8507e8cdf9995cba118c97c59000005ffc63796fd35fab17fbf213f1e65295e5e0bf0c2d36c596c7750b3977b9cc41d1d2e63511abee319f05d753cc24de51d69a528e64c7664fdc01ab565e9dda816000680fa2ec4e1bcaf2e017a78642ee5fec60751b815a20f1e37fe31957478997fe61630aeefca76cc458dd44504a02fe34d880e81a960f34ee654bee523d5315cd10007d5a108f92a4ef89ca96f1d4153f94dfca65a469c1b0367f1e4ba24f8273ea3572173f3febd60c1f4a33ced3a56e284e23b90780fc1f1a1679057fd304a6a24570108f092e76509257f8eee0f630e18ed44046859aaa86451cb48ca8ece8b29f794205ea1a56b2a69a9d9c07ce21f91eed72d6fbebcc59eb17c06b4497338fa4c6a810009c778d7624d4dcfbf5c725ab3c057900eaee4ac9728c0e5a65216455c6c89afca4e27eea911e65bba285b4275e6b10f7cb4b119e940ee58981b986bdd4be650da000cd21048771f2be56761ba2a8501e28dd3c59e2ddffe1121156dad1cc2d0fb5bbd3423a7b19b6e024d834719fee64625b8e0715de37ba84dd74ce634e8c4a0f08c000d038bd77a6ffe73974b7ae8c9d7aed8029b6b9fa42c2f661630b00ed2b4b74df713ed414760db30f6bf762879cd27b44f6bd71bdcbd92cbdd4776d79636428c4d010e8cb6d1cd45bafc85a0574f1db14ee629511d40870eb1f7614d4e93a8c2997d1c3c413f59a8fc5daddee533bc9b6c3c286e8bd1a5dc11a4f23708ced3d4cd0fe2011006418481fb3854bf787d77b08bc264bd1152c64f44fa86e24c9864ea2440789335476848d347a85bf6c2e31a83b3874455d8a912bea8aeeb7db302a81e0e8343001129e206512e5047c51ff799eeaff663d95c41ff22ba9f21730e1dfd0298bc863f3db21622f6388ff38ed69bd2dccace0c2eb8df2d493a74729b4965181221093001125b9582ae58fe454f633d410266fdcd4a098ff98d9643d754f18f4184007598f929a70149b48ef58eaa5badbafbed9b0670df8195058b3c1628531508501e2fd00100000000a62a41cd00010000000000000000000000000000000000000000000000000000000000000004e4f4552fd06aa28820000000000000000000000000000000000000000000546f6b656e427269646765010000001e0000000000000000000000008d2de8d2f73f1f4cab472ac9a881c9b123c79627
Sei (32) Token Bridge,01000000030d03e6be465d35dbbcc957b5803283ee89586e56d0ff29f0a530d4fb96fdc69028221623127de2d6115fe060f55840053f1f9c73b8d4f5bf8043cbe9a77ad5f428fc00046ae1f149be927d2dd8cd4b5d38c9aa0d6b4e2883dd52e742fea2d20e22af25e10581732281dcf59e97755219ae64e408ee6be20c68059da62dbd8e6f86690da0000539b965de3dcfd312cfe5a1b1b3999d299b83d263b8817278bc7109c061649c513582c8ab46f819cc98f243e3b0b8dd543b7f1263d443dbef34ea1e9c023159380006dde501b50c618965ab1766d896d9b919effc337136a72795cf0c47a5460286c4006685ab5da24c21f8558c1a392b62291e0172deafaf486918b01f6ffc73d420010839a1b899424789485a8e2f5cfe59bd731ca62a37228ee7bd09252aa11e6995f93c650360e66ef878cdafb6feca334b0a4d69dadf802a8fd0e228ed0af5467d1701093ac07f14460a31e577bf0910718ee0dc4a28743d24c61e58e1e4f275ae05bb16238043863aa160e522b3a32ac276584129e98a6a21490ea26e0e60c9a71d6f4f010adb8ed8e54ab1f9f7a7073a0135bbdde881d2baf9699076ca15d0fc0438dc4a681d27659205fc3075b414881b602731fd6d53a2eba8c92c78337e8ccc00b325ab010bcc9c74a50ff0243ae8c3189449ca86ce66ede52a495b53d7461e4001b75e762e55a9ce5256b4d145189027c32f85d56a0a891214afaa521607858b9d7a8e043b010cd70ded635f6a295b4697cfe25adb8c10223e2253d0637ef7a0bba951e34f62bf0216e186e406be8ab707fdbab7cc5673c0de3177cbdbc6ca9591b27b5fed37d0000da39343ac0b8551d7bf5aaf4a2fb4c606649783ab2fa803012174a9974da5b8ca7c0e1633e35ccf8d539831df9636ddc613e654e7b3e207265b3457a6e6d81cae000e5d70e2931e4f223d5b06f87706f308c933f6247ffc3b261e8a9f5c75faddfa7c66a452ed16337b0bac026dd5974a82ea71ba32975ecd1cd490eee3326330a2b90010784a772c9a9d3ae20d3114c74c6eecaa3ff467b8e7f3199d0bd0d45bcc719a26579d6fdcd69f02d044e45118c94c92224a2da9a18f9891d82818fc170c2838ac0012cd71e7f13c2122ddae87806b2c531cb8ed6c7cb0df5243413f751914ffc46780294d91d651d4f76efd5fdffdd3859053c4204bce0fe63b9c3d88e5438a5a790701000000009f745aeb00010000000000000000000000000000000000000000000000000000000000000004a69638d9f869868020000000000000000000000000000000000000000000546f6b656e427269646765010000002086c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e
Sei (32) Token Bridge,01000000030d03e6be465d35dbbcc957b5803283ee89586e56d0ff29f0a530d4fb96fdc69028221623127de2d6115fe060f55840053f1f9c73b8d4f5bf8043cbe9a77ad5f428fc00046ae1f149be927d2dd8cd4b5d38c9aa0d6b4e2883dd52e742fea2d20e22af25e10581732281dcf59e97755219ae64e408ee6be20c68059da62dbd8e6f86690da0000539b965de3dcfd312cfe5a1b1b3999d299b83d263b8817278bc7109c061649c513582c8ab46f819cc98f243e3b0b8dd543b7f1263d443dbef34ea1e9c023159380006dde501b50c618965ab1766d896d9b919effc337136a72795cf0c47a5460286c4006685ab5da24c21f8558c1a392b62291e0172deafaf486918b01f6ffc73d420010839a1b899424789485a8e2f5cfe59bd731ca62a37228ee7bd09252aa11e6995f93c650360e66ef878cdafb6feca334b0a4d69dadf802a8fd0e228ed0af5467d1701093ac07f14460a31e577bf0910718ee0dc4a28743d24c61e58e1e4f275ae05bb16238043863aa160e522b3a32ac276584129e98a6a21490ea26e0e60c9a71d6f4f010adb8ed8e54ab1f9f7a7073a0135bbdde881d2baf9699076ca15d0fc0438dc4a681d27659205fc3075b414881b602731fd6d53a2eba8c92c78337e8ccc00b325ab010bcc9c74a50ff0243ae8c3189449ca86ce66ede52a495b53d7461e4001b75e762e55a9ce5256b4d145189027c32f85d56a0a891214afaa521607858b9d7a8e043b010cd70ded635f6a295b4697cfe25adb8c10223e2253d0637ef7a0bba951e34f62bf0216e186e406be8ab707fdbab7cc5673c0de3177cbdbc6ca9591b27b5fed37d0000da39343ac0b8551d7bf5aaf4a2fb4c606649783ab2fa803012174a9974da5b8ca7c0e1633e35ccf8d539831df9636ddc613e654e7b3e207265b3457a6e6d81cae000e5d70e2931e4f223d5b06f87706f308c933f6247ffc3b261e8a9f5c75faddfa7c66a452ed16337b0bac026dd5974a82ea71ba32975ecd1cd490eee3326330a2b90010784a772c9a9d3ae20d3114c74c6eecaa3ff467b8e7f3199d0bd0d45bcc719a26579d6fdcd69f02d044e45118c94c92224a2da9a18f9891d82818fc170c2838ac0012cd71e7f13c2122ddae87806b2c531cb8ed6c7cb0df5243413f751914ffc46780294d91d651d4f76efd5fdffdd3859053c4204bce0fe63b9c3d88e5438a5a790701000000009f745aeb00010000000000000000000000000000000000000000000000000000000000000004a69638d9f869868020000000000000000000000000000000000000000000546f6b656e427269646765010000002086c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e
Gateway (3104) Token Bridge,01000000030d03340e26c720f08f7cac377b3430519b79e384ff372073390276d8b08de2555eb6446ebccdd500885b820f74744a97406045ad1f8859675d8d736d80217be188e10104cafdc898b86764dfa1ca0e6bde63d98a148ab7426926dbc08917bd9406203e743d85d2b627c56fda091f6d59dd8fbfe258d7e37acab4157c4e5758dbe4082f230105638f2bd31865a42083fb97e82d8ac92903a4fabe3ab67bd468105ac5e4a573083965377bbebdfcc8942abdd78c19d12e29d9b6ea07f7c9058e8da0c7af3cea830006d8903627e8f420a241e837683760b429cc9f97f6a34ebabb5534dec8b7a1a3484c397e5e3c1948fe1c22c16777512eb34ab7308fbe57d17de1e36c5f2db948190008dd9b1e52d65cbb8c6ade8ca6208f1261c4219b486e954c715fcb1c64c17c60d67761cf425b6bea46f2471ceec6b05b459413500f5d5752375835574c8bc2841b0109fbdf9129521294a07c0735c9989d03e8023110549b2c0379c50feb38747f456f0d06aecbad914147d08bb0de67f2fbe78136493da7e047db6c21118d052843ef010b28be2248c052836e784349813d769de36e9e91d0b35645effe8340e56a543c2e78c42f999d098a91bd2146cf9be4d39c22be7e3cd784c039be3ab8d71d03c23e010c184f7ef54a95344d0571cdd95f8332b89dcd09ad54860380f8c960bc091affa73baf2d95dfe217bc00566cb0acb9b616751dee0749396af59b7e507262047f55010db6deeeed83087da0f4ee7c0972ce510fe9b70b0e4364b02291fbc6eb4b0701576a2b4a009be891ce3a4c667f211488a5dc8a8b53371f24643326537dc1404f7e000e8017c34c68f0a3bd1927e9037b00ce30032918e9ce16046b7e1b2d51b05101a4678c4079a3632ad07358142de78e616b1710996c5a01e140b7a326d930dbd7070010b126b40f924dbb06bf8aeeb1dad8622d9da7f9781edf274cc35c889d072f95705bc1d1f22f53f96007e6f40b8e86e2e2df5ba6d76f5ab09ee2dc9d30c344060201110dc68c7c3d130d7d0521e86a28cdc084385a1bd02d54974a452d3970b20c93ca586fa8f4976609cf45a364a7d12c4fe224b159a99317313fddc05ae97fc556880012ed311c9c7c63587ac455997b8efe6c13f2fbfd516e54362468d711c400b74a8d11f4ab0c56a81ffd5ad7b040afc98ac6114bd2b5b1e66c83f4179bb80c3c28c801000000002cbf2e5e00010000000000000000000000000000000000000000000000000000000000000004e0f18ed5817c99e820000000000000000000000000000000000000000000546f6b656e4272696467650100000c20aeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924
1 Solana (1) Token Bridge 01000000030e0005d041155878a79b0c8b48aaf3a6266d85a808df5658de5c77715802ba2e38b54374a5a244b43c1a4129d31b47192cb80a565484e55f171c00df69be3107e32e0001fc342ba5227e2319c36fe7771d4626753960b5f6082770e57120b5057eb56c5066bab012670d532c259f6162f311458e187d7137298fa984a41d469df817f88f010349b730282809e94fdeb125dd30490e116ee6ebffa73296eb10a36848351a12c77e846daa5f6eeb83103a2d7325d7981fa4cae43fb84a91851c400c2573abaad30005ac798fcaddd7090a41b718f5786f02436f30d631e64ac46ccd058e87dabcf20f03dd4c7ca0e71d2bbd9c0cee90809a5cdd0bc72519abb9313a4d81763b48c79c01061cdc7c59590231f6f580c3b002ddfa5f41bd0118c67fcb4cb295ae239b74d0e322775d1e78c252eb605230e040c5af176e9ec5ab5f34dd36fcb202c894b6e4fa000701dbb19913b44fb2295a0b52e2eaa839478dc15c7d56de51e5298a9e0cdefbe22a0883f1cd8d7037f9f24e4eed1352a67fdacd30531f32021b3e349ee2a868a100087621ef01365e4d1f2e81ef9ce46f0d620cbf003ded06956df3e87a137640310037e8d605f9208a5e17719001fa662d2dcee1c500f0db1ec99119dd326140cf240109a406c0fffda03ffc741ac06743bc507d2a5bdb95eb1c6e3d24a41d99281ce9af20881add8926faec5ac33d3bf85c61a220dd0f699d713f4a453f18b2ad735b6b010a42fb4729a41b99029d06fc6395e1f676654002a28e08c073fe905e87883726b444aa70742c6c53ee8efdb004e756fae63bfe9a91d20971853cc0a8677ec1b0da000bf472a82642b1a3c7872a6594786fc803c8ed8948719f85d1ecfbf903deaba8505b02ffaa488b09e066a0d7210d8ee0871dd10d23b4249c942c64bd79a08d5f6f010c308bc162680851b2a94a888e068394bf4dcb5d5afab1faa350bb086884c20a535366302c37220db24cf6bf2de5abb904f1ffbb13afa624f0d413049b1cb034bb010df076e04e691e924bc9b4e855cc87ef67c237455e1cc3c96d5325c45f5c6002eb68740692e35a49a9e5147d30e796b184df6e7fc0633aa8286fabce5a1f99f0a00011d9cc70d9239887c638aa5f28f268e1c9993d34b0d33550ec373acd921d461eab31cdf77fb7c08f999d4ea7f32f48396dc1d0c3cb77beffb58e3ab5f57333a4b00012d64e7e0459fad8067a73e7fd0cc5b97e6794b5761db7b3b7d15858843ac044d112d2fa713d9c29d1c79f73434e2af1cd965c93aac3502b0f368652266d09d34200000000003681da22000100000000000000000000000000000000000000000000000000000000000000040d9c82f1591753eb20000000000000000000000000000000000000000000546f6b656e4272696467650100000001ec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5
22 XPLA (28) Token Bridge 01000000030f00e94b4808ace06e1795157c10dd9e23f3936e326136f179a3fb7b00a18415f5a361c72b195a76d51928b1ed721bad2ef63f509ac852fd46f83fb5800cf2c9fbfc01036ca0758b0992c1a5f18cb5bacce13db20c18e03946084c36478e905d6e36e30b6ef593515ae8b0768a59c4d2632d52aefb8e4921449ba6268bb447de67e75d0d0104a2292bdc92363c459019a820e8834643f35b1477689e7e4a33e62ca9839e44ab3bc7562f893ed75a64afb245355f5a1155797de999aeda645cce8faf885547a0000523fa45cf92d7eeb11c36343ba1c5e17f99e417bee10d9f3a6b73a0e9b251fd46772fa1687d5d0c41e8480c511292bac1f521ed8d329189747abfce3da1f1128f010783727dd2756b30d7b77cbc179915ee150e9647105002d46e4f1d4ae44b19e7434aeef2bdd46c911fa4fdf01dacab3f80e246b752f24633218d0994adaf9f1cf10008192ab5ea8f2206d5b309a9834cb132067b588ab005bc38e181353b8ca9a3750d21be49e99ff8618a9231bec03e78a332379857384a0a130e93c01e6f6f8e32d300099ac58b0f16b460cc987aee0d06256875bbbd541254aefecf891946d93a8c70080183dc2255710acc87a8ccc1dbd41b14fefde1bbd5af2d28077eef081e8b22da010a20c1f57cc59c9fc896ffb347e0a3d4b8d2d8212448d9519a52b1fc5d0e6087f74913fe890c344c0369b30c41167ca19a405159e3ba0dacaa72406b23b0ee735f000beca147e892548b2b771061fcc7674fc027a4cdf86a273cae32be91d3d84a7620421f91562b00ef96da7c2f2a6e4513f1191a93f56d221d52724f3b3b7edf3f48010c24d08d8a33663ce9756c69c744b47ffee750d0f7f1c1a3cea105873f0c0a0279563f4b92b130ae3debd73c7342461d7d177ec9a9fe45d2b6175ba106ec292c86010de1694567f84b429c0fdeee88b0d65b8fbe0b1eb0f9574d6b6d99001bc8532d79203571d8360ef565c7108a25e2f7ade1d61cf808c0a2b436eb86ecd510e652c5010e7079a3a6c9f32ce20e726463d03aa650e81a677d452f76787e639984d6cf3b3e2cfea642b08c8ae6172e5e2f6c6114b787c6d9b2770ad17d1edad2917334bce8010f86d02cdc1cef14d43ddcfb47c9a16020da4feba940b4cfffa474365a3d9e31fa14dd4b10026415178ca4bf9449b9b30f86b4d79664e2f4abbcf183f221539286011136426e8ab92889c310079e1c85e5249d8ff5de32a9576edfefa4950379d6b2002c1ddeb03682d5b68e69b1c1a5aaf54e1763e6ac0ed1eaabdf8d90ab97e432a40012454e859e894e375defb136926a692171a3ddca9ef069ea1cd0501536cbcb3cfb1a4a700a837205237ce44393ed2cf2110592020a11c79ea27d2c3c09095c537e0000000000bb75823600010000000000000000000000000000000000000000000000000000000000000004c55a1c78b494ff3120000000000000000000000000000000000000000000546f6b656e427269646765010000001c8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c
23 Sui (21) Token Bridge 01000000030d00a42d36048a27a763413bfa1d261daeb86f7feed7a9850d9915d8c44acee97dd4327c0351648ac4d496050e6af6534badd2b86416a5675f373e5a5ebf876505700002349ec8ae9aeef147e87b2b06a475d6ec760c20680285ecdd6b7b400cbd67504232e0cae965d27dc9f0a83fbed40ec0a759bd7ad9a014a69c90364a1df88048dc000323d01a78c01887d981e22ffb0f91d02c1d7f015393513db3f215af64bd9cb74829eb08fc9895f8b1247933dd23c2b71ac1bf5bbefb8bea829ab2f6b94317eaa901040305b91b17227313395a861365c8b110414e961ccf25a2b645226e6a307e488f6dace0896c354425f5dfb6b0cb968ef1f752653cd85179b9344f215b555601dd01060dcfd80b54b6f43e502b9628a5a2b92b453fa96718397ecbe0e279495ff37c0835fff5ee7f3b749de287a0c3440105ddd705d06975d56384792373645b7787df000715985ff2cf28e3a8062d9ffc7ef69fbd7c56082f0938cc564586d0dbcacf14986579e7d7a8629dc8a9cfcbf0c97c46ae6492d05c5fba193400746a43b6f1123d000a5db8adfca6d43dd345e130fa0cae250ac7cfa364a29d47cf219ce2b50d6f930a0e1bc399b5b92cdec3d00fcf6f2c7f0732996344812dae85afcfa077c67d94b8010bf68fe7c2ed3aaa180b01ba28052fa63d72509e642bf45f8b5c14c582d8e6eb99514d41ab7fd3f6451470e02a054a3630e347020b6330a8ec23efdc3e4da4550b010d7f3ec58dbb8ae21a2fb71941ed80d646469f1992e7fdc32706c327bfbe01b98011e8b377fce487237f9238fe9af09991f5da11d85aba5a4a81e99df8d066aead010e18e7de979a55bd568b26754fdd7d9e7b03572d742e5657f944ab35b44398a40e07a0c2399e13a244277138375e7e980bf6b666f39bc2f86afd2605f0249a5a53000f77d089279a354b7faa1f3fdc084f6e0ef684d9bcce8d9fb11b5568c0d0b215f15d54cc4383e1b7112fadc238f750b885f5f81a21f84e00ec4487a8064386cc2e01106d9d3067e19413e985f76852eb0cdd071fef659540ddf3a9d5610d492a68a13c61cd109f64c977c1274f9782dcbddfa46ee94331e02f98ba8fb37e22300bd63e0111819a499e30feb82190736054d2993918aeb591e3098b4df77630e93512fec4c122f2cccfe88f2b735f42a06571944d800f3dfcb07de7956330515ddb3c9a41360000000000764b7752000100000000000000000000000000000000000000000000000000000000000000047654167e9520c1b820000000000000000000000000000000000000000000546f6b656e4272696467650100000015ccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5
24 Base (30) Token Bridge 01000000030d025ab9fcaa02dfe689251b2e7906e4a19d0badba35758178dcf2f17b80cde8d26c765848111afd52f03aede53c2f560e9760947d9cb2b8f0e5f1b841db41f9831e00039a06438cdc753aa4ae800f10c78fafff1296dc778449869104d26a944f8a735a57da0fe3c867a6741dd98ca589f7f8c293acd8507e8cdf9995cba118c97c59000005ffc63796fd35fab17fbf213f1e65295e5e0bf0c2d36c596c7750b3977b9cc41d1d2e63511abee319f05d753cc24de51d69a528e64c7664fdc01ab565e9dda816000680fa2ec4e1bcaf2e017a78642ee5fec60751b815a20f1e37fe31957478997fe61630aeefca76cc458dd44504a02fe34d880e81a960f34ee654bee523d5315cd10007d5a108f92a4ef89ca96f1d4153f94dfca65a469c1b0367f1e4ba24f8273ea3572173f3febd60c1f4a33ced3a56e284e23b90780fc1f1a1679057fd304a6a24570108f092e76509257f8eee0f630e18ed44046859aaa86451cb48ca8ece8b29f794205ea1a56b2a69a9d9c07ce21f91eed72d6fbebcc59eb17c06b4497338fa4c6a810009c778d7624d4dcfbf5c725ab3c057900eaee4ac9728c0e5a65216455c6c89afca4e27eea911e65bba285b4275e6b10f7cb4b119e940ee58981b986bdd4be650da000cd21048771f2be56761ba2a8501e28dd3c59e2ddffe1121156dad1cc2d0fb5bbd3423a7b19b6e024d834719fee64625b8e0715de37ba84dd74ce634e8c4a0f08c000d038bd77a6ffe73974b7ae8c9d7aed8029b6b9fa42c2f661630b00ed2b4b74df713ed414760db30f6bf762879cd27b44f6bd71bdcbd92cbdd4776d79636428c4d010e8cb6d1cd45bafc85a0574f1db14ee629511d40870eb1f7614d4e93a8c2997d1c3c413f59a8fc5daddee533bc9b6c3c286e8bd1a5dc11a4f23708ced3d4cd0fe2011006418481fb3854bf787d77b08bc264bd1152c64f44fa86e24c9864ea2440789335476848d347a85bf6c2e31a83b3874455d8a912bea8aeeb7db302a81e0e8343001129e206512e5047c51ff799eeaff663d95c41ff22ba9f21730e1dfd0298bc863f3db21622f6388ff38ed69bd2dccace0c2eb8df2d493a74729b4965181221093001125b9582ae58fe454f633d410266fdcd4a098ff98d9643d754f18f4184007598f929a70149b48ef58eaa5badbafbed9b0670df8195058b3c1628531508501e2fd00100000000a62a41cd00010000000000000000000000000000000000000000000000000000000000000004e4f4552fd06aa28820000000000000000000000000000000000000000000546f6b656e427269646765010000001e0000000000000000000000008d2de8d2f73f1f4cab472ac9a881c9b123c79627
25 Sei (32) Token Bridge 01000000030d03e6be465d35dbbcc957b5803283ee89586e56d0ff29f0a530d4fb96fdc69028221623127de2d6115fe060f55840053f1f9c73b8d4f5bf8043cbe9a77ad5f428fc00046ae1f149be927d2dd8cd4b5d38c9aa0d6b4e2883dd52e742fea2d20e22af25e10581732281dcf59e97755219ae64e408ee6be20c68059da62dbd8e6f86690da0000539b965de3dcfd312cfe5a1b1b3999d299b83d263b8817278bc7109c061649c513582c8ab46f819cc98f243e3b0b8dd543b7f1263d443dbef34ea1e9c023159380006dde501b50c618965ab1766d896d9b919effc337136a72795cf0c47a5460286c4006685ab5da24c21f8558c1a392b62291e0172deafaf486918b01f6ffc73d420010839a1b899424789485a8e2f5cfe59bd731ca62a37228ee7bd09252aa11e6995f93c650360e66ef878cdafb6feca334b0a4d69dadf802a8fd0e228ed0af5467d1701093ac07f14460a31e577bf0910718ee0dc4a28743d24c61e58e1e4f275ae05bb16238043863aa160e522b3a32ac276584129e98a6a21490ea26e0e60c9a71d6f4f010adb8ed8e54ab1f9f7a7073a0135bbdde881d2baf9699076ca15d0fc0438dc4a681d27659205fc3075b414881b602731fd6d53a2eba8c92c78337e8ccc00b325ab010bcc9c74a50ff0243ae8c3189449ca86ce66ede52a495b53d7461e4001b75e762e55a9ce5256b4d145189027c32f85d56a0a891214afaa521607858b9d7a8e043b010cd70ded635f6a295b4697cfe25adb8c10223e2253d0637ef7a0bba951e34f62bf0216e186e406be8ab707fdbab7cc5673c0de3177cbdbc6ca9591b27b5fed37d0000da39343ac0b8551d7bf5aaf4a2fb4c606649783ab2fa803012174a9974da5b8ca7c0e1633e35ccf8d539831df9636ddc613e654e7b3e207265b3457a6e6d81cae000e5d70e2931e4f223d5b06f87706f308c933f6247ffc3b261e8a9f5c75faddfa7c66a452ed16337b0bac026dd5974a82ea71ba32975ecd1cd490eee3326330a2b90010784a772c9a9d3ae20d3114c74c6eecaa3ff467b8e7f3199d0bd0d45bcc719a26579d6fdcd69f02d044e45118c94c92224a2da9a18f9891d82818fc170c2838ac0012cd71e7f13c2122ddae87806b2c531cb8ed6c7cb0df5243413f751914ffc46780294d91d651d4f76efd5fdffdd3859053c4204bce0fe63b9c3d88e5438a5a790701000000009f745aeb00010000000000000000000000000000000000000000000000000000000000000004a69638d9f869868020000000000000000000000000000000000000000000546f6b656e427269646765010000002086c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e
26 Gateway (3104) Token Bridge 01000000030d03340e26c720f08f7cac377b3430519b79e384ff372073390276d8b08de2555eb6446ebccdd500885b820f74744a97406045ad1f8859675d8d736d80217be188e10104cafdc898b86764dfa1ca0e6bde63d98a148ab7426926dbc08917bd9406203e743d85d2b627c56fda091f6d59dd8fbfe258d7e37acab4157c4e5758dbe4082f230105638f2bd31865a42083fb97e82d8ac92903a4fabe3ab67bd468105ac5e4a573083965377bbebdfcc8942abdd78c19d12e29d9b6ea07f7c9058e8da0c7af3cea830006d8903627e8f420a241e837683760b429cc9f97f6a34ebabb5534dec8b7a1a3484c397e5e3c1948fe1c22c16777512eb34ab7308fbe57d17de1e36c5f2db948190008dd9b1e52d65cbb8c6ade8ca6208f1261c4219b486e954c715fcb1c64c17c60d67761cf425b6bea46f2471ceec6b05b459413500f5d5752375835574c8bc2841b0109fbdf9129521294a07c0735c9989d03e8023110549b2c0379c50feb38747f456f0d06aecbad914147d08bb0de67f2fbe78136493da7e047db6c21118d052843ef010b28be2248c052836e784349813d769de36e9e91d0b35645effe8340e56a543c2e78c42f999d098a91bd2146cf9be4d39c22be7e3cd784c039be3ab8d71d03c23e010c184f7ef54a95344d0571cdd95f8332b89dcd09ad54860380f8c960bc091affa73baf2d95dfe217bc00566cb0acb9b616751dee0749396af59b7e507262047f55010db6deeeed83087da0f4ee7c0972ce510fe9b70b0e4364b02291fbc6eb4b0701576a2b4a009be891ce3a4c667f211488a5dc8a8b53371f24643326537dc1404f7e000e8017c34c68f0a3bd1927e9037b00ce30032918e9ce16046b7e1b2d51b05101a4678c4079a3632ad07358142de78e616b1710996c5a01e140b7a326d930dbd7070010b126b40f924dbb06bf8aeeb1dad8622d9da7f9781edf274cc35c889d072f95705bc1d1f22f53f96007e6f40b8e86e2e2df5ba6d76f5ab09ee2dc9d30c344060201110dc68c7c3d130d7d0521e86a28cdc084385a1bd02d54974a452d3970b20c93ca586fa8f4976609cf45a364a7d12c4fe224b159a99317313fddc05ae97fc556880012ed311c9c7c63587ac455997b8efe6c13f2fbfd516e54362468d711c400b74a8d11f4ab0c56a81ffd5ad7b040afc98ac6114bd2b5b1e66c83f4179bb80c3c28c801000000002cbf2e5e00010000000000000000000000000000000000000000000000000000000000000004e0f18ed5817c99e820000000000000000000000000000000000000000000546f6b656e4272696467650100000c20aeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924

View File

@ -126,6 +126,10 @@ var (
xplaLCD *string
xplaContract *string
gatewayWS *string
gatewayLCD *string
gatewayContract *string
algorandIndexerRPC *string
algorandIndexerToken *string
algorandAlgodRPC *string
@ -287,6 +291,10 @@ func init() {
xplaLCD = NodeCmd.Flags().String("xplaLCD", "", "Path to LCD service root for XPLA http calls")
xplaContract = NodeCmd.Flags().String("xplaContract", "", "Wormhole contract address on XPLA blockchain")
gatewayWS = NodeCmd.Flags().String("gatewayWS", "", "Path to root for Gateway watcher websocket connection")
gatewayLCD = NodeCmd.Flags().String("gatewayLCD", "", "Path to LCD service root for Gateway watcher http calls")
gatewayContract = NodeCmd.Flags().String("gatewayContract", "", "Wormhole contract address on Gateway blockchain")
algorandIndexerRPC = NodeCmd.Flags().String("algorandIndexerRPC", "", "Algorand Indexer RPC URL")
algorandIndexerToken = NodeCmd.Flags().String("algorandIndexerToken", "", "Algorand Indexer access token")
algorandAlgodRPC = NodeCmd.Flags().String("algorandAlgodRPC", "", "Algorand Algod RPC URL")
@ -623,6 +631,14 @@ func runNode(cmd *cobra.Command, args []string) {
logger.Fatal("Both --baseContract and --baseRPC must be set together or both unset")
}
if *gatewayWS != "" {
if *gatewayLCD == "" || *gatewayContract == "" {
logger.Fatal("If --gatewayWS is specified, then --gatewayLCD and --gatewayContract must be specified")
}
} else if *gatewayLCD != "" || *gatewayContract != "" {
logger.Fatal("If --gatewayWS is not specified, then --gatewayLCD and --gatewayContract must not be specified")
}
if *testnetMode {
if *neonRPC == "" {
logger.Fatal("Please specify --neonRPC")
@ -881,6 +897,8 @@ func runNode(cmd *cobra.Command, args []string) {
rpcMap["terraLCD"] = *terraLCD
rpcMap["terra2WS"] = *terra2WS
rpcMap["terra2LCD"] = *terra2LCD
rpcMap["gatewayWS"] = *gatewayWS
rpcMap["gatewayLCD"] = *gatewayLCD
rpcMap["xplaWS"] = *xplaWS
rpcMap["xplaLCD"] = *xplaLCD
@ -1357,6 +1375,18 @@ func runNode(cmd *cobra.Command, args []string) {
watcherConfigs = append(watcherConfigs, wc)
}
if shouldStart(gatewayWS) {
wc := &cosmwasm.WatcherConfig{
NetworkID: "gateway",
ChainID: vaa.ChainIDWormchain,
Websocket: *gatewayWS,
Lcd: *gatewayLCD,
Contract: *gatewayContract,
}
watcherConfigs = append(watcherConfigs, wc)
}
if *testnetMode {
if shouldStart(neonRPC) {
if !shouldStart(solanaRPC) {

View File

@ -35,5 +35,6 @@ func chainList() []chainConfigEntry {
chainConfigEntry{emitterChainID: vaa.ChainIDXpla, dailyLimit: 200_000, bigTransactionSize: 20_000},
chainConfigEntry{emitterChainID: vaa.ChainIDSui, dailyLimit: 5_000_000, bigTransactionSize: 500_000},
chainConfigEntry{emitterChainID: vaa.ChainIDSei, dailyLimit: 200_000, bigTransactionSize: 20_000},
chainConfigEntry{emitterChainID: vaa.ChainIDWormchain, dailyLimit: 200_000, bigTransactionSize: 20_000},
}
}

View File

@ -43,7 +43,7 @@ func TestTokenListChainTokensPresent(t *testing.T) {
}
}
if e != vaa.ChainIDXpla && e != vaa.ChainIDAptos && e != vaa.ChainIDArbitrum {
if e != vaa.ChainIDXpla && e != vaa.ChainIDAptos && e != vaa.ChainIDArbitrum && e != vaa.ChainIDWormchain {
assert.Equal(t, found, true)
}
})

View File

@ -180,7 +180,8 @@ func (gwr *GatewayRelayer) worker(ctx context.Context) error {
case v := <-gwr.subChan:
if err := gwr.submitVAAToContract(v); err != nil {
gwr.logger.Error("failed to submit vaa to contract", zap.String("msgId", v.MessageID()), zap.Error(err))
return fmt.Errorf("failed to submit vaa to contract: %w", err)
// TODO: For now we don't want to restart because this will happen if the VAA has already been submitted by another guardian.
//return fmt.Errorf("failed to submit vaa to contract: %w", err)
}
}
}

View File

@ -15,7 +15,7 @@ var knownDevnetTokenbridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDTerra: "000000000000000000000000784999135aaa8a3ca5914468852fdddbddd8789d",
vaa.ChainIDBSC: "0000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16",
vaa.ChainIDAlgorand: "8ec299cb7f3efec28f542397e07f07118d74c875f85409ed8e6b93c17b60e992",
vaa.ChainIDWormchain: "0000000000000000000000001711cd63b2c545ee6545415d3cc0bda6425c43c4",
vaa.ChainIDWormchain: "f04a313a7349b120c55c99788f12f712176bb3e5926d012d0ea72fa2bbb85051",
vaa.ChainIDSui: "be8d2e6809d4873bcf1d8be6af2b92500091ad6aa5dc76bc717af86a58d300ca",
}

View File

@ -258,8 +258,9 @@ const MAINNET = {
nft_bridge: undefined,
},
wormchain: {
core: undefined,
token_bridge: undefined,
core: "wormhole1ufs3tlq4umljk0qfe8k5ya0x6hpavn897u2cnf9k0en9jr7qarqqaqfk2j",
token_bridge:
"wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh",
nft_bridge: undefined,
},
sepolia: {
@ -604,8 +605,9 @@ const DEVNET = {
nft_bridge: undefined,
},
wormchain: {
core: "wormhole1ap5vgur5zlgys8whugfegnn43emka567dtq0jl",
token_bridge: "wormhole1zugu6cajc4z7ue29g9wnes9a5ep9cs7yu7rn3z",
core: "wormhole17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgshdnj3k",
token_bridge:
"wormhole1ghd753shjuwexxywmgs4xz7x2q732vcnkm6h2pyv9s6ah3hylvrqtm7t3h",
nft_bridge: undefined,
},
sepolia: {

View File

@ -121,6 +121,7 @@ var knownTokenbridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDInjective: "00000000000000000000000045dbea4617971d93188eda21530bc6503d153313",
vaa.ChainIDSui: "ccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5",
vaa.ChainIDSei: "86c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e",
vaa.ChainIDWormchain: "aeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924",
}
// KnownNFTBridgeEmitters is a list of well-known mainnet emitters for the NFT bridge.