Commit Graph

465 Commits

Author SHA1 Message Date
Hendrik Hofstadt a05017c043 Update rust dependencies
Change-Id: Ib587cf608255afc46dcb435a4168e0f8f8cfb8a8
2021-08-23 09:39:36 +02:00
Hendrik Hofstadt d242fd0fa4 Set bridge address via env variable
Change-Id: If301b31525dbe1d9f892f93ffbc1a35507be4625
2021-08-23 09:39:24 +02:00
Evan Gray d09abac78f devnet: fix eth addresses
Change-Id: I83bd59f35b65e87b14183410e49dd9aca6c62c85
2021-08-19 17:06:18 +00:00
Stan Drozd a97a34e174 Add a test pyth instance
Change-Id: Ifa5b50fb80f01f386fc8079eec3a0564df8072e1
2021-08-18 12:54:11 +02:00
Stan Drozd 163bfa1e24 Dockerfile.client, solana/Dockerfile: tune caching, add pinning
Change-Id: I779df6f5af215f9eabdda41b13282eafb95c496a
2021-08-18 07:46:49 +00:00
Evan Gray b9359aab87 misc: dockerignore all solana targets
Change-Id: I658b16ce266aadd375a6b2e47a85ec3e3f2db1bd
2021-08-13 14:54:25 +00:00
Hendrik Hofstadt 8e0560274e Fix decimal truncation on Solana
Change-Id: I4b8a90852f03ac03ecbd1e981aa8924a9d26c31f
2021-08-12 19:09:51 +02:00
Hendrik Hofstadt f3ef29c8fd Introduce MaybeMut
This fixes issues in places where an account is passed in multiple times both readable and writable

Change-Id: I9e75c6c273b894bf113c8d652a7dd7dcfa32b863
2021-08-12 18:41:36 +02:00
Hendrik Hofstadt 1f6b3ba323 Pack more signatures in the verification tx
Since we now use double hashing, this will work no matter how large the payload is

Change-Id: I79939e9a0698bd71602aae1135d4d40631bb4438
2021-08-12 13:23:53 +02:00
Hendrik Hofstadt 0f2d3b9f45 Fix decimal truncation on solana
Change-Id: I8bebdb13be96b03bbac22dc85281f2b96bbe0aff
2021-08-12 12:26:06 +02:00
Hendrik Hofstadt e59a36663a Initialize spl token metadata for new wrapped assets
Change-Id: Ic42f00a1e07db3a5b073f36c4453bef953a15fe8
2021-08-11 16:10:47 +02:00
Hendrik Hofstadt f5b6facec5 Fix message account derivation in token bridge wasm
Change-Id: I75b1729c130b325e61eac4b69e5f4aa003b033cc
2021-08-11 10:09:11 +00:00
Reisen c6764faddd Fix derivation program id for attest
Change-Id: I4975bb40248406334c1d368cdbb61c1ec644f303
2021-08-11 09:03:02 +00:00
Hendrik Hofstadt fae219e427 Make message a signer in CPI, improve attest ix signature
Change-Id: I5136a62d5b0b7617b4dc3e3e2a17614a68908f3f
2021-08-09 17:11:20 +00:00
Reisen eafa7e0500 Return to trace! on Dispatch log to undo stack issue
Change-Id: Ica665e89d27585eb6ecfa7df5339413c7703b3a9
2021-08-09 16:52:56 +00:00
Reisen f8a0184a1d Derive SplTokenMeta addresses
Change-Id: I4a988b0778c741c1405d096ea0d7aa67a2a31190
2021-08-09 16:43:07 +00:00
Hendrik Hofstadt 24e5406e84 Always log sequence
Change-Id: I0fe6e2f0f564f719b6207067b7824e395e91a65c
2021-08-09 12:51:23 +00:00
Reisen 2f8a73fdda Instruction symbol and error printing in prod builds
Change-Id: I3315c49272473ef3216f26b9dd21f5cfcce6e8ae
2021-08-09 12:33:59 +00:00
Hendrik Hofstadt add04e8755 Create different accounts for message posting and VAA posting
Change-Id: I88a3f74301aeecc16bb51ba693ea9523dc16b612
2021-08-09 13:51:25 +02:00
Hendrik Hofstadt 597aae7cd7 Automatically register eth and solana token bridges
Change-Id: I35efef8d53f999f85ca2e8c4f58cc6cbf8193b2d
2021-08-06 15:21:27 +00:00
Hendrik Hofstadt bedc96d887 Add token bridge client for eth and solana
Change-Id: I0f9af0ffc606aed58579f167fadf80d1964360c8
2021-08-06 15:21:27 +00:00
Hendrik Hofstadt 3fb493cb23 Remove hardcoded instances of the bridge pubkey in the program
Change-Id: I42bc36fa9db650b9cab6c6ac4c8e7c969487a40f
2021-08-06 12:25:01 +00:00
Hendrik Hofstadt 86cd27c919 Allow Solana VAAs to be posted even if the message account does not exist
This is needed for hand-crafted governance VAAs that originate from Solana

