Commit Graph

220 Commits

Author SHA1 Message Date
Leopold Schabel 97aedff9f0
node/pkg/ethereum: restart watcher if guardian set update fails (#1010) 2022-04-11 21:07:19 +02:00
Leopold Schabel d68232c447
hack/repair_solana: improve sequence guessing (#1003) 2022-04-11 21:07:09 +02:00
Jonathan Claudius 8dd3536fb2
Add README and crypto/rand for encrypt.go tool (#1057) 2022-04-08 19:37:53 -04: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
justinschuldt 99a02a41ea fix devnet GS upgrade path
commit-id:3a2fa5aa
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
Leopold Schabel c9ae0880fa
node/hack/repair_eth: add max retries to skip over broken entries (#977)
commit-id:b1119b32
2022-03-08 20:51:55 +01: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
Jeff Schroeder fd96dced3a
Fantom updates (#928)
* node: Add fantom to guardiand admin list-nodes

* node: check fantom readiness for mainnet
2022-03-01 20:32:31 -05:00
Evan Gray 695dcac26c support custom root ca 2022-03-01 12:35:27 -05:00
bruce-riley 60363dd3d1
Fantom deploy (#920)
* Truffle changes

* Always require fantomRPC
2022-02-28 16:32:22 -05:00
Paul Noel 3b10f124a1
node/hack/repair_terra re-observation (#871)
* node/hack/repair_terra added file

Change-Id: Ie015cb3364c56211ba51550cfae307836071532a

* node/hack/repair_terra code inspection fixes

Change-Id: I91dfeeedf7d7f04591cc8ef47fde52f933a45d0a
2022-02-21 17:43:40 -05: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 a9e36ea7fb node/cmd: remove an extra err check
commit-id:e3096e20
2022-02-18 09:00:26 -05:00
Paul Noel 7af9d22221 node/hack/repair: oasis support
Change-Id: I2b7b825ab49dad68e7072a4f488bbc411cbaabd6
2022-02-15 17:20:03 -05:00
Leo d2d6128c12 node/hack/repair_eth: add tx replay via Etherscan API
commit-id:023a6afb
2022-02-15 16:47:20 -05:00
Leo 799c1e9942 node/hack/repair: rename to repair_solana
commit-id:9cf72c8a
2022-02-15 16:47:20 -05:00
Leo de7cfe6cc7 node/hack/findmissing: add simple script to find all missing messages
This is different from "admin find-missing-messages" insofar as
having a hardcoded list of emitters.

commit-id:b934f672
2022-02-15 16:47:20 -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
Leo 632e8acbee node/hack/repair: remove state directory
commit-id:74906ad4
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 7ae4b3d6aa node: increase Polygon minimum confirmation to 512
It appears that in spite of exceeding the recommended value by 2x,
256 offers insufficient safety margin given that we saw two reorgs
of depths 178 and 187 recently: https://polygonscan.com/blocks_forked

This will increase confirmation delay from ~10 minutes to ~20 minutes.

commit-id:cf2b1503
2022-02-08 17:39:53 +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 7144d6b538 node/hack: add repair script
Fetches the list of missing Solana messages, finds the corresponding
on-chain transactions, sends an ObservationRequest to the network
and waits for consensus.

Hacky one-off script with a couple of edge cases (doesn't filter
failed txs, crashes if the boundary is not a valid tx). We can later
refactor this and add it to the find-missing-messages admin command
if we keep needing it.

commit-id:9b338dfa
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
Leo 29cd5a3934 cmd/guardiand: fix governance VAA serialization
And add some extra debug logging for governance-vaa-verify.

commit-id:10deaff4
2022-02-03 04:14:29 +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 ab18f278fe node/cmd: use plain global root logger
Get our own root logger and pass that to ipfslog. Prerequisite for
getting fancy about using Zap plugins.

commit-id:ad22324d
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 17508ff29c Revert "node: move oasis to testnet mode"
This reverts commit 9ad792c6ee.

commit-id:896988bd
2021-12-21 22:00:15 +01:00
Leo 9ad792c6ee node: move oasis to testnet mode
We're not ready to release this yet.

commit-id:c2d6531f
2021-12-21 21:01:47 +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 8aedb5b315 hack/lookup_txes: be smarter about searching within a range
commit-id:944810ec
2021-12-20 16:05:22 +01:00
Leo 2a7c32ca3f node: re-observe backfilled VAAs
commit-id:8a9af802
2021-12-20 16:05:22 +01:00
Leo 6260d5a148 node: add support for backfilling via RPC
commit-id:5cad9f7b
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 e571e96bbd node: fix linter warning
Thanks linter, I did *not* know about this one :-)

commit-id:222b476a
2021-12-16 17:33:59 +01:00
Leo 1e4ecef4ce node: add --only flag to list-nodes
commit-id:4f7d40fc
2021-12-16 17:12:13 +01:00
Leo ce85d8b717 node: add a missing newline
It did work in staging! ... with a single node

commit-id:bc375534
2021-12-16 17:03:34 +01:00
Leo 939ea5d28d node: refactor adminnodes.go
This felt so good to clean up

commit-id:a81777df
2021-12-16 16:51:16 +01:00
Leo 537d56b37a devnet: avalanche fix
commit-id:3ab70784
2021-12-15 00:16:18 +01:00
Leo e950bb831a node: enabled avalanche on mainnet
commit-id:45e694bd
2021-12-15 00:00:31 +01:00
Leo b0ed42681d Use stable Buildkit syntax
We no longer need to be on an experimental branch - all the
Dockerfile features we need were released on 1.3.

commit-id:b083856a
2021-12-13 15:38:17 +01:00
Leo 00c046e81e Bump Go to 1.17.5
commit-id:359d3fb7
2021-12-13 15:38:17 +01:00
Leo e15f712955 node: fix showDetails in testnet mode
Change-Id: Ie93fb68bc31de67e1b009b758c29bcdd275394f9
2021-12-10 12:06:52 +00:00