Commit Graph

79 Commits

Author SHA1 Message Date
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