Change-Id: I50f75de9a83dd9640d960a7808c0a6605afc539d
2021-08-06 10:20:19 +00:00
Reisen 05aece1f7c Add Metadata to token bridge attestations
Change-Id: Ic1a10978c25fbd916a16bd08eab0b6937c67cd59
2021-08-06 08:24:37 +00:00
Stan Drozd cb719971fe solana/Dockerfile: Make sure we add everything from solana/
Change-Id: I864d769668865b010f630b2ebf8addcb7dcae545
2021-08-04 17:05:10 +02:00
Stan Drozd 952a9d9db9 solana: Use a central location for well-known keypairs
Change-Id: Ibed0044bee47063ec0caa4b0c12e9e7037ed7e3b
2021-08-04 10:52:27 +00:00
Hendrik Hofstadt 8f1e980b4c Add more wasm helpers to the token bridge
Change-Id: I484361ef4b0eb2cd52913e695cf83ddccb5bfe7e
2021-08-03 15:10:01 +00:00
Hendrik Hofstadt 24f7780883 Always log sequence
Change-Id: I7847b8993f1453cc0e9943d4004a3d6bf7d3f5d7
2021-08-03 15:10:01 +00:00
Hendrik Hofstadt 361adf9920 Add token bridge CLI
This also automatically initializes the token bridge in the devnet

Change-Id: I473a97da1ff55e7c9a104983087951268eb7a27d
2021-08-03 15:10:01 +00:00
Leo b02d782f1c solana/bridge: remove agent
Change-Id: I8fdf4e53172a422ee5d9d4dee13faf32ced1be08
2021-07-31 11:20:24 +02:00
Hendrik Hofstadt 8ab3b669d9 Address review comments
Change-Id: I4036e71f3df1dc419419930cfdffba302166e28d
2021-07-30 18:21:38 +00:00
Stan Drozd df5b86eded Solitaire: Say what value was passed as wrong instruction id
Change-Id: I4b79ba95ab5a43a197dfdd164b731d37b490a093
2021-07-30 14:00:35 +00:00
Reisen 0a669111dd Derive Wrapped Mint/Tokens
Change-Id: Ic530013e1932daef382cd89b9f14d1069c4006b0
2021-07-30 13:09:44 +00:00
Reisen 108a4a2ff9 Remove InstructionContext::verify. Verify in handlers
Change-Id: I661308951de261bff572398b6834523563906907
2021-07-30 13:09:44 +00:00
Hendrik Hofstadt dd5388a748 Add CPI proxy
Change-Id: Iba395084fe0cf5ebd4e1cd7bb3515c6c1f7e8756
2021-07-29 17:40:15 +02:00
Hendrik Hofstadt dfdf31dcce Implement WASM client for token bridge
Change-Id: I592cc0ece0553d55c50d87010783fefb7f9b5f2f
2021-07-29 17:27:54 +02:00
Hendrik Hofstadt f9eb8a2c0a Implement wasm client for the bridge core
Change-Id: I7931eef27d8b10eaeec00833ab3dc28a57257cdf
2021-07-29 17:27:45 +02:00
Hendrik Hofstadt d33738e179 Make the token bridge work
Change-Id: Ic34f87c09dfaa91d7bf5793e83da9f06abd2fa3f
2021-07-29 17:21:17 +02:00
Hendrik Hofstadt 897af148fc Implement a bridge stub for testing
Change-Id: Ide97a1df9d55658eeea79f7886a3a504a9108fda
2021-07-29 15:20:22 +00:00
Hendrik Hofstadt f6932bebca Set correct mutability on Transfer Native
Change-Id: I50a34645de34cd97b801015748331cfba7cdfac9
2021-07-29 15:20:09 +00:00
Hendrik Hofstadt 42c3040de1 Allow user provided signature set accounts to prevent DoS
With derived signature set accounts, an old guardian set could frontrun the creation of the account. Since the hash is persisted in the account, we don't need to encode it in the account address.

Change-Id: I49ca46611eb587c8234ac9b2c459263a2ace4219
2021-07-29 15:14:08 +00:00
Leo 7728b47659 devnet: fix Ready state delay by switching to readinessProbe
This works around an apparent k8s bug where startupProbe does not
respect periodSeconds.

Instead, use a readinessProbe.

