Leo
69b7d3e99e
Update to Rust 1.49
2021-02-12 13:48:44 +01:00
Hendrik Hofstadt
8478735ea7
don't subsidize guardian set creation ( #172 )
...
* don't subsidize guardian set creation
This works around https://github.com/solana-labs/solana/issues/9711 which causes issues when the guardian set creation is subsidized and another CPI call is done subsequently
2021-02-02 21:20:48 +01:00
Leo
14539de2ac
Backport https://github.com/solana-labs/solana/pull/14914
2021-01-29 01:13:52 +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
Hendrik Hofstadt
a5380b8ab1
Fix rent calculation and hardening ( #163 )
...
* use proper account for min balance calculation
* check bridge key in sig verify
* check bridge key in VAA processor
2021-01-25 15:11:38 +01:00
Stanisław Drozd
c5d90f779c
Use /usr/bin/env for shell scripts; web/.dockerignore: node_modules ( #159 )
...
* Use /usr/bin/env for shell scripts; web/.dockerignore: node_modules
2021-01-23 18:20:17 +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
Yuriy Savchenko
eeb560cb5c
Terra integration added to e2e tests
2021-01-19 16:50:26 +01:00
Hendrik Hofstadt
82fd4293e2
Fix guardian set expiration on Solana ( #155 )
...
* fix guardian set expiration on Solana
2021-01-19 16:44:48 +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
Hendrik Hofstadt
274bb7c97d
Owner and sysvar check hardening ( #154 )
...
* owner and sysvar check hardening
2021-01-12 23:21:30 +01:00
Hendrik Hofstadt
12a6ae31bc
Watch slots for Solana liveness monitoring ( #141 )
...
* add slot notifications to the agent
* fix proto field naming
2021-01-11 12:43:05 +01:00
Hendrik Hofstadt
03ef5e1017
Don't evict governance VAA signatures ( #137 )
...
* don't evict governance VAA signatures
They need to persist for data availability (to be cross-submitted to other chains)
2020-12-17 11:27:46 +01:00
Leo
e2f517f91c
solana: fix typo in clap help
2020-12-07 11:20:27 +01:00
Leo
8b10b96362
solana: use clap for command line arguments
2020-12-06 22:45:45 +01:00
Leo
f7f4f6d74b
solana: add clap crate and update cargo dependencies
2020-12-06 22:15:43 +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
5997f133c3
solana: use loopback address to connect to other containers in same pod
...
There's a bit of a chicken-and-egg problem here - the liveness probe
cannot succeed until all containers in the pod are ready, and the
service load balancer won't work until it's ready.
2020-11-29 19:19:37 +01:00
Leo
2967653e06
solana: partially revert #82 subsidization changes
...
... while keeping the borrowing fixes. Please review carefully whether
any of the remaining changes should've been reverted as well.
Fails due to account ownership check for debits, new tests caught it.
2020-11-29 17:07:15 +01:00
Leo
fddbd01f9d
solana: update Rust and Solana to latest stable releases
...
Unfortunately, the new release has a much chattier message_processor,
but we cannot do anything about that without losing value debug info.
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
a2f48fdee3
solana/cli: fetch token account balance
...
The request needs to include the decimals (part of the derivation path).
2020-11-29 17:07:15 +01:00
Leo
45837241ed
devnet: add readiness checks to most components
2020-11-29 17:07:15 +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
Hendrik Hofstad
3e57f475e1
solana: fix borrow issues
2020-11-20 14:23:05 +01:00
Hendrik Hofstadt
8510140165
subsidize guardian transactions using fees ( #82 )
...
* subsidize guardian transactions using fees
* reuse transfer function
* evict signature state on inbound transfers
* fix mutability issues due to copying
* add fee refund
* unify fee calculation
* add fee documentation
* Unflip tables
* type annotation
2020-11-19 22:47:09 +01:00
Leo
fdc2be10b3
solana: verify that new guardian set isn't empty
...
ghstack-source-id: 4fc1d94152
Pull Request resolved: https://github.com/certusone/wormhole/pull/101
2020-11-19 12:57:21 +01:00
Hendrik Hofstadt
cee28540bd
Upgrade SDK; add balance rpc call ( #80 )
2020-11-13 14:14:56 +01:00
Leo
86fdfa859b
devnet: deterministic Solana accounts and lockup generator
2020-11-10 22:53:36 +01:00
Leo
f3107ebed4
solana: add uncommitted Cargo.lock files
...
If there's a reason they are missing, then I didn't realize :-)
Ref #29
ghstack-source-id: 9052f64e76
Pull Request resolved: https://github.com/certusone/wormhole/pull/68
2020-10-28 22:47:12 +01:00
Leo
13f79a96b3
devnet: use real account and nonce for send-lockups.js
...
ghstack-source-id: fb233fa727
Pull Request resolved: https://github.com/certusone/wormhole/pull/61
2020-10-28 22:47:12 +01:00
Hendrik Hofstadt
dadb287220
bridge: fix quorum calculation ( #69 )
2020-10-28 21:22:15 +01:00
Hendrik Hofstadt
cf90bbec0d
cli: create_wrapped command, deterministic generation
2020-10-28 20:37:06 +01:00
Hendrik Hofstadt
8d7a35683e
bridge: fix quorum ( #56 )
2020-10-25 08:57:04 +01:00
Leo
187355b0c8
solana: fix devnet_setup.sh sleep
2020-10-22 13:09:05 +02:00
Leo
faf9a71cef
agent: return gRPC Internal error on submission failure
...
This allows us to distinguish between temporary and permanent failure.
Unless we check the instruction error that occured, we can't know
whether the submission error is a permanent failure and Internal
is therefore the appropriate code to use.
ghstack-source-id: aff1de9516
Pull Request resolved: https://github.com/certusone/wormhole/pull/47
2020-10-22 12:20:12 +02:00
Hendrik Hofstadt
e266bf1a7c
Implement assistant & Reimplement wrapped asset precreation ( #42 )
...
* all: readd early wrapped meta creation; initial transfer wizard
* web: complete transfer assistant
* web: allow multiple accounts per wrapped mint
2020-10-14 11:49:13 +02:00
Hendrik Hofstadt
ddd2c901bd
solana: create sig verify account in instruction
...
This allows multiple guardians to submit the signatures in parallel without causing costs with all transactions because conflicting txs won't be mined.
2020-10-03 21:20:24 +02:00
Hendrik Hofstadt
25533f0264
bridge: add secp check instruction ( #41 )
...
* bridge: add secp check instruction
* solana: update to secp solana upstream
* solana: iteration on secp
* solana: fix secp instruction
serialization indices were off and secp ix data was serialized twice
* solana: optimize ix serialization
* agent: send multiple chunks of signatures
* doc: update protocol spec
* solana: store signatures in siginfo; reconstruct signed VAA in webinterface
* solana: reformat
* solana: add rustfmt config
2020-10-01 16:42:45 +02:00
Hendrik Hofstadt
4ba7885c62
solana: add retry/poking mechanism
...
Closes #6
2020-08-31 21:05:38 +02:00
Hendrik Hofstadt
941220bc85
bridge: optimize VAA claim derivation
...
Instead of hashing the body manually, we pass the body to the address derivation syscall.
2020-08-31 20:09:06 +02:00
Hendrik Hofstadt
fb603d468c
agent: remove keepalive routine
2020-08-31 14:20:36 +02:00
Hendrik Hofstadt
45a25e0386
bridge: prevent multiple signatures from single guardian
2020-08-31 09:26:38 +02:00
Hendrik Hofstadt
b4b0c61dfc
bridge: require single step guardian set index changes
2020-08-31 09:25:41 +02:00
Hendrik Hofstadt
a1387dafea
agent: print errors
2020-08-28 17:14:32 +02:00
Hendrik Hofstadt
f6750a3762
all: consider decimals on wrapped assets, fix VAA posting, fix solana account parsing
2020-08-28 15:10:42 +02:00
Hendrik Hofstadt
8e6dc495dc
bridge: remove VAA timeout
...
Closes #35
2020-08-28 08:49:46 +02:00
Hendrik Hofstadt
ed0a6d4b2e
bridge: use proper source address
2020-08-28 08:36:33 +02:00
Hendrik Hofstadt
042ff4a14b
bridge: properly handle VAA submissions
2020-08-24 12:56:19 +02:00
Leo
206eca5ac5
Set a recipient address in devnet_setup.sh
...
Lockup VAAs are now accepted on ETH.
2020-08-22 11:10:13 +02:00
Hendrik Hofstadt
3d771ea41d
cli: add recipient to lock command
2020-08-22 11:02:50 +02:00
Leo
c65d221ab3
Run devnet_setup.sh as solana-devnet sidecar
2020-08-22 10:52:51 +02:00
Leo
fbf6e17d3e
Use skip_preflight for CLI transactions
...
The preflight bank is set to max committment level, so we
wouldn't see previous txs with single confirmation.
2020-08-22 10:43:34 +02:00
Hendrik Hofstadt
738967c8d0
bridge: fix quorum checks
2020-08-22 01:10:45 +02:00
Hendrik Hofstadt
0d5bef7366
agent: handle connection failures
2020-08-22 00:18:03 +02:00
Hendrik Hofstadt
6b113853bd
solana: fix missing transfer info and cli checks
2020-08-21 23:41:54 +02:00
Hendrik Hofstadt
2cd0d38e3d
Merge branch 'master' of github.com:certusone/wormhole
2020-08-21 22:56:32 +02:00
Hendrik Hofstadt
e3dcc654fb
bridge: simplify lockup serialization
2020-08-21 22:56:21 +02:00
Leo
4b24a74547
agent: use max commitment and fix nonce type
...
It appears that single confirmation level is not useful
for transactions that depend on each other.
2020-08-21 22:53:31 +02:00
Hendrik Hofstadt
0c8cf93f85
solana: wait for full confirmation
2020-08-21 21:58:43 +02:00
Leo
86ccc1c617
Solana devnet fixtures and lockup generator
2020-08-21 20:48:58 +02:00
Hendrik Hofstadt
549f7ad69c
solana: track time on lockups
2020-08-21 19:51:45 +02:00
Hendrik Hofstadt
5f253415d5
cli: add airdrop call
2020-08-21 18:55:59 +02:00
Hendrik Hofstadt
a8d2f36a12
agent: inject static account key
2020-08-21 18:10:54 +02:00
Hendrik Hofstadt
e0c2fbf990
agent: add lockup_address
2020-08-21 17:58:35 +02:00
Hendrik Hofstadt
a1e548e4b9
solana: don't rebuild solana when bridge changes
2020-08-21 16:29:44 +02:00
Hendrik Hofstadt
6070cf25eb
agent: load key from disk
2020-08-21 15:53:59 +02:00
Hendrik Hofstadt
6a548e5695
bridge: use constant for max guardians
2020-08-21 15:02:02 +02:00
Hendrik Hofstadt
51ed6323b4
bridge: improve build caching
2020-08-21 14:52:38 +02:00
Hendrik Hofstadt
1d960405d1
bridge: check quorum
2020-08-21 12:45:40 +02:00
Leo
f1f2d0c8b8
Solana VAA submission stub
2020-08-20 21:48:58 +02:00
Leo
c6efc410cb
solana: remove extra uncached build
...
Derp
2020-08-20 20:19:06 +02:00
Hendrik Hofstadt
a4fecd36f0
solana: build token program using latest solana version
2020-08-20 20:12:44 +02:00
Hendrik Hofstadt
8f4127f781
Add slot to agent
2020-08-20 19:20:11 +02:00
Leo
894e058091
Build Solana smart contract
2020-08-20 18:56:26 +02:00
Hendrik Hofstadt
59449a30b3
Update VAA structure
2020-08-19 16:41:25 +02:00
Hendrik Hofstadt
256439b766
Fix solana agent
2020-08-19 15:14:39 +02:00
Hendrik Hofstadt
5cd3db9a14
Working solana transfers from webui
2020-08-18 22:54:18 +02:00
Hendrik Hofstadt
f8e70efb0b
Fixes for actual CPI usage and variable VAA size
2020-08-17 21:02:04 +02:00
Leo
ca2a2d9686
Remove deleted token crate from workspace
2020-08-17 18:25:46 +02:00
Hendrik Hofstadt
e040449197
Working transfer in
2020-08-17 17:06:21 +02:00
Hendrik Hofstadt
49d2872d9c
Update devnet and Solana program
2020-08-16 13:21:39 +02:00
Leo
61a7d35a02
solana/agent: fix listen address and change port to u16
2020-08-15 23:54:10 +02:00
Leo
d8c9b41a01
Add builds for protos and the Solana agent
...
- Build buf and protoc-gen-go and use it to build Go proto packages
- Rename agent proto package to agent.v1 (to prevent namespace collisions and conform to buf's standards)
- Default to DOCKER_BUILDKIT=1 for CI setup
- Add incremental Docker build for solana/agent
- Move build machinery to top level
2020-08-15 22:15:26 +02:00
Hendrik Hofstadt
f54fc43118
update claimed vaa doc
2020-08-10 08:48:25 +02:00
Hendrik Hofstadt
70a1f24220
add rudimentary VAA sending
2020-08-10 00:00:36 +02:00
Hendrik Hofstadt
8167285560
update bridge doc
2020-08-09 18:26:58 +02:00
Hendrik Hofstadt
f158bb4b5f
add watch-only version of the rust agent
2020-08-08 21:34:25 +02:00
Hendrik Hofstadt
3b96e0cc6d
track meta of wrapped assets; update SDK
2020-08-08 12:35:24 +02:00
Hendrik Hofstadt
3aaba4b5bc
add create wrapped step to initial inbound transfers
2020-08-07 22:11:19 +02:00
Hendrik Hofstadt
30666fd7ff
track wrapped asset meta, test CLI with acc creation
2020-08-07 21:48:22 +02:00
Hendrik Hofstadt
ff0b4766ae
add instruction constructors
2020-08-07 16:10:30 +02:00
Hendrik Hofstadt
86dd02e0e6
Rework accounts in solana programs
2020-08-07 13:38:09 +02:00
Hendrik Hofstadt
b3832ab8c7
Fully implement U256; add source_address to transfer VAA
2020-08-05 13:12:54 +02:00
Hendrik Hofstadt
dece1a6a90
Fix protocol compatibility and increase VAA test coverage
2020-08-05 12:28:44 +02:00
Hendrik Hofstadt
90e75b3d22
Add token CLI copy that can create a bridge
2020-08-05 10:08:25 +02:00
Hendrik Hofstadt
7ddf910faa
Implement initial solana program ( #3 )
...
* add rust program
* update rust program
* first VAA actions
* implement full transfer
* remove token copy
* restructure and copy
2020-08-03 14:55:58 +02:00