Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

solana: add matching engine and token router #7

Merged
merged 126 commits into from
Mar 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
74c5e0a
solana: add admin methods + tests
a5-pickle Dec 21, 2023
0b06ea7
solana: add matching engine program
gator-boi Jan 8, 2024
3ea972f
solana: fix Cargo.lock; add back token_router
a5-pickle Jan 8, 2024
4d80500
solana: fix workspace
a5-pickle Jan 8, 2024
a91c81a
solana: add intitialize tests for matching engine
gator-boi Jan 9, 2024
44be4c6
solana: add foreign endpoint registration and tests
gator-boi Jan 9, 2024
af32048
solana: add ownable-tools; remove idl
a5-pickle Jan 9, 2024
0ce4ea2
solana: add more admin
a5-pickle Jan 9, 2024
e4f3f19
solana: fix comments
a5-pickle Jan 9, 2024
7f83b6b
solana: add remaining admin tests to matching engine
gator-boi Jan 9, 2024
b34811d
solana: uptick wormhole-cctp-solana to 0.0.1-alpha.2
a5-pickle Jan 9, 2024
5b3d97e
solana: make matching-engine upgradeable
gator-boi Jan 9, 2024
a1faecd
solana: add shared-consts; add usdc token acct
a5-pickle Jan 9, 2024
810bd09
solana: remove upgradeability code from matching engine
gator-boi Jan 9, 2024
ad9ef27
solana: fix matching engine init instruction
gator-boi Jan 9, 2024
1c0acef
solana: set upgrade authority
a5-pickle Jan 9, 2024
6b27a50
solana: add matching-engine as dep
a5-pickle Jan 10, 2024
95ff0eb
solana: add liquidity-layer-messages
a5-pickle Jan 10, 2024
ea0fa22
solana: add common
a5-pickle Jan 10, 2024
2193c3e
solana: add raw deser
a5-pickle Jan 10, 2024
fb4671c
solana: fix raw ll message; fix clippy
a5-pickle Jan 10, 2024
29e3a22
solana: add place_initial_offer instruction
gator-boi Jan 10, 2024
83b5223
solana: fix raw deser; add place_market_order
a5-pickle Jan 10, 2024
85a5ac6
fix deser
a5-pickle Jan 10, 2024
c1c18e5
solana: checkpoint for matching engine
gator-boi Jan 10, 2024
9641624
solana: fix deposit messages
a5-pickle Jan 10, 2024
83c0f0f
solana: place market order happy path test (WIP)
a5-pickle Jan 10, 2024
5e4aaa6
solana: add redeem_fill_cctp (untested)
a5-pickle Jan 11, 2024
0cb93a5
solana: fix payer sequence; add redeem fill me placeholder
a5-pickle Jan 11, 2024
f5c15e5
solana: add happy path test for place_initial_offer
gator-boi Jan 11, 2024
87bbd10
redeem fill happy path works
a5-pickle Jan 11, 2024
c795a7a
solana: fix fast fill deser; add redeem fast fill (untested)
a5-pickle Jan 12, 2024
e141d01
solana: add improve_offer instruction
gator-boi Jan 12, 2024
3b1aef0
solana: fix contexts; fix error
a5-pickle Jan 12, 2024
16fc6d0
solana: reorganize ts
a5-pickle Jan 12, 2024
a471838
solana/ts: clean up
a5-pickle Jan 12, 2024
3f44091
solana: add improve_offer happy path test
gator-boi Jan 12, 2024
f6d25d0
solana/ts: refactor messages
a5-pickle Jan 12, 2024
dcc8a4c
solana/ts: fix slow order response
a5-pickle Jan 12, 2024
1f0cbf9
solana/ts: fix fast market order
a5-pickle Jan 12, 2024
bfe6252
solana: fix initialize
a5-pickle Jan 13, 2024
46f3f5b
solana: harden add router endpoint; fix outbound transfer; refactor t…
a5-pickle Jan 15, 2024
0ec961b
solana: add_cctp_router_endpoint
a5-pickle Jan 16, 2024
7b8952f
solana: fix arg names
a5-pickle Jan 16, 2024
98441b3
solana: add execute_fast_order instruction
gator-boi Jan 16, 2024
44de029
solana: matching engine checkpoint
gator-boi Jan 16, 2024
3741c5b
solana: some refactoring
a5-pickle Jan 16, 2024
c7e3190
solana: add cctp accounts to execute_fast_order
gator-boi Jan 16, 2024
600662e
solana: add arbitrum remote token messenger
a5-pickle Jan 16, 2024
72990a8
solana: add cctp transfer to execute_fast_order
gator-boi Jan 16, 2024
3b39228
solana: auctioneer -> offer authority; redeem fast fill happy path
a5-pickle Jan 17, 2024
6889249
solana: remove_router_endpoint and add_local_router_endpoint (untested)
a5-pickle Jan 17, 2024
6edef65
solana: more redeem fast fill tests
a5-pickle Jan 17, 2024
dfebcd9
solana: clean up redeem fast fill tests
a5-pickle Jan 17, 2024
5e3fcd2
solana: fix errors; more tests
a5-pickle Jan 17, 2024
337cd85
solana: add execute_fast_order happy path tests
gator-boi Jan 17, 2024
9249c7b
solana: add fill message verification in test
gator-boi Jan 18, 2024
0b25f44
solana: refactor execute_fast_order
gator-boi Jan 18, 2024
c26e9b6
solana: execute slow order (WIP)
a5-pickle Jan 18, 2024
ff39b36
solana: more wip; uptick wormhole-cctp-solana to 0.0.1-alpha.3
a5-pickle Jan 18, 2024
796ba3c
solana: some clean up; fix clippy
a5-pickle Jan 18, 2024
b54717c
solana: add execute_fast_order_solana instruction
gator-boi Jan 18, 2024
ec6f709
solana: more slow order
a5-pickle Jan 18, 2024
9a74808
solana: yolo slow order split
a5-pickle Jan 19, 2024
5ce84b4
solana: matching engine checkpoint
gator-boi Jan 19, 2024
11eb147
solana: add negative tests for place_initial_offer
gator-boi Jan 19, 2024
5ab336f
solana: uptick wormhole-cctp-solana to 0.0.1-alpha.6
a5-pickle Jan 19, 2024
f6c1e4a
solana: prepare slow order cctp happy path
a5-pickle Jan 19, 2024
3d804e0
solana: fix unchecked
a5-pickle Jan 19, 2024
7bb2a92
solana: fix prepared by
a5-pickle Jan 20, 2024
94696df
solana: add negative improve_offer tests
gator-boi Jan 20, 2024
7e4ae0d
solana: add negative tests for execute fast order
gator-boi Jan 21, 2024
147e86d
solana: add prepare order; fix place order
a5-pickle Jan 22, 2024
766aa4f
solana: move calculate_dynamic_penalty to utils
gator-boi Jan 22, 2024
22c6680
solana: refactor tests
a5-pickle Jan 22, 2024
13f9f99
solana: add unit tests for calculate_dynamic_penalty
gator-boi Jan 22, 2024
89a8117
evm: amount type changes to uint128
gator-boi Jan 22, 2024
38b0a06
evm: update payload ID enumeration
gator-boi Jan 22, 2024
298bfe3
solana: add prepared fill (tests WIP); uptick wormhole-cctp-solana 0.…
a5-pickle Jan 22, 2024
0779689
solana: test 2x speed; remove unnecessary accounts
a5-pickle Jan 23, 2024
716eed7
evm: add mint recipient registry
gator-boi Jan 23, 2024
8b0d4cb
evm: change name of cctpNonce to protocolSequence
gator-boi Jan 23, 2024
439e48b
solana: broken deserialization code
gator-boi Jan 23, 2024
a3bb74c
solana: fix serde
a5-pickle Jan 23, 2024
543cd76
solana: reorganize; tests WIP
a5-pickle Jan 23, 2024
dccaf72
solana: rename execute fast order cctp; even faster tests
a5-pickle Jan 24, 2024
267f171
solana: fix linter errors
gator-boi Jan 24, 2024
41e22b0
solana: slow it down
a5-pickle Jan 24, 2024
7cdc1e1
solana: add serde unit tests
gator-boi Jan 24, 2024
28f827c
evm: update cctp library
gator-boi Jan 24, 2024
d574a35
solana: refactor
a5-pickle Jan 25, 2024
3434503
solana: remove owner req; clean up tests
a5-pickle Jan 30, 2024
1167838
solana: add localnet feature
a5-pickle Jan 30, 2024
c9f1979
solana: prep solana devnet; fix endpoint registration on engine
a5-pickle Jan 30, 2024
df47d3f
solana: remove endpoints from router
a5-pickle Jan 30, 2024
7a90ac6
solana: uptick wormhole-cctp-solana to 0.0.1-alpha.9
a5-pickle Jan 30, 2024
498538e
evm: remove target domain; move matching engine to deprecated
a5-pickle Jan 30, 2024
a284940
solana: remove destination cctp domain
a5-pickle Jan 30, 2024
3a71feb
solana: clean up
a5-pickle Jan 31, 2024
4e5b45a
solana: fix setup; npm audit fix; add dotenv
a5-pickle Jan 31, 2024
f219bf8
evm: remove matching engine chain check
a5-pickle Feb 1, 2024
93d9575
solana: implement SettleAuctionActiveCctp instruction builder and tests
a5-pickle Jan 30, 2024
50aa18b
solana: fix sequence check
a5-pickle Feb 1, 2024
cd0a88c
evm: uncomment test in TokenRouter.t.sol
gator-boi Feb 5, 2024
78fcc42
evm: remove deprecated
gator-boi Feb 5, 2024
c394999
solana: change transfer authority to custodian
gator-boi Feb 5, 2024
7b1b088
solana: return approve instruction in main instruction
gator-boi Feb 6, 2024
0f817f6
solana: add source chain to AuctionInfo; formatting changes to 01__ma…
deekerno Feb 6, 2024
369c74e
solana: slots -> period; fix prettierrc
a5-pickle Feb 6, 2024
61c0886
solana: add redeemer message to prepared fill
a5-pickle Feb 7, 2024
7a94008
solana: refactor custody token WIP
a5-pickle Feb 7, 2024
51ccb83
solana: fix after cctp upgrade
a5-pickle Feb 8, 2024
2cef128
solana: custody token -> cctp mint recipient
a5-pickle Feb 8, 2024
08e7840
solana: bump solana to 1.17.20
a5-pickle Feb 8, 2024
68784ac
solana: fix deps
a5-pickle Feb 12, 2024
4119701
solana: add min offer delta parameter to auction config
gator-boi Feb 12, 2024
55251b1
solana: add vaa_sequence to auction info
gator-boi Feb 12, 2024
efb1523
solana: add propose auction params tests
gator-boi Feb 13, 2024
ee9ce91
solana: add tests for update_auction_parameters instruction
gator-boi Feb 13, 2024
3b0242c
solana: more auction update tests
gator-boi Feb 14, 2024
ccbfb01
solana: upgrade WIP
a5-pickle Feb 12, 2024
5a541ed
solana: add some local tests
deekerno Feb 9, 2024
f1a5568
solana: add token-router-sdk
a5-pickle Feb 16, 2024
db7f618
solana: add basic CI for solana integration branch (#4)
deekerno Feb 21, 2024
d864147
solana: fix several comments (#5)
deekerno Feb 24, 2024
cd02440
solana: add negative tests for MatchingEngine and TokenRouter (#6)
deekerno Mar 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/solana-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Solana Integration Checks
on:
push:
branches:
- solana/integration
pull_request: null

env:
RUSTC_VERSION: 1.76.0
jobs:
cancel-previous-runs:
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.1
with:
access_token: ${{ github.token }}
make-lint:
name: make lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUSTC_VERSION }}
components: clippy, rustfmt
- name: make lint
run: make lint
working-directory: ./solana
make-test:
name: make test
runs-on: ubuntu-latest
# Anchor Docker image: https://www.anchor-lang.com/docs/verifiable-builds#images
container: backpackapp/build:v0.29.0
steps:
- uses: actions/checkout@v4
- name: Set default Rust toolchain
run: rustup default stable
working-directory: ./solana
- name: make test
run: make test
working-directory: ./solana
5 changes: 3 additions & 2 deletions evm/env/localnet/arbitrum.env
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ export RELEASE_TOKEN_ROUTER_ADDRESS=0xB9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
############################### Matching Engine ###############################


### Matching Engine Proxy (evm address)
### Matching Engine Proxy (universal evm address)
export RELEASE_MATCHING_ENGINE_CHAIN=6
export RELEASE_MATCHING_ENGINE_ADDRESS=0xB9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_ADDRESS=0x000000000000000000000000B9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_MINT_RECIPIENT=0x000000000000000000000000B9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_DOMAIN=1
5 changes: 3 additions & 2 deletions evm/env/localnet/avalanche.env
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ export RELEASE_TOKEN_ROUTER_ADDRESS=0x438fDf069b811b871280AECd130D58ab6EC5c0Bc
############################### Matching Engine ###############################


### Matching Engine Proxy (evm address)
### Matching Engine Proxy (universal evm address)
export RELEASE_MATCHING_ENGINE_CHAIN=6
export RELEASE_MATCHING_ENGINE_ADDRESS=0xB9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_ADDRESS=0x000000000000000000000000B9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_MINT_RECIPIENT=0x000000000000000000000000B9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_DOMAIN=1


Expand Down
5 changes: 3 additions & 2 deletions evm/env/localnet/ethereum.env
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ export RELEASE_TOKEN_ROUTER_ADDRESS=0xd98bfe6915cE92D4915149941246d36504125501
############################### Matching Engine ###############################


### Matching Engine Proxy (evm address)
### Matching Engine Proxy (universal evm address)
export RELEASE_MATCHING_ENGINE_CHAIN=6
export RELEASE_MATCHING_ENGINE_ADDRESS=0xB9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_ADDRESS=0x000000000000000000000000B9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_MINT_RECIPIENT=0x000000000000000000000000B9c90045934D8AdBc665BC5D77c5F8C112F2a2ca
export RELEASE_MATCHING_ENGINE_DOMAIN=1
7 changes: 5 additions & 2 deletions evm/forge/scripts/DeployTokenRouterContracts.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ contract DeployTokenRouterContracts is CheckWormholeContracts, Script {
address immutable _wormhole = vm.envAddress("RELEASE_WORMHOLE_ADDRESS");
address immutable _cctpTokenMessenger = vm.envAddress("RELEASE_TOKEN_MESSENGER_ADDRESS");
address immutable _ownerAssistantAddress = vm.envAddress("RELEASE_OWNER_ASSISTANT_ADDRESS");
address immutable _matchingEngineAddress = vm.envAddress("RELEASE_MATCHING_ENGINE_ADDRESS");
bytes32 immutable _matchingEngineAddress = vm.envBytes32("RELEASE_MATCHING_ENGINE_ADDRESS");
bytes32 immutable _matchingEngineMintRecipient =
vm.envBytes32("RELEASE_MATCHING_ENGINE_MINT_RECIPIENT");
uint16 immutable _matchingEngineChain = uint16(vm.envUint("RELEASE_MATCHING_ENGINE_CHAIN"));
uint32 immutable _matchingEngineDomain = uint32(vm.envUint("RELEASE_MATCHING_ENGINE_DOMAIN"));

Expand All @@ -37,7 +39,8 @@ contract DeployTokenRouterContracts is CheckWormholeContracts, Script {
_wormhole,
_cctpTokenMessenger,
_matchingEngineChain,
_matchingEngineAddress.toUniversalAddress(),
_matchingEngineAddress,
_matchingEngineMintRecipient,
_matchingEngineDomain
);

Expand Down
11 changes: 9 additions & 2 deletions evm/forge/scripts/UpgradeMatchingEngine.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,17 @@ import {MatchingEngineImplementation} from

import {CheckWormholeContracts} from "./helpers/CheckWormholeContracts.sol";

import {Utils} from "../../src/shared/Utils.sol";

contract UpgradeMatchingEngine is CheckWormholeContracts, Script {
using Utils for bytes32;

uint16 immutable _chainId = uint16(vm.envUint("RELEASE_CHAIN_ID"));
address immutable _token = vm.envAddress("RELEASE_TOKEN_ADDRESS");
address immutable _wormhole = vm.envAddress("RELEASE_WORMHOLE_ADDRESS");
address immutable _cctpTokenMessenger = vm.envAddress("RELEASE_TOKEN_MESSENGER_ADDRESS");
address immutable _matchingEngineAddress = vm.envAddress("RELEASE_MATCHING_ENGINE_ADDRESS");
bytes32 immutable _matchingEngineAddress =
vm.envBytes32("RELEASE_MATCHING_ENGINE_MINT_RECIPIENT");

// Auction parameters.
uint24 immutable _userPenaltyRewardBps = uint24(vm.envUint("RELEASE_USER_REWARD_BPS"));
Expand All @@ -43,7 +48,9 @@ contract UpgradeMatchingEngine is CheckWormholeContracts, Script {
_auctionGracePeriod,
_auctionPenaltyBlocks
);
IMatchingEngine(_matchingEngineAddress).upgradeContract(address(implementation));
IMatchingEngine(_matchingEngineAddress.fromUniversalAddress()).upgradeContract(
address(implementation)
);
}

function run() public {
Expand Down
7 changes: 5 additions & 2 deletions evm/forge/scripts/UpgradeTokenRouter.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ contract UpgradeTokenRouter is CheckWormholeContracts, Script {
address immutable _wormhole = vm.envAddress("RELEASE_WORMHOLE_ADDRESS");
address immutable _cctpTokenMessenger = vm.envAddress("RELEASE_TOKEN_MESSENGER_ADDRESS");
address immutable _ownerAssistantAddress = vm.envAddress("RELEASE_OWNER_ASSISTANT_ADDRESS");
address immutable _matchingEngineAddress = vm.envAddress("RELEASE_MATCHING_ENGINE_ADDRESS");
bytes32 immutable _matchingEngineAddress = vm.envBytes32("RELEASE_MATCHING_ENGINE_ADDRESS");
bytes32 immutable _matchingEngineMintRecipient =
vm.envBytes32("RELEASE_MATCHING_ENGINE_MINT_RECIPIENT");
uint16 immutable _matchingEngineChain = uint16(vm.envUint("RELEASE_MATCHING_ENGINE_CHAIN"));
uint32 immutable _matchingEngineDomain = uint32(vm.envUint("RELEASE_MATCHING_ENGINE_DOMAIN"));

Expand All @@ -37,7 +39,8 @@ contract UpgradeTokenRouter is CheckWormholeContracts, Script {
_wormhole,
_cctpTokenMessenger,
_matchingEngineChain,
_matchingEngineAddress.toUniversalAddress(),
_matchingEngineAddress,
_matchingEngineMintRecipient,
_matchingEngineDomain
);

Expand Down
Loading
Loading