Change-Id: I43251284db336ea5ade5b1735a867cf294a7b1c4
2021-07-28 14:59:48 +02:00
Leo 270bd78e98 solana: log sequence number
Untested: )
Change-Id: If6ff5b1b3b8199d6d8658aea8f3f0babc75b6989
2021-07-27 12:01:28 +00:00
Reisen db4c0f8f74 Handle Invalid Instructions
Change-Id: I8a6a15b7744e69c7eab88ef50295480bc5fb96ae
2021-07-26 16:09:01 +00:00
Reisen 28c0c3c195 Add Token Bridge test for initialize
Change-Id: Ia65c14b7a7bc6712e79db2b6f4244cb93f63093b
2021-07-26 16:09:01 +00:00
Reisen 191537ef8a Set correct mutability on Initialize
Change-Id: I102cb98678cc20fad6cb07da8835c1effa4973ea
2021-07-26 16:09:01 +00:00
Reisen f8174b7355 Set correct mutability on Attest
Change-Id: Ib9ead9dcc7c150292dcc00be60ac0a9b73935b48
2021-07-26 16:09:01 +00:00
Reisen 5f0707c75d Remove persistent from Bridge tests.
Change-Id: Id149bf38a9b3061964cd2ac2b539ba03c9af0c29
2021-07-26 16:09:01 +00:00
Reisen 64c1d86e4d Change serialize hierarchy for Governance
Change-Id: Id5581f84e9d325e1546f1690ba977b7470915491
2021-07-26 16:09:01 +00:00
Leo 052d922036 Clean up docs and packages for v2
Change-Id: I1020e648f4a8bd51412cf06196e78665308efdac
2021-07-21 19:46:10 +02:00
Hendrik Hofstadt c0228415f8 Fix devnet
Change-Id: I1d62e6323cc2169cce43581f9aeefb537bc84a76
2021-07-20 23:34:37 +02:00
Reisen 6ea55f8c25 Upgrade Contract Changes + Test
Change-Id: Iafa06cd7df6dddd514cd2032b7693188d8202c46
2021-07-20 20:56:38 +00:00
Hendrik Hofstadt d7b6281492 Fix governance action ids in Solana
Change-Id: I7e540ae7447ad9ff428fdd8215c21e9f394329af
2021-07-20 20:52:47 +00:00
Hendrik Hofstadt 80244ae0f3 Drop persistence options on Solana
Change-Id: Ia96672f3f80ec5daa0cce71ffbb69e2c059b3494
2021-07-20 21:00:42 +02:00
Hendrik Hofstadt b97a32df37 Fix formatting
Change-Id: I4aaa4ab6bb72d7645a12f0a28a99db71a183ad87
2021-07-20 19:47:42 +02:00
Hendrik Hofstadt 18134cce96 Fix compilation errors
Change-Id: I9d6f25b078a819331d498f918b972db64f17cbe6
2021-07-20 19:47:23 +02:00
Hendrik Hofstadt f9f461d78d Add upgrade authority command to cli
Change-Id: I58d617cbf19a8300a0915f317e63469c73e64c0f
2021-07-20 17:41:27 +00:00
Hendrik Hofstadt 953ca87162 Double hashing in Solana
Change-Id: I86769ae07cb28b38e00025b2f0bcf01919262c98
2021-07-20 17:37:16 +00:00
Reisen 99c3e40968 Fix Governance Headers
Change-Id: If2026ff4a6107327f69c5d0675a736e6ab87f1bd
2021-07-20 17:37:08 +00:00
Stan Drozd 54aadf5f5a pyth2wormhole-client: Fix warnings and the client feature
Change-Id: Ia74685f5e8e448c30678a4445c38f39f2f324a89
2021-07-20 17:06:02 +02:00
Stan Drozd b5463572be pyth2wormhole: Add Pyth data parsing with unit tests
Change-Id: I17e830f5a96342d3a520cc997529b5b865e36597
2021-07-20 17:06:02 +02:00
Stan Drozd 4fcc4f5674 pyth2wormhole: Add client with working initialize
Change-Id: Ie8d99373c4b7d91d1445f9697714493c32d2bd5a
2021-07-20 15:05:00 +00:00
Stan Drozd 2f4517e45a Initial pyth2wormhole skeleton with access verification
Change-Id: I5a9d73144797a2f8e091e91ded744fff7d4e370b
2021-07-20 15:05:00 +00:00
Reisen 1cc90e54db Deserialize only the discriminant in the entrypoint.
It would seem that Borsh, when deserializing an enum will consume a
large amount of stack space proportional to the number of discriminants.
This causes the entrypoint to trigger stack frame access violations
during the initial deserialization.

This change uses an enum represented by a u8 instead, and removes the
association between the discriminant and the data. Deserializing the
associated data is now pushed down to within the entrypoint match arms
instead.

Change-Id: I2dcb466bf7820b3344e175ad92988bb89f30cb15
2021-07-20 11:11:28 +00:00
Hendrik Hofstadt fb3d267a50 Correct governance header module
Change-Id: Ib2ebfeedab0bf40c466def0a58a6f3971db81dfc
2021-07-19 12:17:56 +00:00
Hendrik Hofstadt 8f4ed821ab Correct decimal data type
This was already correct in terra and eth but wrong in the design doc and solana

Change-Id: I6e3fcf710d81f3cb56868ff7ab73fb3aba1d95bf
2021-07-19 10:46:40 +00:00
Hendrik Hofstadt af4e29978d Add commitment level to VAAs
This allows requesting attestations for various commitment/confirmation levels. This is helpful for low-latency applications like Pyth.

Change-Id: Ib49ace163365106b227613d2f66b787b3e5f5461
2021-07-19 07:11:45 +00:00
Stanislaw Drozd 844a303b5b Revert "Solitaire: Extend Peel to support CPI re-wrapping"
Revert submission 693

Reason for revert: Moving away from CPI abstraction
Reverted Changes:
I8c252e137:bridge, token_bridge: Use Many<T>
I6a721e8a8:Solitaire: Add an explicit Many<T> type for nested...
Ibdc94b4c6:Solitaire: Serialize CPI accounts as an AccountMet...
Iefa59f5d4:Solitaire: Extend Peel to support CPI re-wrapping

Change-Id: Iab567aea6dca5be1a7bf7efd4b86e0be05d2753c
2021-07-15 13:22:50 +00:00
Stanislaw Drozd cbc5ae3ed1 Revert "Solitaire: Serialize CPI accounts as an AccountMeta vect..."
Revert submission 693

Reason for revert: Moving away from CPI abstraction
Reverted Changes:
I8c252e137:bridge, token_bridge: Use Many<T>
I6a721e8a8:Solitaire: Add an explicit Many<T> type for nested...
Ibdc94b4c6:Solitaire: Serialize CPI accounts as an AccountMet...
Iefa59f5d4:Solitaire: Extend Peel to support CPI re-wrapping

Change-Id: I01733d16862aeac79ad76dff4f58386641488b3e
2021-07-15 13:22:50 +00:00
Stanislaw Drozd f2490339de Revert "Solitaire: Add an explicit Many<T> type for nested structs"
Revert submission 693

Reason for revert: Moving away from CPI abstraction
Reverted Changes:
I8c252e137:bridge, token_bridge: Use Many<T>
I6a721e8a8:Solitaire: Add an explicit Many<T> type for nested...
Ibdc94b4c6:Solitaire: Serialize CPI accounts as an AccountMet...
Iefa59f5d4:Solitaire: Extend Peel to support CPI re-wrapping

