Commit Graph

139 Commits

Author SHA1 Message Date
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: 93f287efc0
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: 92489c2455
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: c22885f121
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: e3b8aee5a0
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: 9f96ce7c0c
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: f218021514
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