Hendrik Hofstadt
d9fde6d7cc
Implement optional persistence in Solana wormhole
...
Also reformatted the token_bridge
Change-Id: I195d7e2e13295c8b28e2a0b63620e3d306dc07e6
2021-07-05 18:02:04 +00:00
Hendrik Hofstadt
b85cbacd3b
fix message attestation for Solana
...
Change-Id: Iaf79984980affe64f268c2eed9f61d5058cea0dd
2021-07-02 16:05:06 +00:00
Hendrik Hofstadt
3c5deee7ee
Fix devnet for new contracts
...
Change-Id: I5b7536884ce3d1bdf39a21a8b71b6a848ad0380f
2021-07-02 13:02:35 +02:00
Hendrik Hofstadt
79d846eed1
Update guardian software chain watcher and VAA submitter
...
Change-Id: I10c05c57e934662ff005e6b50067195502d23c0f
2021-06-29 13:55:44 +02:00
Leo
c1d0f165d6
Merge branch 'main' into dev.v2
...
# Conflicts:
# bridge/pkg/solana/submitter.go
Change-Id: I45b6e8f398b879915793987c5db38c839e8d1cc9
2021-06-22 18:54:15 +02:00
Hendrik Hofstadt
02d7257ff5
Implement PostedMessage fetching in the client
...
Change-Id: I8b59cdbfaf37212e187257cf46674086ad96d19d
2021-06-18 18:50:06 +02:00
Leo
79cc6a9f46
bridge: allow specifying skip_preflight in debug VAA submission
...
This allows forcibly submitting a failing VAA on-chain in cases where
the preflight check would hinder debugging.
It does not change behavior of guardiand.
Co-authored-by: Hendrik Hofstadt <hendrik@nexantic.com>
Change-Id: I63df22049ad27f659dc0638190edd20628b7a338
2021-05-31 13:33:43 +00:00
Leo
a2ff5ca73c
bridge/debug: add post-vaa-solana command
...
Co-authored-by: Hendrik Hofstadt <hendrik@nexantic.com>
Change-Id: I482487f39eae1a3aebd1c7fdbe10e5b9c2dd44ad
2021-05-31 13:33:36 +00:00
Leo
45639b18fb
bridge/pkg/solana: fix package name and remove unused lockChan
...
Increase VAA submission timeout.
Change-Id: I5e774f2930e2f0d865d733eee2f0bb01da1b82f3
2021-05-31 13:33:32 +00:00
Leo
b04dd1cc2f
bridge/debug: refactor
...
Move the debug command out of vaa.go in preparation for adding
additional comments.
Change-Id: Id387eace5d488952331f5d7f16c43b235676df24
2021-05-31 13:27:34 +00:00
jschuldt
16157d339d
Add publicrpc endpoint for external clients.
...
- Distribute raw heartbeats via new proto package publicrpc
- Manage channel subscription on client req/close.
- Expose publicprc endpoint in devnet Service.
Change-Id: Ic96d624733961aa56e00b03c3b5cff6af11523a4
2021-05-24 13:38:58 -05:00
Hendrik Hofstadt
c7c94441a5
implement new Solana account parsing
...
Change-Id: I2f59dae3950b2f95e8c0578c4f56c460f7166d2e
2021-04-20 09:48:23 +00:00
Hendrik Hofstadt
844bd3d817
update VAA parsing and structure
...
Change-Id: Ifd712050645b1b3fad0f8bf5b2227c0fdf89df84
2021-04-19 14:27:06 +02:00
Hendrik Hofstadt
14c8606a8e
remove non-solana VAA submission
...
Change-Id: I42bb4d6f85a73f15f627d6b9279eccfeb1624664
2021-04-19 14:27:06 +02:00
Hendrik Hofstadt
9f514e2786
rename ChainLock to MessagePublication
...
Change-Id: If74e74c00957c202c7de1cc61204b6cc12ad3a8a
2021-04-19 14:27:06 +02:00
Leo
a0633645cb
bridge: delete vaa-test commands
...
These no longer compile, and using a manual process to generate test
fixtures is not ideal anyway.
Change-Id: Ic1f378f330699909a403ba429a527c825fd0fba9
2021-04-17 14:59:24 +00:00
Yuriy Savchenko
7a97381f18
Terra E2E tests fixed, asset registration refactoring
2021-03-23 16:19:41 +01:00
Yuriy Savchenko
f694fbdf0f
Removed contract activity killswitch, fee is now hardcoded, test scripts updated
2021-03-23 16:19:41 +01:00
Leopold Schabel
f5560eb3ff
Fix guardian set initialization race condition ( #191 )
...
Fixes #184
2021-03-23 14:07:47 +01:00
Leo
2cf4d50c23
bridge: add terra block height to heartbeats
2021-02-10 02:00:45 +01:00
Leo
9c1d6ee00c
bridge: add network heights and guardian address to heartbeat message
2021-02-10 01:57:54 +01:00
Leo
aacff406e4
bridge: build with race detector enabled
2021-02-10 01:57:54 +01:00
Leopold Schabel
b0a9e98648
Asynchronously fetch Terra block height ( #177 )
2021-02-05 15:16:31 +01:00
Yuriy Savchenko
8bf501879b
Added Terra node height monitoring ( #176 )
...
* Added Terra node height monitoring
2021-02-04 19:48:54 +01:00
Leo
966d0f0bc6
bridge/pkg/terra: add stub metrics
2021-02-04 14:20:49 +01:00
Leo
04e3ad772a
bridge: add "debug decode-vaa"
2021-02-04 11:48:31 +01:00
Yuriy Savchenko
f36ecc34f7
Terra support enabled in production mode ( #173 )
...
* Terra support enabled in production mode
2021-02-04 11:26:01 +01:00
Leo
8735b587cb
bridge/pkg/ethereum: fix guardian set update processing
...
We reused an expired context. No direct impact because the routine would crash
and re-fetch the guardian set.
2021-02-03 00:09:46 +01:00
Leo
02c750bc7e
bridge: fix terra devnet retry
2021-02-02 12:35:17 +01:00
Yuriy Savchenko
d9bb5f6802
Added missing e2e tests between Terra and Ethereum/Solana ( #168 )
...
* Added missing e2e tests between Terra and Ethereum/Solana
* Review comments fixed
* Uncommented Solana<->ETH code, missing Ethereum utils file added
2021-02-01 20:38:13 +01:00
Leo
5256d2025a
bridge: refuse to use deterministic keys in production
2021-01-29 12:40:55 +01:00
Leo
6d555789d6
Add version stamp to binary and include in heartbeat
2021-01-28 21:46:09 +01:00
Hendrik Hofstadt
2b30a30601
upgrade solana sdk version ( #166 )
...
* upgrade solana sdk version
Commitment levels were deprecated and the fastest confirmation level is `Processed`.
Also the upgradeable loader now requires the program to be writeable.
* Add deprecation comment
* update agent commitment level
2021-01-28 17:44:54 +01:00
Leo
ff298ffac6
bridge: fix one more Terra typo
2021-01-27 14:52:32 +01:00
Leo
b23f43ed1e
bridge: add metrics for ethereum, p2p and solana
2021-01-27 14:46:01 +01:00
Leo
bc356a5e51
bridge: count misses for settled VAAs
2021-01-27 01:58:18 +01:00
Leo
c5b59ac6a0
bridge: fix terraChainID typo
...
I share the blame for missing this during review :P
2021-01-27 01:58:18 +01:00
Leo
7201b64a77
bridge/e2e: fix panic in testSolanaToTerraLockup
2021-01-27 01:58:18 +01:00
Leo
a33505e0f9
bridge/e2e: group tests by chain
2021-01-27 01:58:18 +01:00
Leo
3282e9dbb9
bridge/e2e: increase timeouts for use with 19 validators
2021-01-27 01:58:18 +01:00
Leo
3449ca4d6e
bridge: retry Terra devnet submission
...
This fixes an e2e test race condition.
2021-01-25 20:18:00 +01:00
Leo
c48c198188
bridge: always sign lockups and store gs in aggregation state
...
This fixes #160 by making sure that nodes will sign *any*
lockup they see using their guardian key, and storing
the gs in the aggregation state when we see a lockup.
2021-01-25 20:18:00 +01:00
Leo
14441680d0
bridge: add initial set of basic Prometheus metrics
2021-01-25 20:17:58 +01:00
Leo
5679f67c85
bridge/e2e: fix nil panic in testEthereumLockup
2021-01-21 20:17:23 +01:00
Leo
fd4b61b736
bridge/e2e: increase Terra timeout to make it less flaky
2021-01-21 14:39:06 +01:00
Leo
76cb95c51b
bridge/pkg/processor: ignore observations while waiting for guardian set fetch
...
Fixes crash https://gist.github.com/leoluk/17d77fef7c0fd44dd6c3fe3e65bb23a7 .
2021-01-21 14:25:27 +01:00
Leo
b7c6eb7f3c
bridge: upgrade libp2p to v0.13.0
2021-01-21 12:51:19 +01:00
Leo
f563de8e31
bridge: upgrade all dependencies to latest patch releases
2021-01-21 12:51:19 +01:00
Hendrik Hofstadt
fd6c54de83
bridge/pkg/solana: use polling GetProgramAccounts watcher ( #156 )
...
This mitigates https://github.com/solana-labs/solana/issues/9909 by
polling GetProgramAccounts with a server-side filter. It also removes
the agent dependency for the lockup observation logic - the agent is now
used for transaction construction only.
2021-01-21 11:31:32 +01:00
Leo
108f050c0e
Clarify public keys vs public key's hashes in comments and docs
2021-01-21 00:59:50 +01:00
Leo
cc1e4d0bdc
bridge: remove mentions of lockup observations
...
We now support different kinds of observed events, not just lockups.
Change the log messages and comments accordingly.
2021-01-21 00:35:52 +01:00
Leo
562eaf5ce7
Log aggregation state of incomplete VAAs
2021-01-21 00:28:15 +01:00
Leo
c0eef2fe9b
adminGuardianSetUpdateToVAA: check for duplicate guardian keys
...
Sanity check.
2021-01-21 00:25:38 +01:00
Leo
ea21b1782f
Explicitly document required command line arguments
...
Cobra does not support automatic documentation of positional arguments
(see https://github.com/spf13/cobra/issues/378 ).
2021-01-21 00:01:34 +01:00
Leo
d0d00f4972
Fix crash when testSolanaLockup is executed for the first time
...
We forgot to initialize the big.Int.
2021-01-19 17:03:48 +01:00
Yuriy Savchenko
eeb560cb5c
Terra integration added to e2e tests
2021-01-19 16:50:26 +01:00
Yuriy Savchenko
701154457c
New tests and fixes in Terra Wormhole contracts
...
- added new descriptive errors in terra wormhole contract
- 0-expiration guardian sets error fixed
- added script for test VAAs generation
- added full test coverage for the VAA processing in the contract
- fixed cargo clippy/fmt warnings
2021-01-19 16:50:26 +01:00
Leo
9f2f609bc1
Bump Go and pin all Docker images to digests
2021-01-19 16:15:54 +01:00
Hendrik Hofstadt
efa03ef73c
Implement upgradeability ( #151 )
...
* Implement contract upgrade VAA action
* naming and (╯°□°)╯︵ ┻━┻
* Carefully unflip table and replace broken cutlery ┬─┬ノ( ◕◡◕ ノ)
* fix and automate upgradeability
* document contract upgrade call
* Update comments
* Exhaustiveness check in VAA payload switch
* Fix typo
Co-authored-by: Leo <leo@certus.one>
2021-01-19 13:01:45 +01:00
Leo
ad5950ffe7
Make it official that we support exactly 19 validators
...
Fixes #86
2021-01-11 15:07:28 +01:00
Leo
770393b94e
bridge: rename misleading "pending" counter
...
It includes completed transactions that haven't been timed out yet.
2020-12-08 11:12:11 +01:00
Leo
b077104086
bridge: log own peer ID at startup
2020-12-06 20:26:12 +01:00
Leo
594592e2f6
devnet: use wormhole namespace by default
2020-12-05 16:32:37 +01:00
Yuriy Savchenko
cc412605c7
Terra key moved out from env variable, VAA submission on Terra made async ( #129 )
...
* Terra fee payer key moved from environment variable into the separate file
* Removed closed issues from the comments, VAA submition made async
* Review comments fixed
2020-11-30 19:24:39 +01:00
Leo
106fecca00
bridge: always gate Terra features on the main feature flag
2020-11-30 17:13:48 +01:00
Hendrik Hofstadt
bec598b41a
Fix subsidization and fees ( #127 )
...
* Revert "solana: partially revert #82 subsidization changes"
This reverts commit 2967653e
* fix subsidization
* fix deleted grpc tag dependency
* revert devnet changes
* verify system instruction action
* ┬─┬ノ(ಠ_ಠノ)
2020-11-30 11:09:08 +01:00
Leo
120dfab49e
bridge: type alias for readiness components
2020-11-29 17:07:15 +01:00
Leo
c31777d1b3
e2e: add bidirectional end-to-end tests
2020-11-29 17:07:15 +01:00
Leo
30278397f7
bridge: add erc20 abi for use in tests
2020-11-29 17:07:15 +01:00
Leo
de8d1dee31
devnet: pin Dockerfile syntax to digest
...
This speeds up the build by ~1.5s by avoiding a remote lookup on
Docker Hub every time this is built (WTF).
2020-11-29 17:07:15 +01:00
Leo
561852d499
bridge: simple readiness check
2020-11-29 17:07:15 +01:00
Leo
36a025b088
Update to Go 1.15.5 to account for CVE-2020-28362
2020-11-27 19:20:07 +01:00
Leo
540fbbb31b
Clarify that we do not automatically rate limit spammy guardians
2020-11-27 19:08:13 +01:00
Leopold Schabel
8306a83833
solana/agent: listen on UNIX socket ( #122 )
...
This allows us to use UNIX filesystem permissions for access control.
Previously, any process in the network namespace could connect to it,
which is insecure for obvious reasons.
Verified that correct permissions are set:
```
# ls -lisa /run/bridge/
total 8
31996269 4 drwxrwxrwx 2 root root 4096 Nov 23 21:58 .
14676759 4 drwxr-xr-x 1 root root 4096 Nov 23 21:58 ..
31996306 0 srwx------ 1 root root 0 Nov 23 21:58 agent.sock
```
Fixes #119
2020-11-24 09:48:44 +01:00
Leo
471417cd6e
bridge: use GPG-armored binary protobufs for keys
2020-11-20 22:40:42 +01:00
Leo
0152a00114
all: rename LockupObservation to SignedObservation
...
We observe things other than lockups, account for it.
2020-11-20 22:35:00 +01:00
Leo
3e3e9dd651
bridge: fix typo in flag errors
2020-11-20 21:18:29 +01:00
Yuriy Savchenko
ee5d07c929
Fixes to VAA submission to Terra smart contract ( #115 )
...
* Terra smart contract binary interface changed from vector to base64 string
* Added initial guardian set submission to Terra
2020-11-19 20:05:05 +01:00
Leo
a3c745ace7
bridge/pkg/ethereum: remove channel unsubscribes
...
Unsubscribe() does blocking I/O that ignores the runnable context
and can block forever: #107
It would appear that removing the Unsubscribe calls is the only
way to work around this go-ethereum bug.
ghstack-source-id: 93f287efc09be7eb12921a431effb282aea78510
Pull Request resolved: https://github.com/certusone/wormhole/pull/109
2020-11-19 12:57:21 +01:00
Leo
66430cb5be
bridge: implement guardian set update submission node admin service
...
Tested on a live devnet via `scripts/test-injection.sh 0`.
ghstack-source-id: 92489c2455e677433414dfa66c6917a577e4c4a5
Pull Request resolved: https://github.com/certusone/wormhole/pull/104
2020-11-19 12:57:21 +01:00
Leo
7545d2b803
terra: disable in production mode
...
ghstack-source-id: c22885f1219fe9a0cb2a84983743c0c198366660
Pull Request resolved: https://github.com/certusone/wormhole/pull/103
2020-11-19 12:57:21 +01:00
Leo
5f8ca60ab1
bridge: refactor out broadcastSignature to prepare for injection path
...
ghstack-source-id: e3b8aee5a055bdd4b2492de5204ac7cffb6d24da
Pull Request resolved: https://github.com/certusone/wormhole/pull/102
2020-11-19 12:57:21 +01:00
Leo
798ffec09c
bridge: implement keygen command
...
Tested using `/guardiand keygen /bar --desc foobar`.
ghstack-source-id: 9f96ce7c0c7527cde47ecb64099543379fbabf3c
Pull Request resolved: https://github.com/certusone/wormhole/pull/91
2020-11-19 12:57:21 +01:00
Leo
d9f8174d76
bridge: implement bridge key serialization
...
ghstack-source-id: f218021514618ae1eb8f03d7cc158b1114c45297
Pull Request resolved: https://github.com/certusone/wormhole/pull/90
2020-11-19 12:57:21 +01:00
Yuriy Savchenko
84600ad9f5
terra: include block timestamp in VAAs ( #94 )
...
Fixes #93
2020-11-18 19:16:29 +01:00
Leo
bbf479871f
pkg/devnet: split up deterministic key generation functions
...
Only moved code, no functional changes.
2020-11-18 14:30:25 +01:00
Leo
7d617095e2
terra: fix watcher ws argument
2020-11-16 16:59:58 +01:00
Leo
07da9f10ef
go mod tidy
2020-11-16 13:51:22 +01:00
Leo
f072e8c36a
Clean up some style nits.
2020-11-16 13:34:19 +01:00
Yuriy Savchenko
1ca2e29916
Terra support added ( #79 )
...
This commit adds initial support for the Terra blockchain.
2020-11-16 13:28:07 +01:00
Leo
aed8f6637c
Remove outdated TODO comments
2020-11-13 11:44:09 +01:00
Leo
58ba151013
bridge/pkg/p2p: actually increment counter
2020-11-06 12:50:54 +01:00
Leo
2df0fe50c0
bridge/pkg/p2p: clarify comment
2020-11-06 12:48:12 +01:00
Leo
47ce567498
bridge: promote heartbeat messages to logger.Debug
2020-10-29 15:51:45 +01:00
Leo
9f75d19d11
bridge: implement aggregation timeouts and retransmissions
...
Fixes #21
ghstack-source-id: a89630d9e3
Pull Request resolved: https://github.com/certusone/wormhole/pull/72
2020-10-29 10:14:12 +01:00
Leo
a853317421
bridge: refactor out devnetVAASubmission in observation.go
...
ghstack-source-id: 93e811b135
Pull Request resolved: https://github.com/certusone/wormhole/pull/71
2020-10-29 10:14:12 +01:00
Leo
aa33dc4565
bridge: split up processor.go
...
No code changes except for `break` -> `return`.
ghstack-source-id: ed7784c590
Pull Request resolved: https://github.com/certusone/wormhole/pull/70
2020-10-29 10:13:14 +01:00
Leo
a4058512d5
bridge: migrate cmd/ to cobra
...
Reviewer note: Does not touch any of the business logic. Avoided
renaming files whereever possible to make it easier to spot differences.
Verbatim migration, in a future CL, we could replace some of the
flag validation code with cobra features and eliminate the global vars.
Moved the dlv tool definition out of the way for the top-level wrapper.
tools/bin/cobra is a helper utility that generates boilerplate
(we slightly deviate from their default scheme by having guardiand
in a separate package, rather than stuffing everything into cmd/)
ghstack-source-id: caec9a38a69c9c5b1baa982074b3375d153718e1
Pull Request resolved: https://github.com/certusone/wormhole/pull/67
2020-10-28 22:47:12 +01:00
Leo
6c7ca964e4
Remove outdated TODO comments
...
- Metrics tracked in #11 .
- Timeout and retransmits covered in #21 .
- Dependency injection doesn't make sense at this scale.
- `-1` on `GenerateKeyPair` means "this doesn't make sense for Ed25519,
please crash if anyone ever tried to generate RSA keys".
ghstack-source-id: 895162835186df360bcc526a5fb904b1567b5da9
Pull Request resolved: https://github.com/certusone/wormhole/pull/66
2020-10-28 22:47:12 +01:00
Leo
11c74dd692
bridge: refactor p2p logic into pkg/p2p
...
ghstack-source-id: 86417c130111ef8e7ec9f4bb5bb97729adf23cbf
Pull Request resolved: https://github.com/certusone/wormhole/pull/65
2020-10-28 22:47:12 +01:00