Change-Id: I4455479e4a19007893d4cdaac06eece70abfa797
2021-07-15 13:22:50 +00:00
Stanislaw Drozd 24e3896582 Revert "bridge, token_bridge: Use Many<T>"
Revert submission 693

Reason for revert: Moving away from CPI abstraction
Reverted Changes:
I8c252e137:bridge, token_bridge: Use Many<T>
I6a721e8a8:Solitaire: Add an explicit Many<T> type for nested...
Ibdc94b4c6:Solitaire: Serialize CPI accounts as an AccountMet...
Iefa59f5d4:Solitaire: Extend Peel to support CPI re-wrapping

Change-Id: I94dc6f66b631f25fecf2c3b3a8b72302a706f0a2
2021-07-15 13:22:50 +00:00
Stan Drozd 0891d9e433 bridge, token_bridge: Use Many<T>
Change-Id: I8c252e137cd092144ec8af2c2a857c7b1247dbfc
2021-07-14 17:58:17 +02:00
Stan Drozd 6868cc7177 Solitaire: Add an explicit Many<T> type for nested structs
Change-Id: I6a721e8a88652f807f2317cfe4d82be9d629a849
2021-07-14 17:49:56 +02:00
Stan Drozd ee96b6b793 Solitaire: Serialize CPI accounts as an AccountMeta vector from Iter
Change-Id: Ibdc94b4c6359ffef78d3e2313bfee12eef93acc7
2021-07-14 17:41:19 +02:00
Stan Drozd 5827ba7b30 Solitaire: Extend Peel to support CPI re-wrapping
Change-Id: Iefa59f5d4fe36c9f9e2cd0fa997490eba0a1bb44
2021-07-14 17:41:08 +02:00
Reisen 18a6f429cb Move errors to their own file.
Change-Id: If76fc6096f2788e13dad15ea088202159793fb0b
2021-07-12 09:39:03 +00:00
Reisen 35bdef1f8b Check minimum rent exemption balance for transfers
Change-Id: I52b87ea601e9593763a22bc97fe4f4d475a1315f
2021-07-09 14:29:47 +00:00
Reisen 52b17b007a Check foreign message chain state is as expected
Change-Id: Idfdabe1aad843a58c38d8fcc52470058bf5b6b6b
2021-07-09 12:56:52 +00:00
Reisen 7aec992481 Guardian set change with invalid emitter fails
Change-Id: I5668c705c214b72c1b7b21f949b888fb4a2ce5cc
2021-07-09 12:56:51 +00:00
Reisen 69cdccc457 Check guardian set change succeeds at valid message signing
Change-Id: I72ff378d1b263d62fc0bd8fb3c0bc5b4d1280172
2021-07-09 12:56:51 +00:00
Reisen e69c464ba4 Check on chain state for message tests.
Change-Id: I82ca799431ba7bd9b5bb9e5d907c396c67b3d42a
2021-07-09 12:56:51 +00:00
Reisen 95decec044 Transferring larger than balance does nothing
Change-Id: I51d4954357e90a65ba09dc76bc3cf1bd1623606a
2021-07-09 12:40:50 +00:00
Reisen 2769fa2739 Transfer Governance action fails without correct emitter
Change-Id: I86ecbf57ae5b6e8cecd452c4f7a63a6177a460fe
2021-07-09 12:40:50 +00:00
Reisen b676339555 Bridge should still function when fees are free.
Change-Id: Ia0999299cdacab4df8ef3935b1c9f387f26c4ffa
2021-07-09 12:40:50 +00:00
Reisen 8770bf7997 Fees without governance key should fail
Change-Id: I0185db0e8f2c36c08973ca368b9a8ee176534117
2021-07-09 12:40:50 +00:00
Hendrik Hofstadt 2bfdc2fdc9 Add missing derivation checks
Change-Id: I615c5fc4fd737cdeb9bb4a118cdbfb8ef7abc5db
2021-07-08 19:50:56 +02:00
Reisen 3730ce30e3 Check the on-chain state for paid fees test
Change-Id: I85def349ba9888edb8d9e4264c7eb593c0e7c766
2021-07-07 11:46:46 +00:00
Reisen 4f5047f799 Check Duplicate messages fail to persist
Change-Id: Iefbb40ea9e703208d8192571d15630d28cb042f8
2021-07-07 11:46:46 +00:00
Reisen 704e8d6911 Confirm intentionally not signing emitter fails
Change-Id: I0e33303b3105321675295040d027d1b0df57f030
2021-07-07 11:46:46 +00:00
Reisen fc1a104ceb Test Persistent Messages
Change-Id: Ib956b4154d27a1aad5b32ad730783b2480050958
2021-07-07 11:46:46 +00:00
Reisen 0d637482d4 Add Sequence tracker and test initialize
Change-Id: I2ecb360f498fe056332690937c0556448bb286f1
2021-07-07 11:46:46 +00:00
Reisen 007098aaec Allow different commitment level through utilities
Change-Id: I7269e5c64c82dceaf1d70c74fbdfe6e44c247ec5
2021-07-07 11:46:46 +00:00
Reisen 768f768001 Use clock time for bridge initialization timestamp
Change-Id: I6121e7546f4c0590dff830572a843384a0470972
2021-07-07 11:46:46 +00:00
Reisen 7ab5a93b21 Verify emitter in all governance actions
Change-Id: Ib1fdbe9dc553e22a0e61d6f119eb45325d15861c
2021-07-07 11:46:46 +00:00
Reisen 387fcc48c0 Add Mut layer to accounts in bridge program.
Change-Id: I78dfb4568eaec4f597a6d0e1ac10a0f698bb5a61
2021-07-06 12:08:25 +00:00
Reisen 76066c8cc6 Add peel mutability checks for accounts.
Change-Id: Ic6a6fadd13a2b41d60a0c98f3b5d80d23ac263a6
2021-07-06 11:40:13 +00:00
Reisen 72951531f6 Add test for messages from foreign chains
Change-Id: Ic02554f74a84a002f1a211a7cf519394cae1f36a
2021-07-06 09:05:56 +00:00
Reisen 7b030aa59a Add governance transfer_fee tests
Change-Id: I55fe0ccad1447ee7c70b1cc5de6f88cf1a2dfd8a
2021-07-06 09:05:53 +00:00
Hendrik Hofstadt 7784e74725 Align behaviour of persistent message fees
Change-Id: Ic9c6c40dbac2399e0eaf3a861dff33254a828a18
2021-07-05 18:02:04 +00:00
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
Reisen 366a045dd4 Add governance set_fees test
Change-Id: I13cda0ff055daa0fcfd9f0f2993f8e32d2670181
2021-07-05 12:27:46 +00:00
Reisen fd7b53a2a5 Add method to inspect account data in tests
Change-Id: I23ee5b351bcd1cb6fb998384ff87f7bfaf61b885
2021-07-05 12:27:20 +00:00
Reisen 6aa5788354 Confirm guardian set fails for non-gov emitter
Change-Id: Idc49a19be551d4a3c4ae7cafe735995fa4ced0be
2021-07-05 12:27:18 +00:00
Reisen da0ebfee2c Add failing guardian set change test
Change-Id: I4cd5b6360060a76671390ccc196b993d6c72f083
2021-07-05 12:22:39 +00:00
Reisen 20af0ae03a Expose errors from test utilities
Change-Id: I9dbe732bcff004dc85b79a8fe6e9226848de468f
2021-07-05 12:22:39 +00:00
Reisen b4d7265342 Split Integration Tests
Change-Id: Ib75bfbb54647dcda8ba37a08bef2083021ac8418
2021-07-05 12:22:37 +00:00
Hendrik Hofstadt 049177db37 use sequence as seed for persisted VAAs from foreign chains
Without the additional seed, messages with identical (emitter_chain, emitter_address, nonce, payload) but different sequence could fail to be persisted.

