Commit Graph

312 Commits

Author SHA1 Message Date
Jeff Schroeder cb73b7b718 node/pkg/ethereum: fix a bug discovered in testnet 2022-06-24 23:40:24 -04:00
bruce-riley cdc6edd425
Guardian eth nil event check (#1300)
* Guardian eth nil event check

* Check for number being nil in watcher
2022-06-23 09:40:04 -05:00
Bruce Riley b96ba36d25 Terra2 Mainnet Guardian Changes 2022-06-22 11:12:30 -04:00
Leo 8c60a83b54 node/pkg/supervisor: document upstream repository
commit-id:1b6b7f2e
2022-06-21 22:32:45 -04:00
tbjump 4575fe05d9
Better lint and formatting (#1263)
Enforce goimports, add tooling and documentation, and run it on the repo.
2022-06-21 12:18:16 -07:00
bruce-riley 57fe302314
Add emitter type to guardian mainnet consts (#1293)
* Add emitter type to guardian mainnet consts

* Add stringer to fix lint errors
2022-06-21 14:13:44 -05:00
Evan Gray 5931368ed7 node: terra2 support 2022-06-21 10:47:16 -04:00
bruce-riley f07b5dfbfb
Guardian parse transfer VAA payload (#1232)
* Parse transfer VAA payload

Change-Id: I23136807e5101ae823e9d198ac52d3446a94b0f2

* Enhance StringToAddress()

Change-Id: If7721c991443443cd811cc5b3ee070224aa6c2ce

* Code review rework

Change-Id: I75ae8c5386d9bcde1cfdd6b1e666bfefbe9852fe

* Payload length can be shorter

Change-Id: I459a180d7a54faf96b72943c9485696eb08b3d61

* Ran go fmt

Change-Id: Ia6ba3aaa13eb7c4e573c263a2d7868bf3e9937a4

* Decoding payload should not require a VAA

Change-Id: I143119e8667f340c43c7662488d909f087b9d1cc

* Fix comment typo

* Refactor StringToAddress tests to table pattern

* Refactor DecodeTransferPayloadHdr tests

* Add unit-tests for IsTransfer and fix array out of bounds bug

* Make sure length checking handles sub-byte hex strings appropriately

* Add empty string negative cases for TestStringToAddress and TestDecodeTransferPayloadHdr

* Fix nil ptr error in unit-tests

* Fix parenthesis in IsTransfer()

* More rework

Co-authored-by: claudijd <jclaudius@jumptrading.com>
2022-06-15 15:45:21 -05:00
bruce-riley 24c5b17267
Neon to testnet (#1262)
* WIP: neon

* Watcher support

* Use eth_getLogs for Neon

* bridge_ui: update sdk version

* Setting WETH address for Neon

* Portal bridge support for WNEON

* relayer: update sdk

Co-authored-by: Evan Gray <battledingo@gmail.com>
2022-06-14 10:22:49 -04:00
Chirantan Ekbote 7454c26f19 node: Update terra.go to latest version
This is necessary to use a more recent version of cosmos-sdk (v0.39.1 ->
v0.44.5).
2022-06-09 12:40:27 +09:00
Bruce Riley cf8c97082b Minor tweak to finalized check 2022-06-07 10:36:12 -04:00
Bruce Riley 0ac89c3c06 Move polygon stuff to a different branch 2022-06-07 10:36:12 -04:00
Bruce Riley cf4722a546 Refactor to generalize polling
Change-Id: Ie30056486ec86f6dceffed231ac227fa9c3499a7
2022-06-07 10:36:12 -04:00
Bruce Riley bc7834448e Enhance error handling
Change-Id: Ied2521c0ebfc6bc8cf76ea90be6bc40dc0d811a3
2022-06-07 10:36:12 -04:00
Bruce Riley 9d423422c4 Rework the code
Change-Id: Id0aed3e3bce8f1e5332479132fab9437252909db
2022-06-07 10:36:12 -04:00
Bruce Riley 80512c0350 Initial rough draft
Change-Id: Ic2c8b15438162fd097e866f9a0ca1f6adf6a3f55
2022-06-07 10:36:12 -04:00
Josh Siegel 594674db5e algo/watcher: Fixes for testnet 2022-06-07 08:57:27 -05:00
Bruce Riley dcce155f43 Acala mainnet deploy 2022-06-03 14:44:22 -04:00
tbjump ba5fcc4ad8 apply gofmt and enforce it for new commits 2022-06-02 07:57:49 -04:00
Jonathan Claudius f32e6c4aa8
Reorder quorum and verifysignatures (#1166) 2022-05-25 08:35:08 -04:00
Jonathan Claudius 1e6611ebb6
Add comments on vaa min length (#1206)
* Add proof of work on minVAALength

* Change minVAALength to 57
2022-05-24 10:42:30 -04:00
tbjump 8c1e571724
fix getUniqueClientId to actually return unique ID (#1127)
fix getUniqueClientId to actually return unique ID
2022-05-23 15:05:55 +02:00
tbjump d87ae5a272
gosec fixes (#1201)
* nosec linter surpression in nodekey_test.go

* Mark DeterministicEcdsaKeyByIndex as Insecure

* nosec - surpress warning

* simplify range expression

Co-authored-by: tbjump <>
2022-05-20 08:09:48 -07:00
bruce-riley 018908a420
Klaytn mainnet deploy (#1185)
* Klaytn mainnet deploy
2022-05-16 10:06:17 -04:00
Bruce Riley d266438654 Celo mainnet deploy changes 2022-05-13 13:11:28 -04:00
Josh Siegel ac9b4a5d05 algo/rollback: handle rollbacks gracefully @ gusc1a-ossdev-jsl5 2022-05-12 09:10:10 -05:00
Josh Siegel c9d7a617ee Rewrite algorand guardian watcher to directly hit the node instead of depending on indexer 2022-05-12 06:50:07 -05:00
bruce-riley c7ba459de8
Moonbeam to testnet (#1150)
* Moonbeam to testnet

* Fix typo

* Shouldn't touch the CLI with this PR

* Update SDK version
2022-05-10 11:23:07 -04:00
Leo 2a83ea406b node/pkg/ethereum: move up nil check for TransactionReceipt
This fixes a null pointer dereference for a nil tx.

commit-id:a6a356b8
2022-05-05 09:04:54 -04:00
bruce-riley a94a3cf2fb
Karura mainnet deploy (#1142)
* Start of move to mainnet

* Rework to safe mode check

* Update truffle-config

* Should not check safe mode in dev mode
2022-05-02 14:28:17 -04:00
bruce-riley 49f4a98cb2
Add missing aurora address references (#1117)
* Add missing aurora address references

Change-Id: I57a7dc7450d8527ab1ee6710dfbd6eda6da93f07

* Fix copy and paste error in comment

Change-Id: Ie7fc3cdbeab76518aad0f0220798cd1788d4be45
2022-05-02 13:06:56 -04:00
Evan Gray 1229ca5cff algo: guardian 2022-04-29 20:56:46 -04:00
bruce-riley d04328b858
Celo testnet support (#1051)
* Initial Celo support

Change-Id: Iee98ee29a8b09af9ca76945792b750d96a170702

* Watcher support

* Fix high level make file

* Remove node binary committed by mistake

* Port change from EthWatcher to CeloWatcher

* Use docker to build ABIs

* Refactor watcher to eliminate massive redunancy

* Fix lint-and-tests to handle multiple defs on link

* Minor code cleanup

* Celo should use ganache in devnet

* Prep for mainnet deploy

* Code review rework

* Remove celo from sdk package.json
2022-04-28 12:20:38 -04:00
bruce-riley 87b36399d3
Add safe mode check (#1108)
Change-Id: Ida10e1ab0c056b4ed1ce2317800235843763a7ac
2022-04-26 07:51:10 -05:00
Csongor Kiss 0f6c1e2d98 Allow specifying the timestamp in governance inject
The 'timestamp' field is now allowed in a governance prototxt, which
applies to all the messages in the struct. If the timestamp is not
specified, then it defaults to 0, which is identical to the existing
behaviour.
2022-04-19 17:52:05 +01:00
Jonathan Claudius b18a6c8c2f
Fix segfault from empty GetSignedVAARequest (#1069) 2022-04-11 19:16:59 -04:00
Jonathan Claudius bad4f7061b
Adds unit-tests and functional improvements to guardian signature verification (#1068)
* Add more comprehensive structs unit-tests

* Make VerifySignatures fail on duplicate addresses

* Adjust duplicate detection to guard on signatures instead of addresses

* Add monotonic check in VerifySignatures

* Move logic into VerifySignatures and add more test cases

* Add a paranoid check for duplicate signers

* Make VerifySignatures unit-tests less contrived

* Add more verify signature test cases

* Refactor VerifySignatures tests

* Add VerifySignature fuzz tests

* Add tc.result checking instead of hardcoded true

* Change comparison so it throws debug on failure for fuzz tests

* Add unit-tests for observation signature logic

* Fix comment typos

* Refactor observation tests

* Add missing test case

* Fix VAAInvalidSignatures test case label

* Clean up unit-tests for observation and structs

* Change errorString convention in test

* Format Signature Verification Test Cases

* Remove unnecessary casting

* Add multi-signer same key cases

* Fix err usage in test cases

* Remove duplicate getVAA
2022-04-11 19:14:41 -04:00
Leopold Schabel 1fd6e14885 node/pkg/ethereum: fix unreachable nil check
The program would've crashed on `l.Address` before it
could reach the nilness check.

commit-id:17b64899
2022-04-11 17:10:14 -04:00
Leopold Schabel 97aedff9f0
node/pkg/ethereum: restart watcher if guardian set update fails (#1010) 2022-04-11 21:07:19 +02:00
Jonathan Claudius 36cabf0e6a
Remove dead code path (#1056) 2022-04-08 19:37:23 -04:00
bruce-riley 879670c0e5
Klaytn testnet support (#1038)
* Klaytn support for testnet

Change-Id: Id0647fd6c603ab298f860c2cae20481555467315

* token_bridge client changes

Change-Id: If49ba994a67041044bdec054f19e69b4cfc2785b

* Get rid of special handling

* More cleanup

* Need to add Klaytn to structs tests

* Update SDK version

* Add SDK version

* fix klaytn bridge chain id

Co-authored-by: Evan Gray <battledingo@gmail.com>
2022-04-04 18:11:03 -04:00
bruce-riley eb898b0555
Aurora and Fantom handled wrong in a couple cases in guardian (#1044)
* Aurora and Fantom handled wrong in a couple cases

Change-Id: I09b7d2da46507e219bd99d945256e63fefad529c

* Original test covered upper / lower case

Change-Id: I0384b0aac6f63bf9782d393fcd4e4e67f353775a
2022-04-04 15:08:16 -04:00
Jonathan Claudius b7ec3ac0d3
Add unit-tests for nodekey (#1035)
* Add unit-tests for nodekey

* Move to deferred file clean up
2022-03-30 09:41:27 -04:00
Jonathan Claudius 5e00027a18
Add unit-tests for registry (#1026)
* Add unit-tests for registry

* Tweaks to registry unit-tests

* Remove duplicate unit-test

* Remove duplicate test case
2022-03-30 09:38:37 -04:00
Jonathan Claudius 3ceec1833f
Add more comprehensive structs unit-tests (#1006)
* Add more comprehensive structs unit-tests

* Abstract the vaa generation test logic
2022-03-29 12:24:56 -04:00
Jonathan Claudius 5921150f93
Add unit-test for ethereum utils (#1022) 2022-03-29 12:24:16 -04:00
Jonathan Claudius a709d6f283
Add unit-tests for deterministic devnet keys (#1032)
* Add unit-tests for deterministic devnet keys

* Extend unit-tests to do full deterministic key checks
2022-03-28 10:43:37 -04:00
Jonathan Claudius 5355f87206
Add unit test for 0 case and move to testify (#1023) 2022-03-28 09:54:18 -04:00
Jonathan Claudius b7a95484f9
Refactor Symmetric Unit-tests to Testify (#948)
* Refactor Symmetric Unit-tests to Testify

* Isolate tests for more durability

* Remove duplicate test case
2022-03-25 16:17:33 -04:00
justinschuldt b73ebd1b9c fix digest string represenation
commit-id:617ade15
2022-03-18 10:49:34 -05:00
justinschuldt d2dcb57e61 send guardian set data to prometheus
commit-id:87ec83e0
2022-03-18 10:49:34 -05:00
bruce-riley b718225e45
Testnet support for Aurora (#947)
* Testnet support

* Upgrade contract for 1conf

* Formatting changes

Change-Id: Id06481d77d770a04eb200aadb82574e23cddcd36
2022-03-15 10:41:10 -04:00
Jonathan Claudius fa237c7bb4
Add some unit-test coverage for GuardianSet (#951)
* Add some unit-test coverage for GuardianSet

* Remove mu check to fix CI run

* Remove unnecessary copy paste
2022-03-11 11:31:10 -05:00
claudijd ff62a2c7f4 Add unit-tests for payloads 2022-03-09 20:58:04 -05:00
Jonathan Claudius 991f8fdb4b
Add struct tests2 (#978)
* Add unit-tests for structs

* Remote commented imports

* Add tweaks per review feedback
2022-03-09 19:40:36 -05:00
Leo 011987867a pkg/ethereum: check receipt status code
commit-id:0b2539be
2022-03-07 17:53:42 -05:00
bruce-riley d1da11785f
Karura and Acala support (#862)
* Karura and Acala support

Change-Id: I74c88b9b7a220e419e31a11cf77931343c9a8159

* env files got dropped

Change-Id: If330887782a4e38f3419dff2efcc100a5949d3f2

* Updates for latest parameters

Change-Id: Ie25f377f6d70dfb7d4b28efabd4064088e001c0a
2022-03-03 16:40:32 -05:00
Leopold Schabel d40a70a37f
node/pkg/ethereum: log blockhash for new message publications (#910) 2022-03-03 21:31:15 +01:00
Leopold Schabel 3e51512aec
node/pkg/common: fix guardian set state cleanup (#891) 2022-03-03 21:18:41 +01:00
Hendrik Hofstadt 4bc5daa8d1
Hardening against governance message spoofing (#938) 2022-03-03 17:55:02 +01:00
Jonathan Claudius d47089741c
Add unit-test for governance (#867)
* Add unit-test for governance

* Gofmt governance_test.go

* Use structs for testing governance VAA

Co-authored-by: claudijd <jclaudius@jumptrading.com>
2022-02-21 17:23:34 -05:00
Leo 8bf1176401 node/pkg/common: add list of known mainnet emitters
commit-id:f4d2389f
2022-02-15 16:47:20 -05:00
Leo 93ee5f3d31 node: remove duplicated public RPC node definitions
commit-id:452deba7
2022-02-15 16:47:20 -05:00
Jeff Schroeder b54b7e1183 node: add fantom support
Only run in testnet until the contracts are deployed to mainnet.
2022-02-15 13:51:11 -05:00
Evan Gray 9ed71c0038 node: terra reobservation 2022-02-12 15:03:32 +01:00
Leo c28b492e03 node: add reobservation requests for Eth chains
commit-id:e4fa6adf
2022-02-12 01:06:06 +01:00
Leo 8f63e123a5 node/pkg/ethereum: add MessageEventsForTransaction
This retrieves a single transaction's MessagePublication events. This
has the same security assumptions than listening to the log events -
namely, ensuring the right contract has emitted them.

Tested locally with a mainnet transaction.

commit-id:64347ecc
2022-02-12 01:06:06 +01:00
Leo 6c02299f2b node/pkg/solana: skip failed transactions
Avoid unnecessary RPC calls/retries.

Makes no difference for safety, which relies on VAA accounts rather than
any transaction metadata.

commit-id:0cd82ed4
2022-02-08 12:41:48 +01:00
Leo 95fea79276 node/pkg/db: add db.VaaIDFromString and vaa.StringToAddress helpers
commit-id:1fb9f998
2022-02-08 12:41:10 +01:00
justinschuldt 763c62b73e supply credentials file to PubSub
commit-id:563f6718
2022-02-01 10:32:58 +01:00
Leo f200a6bd23 node/pkg/solana: fix context memory leak
commit-id:69632fa8
2022-01-27 12:43:03 +01:00
Leo f829195ea5 node/pkg/solana: kill recovery feature
This is no longer needed with SignedObservationRequest.

commit-id:9a3fbf4e
2022-01-26 13:00:23 +01:00
Leo 73a5b72857 node: implement observation requests via gossip
Limitations:

- Only supported for Solana and for confirmation level Finalized,
  which the token/NFT bridges use. Need to take a close look before
  enabling it for both (since we're bypassing the tx fetcher and would
  fetch and process accounts of the "wrong" confirmation levels).

- Rate limiting not implemented yet, will be done in a future release
  when things are not currently on fire.

Test: https://gist.github.com/leoluk/bab3a18e922057109facea1cf1f26b2f

commit-id:6a0d4c32
2022-01-26 13:00:23 +01:00
justinschuldt 79f489bd28 code review update
commit-id:55c28b21
2022-01-26 12:16:16 +01:00
justinschuldt 054d800f19 improve logging around GCP PubSub message path
commit-id:04012992
2022-01-26 12:16:16 +01:00
Leo 07c599ab68 node/pkg/telemetry: reduce log level to INFO
It appears that GCP Cloud Logging cannot handle the volume of logs
we're throwing at it... full text search slows to a crawl (LOL)

Reduce log level until we can move to something else.

commit-id:b71c3467
2022-01-25 22:36:24 +01:00
Leo 68bdd4b0b6 node/pkg/processor: expire late observations
Fixes https://github.com/certusone/wormhole/issues/685.

Example occurrence this fixes: https://i.imgur.com/gZWKf1n.png

Possible future optimizations include:

- Ignore late messages in the processor (but we can only ignore
  them post settlement time, so we need the cleanup logic regardless).

- Ignoring late observations from other nodes.

- Using the stored VAA to calculate misses.

- Drop incomplete local observations. However, this is not trivial
  since we do not know the message ID for those.

commit-id:47e1e59f
2022-01-25 22:36:24 +01:00
Leo b8c30314b5 node: avoid clobbering terminal with binary data
commit-id:222d1f31
2022-01-25 22:36:24 +01:00
Leo aff369ff4d node/pkg/solana: push recovery date
commit-id:a3c51648
2022-01-11 15:10:12 +01:00
Leo 1c0815e107 node/pkg/ethereum: increase log levels
commit-id:8ec48eb6
2022-01-11 15:10:12 +01:00
Leo af2bd5be36 node/cmd: add public telemetry for logs
commit-id:582fc943
2022-01-11 15:10:12 +01:00
Leo 870afc5193 node/pkg/ethereum: do not override outer scope's cancel function
Otherwise, we might end up cancelling the root context by accident.

commit-id:09a5287e
2022-01-11 15:10:12 +01:00
Leo a5223c074a node/pkg/ethereum: reduce timeout for TransactionReceipt
We should spend as little time holding pendingMu as possible.
Ideally, we would refactor the component to do non-blocking I/O.

commit-id:b464c384
2022-01-11 15:10:12 +01:00
Leo 146c08d5af node/pkg/ethereum: correctly log "not found" error
commit-id:23a5fd80
2022-01-11 15:10:12 +01:00
Leo 81d1e821c0 node/pkg/ethereum: minimum confirmations for Polygon
commit-id:0d95a63c
2022-01-11 15:10:12 +01:00
Leo 26a946fef7 node/pkg/solana: update recovery.cfg
commit-id:facc30f4
2022-01-11 15:10:12 +01:00
Leo 33717ebcc9 node/pkg/ethereum: check for rpc.ErrNoResult with non-nil tx
This cannot currently happen the way TransactionReceipt is implemented,
but make sure to check the tx != nil case anyway in case the API
is changed in future releases of go-ethereum.

commit-id:b721f0be
2022-01-11 15:10:12 +01:00
Leo 5de9d11b51 node/pkg/ethereum: improve confirmation logging
Makes the log slightly nicer to grep when looking for a tx.

commit-id:dc7cd00a
2022-01-11 15:10:12 +01:00
Hendrik Hofstadt 409b5ca5bf Properly check for orphaned txs
Change-Id: I2c3d1f638f6e6ab22c4dfcbbe0a0f5f6fd62f730
2022-01-07 10:31:37 -05:00
Evan Gray e1257f123a node: eth watcher multi-message fix 2022-01-04 10:44:46 -05:00
Hendrik Hofstadt cc2c310ba6 Refactor terra guardian component
This allows multi-message emission in a single call.

Change-Id: Ief28e91646362506453fe48b5489fd4ee0d35682
2022-01-04 16:21:10 +01:00
Justin Schuldt 9656cca4f3
export MakeRowKey in bigtablewriter.go (#650)
So it can be used elsewhere, in cloud functions.
2021-12-27 12:21:47 -06:00
jumpsiegel f90ed66ca0
Stub out algorand support in wormhole (#611)
* Stub out algorand support in wormhole

  1) Introduce the algorand chain constant in all the appropriate places
  2) Deploy pyth/hernandc algorand smart contracts into devnet
  3) Fund all the correct contracts for devnet testing

Change-Id: I6e4402b5b21223b32ea89653f8c7606f5c7f2843

* pr/jsiegel/algorand-v1: ALGORAND is not a EVM chain @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: fix lint @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: put the requirements into the image @ gusc1a-ossdev-jsl1

* jsiegel/algorand: make the watcher hang forever @ gusc1a-ossdev-jsl1

* jsiegel/algorand: comment these out @ gusc1a-ossdev-jsl1

* jsiegel/algorand: put this back in @ gusc1a-ossdev-jsl1

* jsiegel/algorand: fix guardian example @ gusc1a-ossdev-jsl1

* Generate teal source code

commit-id:a537a109

* jsiegel/algorand: it builds @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: add Dockerfile.teal @ gusc1a-ossdev-jsl1

* jsiegel/algorand: improve the dependencies @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: Fix up build @ gusc1a-ossdev-jsl1

* dead file

* pr/jsiegel/algorand-v1: remove more stuff @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: fix build @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: freeze the requirements @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: Fix teal to use pipenv @ gusc1a-ossdev-jsl1

* pr/jsiegel/algorand-v1: fix miss-merge @ gusc1a-ossdev-jsl1

Co-authored-by: Leo <leo@certus.one>
2021-12-22 11:22:04 -05:00
Leo 8a24b23a27 node/pkg/solana: fix recovery account for 23635
commit-id:ad9e3269
2021-12-21 23:44:26 +01:00
Leo dc1aa7ad5b node/pkg/solana: add more recovery accounts
commit-id:9d40354b
2021-12-21 23:01:37 +01:00
Leo c3f97c0e7e node/pkg/solana: put finalized check back
commit-id:7425a438
2021-12-21 22:57:57 +01:00
Leo 40d1a57167 node/pkg/solana: bump recovery date and remove constraint
We don't know what commitment level the missing transactions use.

commit-id:8ed29f9f
2021-12-21 21:01:47 +01:00
Leo fce50e7c48 node/pkg/solana: double number of max retries
This should reduce the number of misses during periods of heavy weather
and high winds, at the expense of increasing load on the RPC nodes.

commit-id:98704274
2021-12-21 21:01:47 +01:00
Leo 3c1ee3bdc3 node: add oasis support
commit-id:31eeeb35
2021-12-20 20:57:11 +01:00
justinschuldt 024ced81d9 PubSub infra for bigtable data enrichment
Change-Id: Ide08774960ad7e9dee04090bc990be49357c79a2

commit-id:928fad6e
2021-12-20 16:56:56 +01:00
Leo 1e997bbf13 node/pkg/solana: add Dec 21 recovery event
commit-id:e9c5a3d5
2021-12-20 16:05:22 +01:00
Leo 8e695c674a node: run all Go tests in CI
commit-id:baa9f712
2021-12-20 16:05:22 +01:00
Leo 585a22cf59 node/pkg/supervisor: remove supervisor_test.go
The tests do not work outside of Monogon's test harness - remove them.

commit-id:46bf85fe
2021-12-20 16:05:22 +01:00
Leo ceff5a0954 node/pkg/solana: rename ParseMessagePublicationAccount and delete tests
The tests were never updated for Wormhole v2 and don't work.

commit-id:d5b153db
2021-12-20 16:05:22 +01:00
Leo e7d07dfded node/pkg/vaa: fix TestBodyRegisterChain_Serialize
I accidentally broke this in 2022b55fd, which removed the header.

commit-id:8665659a
2021-12-20 16:05:22 +01:00
Leo 8546ee6e14 node/pkg/vaa: remove error return value from SigningMsg
serializeBody always returns a nil error.
Remove the error return value.

commit-id:5e150f69
2021-12-20 16:05:22 +01:00
Leo 864e983e04 node: add avalanche support in testnet mode
Change-Id: Icdf6c26187547d1b1929e43530beeec17c142e3f
2021-12-10 11:48:03 +00:00
Leo bc48b1b51d node: add spy service
Change-Id: Ieb04e6d26c7778d8a8afbbeaee79d764d9f2cd31
2021-12-03 02:01:56 +01:00
Leo 8800d7bfd3 *: add ropsten chainID and guardiand implementation
Change-Id: Ib99316c28237d946eb2b6d013f4e275a620d4aa8
2021-11-22 22:32:36 +00:00
Leo 9cc37e3923 node/notify/discord: mention node operator groups
Change-Id: I891adf9342c84efefb8f4f908ae0b2881b118d7e
2021-11-05 15:42:15 +00:00
Leo 16c9f9036b node/pkg/processor: change threshold for Discord notifications
Change-Id: I09060ad46a47b6293b18cffd717492098ad6dda0
2021-11-05 15:42:15 +00:00
Leo f59f4bbb2e node/pkg/processor: ignore late observations for quorum VAAs
This avoids gossip spam and false positive Discord notifications
when a connected node catches up and late observations are made.

Change-Id: If9562661487d3d3d5138d27298b005f278f9e9ce
2021-10-29 19:14:05 +00:00
Leo 24ee63d9a1 node/pkg/processor: increase confirmed VAA timeout to five days
This'll make governance more relaxed.

Change-Id: I55946058f01ec4f08f60670725522f6d7d9346bb
2021-10-29 19:13:52 +00:00
Leo feb9919c0d node/pkg/db: document that VAAs may be stored multiple times
Change-Id: Ia32036b7e0f6afbe677a031628a3ed78f98184b7
2021-10-29 19:13:17 +00:00
Leo db4d325cb6 node/pkg/p2p: expose network guardian version metric
Fixes https://github.com/certusone/wormhole/issues/305

The logic to do this seemingly simple task is hilariously complex
due to the version string being attacker-controlled.

Change-Id: Ia1758418a67c082595affe0b7f2bb801e9434733
2021-10-29 19:13:14 +00:00
Leo 621962982a node/pkg/common: guardian set state node cleanup
This feature is dedicated to Chorus One, who really like to rotate
node keys! :-)

https://github.com/certusone/wormhole/issues/304

Change-Id: Ic0f1e52095676222970752b1e2ac893d7f0915ec
2021-10-29 19:13:10 +00:00
Leo d5f6540656 node/cmd/guardiand: governance template improvements
The template commands now support generating full governance messages
with all required fields. Outputs to stdout instead of a file.

Change-Id: I3837107c3075363a54d31f9dfb4d6dc07c79daa5
2021-10-29 19:08:45 +00:00
justinschuldt 8fed2d0659 remove unused bigtable data
Change-Id: I2b4a798b99f11be2ce9869d15dc633e1568974e1
2021-10-29 12:56:27 +00:00
justinschuldt 5f1e5dd211 save inbound VAA to bigtable
Change-Id: Id8ca26088daff3734a32d061029231d5846a020e
2021-10-29 10:09:48 +00:00
Leo c64576cc0b node: add Polygon support
Change-Id: Ia919861879eb6c831d4dd9ccbe1748e7123502e5
2021-10-21 10:11:21 +00:00
justinschuldt 71dbe80aae BigTable historical queries
- Add Cloud Functions:
  - "Recent" gap list, can filter and/or group by chain or address.
  - "Totals" counts 24h, 30d, rolling daily. can filter and group.
  - "Transaction" lookup row by chain-native transaction identifier.

- Pad sequence in rowkey to fixed length, for sequential row order.

- Add Cloud Function deploy instructions.

- Fix #410 Buildpack image cleanup

Change-Id: Ifa3110a3d58e2f94adb48ccb451c27ab3add0611
2021-10-13 16:20:10 +00:00
Leo ee81e667d3 node/pkg/processor: kill "received observation by unknown guardian"
Log message keeps causing confusion even at WARN level
(who would've thought :D)

Change-Id: I3dc7d0ed054f1531a69953ebccee053f58f81ad5
2021-10-12 21:48:44 +00:00
Leo 6fd6cb9f02 node: add BridgeUpgradeContract governance VAA
Example VAA produced by the template:

	(*vaa.VAA)(0xc0004f4510)({
	 Version: (uint8) 1,
	 GuardianSetIndex: (uint32) 0,
	 Signatures: ([]*vaa.Signature) (len=1 cap=1) {
	  (*vaa.Signature)(0xc0003b0370)({
	   Index: (uint8) 0,
	   Signature: (vaa.SignatureData) (len=65 cap=65) 0f97ec9093c21ccc4ce544898ed5c21b66ab4c90be894642fbb43474ed9fb48a26d6e12f3397b9fdab160fee64e797d26599a2a9d81a4bf4bc98970b5fa5122501
	  })
	 },
	 Timestamp: (time.Time) 1970-01-01 00:00:00 +0000 UTC,
	 Nonce: (uint32) 1375049878,
	 Sequence: (uint64) 3557202656914991802,
	 ConsistencyLevel: (uint8) 32,
	 EmitterChain: (vaa.ChainID) solana,
	 EmitterAddress: (vaa.Address) (len=32 cap=32) 0000000000000000000000000000000000000000000000000000000000000004,
	 Payload: ([]uint8) (len=67 cap=1000) {
	  00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
	  00000010  00 00 00 00 00 54 6f 6b  65 6e 42 72 69 64 67 65  |.....TokenBridge|
	  00000020  02 00 05 00 00 00 00 00  00 00 00 00 00 00 00 02  |................|
	  00000030  90 fb 16 72 08 af 45 5b  b1 37 78 01 63 b7 b7 a9  |...r..E[.7x.c...|
	  00000040  a1 0c 16                                          |...|
	 }
	})

Change-Id: Ibe95db01e1bc0a9c36e1be06920a389db886fdd1
2021-10-11 12:54:51 +00:00
Leo 659b7b2547 node: add Discord notifications for missing signatures
Change-Id: If09643c2e02c4c166577082cd9be9124d2e775d4
2021-10-06 14:12:21 +02:00
Leo c1502bce13 node/pkg/solana: do not re-trigger scheduled recovery past schedule
Change-Id: I2df48c868caa0b5d93fc5ae53e154ceca0e9a4d7
2021-10-06 12:41:58 +02:00
Leo 894fd7c694 node/pkg/solana: add more accounts to be recovered
Change-Id: Ifed655e521a32508fc2b00dde38187abc71185cc
2021-10-05 11:16:21 +02:00
Leo b577b70b2e node: add MessageID to observation messages
This allows us to associate an observation from the log
for messages that the local node did not observe.

Change-Id: I6ece7bfe3e6b878bdb7ee4ac03c81cb424a329b3
2021-10-04 23:31:00 +02:00
Leo c253f769fa node: add FindMissingMessages admin RPC method
Change-Id: I57c1227c1a591e10f5e77b3553216915df247d65
2021-10-04 23:31:00 +02:00
Leo 6b312b3add node/proto: sequence number is uint64
Change-Id: I098a6e9a40d52336b4307a9827d2a6f92e06d6cd
2021-10-04 16:35:32 +02:00
Leo 39b41c2d6c node/pkg/processor: reinstate source label
This was lost when removing the v1 submission logic.

Fixes certusone/wormhole#440

Change-Id: Ic997421aed88f64949e2dd3c55ad9230cb80ea3d
2021-10-04 11:56:22 +02:00
Leo a7ffd8db0f node/pkg/vaa: ChainIDUnset constant
Change-Id: I909a0eda58a6abfa36c71ff24bd1fcdad3014832
2021-10-04 11:56:22 +02:00
Leo bd5f957e1b node: remove unused terraChainID command line flag
Change-Id: I5f02faa3f00098725e7242c289f65978c4879c3c
2021-10-03 21:03:43 +02:00
Leo 92d3ee577c node/pkg/solana: log quorum and emitter chain on settled VAAs
Change-Id: I8162ed3bfb77d0708a9dd910eb1ba757d73bc246
2021-10-01 16:18:16 +02:00
Leo 3ebde5ded9 node/pkg/solana: multiple empty retries
Change-Id: Ic5558220039a0874e06527a473e6ee3b0accdf54
2021-10-01 15:19:36 +02:00
Leo d5062af533 node/pkg/solana: silently ignore non-PostMessage transactions
These were already ignored, but loudly.

Change-Id: Ifdd2199593ae372a5f598a018a782db112108f16
2021-10-01 14:46:20 +02:00
Leo 2a1eaf5163 node/pkg/solana: demote log message to warning
This seems to happen quite frequently.

Change-Id: Ibb9b975566974974e0a3ba61ae126f49ace6a99a
2021-10-01 14:40:55 +02:00
Leo e7df95839d node/pkg/solana: retry skipped slots only once
Adds extra logging to validate hypothesis that we've found a bug in
GetConfirmedBlocks, rather than a general issue.

Change-Id: Ia3acfd7fa393091a3892c453433255cfbe38e4a0
2021-10-01 14:06:51 +02:00
Leo b771ad0e2a node/pkg/solana: move recovery date to Oct 5
Change-Id: Ib4b330b7d651cf5ccb5e349d805a62cd43a029d6
2021-10-01 12:38:17 +02:00
Leo 8979ccbeae node: configurable module for BridgeRegisterChain
Change-Id: If2685e9fee4997c80a00895c244793c52f30214c
2021-10-01 12:26:05 +02:00
Leo a42eb38f2e node/pkg/solana: remove GetConfirmedBlocks optimization
We encountered a bug on mainnet where GetConfirmedBlocks with
commitment level Finalized would fail to return a valid block.

Remove the optimization and simply fetch every slot.

Change-Id: Idce939c6c5f3303a5046efdfd31833fab3d465ba
2021-10-01 09:43:18 +00:00
Leo 16391185ec node/pkg/processor: log quorum for unsubmitted nil VAAs
Change-Id: I4b29e2813209195c7e1698afb6772f2b18ebfde9
2021-10-01 09:43:18 +00:00
Leo 096707a9c4 node/pkg/processor: fix crash when observation is made while gs is nil
Rare race condition. Found locally when manually injecting observations.

Change-Id: Id10d10ad4cfe38b5f4b00a30978940e928e6bc96
2021-10-01 09:43:18 +00:00
Leo 0feaed4e80 node: include and log TxHash field in SignedObservation
Optional metadata for debugging. Allows tying a received observation
to an on-chain transaction even if the node missed the observation.

Change-Id: Ie50c10c8ab7f65469555674d90645f91092fb2e3
2021-10-01 09:43:18 +00:00
Leo 7a4cac2dde node/pkg/solana: add more logging to transaction parsing
Change-Id: I2529b0c0a7aa7d94802598a7fffbcdbe0ddca5bc
2021-10-01 09:43:18 +00:00
Leo 6ab0fe3855 node/pkg/processor: add more log fields to message observations
Change-Id: I19d804b6668623943f798356a7ed81c1000fa377
2021-10-01 09:43:18 +00:00
Leo ef34c30049 node/pkg/solana: retry account fetches
Change-Id: I310a94a065e883b1a0e200dbd3321d2ec2e03fc0
2021-10-01 09:43:18 +00:00
Leo 2022b55fd4 node: add token bridge governance VAA support
Change-Id: I731161f03590ce73145a1686eb2e62cfe19c8223
2021-10-01 09:43:18 +00:00
Leo 7998d04554 node/pkg/processor: increase timeout for observed VAAs to 24 hours
In cases where we observed a VAA, there is no possibility of gossip DoS.
Increase the timeout to 24 hours to facilitate manual interventions
(like submission of governance VAAs or node restarts/catchup).

Keep the existing five minute timeout for observation-less VAAs.

Change-Id: Ic626108190bd60cf812daadbe191b31cc48c7296
2021-10-01 09:43:18 +00:00
Hendrik Hofstadt b01ad107e7 Add governance VAA initializer
Change-Id: I4c5a050e5b17ed8b278f91e26bf61adacc45ecc5
2021-09-30 16:57:04 +00:00
Hendrik Hofstadt 6bbc1f7ad4 node: Add chain registration payload
Change-Id: I0c7d7a5c3d776c924e8ab54314b8b99ab2483a4f
2021-09-30 15:47:53 +00:00
Leo b641101158 node/pkg/solana: add two more transactions to be recovered
Change-Id: I54e6ca7a54a9c62e93eeaf8abcd2ef6f057eee8d
2021-09-30 10:26:07 +02:00
Leo d91e16e077 node/pkg/solana: fetch recovery config from repository
Chances are that more requests will fail until the scheduled
recovery date, so we can't hardcode them.

Change-Id: Ief45c1f7a455827b32e154fae5c8eed366dd3ff7
2021-09-30 10:22:14 +02:00
Leo 6e4d578041 node/pkg/solana: fix s.logger data race
Surfaced by the retry code:
https://gist.github.com/leoluk/b5d05ed27269b077b834eda771a50058

Accessing s.logger from a goroutine will cause a data race. We didn't
previously encounter this since supervisor would wait for Run() to
return before rescheduling it.

Change-Id: I56a7503081485e58975103d0e25e0c2baf19ca08
2021-09-30 01:05:37 +02:00
Leo c99c11db0a node/pkg/solana: add scheduled account recovery for 2021-10-03Z11:00
Test: https://gist.github.com/leoluk/b613cf717b3047b67d0baf50c892a651

Change-Id: I8b51f940584227887724396094771c14fb4c829c
2021-09-30 00:43:06 +02:00
Leo a6fe7fc54c node/pkg/solana: add delay for retries
Change-Id: I106300e802420ef50f1309825aecf37bb18d4c20
2021-09-29 23:16:04 +02:00
Leo c0bee5e5f0 node/pkg/solana: retry failed requests
Change-Id: I4ee6e0c16c3c6f392ad1d6dbf4b20bdbe9c70f47
2021-09-18 10:48:32 +02:00
Leo 305fcdc393 node/pkg/publicrpc: handle nil req.MessageID
Change-Id: Id43ef898a687bb5ad4b2a80ed42b08aca538ea26
2021-09-17 20:29:40 +02:00
Leo 7914512797 node: handle inbound SignedVAAWithQuorum messages
Change-Id: I539155bb4e59d728ea528e6e2f70b6fbb3338a41
2021-09-13 17:51:47 +00:00
Leo ec07ed0288 node: broadcast a SignedVAAWithQuorum message when a VAA reaches quorum
Change-Id: I5dbefcbcf146bda6e3ef9607a7b49ca1cdf5321d
2021-09-13 17:51:47 +00:00
Leo 9a85dbafe5 Add Go linting stage to CI
rustfmt appears to be a little more complicated since it wants to
download dependencies and needs nightly Rust.

Change-Id: Ia348def30a6459ae2ab6c29a8c3a413216f5eb4b
2021-08-31 08:58:17 +00:00
Leo 4ac19518bd node: remove remaining "bridge" mentions
Ensure there's no core vs. token bridge ambiguity.

Breaking changes to the CLI:

* "guardiand bridge" CLI is now "guardiand node"
* --solanaBridgeAddress is now --solanaContract
* --bridgeKey is now --guardianKey

The Heartbeat proto message had one of its fields renamed from
BridgeAddress to ContractAddress, but this won't break the wire
format and the only consumer appears to be the CLI.

Change includes a "go mod tidy" - it insisted.

Change-Id: Id8b312827737f07f2d5f3944ebce469d946e7f51
2021-08-31 08:58:17 +00:00
Leo e98463cfe3 node: rename bridge/ to node/
Calling guardiand a bridge dates back to v1 and no longer makes sense.

Change-Id: I27d24a5d7a64c3e37d6a5ce9c402c6248ad9c59e
2021-08-26 11:36:36 +02:00