Change-Id: I6786f7be33bcc6da7289f54fc62c7a5b10821594
2021-07-02 16:51:26 +00:00
Hendrik Hofstadt b85cbacd3b fix message attestation for Solana
Change-Id: Iaf79984980affe64f268c2eed9f61d5058cea0dd
2021-07-02 16:05:06 +00:00
Hendrik Hofstadt cc08a9753c reformat and fix client
Change-Id: Ie99d2b7cc2ed9890432c38661f1035a473cc5ac1
2021-07-02 11:48:48 +00:00
Hendrik Hofstadt 3c5deee7ee Fix devnet for new contracts
Change-Id: I5b7536884ce3d1bdf39a21a8b71b6a848ad0380f
2021-07-02 13:02:35 +02:00
Reisen 62f5cb1986 Do message payment within same instruction
Change-Id: Id1e3ac10bcdc7e91c649f5e75caf8a98e27be0c6
2021-07-01 09:35:03 +00:00
Reisen cdcf6f5d14 Add tracing to PostMessage.
Change-Id: I13005cef8cc5a07021066e5182b5ad818b3be30e
2021-07-01 09:35:03 +00:00
Reisen af00a3c02a Use trace! inside solitaire
Change-Id: Ic26fcabbb6d6000b306d190aab306307ab9cda7f
2021-07-01 09:35:03 +00:00
Reisen 18e52aafe6 Add tracing log macro that defaults to noop
Change-Id: I5ae1cf9e539a08aa9d820e3bf643a311b2f9080e
2021-07-01 09:35:03 +00:00
Reisen 2e4279c964 Generate Keypairs for guardians during test.
Change-Id: Ide5f0347ee40189aecfe5dca4ba8f4ef3f0756d9
2021-07-01 09:35:03 +00:00
Reisen 889895bc91 Use multiple signatures in tests
Change-Id: Ibcd2cfbd59d3eb3e0d4486252ae93a5f38c3b457
2021-07-01 09:35:03 +00:00
Reisen 4a08dbf73e Fix calculation for quorum size.
Change-Id: I2240e4a395576cbdbe11f38883f418647d92ce50
2021-07-01 09:35:03 +00:00
Reisen 30e8419f93 Update tests to use initial guardian set.
Change-Id: I11cd5d5bc518ce69e12a289211f21b992eef9ffe
2021-07-01 09:34:59 +00:00
Reisen 44384e635f Expose Governance types/functions
Change-Id: I10fb14fa5d9d283cf831ea3d8585141e834e40b5
2021-07-01 06:16:59 +00:00
Reisen 21c7399d55 Return errors in Data peeling
Change-Id: I3e0ae581e83ebbcf0d343b758dff033ddc9b362e
2021-07-01 06:16:59 +00:00
Reisen e6317449d5 Pass in initial Guardians in Initialize
Change-Id: Iabc803d85ef89142a27e924a81ddddecb41e96dc
2021-07-01 06:16:59 +00:00
Hendrik Hofstadt f97bbccdae Fix agent bridge import
Change-Id: I88098157710dc51bcbb6a3cd412cdfd68be1c3fc
2021-06-30 18:56:54 +02:00
Hendrik Hofstadt 6d1b3d2651 Adapt solana agent for v2
Change-Id: I81fc8b959f33a157371d1c59b1d5323dfc11f1ce
2021-06-30 06:46:56 +00:00
Stan Drozd 5e7e4d4e48 Solitaire: Enforce the "client" feature in dependees
Change-Id: I55da10bde41f84e91c5754a89eb4239967117e67
2021-06-29 15:35:14 +00:00
Stan Drozd 79d82d1226 Solitaire: use "client" as superset of "no-entrypoint", logging
Change-Id: Ie846b9abd783fe041f2cfa9aeda962003ffe1441
2021-06-28 13:01:43 +02:00
Stan Drozd 60a1acf351 solitaire: Wrap for Info, auto Wrap for data_wrapper()
Change-Id: I5cc0ba7870e140a2acf77b8fc8814ee953f56b51
2021-06-28 13:00:41 +02:00
Reisen 118bc13bcb Fix all warnings in the bridge program.
- Allowed non snake case globals for const generic names.
- Left feature warning on as these are valuable to others during cargo
  build, where you might want to spot what projects are using unstable
  features when pulling dependencies.

Change-Id: I595253513554c441284def7e354bb4e4e2df550e
2021-06-25 07:55:55 +00:00
Reisen 8cb2675c85 Rework integration tests around exposed instructions
Change-Id: Id796e31de90b1d59a43e9ae1cce85d84cd264558
2021-06-24 13:55:31 +00:00
Reisen e99b597ee3 Fix Signature Calculation
Change-Id: Ia0fa7f86f09360d792dbfebd8928f9a444ac3368
2021-06-24 10:02:15 +00:00
Hendrik Hofstadt ece0de4bef Fix bridge fee and implement CLI
Change-Id: Ib17b335e05359fd4baf614d0b4eaae459814b04d
2021-06-23 15:10:06 +00:00
Hendrik Hofstadt d677311d70 Fix build caching and initial devnet setup steps
Change-Id: I6df841c90f93585f0146b0de65883dd101e45bc9
2021-06-23 17:06:11 +02:00
Reisen 89ddc95a78 Add Instruction helpers to core program
Change-Id: I38d958c57aef02a5328075cd1010fb2a6a564b0b
2021-06-23 12:38:43 +00:00
Reisen 16f7e156ae Fix Derivation issues for PostVAA accounts.
Change-Id: Ia08003dc8aadfe3963598c81745813e6e09e5d3a
2021-06-23 11:02:42 +00:00
Reisen a28540de0d Test VerifySignatures.
Change-Id: I430b4676706371bbcf61368a83ff4946d9db2202
2021-06-23 11:02:42 +00:00
Reisen c2c2e7f13d Integration Test for PostVAA without working Signatures
Change-Id: Ib5c93986cdac88678657b254522422ab5231a856
2021-06-23 11:02:42 +00:00
Reisen 8173f0997a Add integration test PostVAA step
Change-Id: I44d00afc728557d2556a8a2e62f378a3f2e61db7
2021-06-23 11:02:42 +00:00
Reisen 692da33d0c Add integration test around PostMessage
Change-Id: I8c41db5f3d110ee445ed66d2599d87afb42fde7e
2021-06-23 11:02:42 +00:00
Reisen c3151728f5 Add integration test setup with Initialize filled in
Change-Id: Ie7cbb1a2a72b88e2752065b65d76da9cda9b1c0f
2021-06-23 11:02:42 +00:00
Reisen 146b368fc0 Fix accounts required for calling Initialize/PostMessage
Change-Id: Ide3fa8401bac6b1b05bc4c5ec1f552a98178ad06
2021-06-23 11:02:42 +00:00
Hendrik Hofstadt 22373b9943 Fix eth and solana deployment in tilt devnet
Change-Id: Iee032e92373c56d876e6fc1626b0f1af54046834
2021-06-22 18:17:18 +00: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
Hendrik Hofstadt d84b61fda5 Implement token bridge
Change-Id: Ibb9cdf6ed5a18a576691bcad96b4fe6dfd72b981
2021-06-07 09:04:23 +02:00
Hendrik Hofstadt aa909c218f Restructure workspace
This will make is easier to separate modules and solitaire in the future.
We also get rid of the old bridge code.

Change-Id: I4d663c36739dfec77cd5d3f1ed6b51f422fe0c91
2021-06-21 10:24:52 +02:00
Hendrik Hofstadt 5eb7d0b7d0 Various token bridge and solitaire improvements
Derive message accounts from nonce and data vs sequence because sequence can lead to collision with parallel tx submission

Change-Id: I82d5b3a3c7fd96b5a6c74933c773a32e1c58bdd4
2021-06-18 14:34:31 +02:00
Leo 4f306fdb8b solana/agent: always submit signature verify transactions
The first transaction acquires a pseudo-lock by setting
initial_creation = true, which will fail if a signature account
already exists. However, this is unsafe since the operation
consists of multiple operations and is not atomic - if the first
validator fails to submit a full set of signature transactions,
other guardians will not retry submitting signature verification txs.

We disable this mechanism to never set initial_creation, which
causes guardians to spend more fees in exchange for fault tolerance.

Instead of failing with an AlreadyExists error, duplicate transactions
will now succeed as a no-op and all nodes will attempt to submit
the full series of signature transactions.

Co-authored-by: Hendrik Hofstadt <hendrik@nexantic.com>
Change-Id: I0c418497f19cc97c9ae7a11b206035d6e70c1b66
2021-05-31 13:33:47 +00: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 c1c2c7ae49 solana/agent: add extra context to SubmitVAA errors
Co-authored-by: Hendrik Hofstadt <hendrik@nexantic.com>
Change-Id: I5e2b9120e0626ba4e5021f3012802e2d3978584e
2021-05-31 13:33:40 +00:00
Stan Drozd e1c2f73e29 Implement Wrap for solitaire::Sysvar<...>
Change-Id: I066e425d1e1549ea296a4b54ef019872064a8acd
2021-06-16 12:09:06 +02:00
Hendrik Hofstadt 834b26b773 Implement Derivation context
Change-Id: I18d69b60e23aa262efc2f182bdad5770a5c3de60
2021-06-14 18:58:12 +02:00
Stan Drozd e51503b4f7 solitaire, macros.rs: stop panicking in dispatch()
Change-Id: I12df1318c56799209821ad92d491e55810fe820f
2021-06-14 15:16:09 +02:00
Hendrik Hofstadt b3b083b08a Implement account persistence
Accounts with data will now be persisted at the end of the program execution

Change-Id: I1dd29f521f5c659ced5758203acf532b645f3b44
2021-06-11 17:14:21 +02:00
Hendrik Hofstadt c3829b9266 Fix seed derivation and implement proper dependency system
Seeds currently did not account for the requirements of PDAs not being on the curve. This change
uses the `find_program_address` method to also be able to derive "bumped seeds" from types implementing
the Seeded trait. This is now also used for account creation.

Also the way we originally planned to pass through dependencies in Peel is not compatible with the client as some
of the context is not given there. I introduced a new method named "deps" with the same "chaining mechanic" that
can provide deps that are appended to the accounts passed into the instruction.

Change-Id: I116c8a3611e54b5a7fe5285310e4bc047119d656
2021-06-11 14:01:31 +02:00
Stan Drozd 388743fa6c Implement Wrap for Data, fix solitaire version string
Change-Id: I28dcfc334995572ab2c864d045334d124aca1e31
2021-06-11 14:29:43 +02:00
Stan Drozd 70b49e3525 Fix compilation errors
This commit tackles two important problems with our contract code

- use of solana-sdk - I exile the code that relies on solana-sdk's
Keypair to a new solitaire-client crate that will conveniently handle
such client-only cases from now on

- Don't use `const-generics_defaults` - latest official release of
solana does not allow for using them and I don't find it practical to
install the experimental toolchain.

Change-Id: I3319db109de4ebcce9091e0284e756ce09264985
2021-06-08 16:50:43 +02:00
Stan Drozd c700e8847b Solitaire client implementation
Change-Id: I4d1f37082537cd24a4859802652a177400f6a205
2021-06-04 13:02:35 +02:00
Hendrik Hofstadt 2b473f1f12 Implement bridge core
Change-Id: I6d5b382702b40584f962221dad20af3d6ec50d8c
2021-06-07 09:04:12 +02:00
Hendrik Hofstadt 13c7e693c2 Improve sysvar and account state handling
Change-Id: Ic60433f921c14ce66f6039245a2964dee4f60e8f
2021-06-07 09:03:25 +02:00
Stan Drozd b7c5e08117 Add a dockerfile able to compile the v2 bridge workspace
Change-Id: I037064d38e14c0c5962998b67692c2595e170da7
2021-06-07 17:14:56 +02:00
Reisen 05ea24faf7 Solitaire Refactor
Change-Id: I48306fbb00a813d83e0411a38b15123e922f8766
2021-06-03 13:23:25 +00:00
Reisen 32b2f11def Bridge Converted to Solitaire
Change-Id: I6223c5d51d6bda7f3581339a93f9519725a337b9
2021-06-03 03:11:18 +00:00
Hendrik Hofstadt 2202a38c65 Implement wrapper helper traits
Change-Id: I4d389d18a8b55a648532062804bb28e806c93a0c
2021-06-02 12:40:31 +02:00
Hendrik Hofstadt 88a94a9129 Implement Seeded trait and account creation
Change-Id: I355b88e07b872f8b4869fa9b7fa8dcae4806527d
2021-06-02 12:40:18 +02:00
Hendrik Hofstadt e2195c9b17 Support deserialization on Pack types
Change-Id: I1eeee002b4a396f94661a938fb0dad1bf958719f
2021-06-02 12:39:47 +02:00
Hendrik Hofstadt 02ecdb691a Allow ToAccounts to be used on generic structs
Change-Id: I70939482e68946f15b744ddc8f4db01af1b7d73a
2021-06-02 12:37:18 +02:00
Stan Drozd d86dc75734 Add ToAccounts and Wrap skeleton, derive macros
Change-Id: I2ccb742cc8a49db7b170aa3a284bce003193a903
2021-06-01 14:57:28 +02:00
Stan Drozd e422bd3d8c clean up solitaire! macro
Change-Id: I208d7b71c870b5f22c802fe25b0d003fc1047c54
2021-05-31 16:55:35 +02:00
Reisen 652f4ea3b1 Initial Solitaire Base
Change-Id: I6789364464ef03ada87b7d446abb43df033d133d
2021-05-25 16:32:45 +00:00
Stan Drozd e0b193b390 anchor-client with new()
This commit introduces an anchor-bridge-client crate with a partially
working new() call. Still needs proper handling of seeds for some of
the accounts.

Change-Id: I73bfc4b7e23c45643776ba8f13946f1f8c7c65ed
2021-05-18 14:55:56 +02:00
Reisen 360d0ad0b1 Anchor fails to generate Initialize without a call.
Change-Id: I226631537b06b08d757222cfc3c502b576503c6d
2021-05-05 09:56:03 +00:00
Reisen baf9614998 Generate, sign, and populate message fields.
Change-Id: Ia03b080f17fc27e34178dda0a946d46a6cb6877c
2021-05-04 05:12:32 +00:00
Reisen edfbfc93db Add account initialization for message, no seeds
Change-Id: I8fef4dd497457fc3ddbf2556e39fb57377cbb55f
2021-05-04 05:02:50 +00:00
Reisen 249fc68107 Add an unknown default for Chain type
Change-Id: I1c175c906311063dd10db4ea3ed693098592585d
2021-05-04 05:01:53 +00:00
Reisen 8effae6cb5 Add a fixed size message type, hacky for now
Change-Id: I62f3bbe6bb760c7dd3c21f6bd98de54dfb0bb00b
2021-05-04 04:13:18 +00:00
Reisen aab8efec63 Add constant time fee calculation function
Change-Id: Ifc6dcfce4066d6767bf03f79133920daea112697
2021-05-04 02:15:04 +00:00
Reisen b0e7e363c5 Get into the habit of sysvar/system accounts at the bottom
Change-Id: I124fdfc22404f6afa12180e6a7ce0afe6bc26f8d
2021-05-04 02:05:14 +00:00
Reisen edc8a91ecd Use associated account for guardian set.
Change-Id: Ic535115be997d3173c6bb891d980cb8c3e09d5d4
2021-05-04 01:57:16 +00:00
Reisen c4286b9df5 Move accounts back to lib.rs as associated breaks otherwise.
Change-Id: Ic4e7cddaaac414cbc9afb5eee4e8a9c81b2f8548
2021-05-03 23:59:02 +00:00
Reisen 569ecab2eb Add Instruction id check to signature verification
Change-Id: Ia54d5932d4d1be81b3752bac96ed2a2b555ef322
2021-05-01 01:50:15 +00:00
Reisen a63af890b6 Add Anchor error and Result wrapper.
Change-Id: I6374dc81737ea711ead1fedd9e29007dbb625500
2021-04-30 11:33:02 +00:00
Reisen d169caa0fe Apply rustfmt changes to current files.
Change-Id: I9182dd8b287e5008e417d1b7fefc64cb68b9f813
2021-04-30 11:32:19 +00:00
Reisen 08ac56a6bb Add some potentially sane rustfmt options.
Change-Id: I76debba2f2caee5848f115064fd58e1d72b94308
2021-04-30 11:24:32 +00:00
Reisen 679fa92a56 Move account related verification out of API handler
Change-Id: Ice70ab8bfcf4018693f90cb5e47bea6cb9e46309
2021-04-30 11:24:32 +00:00
Reisen aab930bfab Restore index as the guardian set naming convention
Change-Id: I531413d961a3fb0068bc278f72073497746f5eee
2021-04-30 11:24:27 +00:00
Reisen c1c778d65a Add anchor accounts for PostMessage instruction.
Change-Id: I26d054479b95d9e33c8da4f8b6fca630240ffb3f
2021-04-30 02:49:47 +00:00
Reisen ab20f15904 Add message publishing skeleton
Change-Id: I18e55f4221575ba782f518d33e1b1f3abcc5d683
2021-04-29 11:33:48 +00:00
Reisen a5f285f1bd Verify Signatures should take bridge as state, and split arguments.
Bridge state is represented by the #[state] struct in the main file, and so
processor functions no longer receive it as part of context. Instead it's
passed as an arg.

Change-Id: I0492290a597e0778d5c52162447fa09f68a91a9b
2021-04-29 11:10:52 +00:00
Reisen bcf7be93d6 Implement Initialize using correct anchor decorators.
Change-Id: I5d7120f927cc0e4a9dc2882b245058fde0a65637
2021-04-29 10:57:38 +00:00
Reisen 1c9facbb75 Use Anchor state for Initialize
Change-Id: I4f61c3e74e037e873f669f240ebbc8fe26567103
2021-04-29 10:57:38 +00:00
Reisen 17bda088f1 Add bridge state to Anchor
Change-Id: I3ce0591d6810daf5fe8bd33f5bfd8d5297c0c9b5
2021-04-29 10:57:38 +00:00
Reisen 21de7a58af Split arguments to handlers for cleaner API
Change-Id: If8995bbb61775040d8e666e6af3cccae39f57919
2021-04-29 10:57:38 +00:00
Reisen 482666b3fa Replace deprecated merge_imports with imports_granularity
Change-Id: I749788a369738a5e97e7bc9009f0c28a12b2b3b9
2021-04-29 10:57:38 +00:00
Reisen a05091897f Move minimum amount of types to skeleton initialize
Change-Id: Ibfc5767de20802035a9403cd937005bdb7ab96cc
2021-04-29 10:57:38 +00:00
Reisen 888c461d73 Add Chain enum for identifying message sources
Change-Id: Iefb96f32ef929a6073b523d511b9c4033e33522f
2021-04-29 10:57:36 +00:00
Reisen ed98d9d346 Extract as much non-Anchor specifics into modules
Change-Id: I380560c6a8c240c95ee6eda93e27c7248b2cd361
2021-04-29 10:20:34 +00:00
Reisen d0fc326718 Run through rustfmt to clean up syntax.
Change-Id: I3e79bb32554d02985857b5fa7100675c9041b14c
2021-04-29 10:20:34 +00:00
Reisen 35efbbe87f Use ProgramState and stubs to enforce account owners.
Change-Id: I7c653af6abd771ceb9ceb60460dbf742fe9fe9ec
2021-04-29 10:19:59 +00:00
Stan Drozd 9dd36c6275 Port over the Solana part of secp instruction checks
Change-Id: Ic205837a3a9a9010070596cbbab2590e15332527
2021-04-26 16:02:18 +02:00
Reisen 09d2ecaaa1 Create data with AccountInfo's needed for processing signatures.
Change-Id: I19edfb56197143500fc7c932dec09d884c682a94
2021-04-23 13:50:38 +00:00
Reisen fa84f69f12 Add barebones anchor generated skeleton.
Change-Id: Ia8e77942ea31521f09fbb1586349d02a21508444
2021-04-23 10:23:32 +00:00