From d2b94072d7e62291c3f95bb801e98adc274bc01b Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 13:53:25 +0100 Subject: [PATCH 01/21] Repo structure refactor This change introduces major codebase layout changes in three areas: * Tilt devnet lives in tilt-devnet/ - all k8s and docker files, scripts, local testing private keys are moved to this directory. * pyth2wormhole becomes pyth-wormhole-attester and is relocated to wormhole-attester/ - This long-needed rename will hopefully eradicate most of the confusing naming around the attester. The Rust client binary becomes pyth-wormhole-attester-client. * Target-chain code lives in target-chain/ - This leaves just the attester, third_party and pythnet-specific things at top-level. Other opportunistic changes: * Fixed rebuild trigger for Dockerfile.wasm These items are a fraction of the necessary structure changes in the repo. --- Dockerfile.prometheus | 3 - Tiltfile | 56 ++++++++---------- ethereum/devnet_mnemonic.txt | 1 - .../rust-toolchain => rust-toolchain | 0 solana/.dockerignore | 2 - .../aptos}/cli/package-lock.json | 0 .../aptos}/cli/package.json | 0 {aptos => target-chains/aptos}/cli/src/cli.ts | 0 .../aptos}/cli/src/commands/aptos.ts | 0 .../aptos}/cli/tsconfig.json | 0 .../aptos}/contracts/Makefile | 0 .../aptos}/contracts/Move.toml | 0 .../sources/batch_price_attestation.move | 0 .../aptos}/contracts/sources/data_source.move | 0 .../aptos}/contracts/sources/deserialize.move | 0 .../aptos}/contracts/sources/error.move | 0 .../aptos}/contracts/sources/event.move | 0 .../sources/governance/contract_upgrade.move | 0 .../sources/governance/governance.move | 0 .../sources/governance/governance_action.move | 0 .../governance/governance_instruction.move | 0 .../sources/governance/set_data_sources.move | 0 .../set_governance_data_source.move | 0 .../governance/set_stale_price_threshold.move | 0 .../sources/governance/set_update_fee.move | 0 .../aptos}/contracts/sources/i64.move | 0 .../aptos}/contracts/sources/price.move | 0 .../aptos}/contracts/sources/price_feed.move | 0 .../contracts/sources/price_identifier.move | 0 .../aptos}/contracts/sources/price_info.move | 0 .../contracts/sources/price_status.move | 0 .../aptos}/contracts/sources/pyth.move | 0 .../aptos}/contracts/sources/set.move | 0 .../aptos}/contracts/sources/state.move | 0 .../aptos}/examples/fetch_btc_price/Move.toml | 0 .../fetch_btc_price/sources/example.move | 0 .../aptos}/examples/mint_nft/.gitignore | 0 .../aptos}/examples/mint_nft/Move.toml | 0 .../aptos}/examples/mint_nft/README.md | 0 .../aptos}/examples/mint_nft/app/.gitignore | 0 .../examples/mint_nft/app/package-lock.json | 0 .../aptos}/examples/mint_nft/app/package.json | 0 .../examples/mint_nft/app/public/favicon.ico | Bin .../examples/mint_nft/app/public/index.html | 0 .../examples/mint_nft/app/public/logo192.png | Bin .../mint_nft/app/public/manifest.json | 0 .../examples/mint_nft/app/public/robots.txt | 0 .../aptos}/examples/mint_nft/app/src/App.css | 0 .../examples/mint_nft/app/src/App.test.tsx | 0 .../aptos}/examples/mint_nft/app/src/App.tsx | 0 .../examples/mint_nft/app/src/index.css | 0 .../examples/mint_nft/app/src/index.tsx | 0 .../aptos}/examples/mint_nft/app/src/logo.svg | 0 .../mint_nft/app/src/react-app-env.d.ts | 0 .../mint_nft/app/src/reportWebVitals.ts | 0 .../examples/mint_nft/app/src/setupTests.ts | 0 .../examples/mint_nft/app/tsconfig.json | 0 .../examples/mint_nft/sources/minting.move | 0 {aptos => target-chains/aptos}/start_node.sh | 0 .../cosmwasm}/.dockerignore | 0 .../cosmwasm}/.gitignore | 0 .../cosmwasm}/Cargo.lock | 0 .../cosmwasm}/Cargo.toml | 0 .../cosmwasm}/Dockerfile.build | 0 .../cosmwasm}/README.md | 0 {cosmwasm => target-chains/cosmwasm}/build.sh | 0 .../cosmwasm}/contracts/README.md | 0 .../cosmwasm}/contracts/pyth/Cargo.toml | 0 .../cosmwasm}/contracts/pyth/src/contract.rs | 3 - .../cosmwasm}/contracts/pyth/src/error.rs | 0 .../contracts/pyth/src/governance.rs | 0 .../cosmwasm}/contracts/pyth/src/lib.rs | 0 .../cosmwasm}/contracts/pyth/src/msg.rs | 22 ++----- .../cosmwasm}/contracts/pyth/src/state.rs | 0 .../cosmwasm}/devnet/Dockerfile | 0 .../cosmwasm}/devnet/config/app.toml | 0 .../cosmwasm}/devnet/config/config.toml | 0 .../cosmwasm}/devnet/config/genesis.json | 0 .../cosmwasm}/devnet/config/node_key.json | 0 .../devnet/config/priv_validator_key.json | 0 .../cosmwasm}/devnet/config/terrad.toml | 0 .../cosmwasm}/devnet/config/wasm.toml | 0 .../cosmwasm}/tools/deploy-pyth-bridge.js | 0 .../cosmwasm}/tools/deploy.js | 0 .../cosmwasm}/tools/deploy.sh | 0 .../cosmwasm}/tools/package-lock.json | 0 .../cosmwasm}/tools/package.json | 0 .../ethereum}/.dockerignore | 0 .../ethereum}/.env.cluster.mainnet | 0 .../ethereum}/.env.cluster.testnet | 0 .../ethereum}/.env.prod.arbitrum | 0 .../ethereum}/.env.prod.arbitrum_testnet | 0 .../ethereum}/.env.prod.aurora | 0 .../ethereum}/.env.prod.aurora_testnet | 0 .../ethereum}/.env.prod.avalanche | 0 .../ethereum}/.env.prod.bnb | 0 .../ethereum}/.env.prod.bnb_testnet | 0 .../ethereum}/.env.prod.celo | 0 .../.env.prod.celo_alfajores_testnet | 0 .../ethereum}/.env.prod.cronos | 0 .../ethereum}/.env.prod.cronos_testnet | 0 .../ethereum}/.env.prod.development | 0 .../ethereum}/.env.prod.ethereum | 0 .../ethereum}/.env.prod.fantom | 0 .../ethereum}/.env.prod.fantom_testnet | 0 .../ethereum}/.env.prod.fuji | 0 .../ethereum}/.env.prod.goerli | 0 .../ethereum}/.env.prod.kcc | 0 .../ethereum}/.env.prod.kcc_testnet | 0 .../ethereum}/.env.prod.mumbai | 0 .../ethereum}/.env.prod.optimism | 0 .../ethereum}/.env.prod.optimism_goerli | 0 .../ethereum}/.env.prod.polygon | 0 .../ethereum}/.env.prod.zksync | 0 .../ethereum}/.env.prod.zksync_testnet | 0 .../ethereum}/.env.template | 0 .../ethereum}/.env.test | 0 .../ethereum}/.gitignore | 0 .../ethereum}/Deploying.md | 0 .../ethereum}/README.md | 0 .../ethereum}/VERIFY.md | 0 .../ethereum}/contracts/Migrations.sol | 0 .../contracts/libraries/external/BytesLib.sol | 0 .../libraries/external/UnsafeBytesLib.sol | 0 .../ethereum}/contracts/pyth/Pyth.sol | 0 .../contracts/pyth/PythDeprecatedStructs.sol | 0 .../ethereum}/contracts/pyth/PythGetters.sol | 0 .../contracts/pyth/PythGovernance.sol | 0 .../pyth/PythGovernanceInstructions.sol | 0 .../contracts/pyth/PythInternalStructs.sol | 0 .../ethereum}/contracts/pyth/PythSetters.sol | 0 .../ethereum}/contracts/pyth/PythState.sol | 0 .../contracts/pyth/PythUpgradable.sol | 0 .../pyth/mock/MockPythProxyUpgrade.sol | 0 .../pyth/mock/MockUpgradeableProxy.sol | 0 .../wormhole-receiver/ReceiverGetters.sol | 0 .../wormhole-receiver/ReceiverGovernance.sol | 0 .../ReceiverGovernanceStructs.sol | 0 .../ReceiverImplementation.sol | 0 .../wormhole-receiver/ReceiverMessages.sol | 0 .../wormhole-receiver/ReceiverSetters.sol | 0 .../wormhole-receiver/ReceiverSetup.sol | 0 .../wormhole-receiver/ReceiverState.sol | 0 .../wormhole-receiver/ReceiverStructs.sol | 0 .../wormhole-receiver/WormholeReceiver.sol | 0 .../ethereum}/contracts/wormhole/Getters.sol | 0 .../contracts/wormhole/Governance.sol | 0 .../contracts/wormhole/GovernanceStructs.sol | 0 .../contracts/wormhole/Implementation.sol | 0 .../ethereum}/contracts/wormhole/Messages.sol | 0 .../ethereum}/contracts/wormhole/Setters.sol | 0 .../ethereum}/contracts/wormhole/Setup.sol | 0 .../ethereum}/contracts/wormhole/State.sol | 0 .../ethereum}/contracts/wormhole/Structs.sol | 0 .../ethereum}/contracts/wormhole/Wormhole.sol | 0 .../wormhole/interfaces/IWormhole.sol | 0 .../ethereum}/deploy.sh | 0 .../ethereum}/forge-test/GasBenchmark.t.sol | 0 .../ethereum}/forge-test/Pyth.t.sol | 0 .../forge-test/utils/PythTestUtils.t.sol | 0 .../forge-test/utils/RandTestUtils.t.sol | 0 .../forge-test/utils/WormholeTestUtils.t.sol | 0 .../ethereum}/foundry.toml | 0 .../ethereum}/lib/README.md | 0 .../prod-receiver/1_initial_migration.js | 0 .../2_deploy_wormhole_receiver.js | 0 .../migrations/prod-receiver/3_deploy_pyth.js | 0 .../migrations/prod/1_initial_migration.js | 0 .../migrations/prod/2_deploy_pyth.js | 0 .../migrations/test/1_initial_migration.js | 0 .../migrations/test/2_deploy_wormhole.js | 0 .../migrations/test/3_deploy_pyth.js | 0 {ethereum => target-chains/ethereum}/mine.js | 0 .../ethereum}/networks/1.json | 0 .../ethereum}/networks/10.json | 0 .../ethereum}/networks/1313161554.json | 0 .../ethereum}/networks/1313161555.json | 0 .../ethereum}/networks/137.json | 0 .../ethereum}/networks/25.json | 0 .../ethereum}/networks/250.json | 0 .../ethereum}/networks/3.json | 0 .../ethereum}/networks/321.json | 0 .../ethereum}/networks/322.json | 0 .../ethereum}/networks/338.json | 0 .../ethereum}/networks/4002.json | 0 .../ethereum}/networks/420.json | 0 .../ethereum}/networks/42161.json | 0 .../ethereum}/networks/421613.json | 0 .../ethereum}/networks/42220.json | 0 .../ethereum}/networks/43113.json | 0 .../ethereum}/networks/43114.json | 0 .../ethereum}/networks/44787.json | 0 .../ethereum}/networks/5.json | 0 .../ethereum}/networks/56.json | 0 .../ethereum}/networks/80001.json | 0 .../ethereum}/networks/97.json | 0 .../ethereum}/package-lock.json | 0 .../ethereum}/package.json | 0 .../ethereum}/remappings.txt | 0 .../scripts/assertVaaPayloadEquals.js | 0 .../scripts/createLocalnetGovernanceVaa.js | 0 .../ethereum}/scripts/loadEnv.js | 0 .../receiverSubmitGuardianSetUpgrades.js | 0 .../ethereum}/scripts/syncPythState.js | 0 .../ethereum}/test/pyth.js | 0 .../ethereum}/truffle-config.js | 0 .../ethereum}/truffle-verify-constants.patch | 0 third_party/pyth/Dockerfile.p2w-attest | 19 +++--- third_party/pyth/Dockerfile.pyth | 6 +- .../multisig-wh-message-builder/src/index.ts | 4 +- .../pyth/p2w-relay/Dockerfile.pyth_relay | 2 +- third_party/pyth/p2w-relay/package-lock.json | 4 +- third_party/pyth/p2w-relay/src/relay/terra.ts | 30 +++------- third_party/pyth/p2w_autoattest.py | 20 +++---- third_party/pyth/prepare_multisig.py | 2 +- third_party/pyth/pyth_utils.py | 2 +- .../configs/prometheus_config.yaml | 0 .../docker-images/Dockerfile.client | 10 +++- .../docker-images/Dockerfile.cosmwasm | 10 ++-- .../docker-images/Dockerfile.ethereum | 8 +-- .../docker-images/Dockerfile.multisig | 2 +- .../docker-images/Dockerfile.prometheus | 3 + .../docker-images/Dockerfile.solana | 31 +++++----- .../docker-images/Dockerfile.wasm | 10 ++-- tilt-devnet/docker-images/README.md | 5 ++ .../k8s}/check-attestations.yaml | 0 {devnet => tilt-devnet/k8s}/eth-devnet.yaml | 0 {devnet => tilt-devnet/k8s}/multisig.yaml | 0 {devnet => tilt-devnet/k8s}/node.yaml | 0 {devnet => tilt-devnet/k8s}/p2w-attest.yaml | 0 .../k8s}/p2w-evm-relay.yaml | 0 .../k8s}/p2w-terra-relay.yaml | 0 {devnet => tilt-devnet/k8s}/prometheus.yaml | 0 .../k8s}/pyth-evm-watcher.yaml | 0 .../k8s}/pyth-price-service.yaml | 0 {devnet => tilt-devnet/k8s}/pyth.yaml | 0 .../k8s}/solana-devnet.yaml | 4 +- {devnet => tilt-devnet/k8s}/spy.yaml | 0 {devnet => tilt-devnet/k8s}/terra-devnet.yaml | 0 .../scripts/solana-devnet-setup.sh | 2 +- tilt-devnet/secrets/README.md | 3 + .../secrets/solana}/p2w_owner.json | 0 .../secrets/solana}/pyth_program.json | 0 .../secrets/solana}/pyth_publisher.json | 0 .../secrets/solana}/solana-devnet.json | 0 .../secrets/solana}/squads/create_key.json | 0 .../solana}/squads/external_authority.json | 0 .../secrets/solana}/squads/member_alice.json | 0 .../secrets/solana}/squads/member_bob.json | 0 .../secrets/solana}/squads/member_carol.json | 0 .../Cargo.lock | 10 ++-- .../Cargo.toml | 0 .../client/Cargo.toml | 15 +++-- .../client/src/attestation_cfg.rs | 0 .../client/src/batch_state.rs | 0 .../client/src/cli.rs | 0 .../client/src/config_file.rs | 0 .../client/src/healthcheck.rs | 0 .../client/src/lib.rs | 16 ++--- .../client/src/main.rs | 4 +- .../client/src/message.rs | 0 .../client/src/util.rs | 0 .../client/tests/fixtures/mod.rs | 0 .../client/tests/fixtures/passthrough.rs | 0 .../client/tests/fixtures/pyth.rs | 0 .../client/tests/test_attest.rs | 10 ++-- .../client/tests/test_migrate.rs | 18 +++--- .../client/tests/test_set_is_active.rs | 16 ++--- .../governance/Cargo.toml | 6 +- .../governance/src/cli.rs | 0 .../governance/src/main.rs | 2 +- .../program/Cargo.lock | 0 .../program/Cargo.toml | 8 +-- .../program/src/attest.rs | 0 .../program/src/config.rs | 0 .../program/src/initialize.rs | 0 .../program/src/lib.rs | 0 .../program/src/message.rs | 0 .../program/src/migrate.rs | 0 .../program/src/set_config.rs | 0 .../program/src/set_is_active.rs | 0 281 files changed, 173 insertions(+), 196 deletions(-) delete mode 100644 Dockerfile.prometheus delete mode 100644 ethereum/devnet_mnemonic.txt rename solana/pyth2wormhole/rust-toolchain => rust-toolchain (100%) delete mode 100644 solana/.dockerignore rename {aptos => target-chains/aptos}/cli/package-lock.json (100%) rename {aptos => target-chains/aptos}/cli/package.json (100%) rename {aptos => target-chains/aptos}/cli/src/cli.ts (100%) rename {aptos => target-chains/aptos}/cli/src/commands/aptos.ts (100%) rename {aptos => target-chains/aptos}/cli/tsconfig.json (100%) rename {aptos => target-chains/aptos}/contracts/Makefile (100%) rename {aptos => target-chains/aptos}/contracts/Move.toml (100%) rename {aptos => target-chains/aptos}/contracts/sources/batch_price_attestation.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/data_source.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/deserialize.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/error.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/event.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/contract_upgrade.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/governance.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/governance_action.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/governance_instruction.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/set_data_sources.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/set_governance_data_source.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/set_stale_price_threshold.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/governance/set_update_fee.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/i64.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/price.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/price_feed.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/price_identifier.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/price_info.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/price_status.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/pyth.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/set.move (100%) rename {aptos => target-chains/aptos}/contracts/sources/state.move (100%) rename {aptos => target-chains/aptos}/examples/fetch_btc_price/Move.toml (100%) rename {aptos => target-chains/aptos}/examples/fetch_btc_price/sources/example.move (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/.gitignore (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/Move.toml (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/README.md (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/.gitignore (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/package-lock.json (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/package.json (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/public/favicon.ico (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/public/index.html (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/public/logo192.png (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/public/manifest.json (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/public/robots.txt (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/App.css (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/App.test.tsx (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/App.tsx (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/index.css (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/index.tsx (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/logo.svg (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/react-app-env.d.ts (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/reportWebVitals.ts (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/src/setupTests.ts (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/app/tsconfig.json (100%) rename {aptos => target-chains/aptos}/examples/mint_nft/sources/minting.move (100%) rename {aptos => target-chains/aptos}/start_node.sh (100%) rename {cosmwasm => target-chains/cosmwasm}/.dockerignore (100%) rename {cosmwasm => target-chains/cosmwasm}/.gitignore (100%) rename {cosmwasm => target-chains/cosmwasm}/Cargo.lock (100%) rename {cosmwasm => target-chains/cosmwasm}/Cargo.toml (100%) rename {cosmwasm => target-chains/cosmwasm}/Dockerfile.build (100%) rename {cosmwasm => target-chains/cosmwasm}/README.md (100%) rename {cosmwasm => target-chains/cosmwasm}/build.sh (100%) rename {cosmwasm => target-chains/cosmwasm}/contracts/README.md (100%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/Cargo.toml (100%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/src/contract.rs (99%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/src/error.rs (100%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/src/governance.rs (100%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/src/lib.rs (100%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/src/msg.rs (69%) rename {cosmwasm => target-chains/cosmwasm}/contracts/pyth/src/state.rs (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/Dockerfile (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/app.toml (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/config.toml (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/genesis.json (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/node_key.json (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/priv_validator_key.json (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/terrad.toml (100%) rename {cosmwasm => target-chains/cosmwasm}/devnet/config/wasm.toml (100%) rename {cosmwasm => target-chains/cosmwasm}/tools/deploy-pyth-bridge.js (100%) rename {cosmwasm => target-chains/cosmwasm}/tools/deploy.js (100%) rename {cosmwasm => target-chains/cosmwasm}/tools/deploy.sh (100%) rename {cosmwasm => target-chains/cosmwasm}/tools/package-lock.json (100%) rename {cosmwasm => target-chains/cosmwasm}/tools/package.json (100%) rename {ethereum => target-chains/ethereum}/.dockerignore (100%) rename {ethereum => target-chains/ethereum}/.env.cluster.mainnet (100%) rename {ethereum => target-chains/ethereum}/.env.cluster.testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.arbitrum (100%) rename {ethereum => target-chains/ethereum}/.env.prod.arbitrum_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.aurora (100%) rename {ethereum => target-chains/ethereum}/.env.prod.aurora_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.avalanche (100%) rename {ethereum => target-chains/ethereum}/.env.prod.bnb (100%) rename {ethereum => target-chains/ethereum}/.env.prod.bnb_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.celo (100%) rename {ethereum => target-chains/ethereum}/.env.prod.celo_alfajores_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.cronos (100%) rename {ethereum => target-chains/ethereum}/.env.prod.cronos_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.development (100%) rename {ethereum => target-chains/ethereum}/.env.prod.ethereum (100%) rename {ethereum => target-chains/ethereum}/.env.prod.fantom (100%) rename {ethereum => target-chains/ethereum}/.env.prod.fantom_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.fuji (100%) rename {ethereum => target-chains/ethereum}/.env.prod.goerli (100%) rename {ethereum => target-chains/ethereum}/.env.prod.kcc (100%) rename {ethereum => target-chains/ethereum}/.env.prod.kcc_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.prod.mumbai (100%) rename {ethereum => target-chains/ethereum}/.env.prod.optimism (100%) rename {ethereum => target-chains/ethereum}/.env.prod.optimism_goerli (100%) rename {ethereum => target-chains/ethereum}/.env.prod.polygon (100%) rename {ethereum => target-chains/ethereum}/.env.prod.zksync (100%) rename {ethereum => target-chains/ethereum}/.env.prod.zksync_testnet (100%) rename {ethereum => target-chains/ethereum}/.env.template (100%) rename {ethereum => target-chains/ethereum}/.env.test (100%) rename {ethereum => target-chains/ethereum}/.gitignore (100%) rename {ethereum => target-chains/ethereum}/Deploying.md (100%) rename {ethereum => target-chains/ethereum}/README.md (100%) rename {ethereum => target-chains/ethereum}/VERIFY.md (100%) rename {ethereum => target-chains/ethereum}/contracts/Migrations.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/libraries/external/BytesLib.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/libraries/external/UnsafeBytesLib.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/Pyth.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythDeprecatedStructs.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythGetters.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythGovernance.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythGovernanceInstructions.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythInternalStructs.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythSetters.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythState.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/PythUpgradable.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/mock/MockPythProxyUpgrade.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/pyth/mock/MockUpgradeableProxy.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverGetters.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverGovernance.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverGovernanceStructs.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverImplementation.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverMessages.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverSetters.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverSetup.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverState.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/ReceiverStructs.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole-receiver/WormholeReceiver.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Getters.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Governance.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/GovernanceStructs.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Implementation.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Messages.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Setters.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Setup.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/State.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Structs.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/Wormhole.sol (100%) rename {ethereum => target-chains/ethereum}/contracts/wormhole/interfaces/IWormhole.sol (100%) rename {ethereum => target-chains/ethereum}/deploy.sh (100%) rename {ethereum => target-chains/ethereum}/forge-test/GasBenchmark.t.sol (100%) rename {ethereum => target-chains/ethereum}/forge-test/Pyth.t.sol (100%) rename {ethereum => target-chains/ethereum}/forge-test/utils/PythTestUtils.t.sol (100%) rename {ethereum => target-chains/ethereum}/forge-test/utils/RandTestUtils.t.sol (100%) rename {ethereum => target-chains/ethereum}/forge-test/utils/WormholeTestUtils.t.sol (100%) rename {ethereum => target-chains/ethereum}/foundry.toml (100%) rename {ethereum => target-chains/ethereum}/lib/README.md (100%) rename {ethereum => target-chains/ethereum}/migrations/prod-receiver/1_initial_migration.js (100%) rename {ethereum => target-chains/ethereum}/migrations/prod-receiver/2_deploy_wormhole_receiver.js (100%) rename {ethereum => target-chains/ethereum}/migrations/prod-receiver/3_deploy_pyth.js (100%) rename {ethereum => target-chains/ethereum}/migrations/prod/1_initial_migration.js (100%) rename {ethereum => target-chains/ethereum}/migrations/prod/2_deploy_pyth.js (100%) rename {ethereum => target-chains/ethereum}/migrations/test/1_initial_migration.js (100%) rename {ethereum => target-chains/ethereum}/migrations/test/2_deploy_wormhole.js (100%) rename {ethereum => target-chains/ethereum}/migrations/test/3_deploy_pyth.js (100%) rename {ethereum => target-chains/ethereum}/mine.js (100%) rename {ethereum => target-chains/ethereum}/networks/1.json (100%) rename {ethereum => target-chains/ethereum}/networks/10.json (100%) rename {ethereum => target-chains/ethereum}/networks/1313161554.json (100%) rename {ethereum => target-chains/ethereum}/networks/1313161555.json (100%) rename {ethereum => target-chains/ethereum}/networks/137.json (100%) rename {ethereum => target-chains/ethereum}/networks/25.json (100%) rename {ethereum => target-chains/ethereum}/networks/250.json (100%) rename {ethereum => target-chains/ethereum}/networks/3.json (100%) rename {ethereum => target-chains/ethereum}/networks/321.json (100%) rename {ethereum => target-chains/ethereum}/networks/322.json (100%) rename {ethereum => target-chains/ethereum}/networks/338.json (100%) rename {ethereum => target-chains/ethereum}/networks/4002.json (100%) rename {ethereum => target-chains/ethereum}/networks/420.json (100%) rename {ethereum => target-chains/ethereum}/networks/42161.json (100%) rename {ethereum => target-chains/ethereum}/networks/421613.json (100%) rename {ethereum => target-chains/ethereum}/networks/42220.json (100%) rename {ethereum => target-chains/ethereum}/networks/43113.json (100%) rename {ethereum => target-chains/ethereum}/networks/43114.json (100%) rename {ethereum => target-chains/ethereum}/networks/44787.json (100%) rename {ethereum => target-chains/ethereum}/networks/5.json (100%) rename {ethereum => target-chains/ethereum}/networks/56.json (100%) rename {ethereum => target-chains/ethereum}/networks/80001.json (100%) rename {ethereum => target-chains/ethereum}/networks/97.json (100%) rename {ethereum => target-chains/ethereum}/package-lock.json (100%) rename {ethereum => target-chains/ethereum}/package.json (100%) rename {ethereum => target-chains/ethereum}/remappings.txt (100%) rename {ethereum => target-chains/ethereum}/scripts/assertVaaPayloadEquals.js (100%) rename {ethereum => target-chains/ethereum}/scripts/createLocalnetGovernanceVaa.js (100%) rename {ethereum => target-chains/ethereum}/scripts/loadEnv.js (100%) rename {ethereum => target-chains/ethereum}/scripts/receiverSubmitGuardianSetUpgrades.js (100%) rename {ethereum => target-chains/ethereum}/scripts/syncPythState.js (100%) rename {ethereum => target-chains/ethereum}/test/pyth.js (100%) rename {ethereum => target-chains/ethereum}/truffle-config.js (100%) rename {ethereum => target-chains/ethereum}/truffle-verify-constants.patch (100%) rename prometheus_config.yaml => tilt-devnet/configs/prometheus_config.yaml (100%) rename Dockerfile.client => tilt-devnet/docker-images/Dockerfile.client (82%) rename Dockerfile.cosmwasm => tilt-devnet/docker-images/Dockerfile.cosmwasm (84%) rename Dockerfile.ethereum => tilt-devnet/docker-images/Dockerfile.ethereum (85%) rename Dockerfile.multisig => tilt-devnet/docker-images/Dockerfile.multisig (96%) create mode 100644 tilt-devnet/docker-images/Dockerfile.prometheus rename Dockerfile.solana => tilt-devnet/docker-images/Dockerfile.solana (67%) rename Dockerfile.wasm => tilt-devnet/docker-images/Dockerfile.wasm (83%) create mode 100644 tilt-devnet/docker-images/README.md rename {devnet => tilt-devnet/k8s}/check-attestations.yaml (100%) rename {devnet => tilt-devnet/k8s}/eth-devnet.yaml (100%) rename {devnet => tilt-devnet/k8s}/multisig.yaml (100%) rename {devnet => tilt-devnet/k8s}/node.yaml (100%) rename {devnet => tilt-devnet/k8s}/p2w-attest.yaml (100%) rename {devnet => tilt-devnet/k8s}/p2w-evm-relay.yaml (100%) rename {devnet => tilt-devnet/k8s}/p2w-terra-relay.yaml (100%) rename {devnet => tilt-devnet/k8s}/prometheus.yaml (100%) rename {devnet => tilt-devnet/k8s}/pyth-evm-watcher.yaml (100%) rename {devnet => tilt-devnet/k8s}/pyth-price-service.yaml (100%) rename {devnet => tilt-devnet/k8s}/pyth.yaml (100%) rename {devnet => tilt-devnet/k8s}/solana-devnet.yaml (96%) rename {devnet => tilt-devnet/k8s}/spy.yaml (100%) rename {devnet => tilt-devnet/k8s}/terra-devnet.yaml (100%) rename solana/devnet_setup.sh => tilt-devnet/scripts/solana-devnet-setup.sh (93%) create mode 100644 tilt-devnet/secrets/README.md rename {solana/keys => tilt-devnet/secrets/solana}/p2w_owner.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/pyth_program.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/pyth_publisher.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/solana-devnet.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/squads/create_key.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/squads/external_authority.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/squads/member_alice.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/squads/member_bob.json (100%) rename {solana/keys => tilt-devnet/secrets/solana}/squads/member_carol.json (100%) rename {solana/pyth2wormhole => wormhole-attester}/Cargo.lock (99%) rename {solana/pyth2wormhole => wormhole-attester}/Cargo.toml (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/Cargo.toml (73%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/attestation_cfg.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/batch_state.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/cli.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/config_file.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/healthcheck.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/lib.rs (96%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/main.rs (99%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/message.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/src/util.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/tests/fixtures/mod.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/tests/fixtures/passthrough.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/tests/fixtures/pyth.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/client/tests/test_attest.rs (93%) rename {solana/pyth2wormhole => wormhole-attester}/client/tests/test_migrate.rs (90%) rename {solana/pyth2wormhole => wormhole-attester}/client/tests/test_set_is_active.rs (92%) rename {solana/pyth2wormhole => wormhole-attester}/governance/Cargo.toml (58%) rename {solana/pyth2wormhole => wormhole-attester}/governance/src/cli.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/governance/src/main.rs (98%) rename {solana/pyth2wormhole => wormhole-attester}/program/Cargo.lock (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/Cargo.toml (79%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/attest.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/config.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/initialize.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/lib.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/message.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/migrate.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/set_config.rs (100%) rename {solana/pyth2wormhole => wormhole-attester}/program/src/set_is_active.rs (100%) diff --git a/Dockerfile.prometheus b/Dockerfile.prometheus deleted file mode 100644 index 692bf6b952..0000000000 --- a/Dockerfile.prometheus +++ /dev/null @@ -1,3 +0,0 @@ -FROM prom/prometheus - -ADD --chown=nobody:nobody ./prometheus_config.yaml . diff --git a/Tiltfile b/Tiltfile index 97073728c8..dce36cbe22 100644 --- a/Tiltfile +++ b/Tiltfile @@ -66,16 +66,16 @@ def k8s_yaml_with_ns(objects): local_resource( name = "wasm-gen", - cmd = "tilt docker build -- -f Dockerfile.wasm -o type=local,dest=. .", + cmd = "tilt docker build -- -f tilt-devnet/docker-images/Dockerfile.wasm -o type=local,dest=. .", env = {"DOCKER_BUILDKIT": "1"}, + deps = "./wormhole-attester", labels = ["wasm"], allow_parallel=True, trigger_mode = trigger_mode, ) - def build_node_yaml(): - node_yaml = read_yaml_stream("devnet/node.yaml") + node_yaml = read_yaml_stream("tilt-devnet/k8s/node.yaml") for obj in node_yaml: if obj["kind"] == "StatefulSet" and obj["metadata"]["name"] == "guardian": @@ -103,7 +103,7 @@ k8s_resource( ) # spy -k8s_yaml_with_ns("devnet/spy.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/spy.yaml") k8s_resource( "spy", @@ -121,10 +121,7 @@ k8s_resource( docker_build( ref = "bridge-client", context = ".", - only = ["./solana"], - dockerfile = "Dockerfile.client", - # Ignore target folders from local (non-container) development. - ignore = ["./solana/*/target"], + dockerfile = "tilt-devnet/docker-images/Dockerfile.client", ) # solana smart contract @@ -132,12 +129,12 @@ docker_build( docker_build( ref = "solana-contract", context = ".", - dockerfile = "Dockerfile.solana", + dockerfile = "tilt-devnet/docker-images/Dockerfile.solana", ) # solana local devnet -k8s_yaml_with_ns("devnet/solana-devnet.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/solana-devnet.yaml") k8s_resource( "solana-devnet", @@ -155,10 +152,7 @@ k8s_resource( docker_build( ref = "eth-node", context = "./", - dockerfile = "./Dockerfile.ethereum", - - # ignore local node_modules (in case they're present) - ignore = ["./ethereum/node_modules", "./third_party/pyth/xc-governance-sdk-js/node_modules"], + dockerfile = "tilt-devnet/docker-images/Dockerfile.ethereum", # sync external scripts for incremental development # (everything else needs to be restarted from scratch for determinism) @@ -176,7 +170,7 @@ docker_build( context = ".", dockerfile = "third_party/pyth/Dockerfile.pyth", ) -k8s_yaml_with_ns("./devnet/pyth.yaml") +k8s_yaml_with_ns("./tilt-devnet/k8s/pyth.yaml") k8s_resource( "pyth", @@ -189,12 +183,10 @@ k8s_resource( docker_build( ref = "p2w-attest", context = ".", - only = ["./solana", "./third_party", "./pythnet"], dockerfile = "./third_party/pyth/Dockerfile.p2w-attest", - ignore = ["./solana/*/target"], ) -k8s_yaml_with_ns("devnet/p2w-attest.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/p2w-attest.yaml") k8s_resource( "p2w-attest", resource_deps = ["solana-devnet", "pyth", "guardian"], @@ -211,7 +203,7 @@ docker_build( dockerfile = "./third_party/pyth/Dockerfile.check-attestations", ) -k8s_yaml_with_ns("devnet/check-attestations.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/check-attestations.yaml") k8s_resource( "check-attestations", resource_deps = ["pyth-price-service", "pyth", "p2w-attest"], @@ -225,7 +217,7 @@ docker_build( context = ".", dockerfile = "third_party/pyth/p2w-relay/Dockerfile.pyth_relay", ) -k8s_yaml_with_ns("devnet/p2w-terra-relay.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/p2w-terra-relay.yaml") k8s_resource( "p2w-terra-relay", resource_deps = ["pyth", "p2w-attest", "spy", "terra-terrad", "wasm-gen"], @@ -235,7 +227,7 @@ k8s_resource( labels = ["pyth"] ) -k8s_yaml_with_ns("devnet/p2w-evm-relay.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/p2w-evm-relay.yaml") k8s_resource( "p2w-evm-relay", resource_deps = ["pyth", "p2w-attest", "spy", "eth-devnet", "wasm-gen"], @@ -251,7 +243,7 @@ docker_build( context = ".", dockerfile = "third_party/pyth/price-service/Dockerfile.price_service", ) -k8s_yaml_with_ns("devnet/pyth-price-service.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/pyth-price-service.yaml") k8s_resource( "pyth-price-service", resource_deps = ["pyth", "p2w-attest", "spy", "eth-devnet", "wasm-gen"], @@ -268,7 +260,7 @@ docker_build( context = "third_party/pyth/evm-watcher/", dockerfile = "third_party/pyth/evm-watcher/Dockerfile", ) -k8s_yaml_with_ns("devnet/pyth-evm-watcher.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/pyth-evm-watcher.yaml") k8s_resource( "pyth-evm-watcher", resource_deps = ["eth-devnet"], @@ -276,7 +268,7 @@ k8s_resource( ) -k8s_yaml_with_ns("devnet/eth-devnet.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/eth-devnet.yaml") k8s_resource( "eth-devnet", @@ -301,17 +293,17 @@ k8s_resource( docker_build( ref = "terra-image", - context = "./cosmwasm/devnet", - dockerfile = "cosmwasm/devnet/Dockerfile", + context = "./target-chains/cosmwasm/devnet", + dockerfile = "./target-chains/cosmwasm/devnet/Dockerfile", ) docker_build( ref = "cosmwasm-contracts", context = ".", - dockerfile = "Dockerfile.cosmwasm", + dockerfile = "tilt-devnet/docker-images/Dockerfile.cosmwasm", ) -k8s_yaml_with_ns("devnet/terra-devnet.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/terra-devnet.yaml") k8s_resource( "terra-terrad", @@ -340,10 +332,10 @@ k8s_resource( docker_build( ref = "prometheus", context = ".", - dockerfile = "Dockerfile.prometheus", + dockerfile = "tilt-devnet/docker-images/Dockerfile.prometheus", ) -k8s_yaml_with_ns("devnet/prometheus.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/prometheus.yaml") k8s_resource( "prometheus", @@ -355,10 +347,10 @@ k8s_resource( docker_build( ref = "multisig", context = ".", - dockerfile = "Dockerfile.multisig", + dockerfile = "tilt-devnet/docker-images/Dockerfile.multisig", ) -k8s_yaml_with_ns("devnet/multisig.yaml") +k8s_yaml_with_ns("tilt-devnet/k8s/multisig.yaml") k8s_resource( "multisig", diff --git a/ethereum/devnet_mnemonic.txt b/ethereum/devnet_mnemonic.txt deleted file mode 100644 index 3390092c77..0000000000 --- a/ethereum/devnet_mnemonic.txt +++ /dev/null @@ -1 +0,0 @@ -myth like bonus scare over problem client lizard pioneer submit female collect diff --git a/solana/pyth2wormhole/rust-toolchain b/rust-toolchain similarity index 100% rename from solana/pyth2wormhole/rust-toolchain rename to rust-toolchain diff --git a/solana/.dockerignore b/solana/.dockerignore deleted file mode 100644 index 71574ea53e..0000000000 --- a/solana/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -bin -**/target diff --git a/aptos/cli/package-lock.json b/target-chains/aptos/cli/package-lock.json similarity index 100% rename from aptos/cli/package-lock.json rename to target-chains/aptos/cli/package-lock.json diff --git a/aptos/cli/package.json b/target-chains/aptos/cli/package.json similarity index 100% rename from aptos/cli/package.json rename to target-chains/aptos/cli/package.json diff --git a/aptos/cli/src/cli.ts b/target-chains/aptos/cli/src/cli.ts similarity index 100% rename from aptos/cli/src/cli.ts rename to target-chains/aptos/cli/src/cli.ts diff --git a/aptos/cli/src/commands/aptos.ts b/target-chains/aptos/cli/src/commands/aptos.ts similarity index 100% rename from aptos/cli/src/commands/aptos.ts rename to target-chains/aptos/cli/src/commands/aptos.ts diff --git a/aptos/cli/tsconfig.json b/target-chains/aptos/cli/tsconfig.json similarity index 100% rename from aptos/cli/tsconfig.json rename to target-chains/aptos/cli/tsconfig.json diff --git a/aptos/contracts/Makefile b/target-chains/aptos/contracts/Makefile similarity index 100% rename from aptos/contracts/Makefile rename to target-chains/aptos/contracts/Makefile diff --git a/aptos/contracts/Move.toml b/target-chains/aptos/contracts/Move.toml similarity index 100% rename from aptos/contracts/Move.toml rename to target-chains/aptos/contracts/Move.toml diff --git a/aptos/contracts/sources/batch_price_attestation.move b/target-chains/aptos/contracts/sources/batch_price_attestation.move similarity index 100% rename from aptos/contracts/sources/batch_price_attestation.move rename to target-chains/aptos/contracts/sources/batch_price_attestation.move diff --git a/aptos/contracts/sources/data_source.move b/target-chains/aptos/contracts/sources/data_source.move similarity index 100% rename from aptos/contracts/sources/data_source.move rename to target-chains/aptos/contracts/sources/data_source.move diff --git a/aptos/contracts/sources/deserialize.move b/target-chains/aptos/contracts/sources/deserialize.move similarity index 100% rename from aptos/contracts/sources/deserialize.move rename to target-chains/aptos/contracts/sources/deserialize.move diff --git a/aptos/contracts/sources/error.move b/target-chains/aptos/contracts/sources/error.move similarity index 100% rename from aptos/contracts/sources/error.move rename to target-chains/aptos/contracts/sources/error.move diff --git a/aptos/contracts/sources/event.move b/target-chains/aptos/contracts/sources/event.move similarity index 100% rename from aptos/contracts/sources/event.move rename to target-chains/aptos/contracts/sources/event.move diff --git a/aptos/contracts/sources/governance/contract_upgrade.move b/target-chains/aptos/contracts/sources/governance/contract_upgrade.move similarity index 100% rename from aptos/contracts/sources/governance/contract_upgrade.move rename to target-chains/aptos/contracts/sources/governance/contract_upgrade.move diff --git a/aptos/contracts/sources/governance/governance.move b/target-chains/aptos/contracts/sources/governance/governance.move similarity index 100% rename from aptos/contracts/sources/governance/governance.move rename to target-chains/aptos/contracts/sources/governance/governance.move diff --git a/aptos/contracts/sources/governance/governance_action.move b/target-chains/aptos/contracts/sources/governance/governance_action.move similarity index 100% rename from aptos/contracts/sources/governance/governance_action.move rename to target-chains/aptos/contracts/sources/governance/governance_action.move diff --git a/aptos/contracts/sources/governance/governance_instruction.move b/target-chains/aptos/contracts/sources/governance/governance_instruction.move similarity index 100% rename from aptos/contracts/sources/governance/governance_instruction.move rename to target-chains/aptos/contracts/sources/governance/governance_instruction.move diff --git a/aptos/contracts/sources/governance/set_data_sources.move b/target-chains/aptos/contracts/sources/governance/set_data_sources.move similarity index 100% rename from aptos/contracts/sources/governance/set_data_sources.move rename to target-chains/aptos/contracts/sources/governance/set_data_sources.move diff --git a/aptos/contracts/sources/governance/set_governance_data_source.move b/target-chains/aptos/contracts/sources/governance/set_governance_data_source.move similarity index 100% rename from aptos/contracts/sources/governance/set_governance_data_source.move rename to target-chains/aptos/contracts/sources/governance/set_governance_data_source.move diff --git a/aptos/contracts/sources/governance/set_stale_price_threshold.move b/target-chains/aptos/contracts/sources/governance/set_stale_price_threshold.move similarity index 100% rename from aptos/contracts/sources/governance/set_stale_price_threshold.move rename to target-chains/aptos/contracts/sources/governance/set_stale_price_threshold.move diff --git a/aptos/contracts/sources/governance/set_update_fee.move b/target-chains/aptos/contracts/sources/governance/set_update_fee.move similarity index 100% rename from aptos/contracts/sources/governance/set_update_fee.move rename to target-chains/aptos/contracts/sources/governance/set_update_fee.move diff --git a/aptos/contracts/sources/i64.move b/target-chains/aptos/contracts/sources/i64.move similarity index 100% rename from aptos/contracts/sources/i64.move rename to target-chains/aptos/contracts/sources/i64.move diff --git a/aptos/contracts/sources/price.move b/target-chains/aptos/contracts/sources/price.move similarity index 100% rename from aptos/contracts/sources/price.move rename to target-chains/aptos/contracts/sources/price.move diff --git a/aptos/contracts/sources/price_feed.move b/target-chains/aptos/contracts/sources/price_feed.move similarity index 100% rename from aptos/contracts/sources/price_feed.move rename to target-chains/aptos/contracts/sources/price_feed.move diff --git a/aptos/contracts/sources/price_identifier.move b/target-chains/aptos/contracts/sources/price_identifier.move similarity index 100% rename from aptos/contracts/sources/price_identifier.move rename to target-chains/aptos/contracts/sources/price_identifier.move diff --git a/aptos/contracts/sources/price_info.move b/target-chains/aptos/contracts/sources/price_info.move similarity index 100% rename from aptos/contracts/sources/price_info.move rename to target-chains/aptos/contracts/sources/price_info.move diff --git a/aptos/contracts/sources/price_status.move b/target-chains/aptos/contracts/sources/price_status.move similarity index 100% rename from aptos/contracts/sources/price_status.move rename to target-chains/aptos/contracts/sources/price_status.move diff --git a/aptos/contracts/sources/pyth.move b/target-chains/aptos/contracts/sources/pyth.move similarity index 100% rename from aptos/contracts/sources/pyth.move rename to target-chains/aptos/contracts/sources/pyth.move diff --git a/aptos/contracts/sources/set.move b/target-chains/aptos/contracts/sources/set.move similarity index 100% rename from aptos/contracts/sources/set.move rename to target-chains/aptos/contracts/sources/set.move diff --git a/aptos/contracts/sources/state.move b/target-chains/aptos/contracts/sources/state.move similarity index 100% rename from aptos/contracts/sources/state.move rename to target-chains/aptos/contracts/sources/state.move diff --git a/aptos/examples/fetch_btc_price/Move.toml b/target-chains/aptos/examples/fetch_btc_price/Move.toml similarity index 100% rename from aptos/examples/fetch_btc_price/Move.toml rename to target-chains/aptos/examples/fetch_btc_price/Move.toml diff --git a/aptos/examples/fetch_btc_price/sources/example.move b/target-chains/aptos/examples/fetch_btc_price/sources/example.move similarity index 100% rename from aptos/examples/fetch_btc_price/sources/example.move rename to target-chains/aptos/examples/fetch_btc_price/sources/example.move diff --git a/aptos/examples/mint_nft/.gitignore b/target-chains/aptos/examples/mint_nft/.gitignore similarity index 100% rename from aptos/examples/mint_nft/.gitignore rename to target-chains/aptos/examples/mint_nft/.gitignore diff --git a/aptos/examples/mint_nft/Move.toml b/target-chains/aptos/examples/mint_nft/Move.toml similarity index 100% rename from aptos/examples/mint_nft/Move.toml rename to target-chains/aptos/examples/mint_nft/Move.toml diff --git a/aptos/examples/mint_nft/README.md b/target-chains/aptos/examples/mint_nft/README.md similarity index 100% rename from aptos/examples/mint_nft/README.md rename to target-chains/aptos/examples/mint_nft/README.md diff --git a/aptos/examples/mint_nft/app/.gitignore b/target-chains/aptos/examples/mint_nft/app/.gitignore similarity index 100% rename from aptos/examples/mint_nft/app/.gitignore rename to target-chains/aptos/examples/mint_nft/app/.gitignore diff --git a/aptos/examples/mint_nft/app/package-lock.json b/target-chains/aptos/examples/mint_nft/app/package-lock.json similarity index 100% rename from aptos/examples/mint_nft/app/package-lock.json rename to target-chains/aptos/examples/mint_nft/app/package-lock.json diff --git a/aptos/examples/mint_nft/app/package.json b/target-chains/aptos/examples/mint_nft/app/package.json similarity index 100% rename from aptos/examples/mint_nft/app/package.json rename to target-chains/aptos/examples/mint_nft/app/package.json diff --git a/aptos/examples/mint_nft/app/public/favicon.ico b/target-chains/aptos/examples/mint_nft/app/public/favicon.ico similarity index 100% rename from aptos/examples/mint_nft/app/public/favicon.ico rename to target-chains/aptos/examples/mint_nft/app/public/favicon.ico diff --git a/aptos/examples/mint_nft/app/public/index.html b/target-chains/aptos/examples/mint_nft/app/public/index.html similarity index 100% rename from aptos/examples/mint_nft/app/public/index.html rename to target-chains/aptos/examples/mint_nft/app/public/index.html diff --git a/aptos/examples/mint_nft/app/public/logo192.png b/target-chains/aptos/examples/mint_nft/app/public/logo192.png similarity index 100% rename from aptos/examples/mint_nft/app/public/logo192.png rename to target-chains/aptos/examples/mint_nft/app/public/logo192.png diff --git a/aptos/examples/mint_nft/app/public/manifest.json b/target-chains/aptos/examples/mint_nft/app/public/manifest.json similarity index 100% rename from aptos/examples/mint_nft/app/public/manifest.json rename to target-chains/aptos/examples/mint_nft/app/public/manifest.json diff --git a/aptos/examples/mint_nft/app/public/robots.txt b/target-chains/aptos/examples/mint_nft/app/public/robots.txt similarity index 100% rename from aptos/examples/mint_nft/app/public/robots.txt rename to target-chains/aptos/examples/mint_nft/app/public/robots.txt diff --git a/aptos/examples/mint_nft/app/src/App.css b/target-chains/aptos/examples/mint_nft/app/src/App.css similarity index 100% rename from aptos/examples/mint_nft/app/src/App.css rename to target-chains/aptos/examples/mint_nft/app/src/App.css diff --git a/aptos/examples/mint_nft/app/src/App.test.tsx b/target-chains/aptos/examples/mint_nft/app/src/App.test.tsx similarity index 100% rename from aptos/examples/mint_nft/app/src/App.test.tsx rename to target-chains/aptos/examples/mint_nft/app/src/App.test.tsx diff --git a/aptos/examples/mint_nft/app/src/App.tsx b/target-chains/aptos/examples/mint_nft/app/src/App.tsx similarity index 100% rename from aptos/examples/mint_nft/app/src/App.tsx rename to target-chains/aptos/examples/mint_nft/app/src/App.tsx diff --git a/aptos/examples/mint_nft/app/src/index.css b/target-chains/aptos/examples/mint_nft/app/src/index.css similarity index 100% rename from aptos/examples/mint_nft/app/src/index.css rename to target-chains/aptos/examples/mint_nft/app/src/index.css diff --git a/aptos/examples/mint_nft/app/src/index.tsx b/target-chains/aptos/examples/mint_nft/app/src/index.tsx similarity index 100% rename from aptos/examples/mint_nft/app/src/index.tsx rename to target-chains/aptos/examples/mint_nft/app/src/index.tsx diff --git a/aptos/examples/mint_nft/app/src/logo.svg b/target-chains/aptos/examples/mint_nft/app/src/logo.svg similarity index 100% rename from aptos/examples/mint_nft/app/src/logo.svg rename to target-chains/aptos/examples/mint_nft/app/src/logo.svg diff --git a/aptos/examples/mint_nft/app/src/react-app-env.d.ts b/target-chains/aptos/examples/mint_nft/app/src/react-app-env.d.ts similarity index 100% rename from aptos/examples/mint_nft/app/src/react-app-env.d.ts rename to target-chains/aptos/examples/mint_nft/app/src/react-app-env.d.ts diff --git a/aptos/examples/mint_nft/app/src/reportWebVitals.ts b/target-chains/aptos/examples/mint_nft/app/src/reportWebVitals.ts similarity index 100% rename from aptos/examples/mint_nft/app/src/reportWebVitals.ts rename to target-chains/aptos/examples/mint_nft/app/src/reportWebVitals.ts diff --git a/aptos/examples/mint_nft/app/src/setupTests.ts b/target-chains/aptos/examples/mint_nft/app/src/setupTests.ts similarity index 100% rename from aptos/examples/mint_nft/app/src/setupTests.ts rename to target-chains/aptos/examples/mint_nft/app/src/setupTests.ts diff --git a/aptos/examples/mint_nft/app/tsconfig.json b/target-chains/aptos/examples/mint_nft/app/tsconfig.json similarity index 100% rename from aptos/examples/mint_nft/app/tsconfig.json rename to target-chains/aptos/examples/mint_nft/app/tsconfig.json diff --git a/aptos/examples/mint_nft/sources/minting.move b/target-chains/aptos/examples/mint_nft/sources/minting.move similarity index 100% rename from aptos/examples/mint_nft/sources/minting.move rename to target-chains/aptos/examples/mint_nft/sources/minting.move diff --git a/aptos/start_node.sh b/target-chains/aptos/start_node.sh similarity index 100% rename from aptos/start_node.sh rename to target-chains/aptos/start_node.sh diff --git a/cosmwasm/.dockerignore b/target-chains/cosmwasm/.dockerignore similarity index 100% rename from cosmwasm/.dockerignore rename to target-chains/cosmwasm/.dockerignore diff --git a/cosmwasm/.gitignore b/target-chains/cosmwasm/.gitignore similarity index 100% rename from cosmwasm/.gitignore rename to target-chains/cosmwasm/.gitignore diff --git a/cosmwasm/Cargo.lock b/target-chains/cosmwasm/Cargo.lock similarity index 100% rename from cosmwasm/Cargo.lock rename to target-chains/cosmwasm/Cargo.lock diff --git a/cosmwasm/Cargo.toml b/target-chains/cosmwasm/Cargo.toml similarity index 100% rename from cosmwasm/Cargo.toml rename to target-chains/cosmwasm/Cargo.toml diff --git a/cosmwasm/Dockerfile.build b/target-chains/cosmwasm/Dockerfile.build similarity index 100% rename from cosmwasm/Dockerfile.build rename to target-chains/cosmwasm/Dockerfile.build diff --git a/cosmwasm/README.md b/target-chains/cosmwasm/README.md similarity index 100% rename from cosmwasm/README.md rename to target-chains/cosmwasm/README.md diff --git a/cosmwasm/build.sh b/target-chains/cosmwasm/build.sh similarity index 100% rename from cosmwasm/build.sh rename to target-chains/cosmwasm/build.sh diff --git a/cosmwasm/contracts/README.md b/target-chains/cosmwasm/contracts/README.md similarity index 100% rename from cosmwasm/contracts/README.md rename to target-chains/cosmwasm/contracts/README.md diff --git a/cosmwasm/contracts/pyth/Cargo.toml b/target-chains/cosmwasm/contracts/pyth/Cargo.toml similarity index 100% rename from cosmwasm/contracts/pyth/Cargo.toml rename to target-chains/cosmwasm/contracts/pyth/Cargo.toml diff --git a/cosmwasm/contracts/pyth/src/contract.rs b/target-chains/cosmwasm/contracts/pyth/src/contract.rs similarity index 99% rename from cosmwasm/contracts/pyth/src/contract.rs rename to target-chains/cosmwasm/contracts/pyth/src/contract.rs index 2c30ed9490..afe06c52cb 100644 --- a/cosmwasm/contracts/pyth/src/contract.rs +++ b/target-chains/cosmwasm/contracts/pyth/src/contract.rs @@ -30,7 +30,6 @@ use { }, }, cosmwasm_std::{ - coin, entry_point, has_coins, to_binary, @@ -42,8 +41,6 @@ use { DepsMut, Env, MessageInfo, - OverflowError, - OverflowOperation, QueryRequest, Response, StdResult, diff --git a/cosmwasm/contracts/pyth/src/error.rs b/target-chains/cosmwasm/contracts/pyth/src/error.rs similarity index 100% rename from cosmwasm/contracts/pyth/src/error.rs rename to target-chains/cosmwasm/contracts/pyth/src/error.rs diff --git a/cosmwasm/contracts/pyth/src/governance.rs b/target-chains/cosmwasm/contracts/pyth/src/governance.rs similarity index 100% rename from cosmwasm/contracts/pyth/src/governance.rs rename to target-chains/cosmwasm/contracts/pyth/src/governance.rs diff --git a/cosmwasm/contracts/pyth/src/lib.rs b/target-chains/cosmwasm/contracts/pyth/src/lib.rs similarity index 100% rename from cosmwasm/contracts/pyth/src/lib.rs rename to target-chains/cosmwasm/contracts/pyth/src/lib.rs diff --git a/cosmwasm/contracts/pyth/src/msg.rs b/target-chains/cosmwasm/contracts/pyth/src/msg.rs similarity index 69% rename from cosmwasm/contracts/pyth/src/msg.rs rename to target-chains/cosmwasm/contracts/pyth/src/msg.rs index 90dfb0020f..bd8ddc84d6 100644 --- a/cosmwasm/contracts/pyth/src/msg.rs +++ b/target-chains/cosmwasm/contracts/pyth/src/msg.rs @@ -4,10 +4,6 @@ use { Binary, Coin, }, - pyth_sdk_cw::{ - PriceFeed, - PriceIdentifier, - }, schemars::JsonSchema, serde::{ Deserialize, @@ -45,17 +41,7 @@ pub enum ExecuteMsg { #[serde(rename_all = "snake_case")] pub struct MigrateMsg {} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - PriceFeed { id: PriceIdentifier }, - GetUpdateFee { vaas: Vec }, - GetValidTimePeriod, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub struct PriceFeedResponse { - pub price_feed: PriceFeed, -} +pub use pyth_sdk_cw::{ + PriceFeedResponse, + QueryMsg, +}; diff --git a/cosmwasm/contracts/pyth/src/state.rs b/target-chains/cosmwasm/contracts/pyth/src/state.rs similarity index 100% rename from cosmwasm/contracts/pyth/src/state.rs rename to target-chains/cosmwasm/contracts/pyth/src/state.rs diff --git a/cosmwasm/devnet/Dockerfile b/target-chains/cosmwasm/devnet/Dockerfile similarity index 100% rename from cosmwasm/devnet/Dockerfile rename to target-chains/cosmwasm/devnet/Dockerfile diff --git a/cosmwasm/devnet/config/app.toml b/target-chains/cosmwasm/devnet/config/app.toml similarity index 100% rename from cosmwasm/devnet/config/app.toml rename to target-chains/cosmwasm/devnet/config/app.toml diff --git a/cosmwasm/devnet/config/config.toml b/target-chains/cosmwasm/devnet/config/config.toml similarity index 100% rename from cosmwasm/devnet/config/config.toml rename to target-chains/cosmwasm/devnet/config/config.toml diff --git a/cosmwasm/devnet/config/genesis.json b/target-chains/cosmwasm/devnet/config/genesis.json similarity index 100% rename from cosmwasm/devnet/config/genesis.json rename to target-chains/cosmwasm/devnet/config/genesis.json diff --git a/cosmwasm/devnet/config/node_key.json b/target-chains/cosmwasm/devnet/config/node_key.json similarity index 100% rename from cosmwasm/devnet/config/node_key.json rename to target-chains/cosmwasm/devnet/config/node_key.json diff --git a/cosmwasm/devnet/config/priv_validator_key.json b/target-chains/cosmwasm/devnet/config/priv_validator_key.json similarity index 100% rename from cosmwasm/devnet/config/priv_validator_key.json rename to target-chains/cosmwasm/devnet/config/priv_validator_key.json diff --git a/cosmwasm/devnet/config/terrad.toml b/target-chains/cosmwasm/devnet/config/terrad.toml similarity index 100% rename from cosmwasm/devnet/config/terrad.toml rename to target-chains/cosmwasm/devnet/config/terrad.toml diff --git a/cosmwasm/devnet/config/wasm.toml b/target-chains/cosmwasm/devnet/config/wasm.toml similarity index 100% rename from cosmwasm/devnet/config/wasm.toml rename to target-chains/cosmwasm/devnet/config/wasm.toml diff --git a/cosmwasm/tools/deploy-pyth-bridge.js b/target-chains/cosmwasm/tools/deploy-pyth-bridge.js similarity index 100% rename from cosmwasm/tools/deploy-pyth-bridge.js rename to target-chains/cosmwasm/tools/deploy-pyth-bridge.js diff --git a/cosmwasm/tools/deploy.js b/target-chains/cosmwasm/tools/deploy.js similarity index 100% rename from cosmwasm/tools/deploy.js rename to target-chains/cosmwasm/tools/deploy.js diff --git a/cosmwasm/tools/deploy.sh b/target-chains/cosmwasm/tools/deploy.sh similarity index 100% rename from cosmwasm/tools/deploy.sh rename to target-chains/cosmwasm/tools/deploy.sh diff --git a/cosmwasm/tools/package-lock.json b/target-chains/cosmwasm/tools/package-lock.json similarity index 100% rename from cosmwasm/tools/package-lock.json rename to target-chains/cosmwasm/tools/package-lock.json diff --git a/cosmwasm/tools/package.json b/target-chains/cosmwasm/tools/package.json similarity index 100% rename from cosmwasm/tools/package.json rename to target-chains/cosmwasm/tools/package.json diff --git a/ethereum/.dockerignore b/target-chains/ethereum/.dockerignore similarity index 100% rename from ethereum/.dockerignore rename to target-chains/ethereum/.dockerignore diff --git a/ethereum/.env.cluster.mainnet b/target-chains/ethereum/.env.cluster.mainnet similarity index 100% rename from ethereum/.env.cluster.mainnet rename to target-chains/ethereum/.env.cluster.mainnet diff --git a/ethereum/.env.cluster.testnet b/target-chains/ethereum/.env.cluster.testnet similarity index 100% rename from ethereum/.env.cluster.testnet rename to target-chains/ethereum/.env.cluster.testnet diff --git a/ethereum/.env.prod.arbitrum b/target-chains/ethereum/.env.prod.arbitrum similarity index 100% rename from ethereum/.env.prod.arbitrum rename to target-chains/ethereum/.env.prod.arbitrum diff --git a/ethereum/.env.prod.arbitrum_testnet b/target-chains/ethereum/.env.prod.arbitrum_testnet similarity index 100% rename from ethereum/.env.prod.arbitrum_testnet rename to target-chains/ethereum/.env.prod.arbitrum_testnet diff --git a/ethereum/.env.prod.aurora b/target-chains/ethereum/.env.prod.aurora similarity index 100% rename from ethereum/.env.prod.aurora rename to target-chains/ethereum/.env.prod.aurora diff --git a/ethereum/.env.prod.aurora_testnet b/target-chains/ethereum/.env.prod.aurora_testnet similarity index 100% rename from ethereum/.env.prod.aurora_testnet rename to target-chains/ethereum/.env.prod.aurora_testnet diff --git a/ethereum/.env.prod.avalanche b/target-chains/ethereum/.env.prod.avalanche similarity index 100% rename from ethereum/.env.prod.avalanche rename to target-chains/ethereum/.env.prod.avalanche diff --git a/ethereum/.env.prod.bnb b/target-chains/ethereum/.env.prod.bnb similarity index 100% rename from ethereum/.env.prod.bnb rename to target-chains/ethereum/.env.prod.bnb diff --git a/ethereum/.env.prod.bnb_testnet b/target-chains/ethereum/.env.prod.bnb_testnet similarity index 100% rename from ethereum/.env.prod.bnb_testnet rename to target-chains/ethereum/.env.prod.bnb_testnet diff --git a/ethereum/.env.prod.celo b/target-chains/ethereum/.env.prod.celo similarity index 100% rename from ethereum/.env.prod.celo rename to target-chains/ethereum/.env.prod.celo diff --git a/ethereum/.env.prod.celo_alfajores_testnet b/target-chains/ethereum/.env.prod.celo_alfajores_testnet similarity index 100% rename from ethereum/.env.prod.celo_alfajores_testnet rename to target-chains/ethereum/.env.prod.celo_alfajores_testnet diff --git a/ethereum/.env.prod.cronos b/target-chains/ethereum/.env.prod.cronos similarity index 100% rename from ethereum/.env.prod.cronos rename to target-chains/ethereum/.env.prod.cronos diff --git a/ethereum/.env.prod.cronos_testnet b/target-chains/ethereum/.env.prod.cronos_testnet similarity index 100% rename from ethereum/.env.prod.cronos_testnet rename to target-chains/ethereum/.env.prod.cronos_testnet diff --git a/ethereum/.env.prod.development b/target-chains/ethereum/.env.prod.development similarity index 100% rename from ethereum/.env.prod.development rename to target-chains/ethereum/.env.prod.development diff --git a/ethereum/.env.prod.ethereum b/target-chains/ethereum/.env.prod.ethereum similarity index 100% rename from ethereum/.env.prod.ethereum rename to target-chains/ethereum/.env.prod.ethereum diff --git a/ethereum/.env.prod.fantom b/target-chains/ethereum/.env.prod.fantom similarity index 100% rename from ethereum/.env.prod.fantom rename to target-chains/ethereum/.env.prod.fantom diff --git a/ethereum/.env.prod.fantom_testnet b/target-chains/ethereum/.env.prod.fantom_testnet similarity index 100% rename from ethereum/.env.prod.fantom_testnet rename to target-chains/ethereum/.env.prod.fantom_testnet diff --git a/ethereum/.env.prod.fuji b/target-chains/ethereum/.env.prod.fuji similarity index 100% rename from ethereum/.env.prod.fuji rename to target-chains/ethereum/.env.prod.fuji diff --git a/ethereum/.env.prod.goerli b/target-chains/ethereum/.env.prod.goerli similarity index 100% rename from ethereum/.env.prod.goerli rename to target-chains/ethereum/.env.prod.goerli diff --git a/ethereum/.env.prod.kcc b/target-chains/ethereum/.env.prod.kcc similarity index 100% rename from ethereum/.env.prod.kcc rename to target-chains/ethereum/.env.prod.kcc diff --git a/ethereum/.env.prod.kcc_testnet b/target-chains/ethereum/.env.prod.kcc_testnet similarity index 100% rename from ethereum/.env.prod.kcc_testnet rename to target-chains/ethereum/.env.prod.kcc_testnet diff --git a/ethereum/.env.prod.mumbai b/target-chains/ethereum/.env.prod.mumbai similarity index 100% rename from ethereum/.env.prod.mumbai rename to target-chains/ethereum/.env.prod.mumbai diff --git a/ethereum/.env.prod.optimism b/target-chains/ethereum/.env.prod.optimism similarity index 100% rename from ethereum/.env.prod.optimism rename to target-chains/ethereum/.env.prod.optimism diff --git a/ethereum/.env.prod.optimism_goerli b/target-chains/ethereum/.env.prod.optimism_goerli similarity index 100% rename from ethereum/.env.prod.optimism_goerli rename to target-chains/ethereum/.env.prod.optimism_goerli diff --git a/ethereum/.env.prod.polygon b/target-chains/ethereum/.env.prod.polygon similarity index 100% rename from ethereum/.env.prod.polygon rename to target-chains/ethereum/.env.prod.polygon diff --git a/ethereum/.env.prod.zksync b/target-chains/ethereum/.env.prod.zksync similarity index 100% rename from ethereum/.env.prod.zksync rename to target-chains/ethereum/.env.prod.zksync diff --git a/ethereum/.env.prod.zksync_testnet b/target-chains/ethereum/.env.prod.zksync_testnet similarity index 100% rename from ethereum/.env.prod.zksync_testnet rename to target-chains/ethereum/.env.prod.zksync_testnet diff --git a/ethereum/.env.template b/target-chains/ethereum/.env.template similarity index 100% rename from ethereum/.env.template rename to target-chains/ethereum/.env.template diff --git a/ethereum/.env.test b/target-chains/ethereum/.env.test similarity index 100% rename from ethereum/.env.test rename to target-chains/ethereum/.env.test diff --git a/ethereum/.gitignore b/target-chains/ethereum/.gitignore similarity index 100% rename from ethereum/.gitignore rename to target-chains/ethereum/.gitignore diff --git a/ethereum/Deploying.md b/target-chains/ethereum/Deploying.md similarity index 100% rename from ethereum/Deploying.md rename to target-chains/ethereum/Deploying.md diff --git a/ethereum/README.md b/target-chains/ethereum/README.md similarity index 100% rename from ethereum/README.md rename to target-chains/ethereum/README.md diff --git a/ethereum/VERIFY.md b/target-chains/ethereum/VERIFY.md similarity index 100% rename from ethereum/VERIFY.md rename to target-chains/ethereum/VERIFY.md diff --git a/ethereum/contracts/Migrations.sol b/target-chains/ethereum/contracts/Migrations.sol similarity index 100% rename from ethereum/contracts/Migrations.sol rename to target-chains/ethereum/contracts/Migrations.sol diff --git a/ethereum/contracts/libraries/external/BytesLib.sol b/target-chains/ethereum/contracts/libraries/external/BytesLib.sol similarity index 100% rename from ethereum/contracts/libraries/external/BytesLib.sol rename to target-chains/ethereum/contracts/libraries/external/BytesLib.sol diff --git a/ethereum/contracts/libraries/external/UnsafeBytesLib.sol b/target-chains/ethereum/contracts/libraries/external/UnsafeBytesLib.sol similarity index 100% rename from ethereum/contracts/libraries/external/UnsafeBytesLib.sol rename to target-chains/ethereum/contracts/libraries/external/UnsafeBytesLib.sol diff --git a/ethereum/contracts/pyth/Pyth.sol b/target-chains/ethereum/contracts/pyth/Pyth.sol similarity index 100% rename from ethereum/contracts/pyth/Pyth.sol rename to target-chains/ethereum/contracts/pyth/Pyth.sol diff --git a/ethereum/contracts/pyth/PythDeprecatedStructs.sol b/target-chains/ethereum/contracts/pyth/PythDeprecatedStructs.sol similarity index 100% rename from ethereum/contracts/pyth/PythDeprecatedStructs.sol rename to target-chains/ethereum/contracts/pyth/PythDeprecatedStructs.sol diff --git a/ethereum/contracts/pyth/PythGetters.sol b/target-chains/ethereum/contracts/pyth/PythGetters.sol similarity index 100% rename from ethereum/contracts/pyth/PythGetters.sol rename to target-chains/ethereum/contracts/pyth/PythGetters.sol diff --git a/ethereum/contracts/pyth/PythGovernance.sol b/target-chains/ethereum/contracts/pyth/PythGovernance.sol similarity index 100% rename from ethereum/contracts/pyth/PythGovernance.sol rename to target-chains/ethereum/contracts/pyth/PythGovernance.sol diff --git a/ethereum/contracts/pyth/PythGovernanceInstructions.sol b/target-chains/ethereum/contracts/pyth/PythGovernanceInstructions.sol similarity index 100% rename from ethereum/contracts/pyth/PythGovernanceInstructions.sol rename to target-chains/ethereum/contracts/pyth/PythGovernanceInstructions.sol diff --git a/ethereum/contracts/pyth/PythInternalStructs.sol b/target-chains/ethereum/contracts/pyth/PythInternalStructs.sol similarity index 100% rename from ethereum/contracts/pyth/PythInternalStructs.sol rename to target-chains/ethereum/contracts/pyth/PythInternalStructs.sol diff --git a/ethereum/contracts/pyth/PythSetters.sol b/target-chains/ethereum/contracts/pyth/PythSetters.sol similarity index 100% rename from ethereum/contracts/pyth/PythSetters.sol rename to target-chains/ethereum/contracts/pyth/PythSetters.sol diff --git a/ethereum/contracts/pyth/PythState.sol b/target-chains/ethereum/contracts/pyth/PythState.sol similarity index 100% rename from ethereum/contracts/pyth/PythState.sol rename to target-chains/ethereum/contracts/pyth/PythState.sol diff --git a/ethereum/contracts/pyth/PythUpgradable.sol b/target-chains/ethereum/contracts/pyth/PythUpgradable.sol similarity index 100% rename from ethereum/contracts/pyth/PythUpgradable.sol rename to target-chains/ethereum/contracts/pyth/PythUpgradable.sol diff --git a/ethereum/contracts/pyth/mock/MockPythProxyUpgrade.sol b/target-chains/ethereum/contracts/pyth/mock/MockPythProxyUpgrade.sol similarity index 100% rename from ethereum/contracts/pyth/mock/MockPythProxyUpgrade.sol rename to target-chains/ethereum/contracts/pyth/mock/MockPythProxyUpgrade.sol diff --git a/ethereum/contracts/pyth/mock/MockUpgradeableProxy.sol b/target-chains/ethereum/contracts/pyth/mock/MockUpgradeableProxy.sol similarity index 100% rename from ethereum/contracts/pyth/mock/MockUpgradeableProxy.sol rename to target-chains/ethereum/contracts/pyth/mock/MockUpgradeableProxy.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverGetters.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverGetters.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverGetters.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverGetters.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverGovernance.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverGovernance.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverGovernance.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverGovernance.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverGovernanceStructs.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverGovernanceStructs.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverGovernanceStructs.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverGovernanceStructs.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverImplementation.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverImplementation.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverImplementation.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverImplementation.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverMessages.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverMessages.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverMessages.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverMessages.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverSetters.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverSetters.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverSetters.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverSetters.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverSetup.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverSetup.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverSetup.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverSetup.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverState.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverState.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverState.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverState.sol diff --git a/ethereum/contracts/wormhole-receiver/ReceiverStructs.sol b/target-chains/ethereum/contracts/wormhole-receiver/ReceiverStructs.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/ReceiverStructs.sol rename to target-chains/ethereum/contracts/wormhole-receiver/ReceiverStructs.sol diff --git a/ethereum/contracts/wormhole-receiver/WormholeReceiver.sol b/target-chains/ethereum/contracts/wormhole-receiver/WormholeReceiver.sol similarity index 100% rename from ethereum/contracts/wormhole-receiver/WormholeReceiver.sol rename to target-chains/ethereum/contracts/wormhole-receiver/WormholeReceiver.sol diff --git a/ethereum/contracts/wormhole/Getters.sol b/target-chains/ethereum/contracts/wormhole/Getters.sol similarity index 100% rename from ethereum/contracts/wormhole/Getters.sol rename to target-chains/ethereum/contracts/wormhole/Getters.sol diff --git a/ethereum/contracts/wormhole/Governance.sol b/target-chains/ethereum/contracts/wormhole/Governance.sol similarity index 100% rename from ethereum/contracts/wormhole/Governance.sol rename to target-chains/ethereum/contracts/wormhole/Governance.sol diff --git a/ethereum/contracts/wormhole/GovernanceStructs.sol b/target-chains/ethereum/contracts/wormhole/GovernanceStructs.sol similarity index 100% rename from ethereum/contracts/wormhole/GovernanceStructs.sol rename to target-chains/ethereum/contracts/wormhole/GovernanceStructs.sol diff --git a/ethereum/contracts/wormhole/Implementation.sol b/target-chains/ethereum/contracts/wormhole/Implementation.sol similarity index 100% rename from ethereum/contracts/wormhole/Implementation.sol rename to target-chains/ethereum/contracts/wormhole/Implementation.sol diff --git a/ethereum/contracts/wormhole/Messages.sol b/target-chains/ethereum/contracts/wormhole/Messages.sol similarity index 100% rename from ethereum/contracts/wormhole/Messages.sol rename to target-chains/ethereum/contracts/wormhole/Messages.sol diff --git a/ethereum/contracts/wormhole/Setters.sol b/target-chains/ethereum/contracts/wormhole/Setters.sol similarity index 100% rename from ethereum/contracts/wormhole/Setters.sol rename to target-chains/ethereum/contracts/wormhole/Setters.sol diff --git a/ethereum/contracts/wormhole/Setup.sol b/target-chains/ethereum/contracts/wormhole/Setup.sol similarity index 100% rename from ethereum/contracts/wormhole/Setup.sol rename to target-chains/ethereum/contracts/wormhole/Setup.sol diff --git a/ethereum/contracts/wormhole/State.sol b/target-chains/ethereum/contracts/wormhole/State.sol similarity index 100% rename from ethereum/contracts/wormhole/State.sol rename to target-chains/ethereum/contracts/wormhole/State.sol diff --git a/ethereum/contracts/wormhole/Structs.sol b/target-chains/ethereum/contracts/wormhole/Structs.sol similarity index 100% rename from ethereum/contracts/wormhole/Structs.sol rename to target-chains/ethereum/contracts/wormhole/Structs.sol diff --git a/ethereum/contracts/wormhole/Wormhole.sol b/target-chains/ethereum/contracts/wormhole/Wormhole.sol similarity index 100% rename from ethereum/contracts/wormhole/Wormhole.sol rename to target-chains/ethereum/contracts/wormhole/Wormhole.sol diff --git a/ethereum/contracts/wormhole/interfaces/IWormhole.sol b/target-chains/ethereum/contracts/wormhole/interfaces/IWormhole.sol similarity index 100% rename from ethereum/contracts/wormhole/interfaces/IWormhole.sol rename to target-chains/ethereum/contracts/wormhole/interfaces/IWormhole.sol diff --git a/ethereum/deploy.sh b/target-chains/ethereum/deploy.sh similarity index 100% rename from ethereum/deploy.sh rename to target-chains/ethereum/deploy.sh diff --git a/ethereum/forge-test/GasBenchmark.t.sol b/target-chains/ethereum/forge-test/GasBenchmark.t.sol similarity index 100% rename from ethereum/forge-test/GasBenchmark.t.sol rename to target-chains/ethereum/forge-test/GasBenchmark.t.sol diff --git a/ethereum/forge-test/Pyth.t.sol b/target-chains/ethereum/forge-test/Pyth.t.sol similarity index 100% rename from ethereum/forge-test/Pyth.t.sol rename to target-chains/ethereum/forge-test/Pyth.t.sol diff --git a/ethereum/forge-test/utils/PythTestUtils.t.sol b/target-chains/ethereum/forge-test/utils/PythTestUtils.t.sol similarity index 100% rename from ethereum/forge-test/utils/PythTestUtils.t.sol rename to target-chains/ethereum/forge-test/utils/PythTestUtils.t.sol diff --git a/ethereum/forge-test/utils/RandTestUtils.t.sol b/target-chains/ethereum/forge-test/utils/RandTestUtils.t.sol similarity index 100% rename from ethereum/forge-test/utils/RandTestUtils.t.sol rename to target-chains/ethereum/forge-test/utils/RandTestUtils.t.sol diff --git a/ethereum/forge-test/utils/WormholeTestUtils.t.sol b/target-chains/ethereum/forge-test/utils/WormholeTestUtils.t.sol similarity index 100% rename from ethereum/forge-test/utils/WormholeTestUtils.t.sol rename to target-chains/ethereum/forge-test/utils/WormholeTestUtils.t.sol diff --git a/ethereum/foundry.toml b/target-chains/ethereum/foundry.toml similarity index 100% rename from ethereum/foundry.toml rename to target-chains/ethereum/foundry.toml diff --git a/ethereum/lib/README.md b/target-chains/ethereum/lib/README.md similarity index 100% rename from ethereum/lib/README.md rename to target-chains/ethereum/lib/README.md diff --git a/ethereum/migrations/prod-receiver/1_initial_migration.js b/target-chains/ethereum/migrations/prod-receiver/1_initial_migration.js similarity index 100% rename from ethereum/migrations/prod-receiver/1_initial_migration.js rename to target-chains/ethereum/migrations/prod-receiver/1_initial_migration.js diff --git a/ethereum/migrations/prod-receiver/2_deploy_wormhole_receiver.js b/target-chains/ethereum/migrations/prod-receiver/2_deploy_wormhole_receiver.js similarity index 100% rename from ethereum/migrations/prod-receiver/2_deploy_wormhole_receiver.js rename to target-chains/ethereum/migrations/prod-receiver/2_deploy_wormhole_receiver.js diff --git a/ethereum/migrations/prod-receiver/3_deploy_pyth.js b/target-chains/ethereum/migrations/prod-receiver/3_deploy_pyth.js similarity index 100% rename from ethereum/migrations/prod-receiver/3_deploy_pyth.js rename to target-chains/ethereum/migrations/prod-receiver/3_deploy_pyth.js diff --git a/ethereum/migrations/prod/1_initial_migration.js b/target-chains/ethereum/migrations/prod/1_initial_migration.js similarity index 100% rename from ethereum/migrations/prod/1_initial_migration.js rename to target-chains/ethereum/migrations/prod/1_initial_migration.js diff --git a/ethereum/migrations/prod/2_deploy_pyth.js b/target-chains/ethereum/migrations/prod/2_deploy_pyth.js similarity index 100% rename from ethereum/migrations/prod/2_deploy_pyth.js rename to target-chains/ethereum/migrations/prod/2_deploy_pyth.js diff --git a/ethereum/migrations/test/1_initial_migration.js b/target-chains/ethereum/migrations/test/1_initial_migration.js similarity index 100% rename from ethereum/migrations/test/1_initial_migration.js rename to target-chains/ethereum/migrations/test/1_initial_migration.js diff --git a/ethereum/migrations/test/2_deploy_wormhole.js b/target-chains/ethereum/migrations/test/2_deploy_wormhole.js similarity index 100% rename from ethereum/migrations/test/2_deploy_wormhole.js rename to target-chains/ethereum/migrations/test/2_deploy_wormhole.js diff --git a/ethereum/migrations/test/3_deploy_pyth.js b/target-chains/ethereum/migrations/test/3_deploy_pyth.js similarity index 100% rename from ethereum/migrations/test/3_deploy_pyth.js rename to target-chains/ethereum/migrations/test/3_deploy_pyth.js diff --git a/ethereum/mine.js b/target-chains/ethereum/mine.js similarity index 100% rename from ethereum/mine.js rename to target-chains/ethereum/mine.js diff --git a/ethereum/networks/1.json b/target-chains/ethereum/networks/1.json similarity index 100% rename from ethereum/networks/1.json rename to target-chains/ethereum/networks/1.json diff --git a/ethereum/networks/10.json b/target-chains/ethereum/networks/10.json similarity index 100% rename from ethereum/networks/10.json rename to target-chains/ethereum/networks/10.json diff --git a/ethereum/networks/1313161554.json b/target-chains/ethereum/networks/1313161554.json similarity index 100% rename from ethereum/networks/1313161554.json rename to target-chains/ethereum/networks/1313161554.json diff --git a/ethereum/networks/1313161555.json b/target-chains/ethereum/networks/1313161555.json similarity index 100% rename from ethereum/networks/1313161555.json rename to target-chains/ethereum/networks/1313161555.json diff --git a/ethereum/networks/137.json b/target-chains/ethereum/networks/137.json similarity index 100% rename from ethereum/networks/137.json rename to target-chains/ethereum/networks/137.json diff --git a/ethereum/networks/25.json b/target-chains/ethereum/networks/25.json similarity index 100% rename from ethereum/networks/25.json rename to target-chains/ethereum/networks/25.json diff --git a/ethereum/networks/250.json b/target-chains/ethereum/networks/250.json similarity index 100% rename from ethereum/networks/250.json rename to target-chains/ethereum/networks/250.json diff --git a/ethereum/networks/3.json b/target-chains/ethereum/networks/3.json similarity index 100% rename from ethereum/networks/3.json rename to target-chains/ethereum/networks/3.json diff --git a/ethereum/networks/321.json b/target-chains/ethereum/networks/321.json similarity index 100% rename from ethereum/networks/321.json rename to target-chains/ethereum/networks/321.json diff --git a/ethereum/networks/322.json b/target-chains/ethereum/networks/322.json similarity index 100% rename from ethereum/networks/322.json rename to target-chains/ethereum/networks/322.json diff --git a/ethereum/networks/338.json b/target-chains/ethereum/networks/338.json similarity index 100% rename from ethereum/networks/338.json rename to target-chains/ethereum/networks/338.json diff --git a/ethereum/networks/4002.json b/target-chains/ethereum/networks/4002.json similarity index 100% rename from ethereum/networks/4002.json rename to target-chains/ethereum/networks/4002.json diff --git a/ethereum/networks/420.json b/target-chains/ethereum/networks/420.json similarity index 100% rename from ethereum/networks/420.json rename to target-chains/ethereum/networks/420.json diff --git a/ethereum/networks/42161.json b/target-chains/ethereum/networks/42161.json similarity index 100% rename from ethereum/networks/42161.json rename to target-chains/ethereum/networks/42161.json diff --git a/ethereum/networks/421613.json b/target-chains/ethereum/networks/421613.json similarity index 100% rename from ethereum/networks/421613.json rename to target-chains/ethereum/networks/421613.json diff --git a/ethereum/networks/42220.json b/target-chains/ethereum/networks/42220.json similarity index 100% rename from ethereum/networks/42220.json rename to target-chains/ethereum/networks/42220.json diff --git a/ethereum/networks/43113.json b/target-chains/ethereum/networks/43113.json similarity index 100% rename from ethereum/networks/43113.json rename to target-chains/ethereum/networks/43113.json diff --git a/ethereum/networks/43114.json b/target-chains/ethereum/networks/43114.json similarity index 100% rename from ethereum/networks/43114.json rename to target-chains/ethereum/networks/43114.json diff --git a/ethereum/networks/44787.json b/target-chains/ethereum/networks/44787.json similarity index 100% rename from ethereum/networks/44787.json rename to target-chains/ethereum/networks/44787.json diff --git a/ethereum/networks/5.json b/target-chains/ethereum/networks/5.json similarity index 100% rename from ethereum/networks/5.json rename to target-chains/ethereum/networks/5.json diff --git a/ethereum/networks/56.json b/target-chains/ethereum/networks/56.json similarity index 100% rename from ethereum/networks/56.json rename to target-chains/ethereum/networks/56.json diff --git a/ethereum/networks/80001.json b/target-chains/ethereum/networks/80001.json similarity index 100% rename from ethereum/networks/80001.json rename to target-chains/ethereum/networks/80001.json diff --git a/ethereum/networks/97.json b/target-chains/ethereum/networks/97.json similarity index 100% rename from ethereum/networks/97.json rename to target-chains/ethereum/networks/97.json diff --git a/ethereum/package-lock.json b/target-chains/ethereum/package-lock.json similarity index 100% rename from ethereum/package-lock.json rename to target-chains/ethereum/package-lock.json diff --git a/ethereum/package.json b/target-chains/ethereum/package.json similarity index 100% rename from ethereum/package.json rename to target-chains/ethereum/package.json diff --git a/ethereum/remappings.txt b/target-chains/ethereum/remappings.txt similarity index 100% rename from ethereum/remappings.txt rename to target-chains/ethereum/remappings.txt diff --git a/ethereum/scripts/assertVaaPayloadEquals.js b/target-chains/ethereum/scripts/assertVaaPayloadEquals.js similarity index 100% rename from ethereum/scripts/assertVaaPayloadEquals.js rename to target-chains/ethereum/scripts/assertVaaPayloadEquals.js diff --git a/ethereum/scripts/createLocalnetGovernanceVaa.js b/target-chains/ethereum/scripts/createLocalnetGovernanceVaa.js similarity index 100% rename from ethereum/scripts/createLocalnetGovernanceVaa.js rename to target-chains/ethereum/scripts/createLocalnetGovernanceVaa.js diff --git a/ethereum/scripts/loadEnv.js b/target-chains/ethereum/scripts/loadEnv.js similarity index 100% rename from ethereum/scripts/loadEnv.js rename to target-chains/ethereum/scripts/loadEnv.js diff --git a/ethereum/scripts/receiverSubmitGuardianSetUpgrades.js b/target-chains/ethereum/scripts/receiverSubmitGuardianSetUpgrades.js similarity index 100% rename from ethereum/scripts/receiverSubmitGuardianSetUpgrades.js rename to target-chains/ethereum/scripts/receiverSubmitGuardianSetUpgrades.js diff --git a/ethereum/scripts/syncPythState.js b/target-chains/ethereum/scripts/syncPythState.js similarity index 100% rename from ethereum/scripts/syncPythState.js rename to target-chains/ethereum/scripts/syncPythState.js diff --git a/ethereum/test/pyth.js b/target-chains/ethereum/test/pyth.js similarity index 100% rename from ethereum/test/pyth.js rename to target-chains/ethereum/test/pyth.js diff --git a/ethereum/truffle-config.js b/target-chains/ethereum/truffle-config.js similarity index 100% rename from ethereum/truffle-config.js rename to target-chains/ethereum/truffle-config.js diff --git a/ethereum/truffle-verify-constants.patch b/target-chains/ethereum/truffle-verify-constants.patch similarity index 100% rename from ethereum/truffle-verify-constants.patch rename to target-chains/ethereum/truffle-verify-constants.patch diff --git a/third_party/pyth/Dockerfile.p2w-attest b/third_party/pyth/Dockerfile.p2w-attest index b08d343309..f3325575e9 100644 --- a/third_party/pyth/Dockerfile.p2w-attest +++ b/third_party/pyth/Dockerfile.p2w-attest @@ -6,9 +6,9 @@ RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && apt-get install ADD pythnet/remote-executor /usr/src/pythnet/remote-executor ADD third_party/pyth/p2w-sdk/rust /usr/src/third_party/pyth/p2w-sdk/rust -ADD solana /usr/src/solana +ADD wormhole-attester /usr/src/wormhole-attester -WORKDIR /usr/src/solana/pyth2wormhole +WORKDIR /usr/src/wormhole-attester ENV EMITTER_ADDRESS="11111111111111111111111111111115" ENV BRIDGE_ADDRESS="Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o" @@ -16,16 +16,17 @@ ENV BRIDGE_ADDRESS="Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o" RUN --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=target \ - cargo test --package pyth2wormhole-client && \ - cargo build --package pyth2wormhole-client && \ - mv target/debug/pyth2wormhole-client /usr/local/bin/pyth2wormhole-client + cargo test --package pyth-wormhole-attester-client && \ + cargo build --package pyth-wormhole-attester-client && \ + mv target/debug/pwhac /usr/local/bin/pwhac ADD third_party/pyth/pyth_utils.py /usr/src/pyth/pyth_utils.py ADD third_party/pyth/p2w_autoattest.py /usr/src/pyth/p2w_autoattest.py -RUN chmod a+rx /usr/src/pyth/*.py +ADD tilt-devnet/secrets/solana /solana-secrets +RUN chmod a+rx /usr/src/pyth/*.py -ENV P2W_OWNER_KEYPAIR="/usr/src/solana/keys/p2w_owner.json" +ENV P2W_OWNER_KEYPAIR="/solana-secrets/p2w_owner.json" ENV P2W_ATTESTATIONS_PORT="4343" -ENV PYTH_PUBLISHER_KEYPAIR="/usr/src/solana/keys/pyth_publisher.json" -ENV PYTH_PROGRAM_KEYPAIR="/usr/src/solana/keys/pyth_program.json" +ENV PYTH_PUBLISHER_KEYPAIR="/solana-secrets/pyth_publisher.json" +ENV PYTH_PROGRAM_KEYPAIR="/solana-secrets/pyth_program.json" diff --git a/third_party/pyth/Dockerfile.pyth b/third_party/pyth/Dockerfile.pyth index 09c5a980d4..d657f6a4d1 100644 --- a/third_party/pyth/Dockerfile.pyth +++ b/third_party/pyth/Dockerfile.pyth @@ -9,15 +9,15 @@ USER root RUN apt-get install -y netcat-openbsd python3 && \ rm -rf /var/lib/apt/lists/* -ADD solana/keys /opt/solana/keys +ADD tilt-devnet/secrets/solana/ /solana-secrets ENV PYTH_KEY_STORE=/home/pyth/.pythd # Prepare keys WORKDIR $PYTH_KEY_STORE -RUN cp /opt/solana/keys/pyth_publisher.json publish_key_pair.json && \ - cp /opt/solana/keys/pyth_program.json program_key_pair.json && \ +RUN cp /solana-secrets/pyth_publisher.json publish_key_pair.json && \ + cp /solana-secrets/pyth_program.json program_key_pair.json && \ chown pyth:pyth -R . && \ chmod go-rwx -R . diff --git a/third_party/pyth/multisig-wh-message-builder/src/index.ts b/third_party/pyth/multisig-wh-message-builder/src/index.ts index 8fdff764e8..7f7dec83c1 100644 --- a/third_party/pyth/multisig-wh-message-builder/src/index.ts +++ b/third_party/pyth/multisig-wh-message-builder/src/index.ts @@ -9,7 +9,7 @@ import { SystemProgram, TransactionInstruction, } from "@solana/web3.js"; -import Squads, { DEFAULT_MULTISIG_PROGRAM_ID, getMsPDA } from "@sqds/mesh"; +import Squads from "@sqds/mesh"; import { getIxAuthorityPDA } from "@sqds/mesh"; import { InstructionAccount } from "@sqds/mesh/lib/types"; import bs58 from "bs58"; @@ -125,7 +125,7 @@ program cluster == "localdevnet" ? options.solanaRpc : undefined ); - let vaultAddr = getMsPDA(createKeyAddr, DEFAULT_MULTISIG_PROGRAM_ID)[0]; + let vaultAddr = CONFIG[cluster].vault; console.log("Creating new vault at", vaultAddr.toString()); try { diff --git a/third_party/pyth/p2w-relay/Dockerfile.pyth_relay b/third_party/pyth/p2w-relay/Dockerfile.pyth_relay index b1f04e1301..dbd2bc122e 100644 --- a/third_party/pyth/p2w-relay/Dockerfile.pyth_relay +++ b/third_party/pyth/p2w-relay/Dockerfile.pyth_relay @@ -10,7 +10,7 @@ RUN chown -R pyth:pyth . USER pyth WORKDIR ${P2W_BASE_PATH}/ethereum -ADD --chown=pyth:pyth ethereum . +ADD --chown=pyth:pyth target-chains/ethereum . RUN npm install && npm run build USER root diff --git a/third_party/pyth/p2w-relay/package-lock.json b/third_party/pyth/p2w-relay/package-lock.json index ddceac3817..3d0c3b7a15 100644 --- a/third_party/pyth/p2w-relay/package-lock.json +++ b/third_party/pyth/p2w-relay/package-lock.json @@ -50,7 +50,7 @@ "dependencies": { "@certusone/wormhole-sdk": "0.2.1", "@improbable-eng/grpc-web-node-http-transport": "^0.14.1", - "@pythnetwork/pyth-sdk-js": "^1.1.0" + "@pythnetwork/pyth-sdk-js": "^1.0.0" }, "devDependencies": { "@openzeppelin/contracts": "^4.2.0", @@ -9305,7 +9305,7 @@ "@certusone/wormhole-sdk": "0.2.1", "@improbable-eng/grpc-web-node-http-transport": "^0.14.1", "@openzeppelin/contracts": "^4.2.0", - "@pythnetwork/pyth-sdk-js": "^1.1.0", + "@pythnetwork/pyth-sdk-js": "^1.0.0", "@typechain/ethers-v5": "^7.1.2", "@types/long": "^4.0.1", "@types/node": "^16.6.1", diff --git a/third_party/pyth/p2w-relay/src/relay/terra.ts b/third_party/pyth/p2w-relay/src/relay/terra.ts index 273037a34e..b739890a80 100644 --- a/third_party/pyth/p2w-relay/src/relay/terra.ts +++ b/third_party/pyth/p2w-relay/src/relay/terra.ts @@ -1,3 +1,4 @@ +import { fromUint8Array } from "js-base64"; import { Coin, LCDClient, @@ -6,6 +7,7 @@ import { Msg, MsgExecuteContract, } from "@terra-money/terra.js"; +import { hexToUint8Array } from "@certusone/wormhole-sdk"; import axios from "axios"; import { logger } from "../helpers"; @@ -65,9 +67,6 @@ export class TerraRelay implements Relay { const wallet = lcdClient.wallet(mk); - logger.debug("TIME: Querying fee"); - let fee: Coin = await this.getUpdateFee(signedVAAs); - logger.debug("TIME: creating messages"); let base64VAAs = []; @@ -183,6 +182,11 @@ export class TerraRelay implements Relay { logger.info("Querying terra for price info for priceId [" + priceId + "]"); const lcdClient = new LCDClient(this.lcdConfig); + + const mk = new MnemonicKey({ + mnemonic: this.walletPrivateKey, + }); + return await lcdClient.wasm.contractQuery(this.contractAddress, { price_feed: { id: priceId, @@ -190,26 +194,6 @@ export class TerraRelay implements Relay { }); } - async getUpdateFee(hexVAAs: Array): Promise { - const lcdClient = new LCDClient(this.lcdConfig); - - let base64VAAs = []; - for (let idx = 0; idx < hexVAAs.length; ++idx) { - base64VAAs.push(Buffer.from(hexVAAs[idx], "hex").toString("base64")); - } - - let result = await lcdClient.wasm.contractQuery( - this.contractAddress, - { - get_update_fee: { - vaas: base64VAAs, - }, - } - ); - - return Coin.fromData(result); - } - async getPayerInfo(): Promise<{ address: string; balance: bigint }> { const lcdClient = new LCDClient(this.lcdConfig); diff --git a/third_party/pyth/p2w_autoattest.py b/third_party/pyth/p2w_autoattest.py index 9bda2c63b9..ebbc72aaf2 100755 --- a/third_party/pyth/p2w_autoattest.py +++ b/third_party/pyth/p2w_autoattest.py @@ -20,7 +20,7 @@ "P2W_SOL_ADDRESS", "P2WH424242424242424242424242424242424242424" ) P2W_OWNER_KEYPAIR = os.environ.get( - "P2W_OWNER_KEYPAIR", "/usr/src/solana/keys/p2w_owner.json" + "P2W_OWNER_KEYPAIR", "/solana-secrets/p2w_owner.json" ) P2W_ATTESTATIONS_PORT = int(os.environ.get("P2W_ATTESTATIONS_PORT", 4343)) P2W_INITIALIZE_SOL_CONTRACT = os.environ.get("P2W_INITIALIZE_SOL_CONTRACT", None) @@ -49,7 +49,7 @@ init_result = run_or_die( [ - "pyth2wormhole-client", + "pwhac", "--p2w-addr", P2W_SOL_ADDRESS, "--rpc-url", @@ -71,11 +71,11 @@ if init_result.returncode != 0: logging.error( - "NOTE: pyth2wormhole-client init failed, retrying with set_config" + "NOTE: pwhac init failed, retrying with set_config" ) run_or_die( [ - "pyth2wormhole-client", + "pwhac", "--p2w-addr", P2W_SOL_ADDRESS, "--rpc-url", @@ -166,12 +166,12 @@ # Set helpfully chatty logging default, filtering especially annoying # modules like async HTTP requests and tokio runtime logs -os.environ["RUST_LOG"] = os.environ.get("RUST_LOG", "pyth2wormhole_client,solana_client,main,pyth_sdk_solana=trace") +os.environ["RUST_LOG"] = os.environ.get("RUST_LOG", "pyth_wormhole_attester_client,solana_client,main,pyth_sdk_solana=trace") # Send the first attestation in one-shot mode for testing first_attest_result = run_or_die( [ - "pyth2wormhole-client", + "pwhac", "--commitment", "confirmed", "--p2w-addr", @@ -199,9 +199,9 @@ # whatever reason (this avoids k8s restart penalty) while True: # Start the child process in daemon mode - p2w_client_process = Popen( + pwhac_process = Popen( [ - "pyth2wormhole-client", + "pwhac", "--commitment", "confirmed", "--p2w-addr", @@ -220,7 +220,7 @@ ) # Wait for an unexpected process exit - retcode = p2w_client_process.wait() + retcode = pwhac_process.wait() # Yell if the supposedly non-stop attestation process exits - logging.warn(f"pyth2wormhole-client stopped unexpectedly with code {retcode}") + logging.warn(f"pwhac stopped unexpectedly with code {retcode}") diff --git a/third_party/pyth/prepare_multisig.py b/third_party/pyth/prepare_multisig.py index f415c324c8..0c0752e7e9 100644 --- a/third_party/pyth/prepare_multisig.py +++ b/third_party/pyth/prepare_multisig.py @@ -9,7 +9,7 @@ MULTISIG_SCRIPT_CMD_PREFIX = "npm run start --".split(" ") MULTISIG_SCRIPT_DIR = os.environ.get("MULTISIG_SCRIPT_DIR", "/root/pyth/multisig-wh-message-builder") -MESH_KEY_DIR = "/usr/src/solana/keys/squads/" +MESH_KEY_DIR = "/solana-secrets/squads/" MESH_PROGRAM_ADDR = "SMPLVC8MxZ5Bf5EfF7PaMiTCxoBAcmkbM2vkrvMK8ho" MESH_CREATE_KEY_PATH = MESH_KEY_DIR + "create_key.json" MESH_VAULT_EXT_AUTHORITY_KEY_PATH = MESH_KEY_DIR + "external_authority.json" diff --git a/third_party/pyth/pyth_utils.py b/third_party/pyth/pyth_utils.py index e545c0110b..fe220e1805 100644 --- a/third_party/pyth/pyth_utils.py +++ b/third_party/pyth/pyth_utils.py @@ -9,7 +9,7 @@ # A generic unprivileged payer account with funds SOL_PAYER_KEYPAIR = os.environ.get( - "SOL_PAYER_KEYPAIR", "/usr/src/solana/keys/solana-devnet.json" + "SOL_PAYER_KEYPAIR", "/solana-secrets/solana-devnet.json" ) # Settings specific to local devnet Pyth instance diff --git a/prometheus_config.yaml b/tilt-devnet/configs/prometheus_config.yaml similarity index 100% rename from prometheus_config.yaml rename to tilt-devnet/configs/prometheus_config.yaml diff --git a/Dockerfile.client b/tilt-devnet/docker-images/Dockerfile.client similarity index 82% rename from Dockerfile.client rename to tilt-devnet/docker-images/Dockerfile.client index ae9f0e2a99..e7d58b8930 100644 --- a/Dockerfile.client +++ b/tilt-devnet/docker-images/Dockerfile.client @@ -8,8 +8,9 @@ ARG WORMHOLE_TAG=v2.8.9 RUN apt-get update && apt-get install -yq libudev-dev ncat RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -y nodejs -COPY solana /usr/src/solana -WORKDIR /usr/src/solana/pyth2wormhole +ADD rust-toolchain /rust-toolchain +ADD wormhole-attester/ /usr/src/wormhole-attester +WORKDIR /usr/src/wormhole-attester RUN --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \ @@ -17,7 +18,7 @@ RUN --mount=type=cache,target=/root/.cache \ cargo install --version =2.0.12 --locked spl-token-cli --target-dir target -RUN solana config set --keypair "/usr/src/solana/keys/solana-devnet.json" +RUN solana config set --keypair "/solana-secrets/solana-devnet.json" RUN solana config set --url "http://solana-devnet:8899" ENV EMITTER_ADDRESS="11111111111111111111111111111115" @@ -29,3 +30,6 @@ RUN --mount=type=cache,target=/root/.cache \ set -xe && \ cargo install bridge_client --git https://github.com/wormhole-foundation/wormhole --tag $WORMHOLE_TAG --locked --root /usr/local --target-dir target && \ cargo install token_bridge_client --git https://github.com/wormhole-foundation/wormhole --tag $WORMHOLE_TAG --locked --root /usr/local --target-dir target + +ADD tilt-devnet/scripts/solana-devnet-setup.sh /usr/src/solana-devnet-setup.sh +ADD tilt-devnet/secrets/solana/ /solana-secrets diff --git a/Dockerfile.cosmwasm b/tilt-devnet/docker-images/Dockerfile.cosmwasm similarity index 84% rename from Dockerfile.cosmwasm rename to tilt-devnet/docker-images/Dockerfile.cosmwasm index 5531bb8540..3ca9c4a7f7 100644 --- a/Dockerfile.cosmwasm +++ b/tilt-devnet/docker-images/Dockerfile.cosmwasm @@ -17,9 +17,9 @@ RUN --mount=type=cache,target=/code/target,id=cosmwasm_wormhole_target --mount=t FROM cosmwasm/workspace-optimizer:0.12.6@sha256:e6565a5e87c830ef3e8775a9035006b38ad0aaf0a96319158c802457b1dd1d08 AS pyth_builder -COPY cosmwasm/Cargo.lock /code/ -COPY cosmwasm/Cargo.toml /code/ -COPY cosmwasm/contracts /code/contracts +COPY target-chains/cosmwasm/Cargo.lock /code/ +COPY target-chains/cosmwasm/Cargo.toml /code/ +COPY target-chains/cosmwasm/contracts /code/contracts COPY third_party/pyth/p2w-sdk/rust /third_party/pyth/p2w-sdk/rust RUN --mount=type=cache,target=/code/target,id=cosmwasm_pyth_target --mount=type=cache,target=/usr/local/cargo/registry optimize_workspace.sh @@ -33,7 +33,7 @@ WORKDIR /app/tools COPY --from=wormhole_builder /code/artifacts/wormhole.wasm /app/artifacts/wormhole.wasm COPY --from=pyth_builder /code/artifacts/pyth_cosmwasm.wasm /app/artifacts/pyth_cosmwasm.wasm -COPY ./cosmwasm/tools/package.json ./cosmwasm/tools/package-lock.json /app/tools/ +COPY target-chains/cosmwasm/tools/package.json target-chains/cosmwasm/tools/package-lock.json /app/tools/ RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \ npm ci -COPY ./cosmwasm/tools /app/tools +COPY target-chains/cosmwasm/tools /app/tools diff --git a/Dockerfile.ethereum b/tilt-devnet/docker-images/Dockerfile.ethereum similarity index 85% rename from Dockerfile.ethereum rename to tilt-devnet/docker-images/Dockerfile.ethereum index d62bf1b0f1..f4a25644bb 100644 --- a/Dockerfile.ethereum +++ b/tilt-devnet/docker-images/Dockerfile.ethereum @@ -21,8 +21,8 @@ RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \ WORKDIR /home/node/ethereum # Only invalidate the npm install step if package.json changed -ADD --chown=node:node ethereum/package.json . -ADD --chown=node:node ethereum/package-lock.json . +ADD --chown=node:node target-chains/ethereum/package.json . +ADD --chown=node:node target-chains/ethereum/package-lock.json . # We want to cache node_modules *and* incorporate it into the final image. RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \ @@ -35,5 +35,5 @@ RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \ # could be a renameat syscall. Alpine does not have this bug. RUN rm -rf node_modules && mv node_modules_cache node_modules -ADD --chown=node:node ethereum/ . -ADD --chown=node:node ethereum/.env.test .env +ADD --chown=node:node target-chains/ethereum/ . +ADD --chown=node:node target-chains/ethereum/.env.test .env diff --git a/Dockerfile.multisig b/tilt-devnet/docker-images/Dockerfile.multisig similarity index 96% rename from Dockerfile.multisig rename to tilt-devnet/docker-images/Dockerfile.multisig index ff4e04abcf..0721b82470 100644 --- a/Dockerfile.multisig +++ b/tilt-devnet/docker-images/Dockerfile.multisig @@ -32,6 +32,6 @@ RUN rm -rf node_modules && mv node_modules_cached node_modules # Add the rest of the code. This ensures that real code changes do not affect the layer caching of `npm ci` ADD third_party/pyth /root/pyth -ADD solana/keys /usr/src/solana/keys +ADD tilt-devnet/secrets/solana/ /solana-secrets RUN npm install diff --git a/tilt-devnet/docker-images/Dockerfile.prometheus b/tilt-devnet/docker-images/Dockerfile.prometheus new file mode 100644 index 0000000000..ef21b2cc68 --- /dev/null +++ b/tilt-devnet/docker-images/Dockerfile.prometheus @@ -0,0 +1,3 @@ +FROM prom/prometheus + +ADD --chown=nobody:nobody tilt-devnet/configs/prometheus_config.yaml . diff --git a/Dockerfile.solana b/tilt-devnet/docker-images/Dockerfile.solana similarity index 67% rename from Dockerfile.solana rename to tilt-devnet/docker-images/Dockerfile.solana index beb1e36b74..6728c7628a 100644 --- a/Dockerfile.solana +++ b/tilt-devnet/docker-images/Dockerfile.solana @@ -20,7 +20,9 @@ RUN sh -c "$(curl -sSfL https://release.solana.com/v1.10.31/install)" ENV PATH="/root/.local/share/solana/install/active_release/bin:$PATH" -ADD solana/pyth2wormhole/rust-toolchain /rust-toolchain +ADD rust-toolchain /rust-toolchain + +USER root # Solana does a questionable download at the beginning of a *first* build-bpf call. Trigger and layer-cache it explicitly. RUN cargo init --lib /tmp/decoy-crate && \ cd /tmp/decoy-crate && cargo build-bpf && \ @@ -32,7 +34,6 @@ ARG WORMHOLE_REV=2.8.9 ADD https://github.com/wormhole-foundation/wormhole/archive/refs/tags/v${WORMHOLE_REV}.tar.gz . RUN tar -xvf v${WORMHOLE_REV}.tar.gz RUN mv wormhole-${WORMHOLE_REV} wormhole -# RUN mkdir -p /usr/src/bridge/wormhole/solana/target WORKDIR /usr/src/squads @@ -42,9 +43,9 @@ ADD https://github.com/Squads-Protocol/squads-mpl/archive/refs/tags/v${SQUADS_RE RUN tar -xvf v${SQUADS_REV}.tar.gz RUN mv squads-mpl-${SQUADS_REV} squads-mpl -WORKDIR /usr/src/bridge +WORKDIR /usr/src/ -ADD solana solana +ADD wormhole-attester wormhole-attester ADD pythnet pythnet ADD third_party/pyth/p2w-sdk/rust third_party/pyth/p2w-sdk/rust RUN mkdir -p /opt/solana/deps @@ -52,24 +53,26 @@ RUN mkdir -p /opt/solana/deps ENV EMITTER_ADDRESS="11111111111111111111111111111115" ENV BRIDGE_ADDRESS="Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o" -WORKDIR /usr/src/bridge/solana +WORKDIR /usr/src # Build Wormhole Solana programs RUN --mount=type=cache,target=/usr/src/bridge/wormhole/solana/target \ - --mount=type=cache,target=/usr/src/bridge/solana/pyth2wormhole/target \ + --mount=type=cache,target=/usr/src/wormhole-attester/target \ --mount=type=cache,target=/usr/src/squads/squads-mpl/target \ --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/root/.cache \ - cargo build-bpf --manifest-path "../wormhole/solana/bridge/program/Cargo.toml" -- --locked && \ - cargo build-bpf --manifest-path "../wormhole/solana/bridge/cpi_poster/Cargo.toml" -- --locked && \ - cargo build-bpf --manifest-path "pyth2wormhole/program/Cargo.toml" -- --locked && \ - cargo build-bpf --manifest-path "/usr/src/squads/squads-mpl/programs/mesh/Cargo.toml" -- --locked && \ - cp ../wormhole/solana/target/deploy/bridge.so /opt/solana/deps/bridge.so && \ - cp ../wormhole/solana/target/deploy/cpi_poster.so /opt/solana/deps/cpi_poster.so && \ - cp pyth2wormhole/target/deploy/pyth2wormhole.so /opt/solana/deps/pyth2wormhole.so && \ - cp /usr/src/squads/squads-mpl/target/deploy/mesh.so /opt/solana/deps/mesh.so + cargo build-bpf --manifest-path "bridge/wormhole/solana/bridge/program/Cargo.toml" -- --locked && \ + cargo build-bpf --manifest-path "bridge/wormhole/solana/bridge/cpi_poster/Cargo.toml" -- --locked && \ + cargo build-bpf --manifest-path "wormhole-attester/program/Cargo.toml" -- --locked && \ + cargo build-bpf --manifest-path "squads/squads-mpl/programs/mesh/Cargo.toml" -- --locked && \ + cp bridge/wormhole/solana/target/deploy/bridge.so /opt/solana/deps/bridge.so && \ + cp bridge/wormhole/solana/target/deploy/cpi_poster.so /opt/solana/deps/cpi_poster.so && \ + cp wormhole-attester/target/deploy/pyth_wormhole_attester.so /opt/solana/deps/pyth_wormhole_attester.so && \ + cp squads/squads-mpl/target/deploy/mesh.so /opt/solana/deps/mesh.so COPY --from=pyth-oracle-copy /home/pyth/pyth-client/target/oracle.so /opt/solana/deps/pyth_oracle.so ENV RUST_LOG="solana_runtime::system_instruction_processor=trace,solana_runtime::message_processor=trace,solana_bpf_loader=debug,solana_rbpf=debug" ENV RUST_BACKTRACE=1 + +ADD tilt-devnet/secrets/solana /solana-secrets diff --git a/Dockerfile.wasm b/tilt-devnet/docker-images/Dockerfile.wasm similarity index 83% rename from Dockerfile.wasm rename to tilt-devnet/docker-images/Dockerfile.wasm index 3f68b84495..e1843b58c3 100644 --- a/Dockerfile.wasm +++ b/tilt-devnet/docker-images/Dockerfile.wasm @@ -10,13 +10,13 @@ RUN apt-get update && \ RUN rustup component add rustfmt && \ rustup default nightly-2022-01-02 -WORKDIR /usr/src/bridge +WORKDIR /usr/src RUN cargo install wasm-pack --vers 0.9.1 ENV RUST_LOG="solana_runtime::system_instruction_processor=trace,solana_runtime::message_processor=trace,solana_bpf_loader=debug,solana_rbpf=debug" ENV EMITTER_ADDRESS="11111111111111111111111111111115" ENV BRIDGE_ADDRESS="Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o" -COPY solana solana +COPY wormhole-attester wormhole-attester COPY third_party third_party # wasm-bindgen 0.2.74 generates JavaScript bindings for SystemInstruction exported from solana-program 1.9.4. @@ -28,12 +28,12 @@ ARG SED_REMOVE_INVALID_REFERENCE="/^\s*wasm.__wbg_systeminstruction_free(ptr);$/ # TODO: it appears that wasm-pack ignores our lockfiles even with --locked # Run unit tests -WORKDIR /usr/src/bridge/third_party/pyth/p2w-sdk/rust +WORKDIR /usr/src/third_party/pyth/p2w-sdk/rust RUN cargo test --locked && \ /usr/local/cargo/bin/wasm-pack build --target bundler -d bundler -- --features wasm --locked && \ /usr/local/cargo/bin/wasm-pack build --target nodejs -d nodejs -- --features wasm --locked FROM scratch AS export -COPY --from=build /usr/src/bridge/third_party/pyth/p2w-sdk/rust/bundler third_party/pyth/p2w-sdk/js/src/solana/p2w-core/bundler -COPY --from=build /usr/src/bridge/third_party/pyth/p2w-sdk/rust/nodejs third_party/pyth/p2w-sdk/js/src/solana/p2w-core/nodejs +COPY --from=build /usr/src/third_party/pyth/p2w-sdk/rust/bundler third_party/pyth/p2w-sdk/js/src/solana/p2w-core/bundler +COPY --from=build /usr/src/third_party/pyth/p2w-sdk/rust/nodejs third_party/pyth/p2w-sdk/js/src/solana/p2w-core/nodejs diff --git a/tilt-devnet/docker-images/README.md b/tilt-devnet/docker-images/README.md new file mode 100644 index 0000000000..bc4f41a4ca --- /dev/null +++ b/tilt-devnet/docker-images/README.md @@ -0,0 +1,5 @@ +# Miscellaneous Tilt Docker images + +This directory holds docker images for services that don't have a +meaningful source code in this monorepo. Notably, images that prepare + * [ ] Tilt devnet environments are stored here. diff --git a/devnet/check-attestations.yaml b/tilt-devnet/k8s/check-attestations.yaml similarity index 100% rename from devnet/check-attestations.yaml rename to tilt-devnet/k8s/check-attestations.yaml diff --git a/devnet/eth-devnet.yaml b/tilt-devnet/k8s/eth-devnet.yaml similarity index 100% rename from devnet/eth-devnet.yaml rename to tilt-devnet/k8s/eth-devnet.yaml diff --git a/devnet/multisig.yaml b/tilt-devnet/k8s/multisig.yaml similarity index 100% rename from devnet/multisig.yaml rename to tilt-devnet/k8s/multisig.yaml diff --git a/devnet/node.yaml b/tilt-devnet/k8s/node.yaml similarity index 100% rename from devnet/node.yaml rename to tilt-devnet/k8s/node.yaml diff --git a/devnet/p2w-attest.yaml b/tilt-devnet/k8s/p2w-attest.yaml similarity index 100% rename from devnet/p2w-attest.yaml rename to tilt-devnet/k8s/p2w-attest.yaml diff --git a/devnet/p2w-evm-relay.yaml b/tilt-devnet/k8s/p2w-evm-relay.yaml similarity index 100% rename from devnet/p2w-evm-relay.yaml rename to tilt-devnet/k8s/p2w-evm-relay.yaml diff --git a/devnet/p2w-terra-relay.yaml b/tilt-devnet/k8s/p2w-terra-relay.yaml similarity index 100% rename from devnet/p2w-terra-relay.yaml rename to tilt-devnet/k8s/p2w-terra-relay.yaml diff --git a/devnet/prometheus.yaml b/tilt-devnet/k8s/prometheus.yaml similarity index 100% rename from devnet/prometheus.yaml rename to tilt-devnet/k8s/prometheus.yaml diff --git a/devnet/pyth-evm-watcher.yaml b/tilt-devnet/k8s/pyth-evm-watcher.yaml similarity index 100% rename from devnet/pyth-evm-watcher.yaml rename to tilt-devnet/k8s/pyth-evm-watcher.yaml diff --git a/devnet/pyth-price-service.yaml b/tilt-devnet/k8s/pyth-price-service.yaml similarity index 100% rename from devnet/pyth-price-service.yaml rename to tilt-devnet/k8s/pyth-price-service.yaml diff --git a/devnet/pyth.yaml b/tilt-devnet/k8s/pyth.yaml similarity index 100% rename from devnet/pyth.yaml rename to tilt-devnet/k8s/pyth.yaml diff --git a/devnet/solana-devnet.yaml b/tilt-devnet/k8s/solana-devnet.yaml similarity index 96% rename from devnet/solana-devnet.yaml rename to tilt-devnet/k8s/solana-devnet.yaml index 9d20d4fbca..3fc60a08a8 100644 --- a/devnet/solana-devnet.yaml +++ b/tilt-devnet/k8s/solana-devnet.yaml @@ -49,7 +49,7 @@ spec: - /opt/solana/deps/pyth_oracle.so - --bpf-program - P2WH424242424242424242424242424242424242424 - - /opt/solana/deps/pyth2wormhole.so + - /opt/solana/deps/pyth_wormhole_attester.so - --bpf-program - SMPLVC8MxZ5Bf5EfF7PaMiTCxoBAcmkbM2vkrvMK8ho # copied from squads-mpl/programs/mesh/src/lib.rs - /opt/solana/deps/mesh.so @@ -93,7 +93,7 @@ spec: - name: setup image: bridge-client command: - - /usr/src/solana/devnet_setup.sh + - /usr/src/solana-devnet-setup.sh readinessProbe: tcpSocket: port: 2000 diff --git a/devnet/spy.yaml b/tilt-devnet/k8s/spy.yaml similarity index 100% rename from devnet/spy.yaml rename to tilt-devnet/k8s/spy.yaml diff --git a/devnet/terra-devnet.yaml b/tilt-devnet/k8s/terra-devnet.yaml similarity index 100% rename from devnet/terra-devnet.yaml rename to tilt-devnet/k8s/terra-devnet.yaml diff --git a/solana/devnet_setup.sh b/tilt-devnet/scripts/solana-devnet-setup.sh similarity index 93% rename from solana/devnet_setup.sh rename to tilt-devnet/scripts/solana-devnet-setup.sh index d109b76ac3..f6f93a7bf0 100755 --- a/solana/devnet_setup.sh +++ b/tilt-devnet/scripts/solana-devnet-setup.sh @@ -7,7 +7,7 @@ mkdir -p ~/.config/solana/cli cat < ~/.config/solana/cli/config.yml json_rpc_url: "http://127.0.0.1:8899" websocket_url: "" -keypair_path: /usr/src/solana/keys/solana-devnet.json +keypair_path: /solana-secrets/solana-devnet.json EOF # Constants diff --git a/tilt-devnet/secrets/README.md b/tilt-devnet/secrets/README.md new file mode 100644 index 0000000000..108990e576 --- /dev/null +++ b/tilt-devnet/secrets/README.md @@ -0,0 +1,3 @@ +# IMPORTANT: Never, ever use any of these private keys in a public chain environment +The secrets gathered here may only be used to perform automated +testing scenarios in Tilt. They are plainly visible in the code repository **on purpose**. diff --git a/solana/keys/p2w_owner.json b/tilt-devnet/secrets/solana/p2w_owner.json similarity index 100% rename from solana/keys/p2w_owner.json rename to tilt-devnet/secrets/solana/p2w_owner.json diff --git a/solana/keys/pyth_program.json b/tilt-devnet/secrets/solana/pyth_program.json similarity index 100% rename from solana/keys/pyth_program.json rename to tilt-devnet/secrets/solana/pyth_program.json diff --git a/solana/keys/pyth_publisher.json b/tilt-devnet/secrets/solana/pyth_publisher.json similarity index 100% rename from solana/keys/pyth_publisher.json rename to tilt-devnet/secrets/solana/pyth_publisher.json diff --git a/solana/keys/solana-devnet.json b/tilt-devnet/secrets/solana/solana-devnet.json similarity index 100% rename from solana/keys/solana-devnet.json rename to tilt-devnet/secrets/solana/solana-devnet.json diff --git a/solana/keys/squads/create_key.json b/tilt-devnet/secrets/solana/squads/create_key.json similarity index 100% rename from solana/keys/squads/create_key.json rename to tilt-devnet/secrets/solana/squads/create_key.json diff --git a/solana/keys/squads/external_authority.json b/tilt-devnet/secrets/solana/squads/external_authority.json similarity index 100% rename from solana/keys/squads/external_authority.json rename to tilt-devnet/secrets/solana/squads/external_authority.json diff --git a/solana/keys/squads/member_alice.json b/tilt-devnet/secrets/solana/squads/member_alice.json similarity index 100% rename from solana/keys/squads/member_alice.json rename to tilt-devnet/secrets/solana/squads/member_alice.json diff --git a/solana/keys/squads/member_bob.json b/tilt-devnet/secrets/solana/squads/member_bob.json similarity index 100% rename from solana/keys/squads/member_bob.json rename to tilt-devnet/secrets/solana/squads/member_bob.json diff --git a/solana/keys/squads/member_carol.json b/tilt-devnet/secrets/solana/squads/member_carol.json similarity index 100% rename from solana/keys/squads/member_carol.json rename to tilt-devnet/secrets/solana/squads/member_carol.json diff --git a/solana/pyth2wormhole/Cargo.lock b/wormhole-attester/Cargo.lock similarity index 99% rename from solana/pyth2wormhole/Cargo.lock rename to wormhole-attester/Cargo.lock index 345c8a281e..604a8c7aed 100644 --- a/solana/pyth2wormhole/Cargo.lock +++ b/wormhole-attester/Cargo.lock @@ -2693,7 +2693,7 @@ dependencies = [ ] [[package]] -name = "pyth2wormhole" +name = "pyth-wormhole-attester" version = "0.1.0" dependencies = [ "borsh", @@ -2709,7 +2709,7 @@ dependencies = [ ] [[package]] -name = "pyth2wormhole-client" +name = "pyth-wormhole-attester-client" version = "1.3.0" dependencies = [ "borsh", @@ -2723,7 +2723,7 @@ dependencies = [ "p2w-sdk", "prometheus", "pyth-sdk-solana 0.6.1", - "pyth2wormhole", + "pyth-wormhole-attester", "serde", "serde_yaml", "sha3 0.10.6", @@ -2740,14 +2740,14 @@ dependencies = [ ] [[package]] -name = "pyth2wormhole-governance" +name = "pyth-wormhole-attester-governance" version = "0.1.0" dependencies = [ "anyhow", "borsh", "clap 3.1.18", "hex", - "pyth2wormhole-client", + "pyth-wormhole-attester-client", "remote-executor", "solana-sdk", ] diff --git a/solana/pyth2wormhole/Cargo.toml b/wormhole-attester/Cargo.toml similarity index 100% rename from solana/pyth2wormhole/Cargo.toml rename to wormhole-attester/Cargo.toml diff --git a/solana/pyth2wormhole/client/Cargo.toml b/wormhole-attester/client/Cargo.toml similarity index 73% rename from solana/pyth2wormhole/client/Cargo.toml rename to wormhole-attester/client/Cargo.toml index 1746ce4b37..d880823fe0 100644 --- a/solana/pyth2wormhole/client/Cargo.toml +++ b/wormhole-attester/client/Cargo.toml @@ -1,15 +1,20 @@ [package] -name = "pyth2wormhole-client" +name = "pyth-wormhole-attester-client" version = "1.3.0" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] -name = "pyth2wormhole_client" +name = "pyth_wormhole_attester_client" + +[[bin]] +name = "pwhac" +path = "src/main.rs" + [features] -default = ["pyth2wormhole/client", "wormhole-bridge-solana/client", "pyth2wormhole/trace"] +default = ["pyth-wormhole-attester/client", "wormhole-bridge-solana/client", "pyth-wormhole-attester/trace"] [dependencies] borsh = "=0.9.3" @@ -17,8 +22,8 @@ clap = {version = "3.1.18", features = ["derive"]} env_logger = "0.8.4" log = "0.4.14" wormhole-bridge-solana = {git = "https://github.com/wormhole-foundation/wormhole", tag = "v2.8.9"} -pyth2wormhole = {path = "../program"} -p2w-sdk = { path = "../../../third_party/pyth/p2w-sdk/rust", features=["solana"] } +pyth-wormhole-attester = {path = "../program"} +p2w-sdk = { path = "../../third_party/pyth/p2w-sdk/rust", features=["solana"] } pyth-sdk-solana = "0.6.1" serde = "1" serde_yaml = "0.8" diff --git a/solana/pyth2wormhole/client/src/attestation_cfg.rs b/wormhole-attester/client/src/attestation_cfg.rs similarity index 100% rename from solana/pyth2wormhole/client/src/attestation_cfg.rs rename to wormhole-attester/client/src/attestation_cfg.rs diff --git a/solana/pyth2wormhole/client/src/batch_state.rs b/wormhole-attester/client/src/batch_state.rs similarity index 100% rename from solana/pyth2wormhole/client/src/batch_state.rs rename to wormhole-attester/client/src/batch_state.rs diff --git a/solana/pyth2wormhole/client/src/cli.rs b/wormhole-attester/client/src/cli.rs similarity index 100% rename from solana/pyth2wormhole/client/src/cli.rs rename to wormhole-attester/client/src/cli.rs diff --git a/solana/pyth2wormhole/client/src/config_file.rs b/wormhole-attester/client/src/config_file.rs similarity index 100% rename from solana/pyth2wormhole/client/src/config_file.rs rename to wormhole-attester/client/src/config_file.rs diff --git a/solana/pyth2wormhole/client/src/healthcheck.rs b/wormhole-attester/client/src/healthcheck.rs similarity index 100% rename from solana/pyth2wormhole/client/src/healthcheck.rs rename to wormhole-attester/client/src/healthcheck.rs diff --git a/solana/pyth2wormhole/client/src/lib.rs b/wormhole-attester/client/src/lib.rs similarity index 96% rename from solana/pyth2wormhole/client/src/lib.rs rename to wormhole-attester/client/src/lib.rs index 09272016d3..823b3e3a63 100644 --- a/solana/pyth2wormhole/client/src/lib.rs +++ b/wormhole-attester/client/src/lib.rs @@ -16,7 +16,7 @@ pub use { HEALTHCHECK_STATE, }, message::P2WMessageQueue, - pyth2wormhole::Pyth2WormholeConfig, + pyth_wormhole_attester::Pyth2WormholeConfig, util::{ start_metrics_server, RLMutex, @@ -43,7 +43,7 @@ use { warn, }, p2w_sdk::P2WEmitter, - pyth2wormhole::{ + pyth_wormhole_attester::{ config::{ OldP2WConfigAccount, P2WConfigAccount, @@ -109,7 +109,7 @@ pub fn gen_init_tx( AccountMeta::new(system_program::id(), false), ]; - let ix_data = (pyth2wormhole::instruction::Instruction::Initialize, config); + let ix_data = (pyth_wormhole_attester::instruction::Instruction::Initialize, config); let ix = Instruction::new_with_bytes(p2w_addr, ix_data.try_to_vec()?.as_slice(), acc_metas); @@ -144,7 +144,7 @@ pub fn get_set_config_ix( AccountMeta::new(system_program::id(), false), ]; let ix_data = ( - pyth2wormhole::instruction::Instruction::SetConfig, + pyth_wormhole_attester::instruction::Instruction::SetConfig, new_config, ); Ok(Instruction::new_with_bytes( @@ -192,7 +192,7 @@ pub fn get_set_is_active_ix( ]; let ix_data = ( - pyth2wormhole::instruction::Instruction::SetIsActive, + pyth_wormhole_attester::instruction::Instruction::SetIsActive, new_is_active, ); Ok(Instruction::new_with_bytes( @@ -250,7 +250,7 @@ pub fn gen_migrate_tx( AccountMeta::new(system_program::id(), false), ]; - let ix_data = (pyth2wormhole::instruction::Instruction::Migrate, ()); + let ix_data = (pyth_wormhole_attester::instruction::Instruction::Migrate, ()); let ix = Instruction::new_with_bytes(p2w_addr, ix_data.try_to_vec()?.as_slice(), acc_metas); @@ -345,7 +345,7 @@ pub fn gen_attest_tx( acc_metas.append(&mut padded_symbols); - // Continue with other pyth2wormhole accounts + // Continue with other pyth_wormhole_attester accounts let mut acc_metas_remainder = vec![ // clock AccountMeta::new_readonly(clock::id(), false), @@ -380,7 +380,7 @@ pub fn gen_attest_tx( acc_metas.append(&mut acc_metas_remainder); let ix_data = ( - pyth2wormhole::instruction::Instruction::Attest, + pyth_wormhole_attester::instruction::Instruction::Attest, AttestData { consistency_level: ConsistencyLevel::Confirmed, message_account_id: wh_msg_id, diff --git a/solana/pyth2wormhole/client/src/main.rs b/wormhole-attester/client/src/main.rs similarity index 99% rename from solana/pyth2wormhole/client/src/main.rs rename to wormhole-attester/client/src/main.rs index 0d92d66452..4c321f0ca5 100644 --- a/solana/pyth2wormhole/client/src/main.rs +++ b/wormhole-attester/client/src/main.rs @@ -28,11 +28,11 @@ use { IntCounter, IntGauge, }, - pyth2wormhole::{ + pyth_wormhole_attester::{ attest::P2W_MAX_BATCH_SIZE, Pyth2WormholeConfig, }, - pyth2wormhole_client::{ + pyth_wormhole_attester_client::{ attestation_cfg::SymbolBatch, crawl_pyth_mapping, gen_attest_tx, diff --git a/solana/pyth2wormhole/client/src/message.rs b/wormhole-attester/client/src/message.rs similarity index 100% rename from solana/pyth2wormhole/client/src/message.rs rename to wormhole-attester/client/src/message.rs diff --git a/solana/pyth2wormhole/client/src/util.rs b/wormhole-attester/client/src/util.rs similarity index 100% rename from solana/pyth2wormhole/client/src/util.rs rename to wormhole-attester/client/src/util.rs diff --git a/solana/pyth2wormhole/client/tests/fixtures/mod.rs b/wormhole-attester/client/tests/fixtures/mod.rs similarity index 100% rename from solana/pyth2wormhole/client/tests/fixtures/mod.rs rename to wormhole-attester/client/tests/fixtures/mod.rs diff --git a/solana/pyth2wormhole/client/tests/fixtures/passthrough.rs b/wormhole-attester/client/tests/fixtures/passthrough.rs similarity index 100% rename from solana/pyth2wormhole/client/tests/fixtures/passthrough.rs rename to wormhole-attester/client/tests/fixtures/passthrough.rs diff --git a/solana/pyth2wormhole/client/tests/fixtures/pyth.rs b/wormhole-attester/client/tests/fixtures/pyth.rs similarity index 100% rename from solana/pyth2wormhole/client/tests/fixtures/pyth.rs rename to wormhole-attester/client/tests/fixtures/pyth.rs diff --git a/solana/pyth2wormhole/client/tests/test_attest.rs b/wormhole-attester/client/tests/test_attest.rs similarity index 93% rename from solana/pyth2wormhole/client/tests/test_attest.rs rename to wormhole-attester/client/tests/test_attest.rs index 7b6e2162e2..4c81f03f05 100644 --- a/solana/pyth2wormhole/client/tests/test_attest.rs +++ b/wormhole-attester/client/tests/test_attest.rs @@ -10,11 +10,11 @@ use { passthrough, pyth, }, - pyth2wormhole::config::{ + pyth_wormhole_attester::config::{ P2WConfigAccount, Pyth2WormholeConfig, }, - pyth2wormhole_client as p2wc, + pyth_wormhole_attester_client as p2wc, solana_program_test::*, solana_sdk::{ account::Account, @@ -43,7 +43,7 @@ async fn test_happy_path() -> Result<(), p2wc::ErrBoxSend> { let p2w_config = Pyth2WormholeConfig { owner: p2w_owner, wh_prog: wh_fixture_program_id, - max_batch_size: pyth2wormhole::attest::P2W_MAX_BATCH_SIZE, + max_batch_size: pyth_wormhole_attester::attest::P2W_MAX_BATCH_SIZE, pyth_owner, is_active: true, ops_owner: Some(ops_owner), @@ -59,9 +59,9 @@ async fn test_happy_path() -> Result<(), p2wc::ErrBoxSend> { // Populate test environment let mut p2w_test = ProgramTest::new( - "pyth2wormhole", + "pyth_wormhole_attester", p2w_program_id, - processor!(pyth2wormhole::instruction::solitaire), + processor!(pyth_wormhole_attester::instruction::solitaire), ); // Plant a filled config account diff --git a/solana/pyth2wormhole/client/tests/test_migrate.rs b/wormhole-attester/client/tests/test_migrate.rs similarity index 90% rename from solana/pyth2wormhole/client/tests/test_migrate.rs rename to wormhole-attester/client/tests/test_migrate.rs index 4b2c00e131..f21f9cc8e7 100644 --- a/solana/pyth2wormhole/client/tests/test_migrate.rs +++ b/wormhole-attester/client/tests/test_migrate.rs @@ -5,13 +5,13 @@ pub mod fixtures; use { fixtures::passthrough, log::info, - pyth2wormhole::config::{ + pyth_wormhole_attester::config::{ OldP2WConfigAccount, OldPyth2WormholeConfig, P2WConfigAccount, Pyth2WormholeConfig, }, - pyth2wormhole_client as p2wc, + pyth_wormhole_attester_client as p2wc, solana_program::system_program, solana_program_test::*, solana_sdk::{ @@ -43,7 +43,7 @@ async fn test_migrate_works() -> Result<(), solitaire::ErrBox> { let old_p2w_config = OldPyth2WormholeConfig { owner: p2w_owner.pubkey(), wh_prog: wh_fixture_program_id, - max_batch_size: pyth2wormhole::attest::P2W_MAX_BATCH_SIZE, + max_batch_size: pyth_wormhole_attester::attest::P2W_MAX_BATCH_SIZE, pyth_owner, is_active: true, }; @@ -52,9 +52,9 @@ async fn test_migrate_works() -> Result<(), solitaire::ErrBox> { // Populate test environment let mut p2w_test = ProgramTest::new( - "pyth2wormhole", + "pyth_wormhole_attester", p2w_program_id, - processor!(pyth2wormhole::instruction::solitaire), + processor!(pyth_wormhole_attester::instruction::solitaire), ); // Plant filled config accounts @@ -106,7 +106,7 @@ async fn test_migrate_already_migrated() -> Result<(), solitaire::ErrBox> { let old_p2w_config = OldPyth2WormholeConfig { owner: p2w_owner.pubkey(), wh_prog: wh_fixture_program_id, - max_batch_size: pyth2wormhole::attest::P2W_MAX_BATCH_SIZE, + max_batch_size: pyth_wormhole_attester::attest::P2W_MAX_BATCH_SIZE, pyth_owner, is_active: true, }; @@ -114,7 +114,7 @@ async fn test_migrate_already_migrated() -> Result<(), solitaire::ErrBox> { let new_p2w_config = Pyth2WormholeConfig { owner: p2w_owner.pubkey(), wh_prog: wh_fixture_program_id, - max_batch_size: pyth2wormhole::attest::P2W_MAX_BATCH_SIZE, + max_batch_size: pyth_wormhole_attester::attest::P2W_MAX_BATCH_SIZE, pyth_owner, is_active: true, ops_owner: Some(ops_owner.pubkey()), @@ -124,9 +124,9 @@ async fn test_migrate_already_migrated() -> Result<(), solitaire::ErrBox> { // Populate test environment let mut p2w_test = ProgramTest::new( - "pyth2wormhole", + "pyth_wormhole_attester", p2w_program_id, - processor!(pyth2wormhole::instruction::solitaire), + processor!(pyth_wormhole_attester::instruction::solitaire), ); // Plant filled config accounts diff --git a/solana/pyth2wormhole/client/tests/test_set_is_active.rs b/wormhole-attester/client/tests/test_set_is_active.rs similarity index 92% rename from solana/pyth2wormhole/client/tests/test_set_is_active.rs rename to wormhole-attester/client/tests/test_set_is_active.rs index 896ea09638..78a14a37f5 100644 --- a/solana/pyth2wormhole/client/tests/test_set_is_active.rs +++ b/wormhole-attester/client/tests/test_set_is_active.rs @@ -1,11 +1,11 @@ pub mod fixtures; use { - pyth2wormhole::config::{ + pyth_wormhole_attester::config::{ P2WConfigAccount, Pyth2WormholeConfig, }, - pyth2wormhole_client as p2wc, + pyth_wormhole_attester_client as p2wc, solana_program_test::*, solana_sdk::{ account::Account, @@ -41,7 +41,7 @@ async fn test_setting_is_active_works() -> Result<(), p2wc::ErrBoxSend> { let p2w_config = Pyth2WormholeConfig { owner: p2w_owner, wh_prog: wh_fixture_program_id, - max_batch_size: pyth2wormhole::attest::P2W_MAX_BATCH_SIZE, + max_batch_size: pyth_wormhole_attester::attest::P2W_MAX_BATCH_SIZE, pyth_owner, is_active: true, ops_owner: Some(ops_owner.pubkey()), @@ -49,9 +49,9 @@ async fn test_setting_is_active_works() -> Result<(), p2wc::ErrBoxSend> { // Populate test environment let mut p2w_test = ProgramTest::new( - "pyth2wormhole", + "pyth_wormhole_attester", p2w_program_id, - processor!(pyth2wormhole::instruction::solitaire), + processor!(pyth_wormhole_attester::instruction::solitaire), ); // Plant a filled config account @@ -146,7 +146,7 @@ async fn test_setting_is_active_does_not_work_without_ops_owner() -> Result<(), let p2w_config = Pyth2WormholeConfig { owner: p2w_owner, wh_prog: wh_fixture_program_id, - max_batch_size: pyth2wormhole::attest::P2W_MAX_BATCH_SIZE, + max_batch_size: pyth_wormhole_attester::attest::P2W_MAX_BATCH_SIZE, pyth_owner: pyth_owner.pubkey(), is_active: true, ops_owner: None, @@ -154,9 +154,9 @@ async fn test_setting_is_active_does_not_work_without_ops_owner() -> Result<(), // Populate test environment let mut p2w_test = ProgramTest::new( - "pyth2wormhole", + "pyth_wormhole_attester", p2w_program_id, - processor!(pyth2wormhole::instruction::solitaire), + processor!(pyth_wormhole_attester::instruction::solitaire), ); // Plant a filled config account diff --git a/solana/pyth2wormhole/governance/Cargo.toml b/wormhole-attester/governance/Cargo.toml similarity index 58% rename from solana/pyth2wormhole/governance/Cargo.toml rename to wormhole-attester/governance/Cargo.toml index 68143d0ab3..64e1bcb3be 100644 --- a/solana/pyth2wormhole/governance/Cargo.toml +++ b/wormhole-attester/governance/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "pyth2wormhole-governance" +name = "pyth-wormhole-attester-governance" version = "0.1.0" description = "CLI to generate governance payloads for the attester" edition = "2018" @@ -8,7 +8,7 @@ edition = "2018" anyhow = "1.0.65" clap = {version = "3.1.18", features = ["derive"]} solana-sdk = "=1.10.31" -pyth2wormhole-client = {path = "../client/"} +pyth-wormhole-attester-client = {path = "../client/"} hex = "0.4.3" -remote-executor = {path = "../../../pythnet/remote-executor/programs/remote-executor/"} +remote-executor = {path = "../../pythnet/remote-executor/programs/remote-executor/"} borsh = "0.9.3" diff --git a/solana/pyth2wormhole/governance/src/cli.rs b/wormhole-attester/governance/src/cli.rs similarity index 100% rename from solana/pyth2wormhole/governance/src/cli.rs rename to wormhole-attester/governance/src/cli.rs diff --git a/solana/pyth2wormhole/governance/src/main.rs b/wormhole-attester/governance/src/main.rs similarity index 98% rename from solana/pyth2wormhole/governance/src/main.rs rename to wormhole-attester/governance/src/main.rs index 9092013648..da31fab3a4 100644 --- a/solana/pyth2wormhole/governance/src/main.rs +++ b/wormhole-attester/governance/src/main.rs @@ -6,7 +6,7 @@ use { Action, Cli, }, - pyth2wormhole_client::{ + pyth_wormhole_attester_client::{ get_set_config_ix, get_set_is_active_ix, Pyth2WormholeConfig, diff --git a/solana/pyth2wormhole/program/Cargo.lock b/wormhole-attester/program/Cargo.lock similarity index 100% rename from solana/pyth2wormhole/program/Cargo.lock rename to wormhole-attester/program/Cargo.lock diff --git a/solana/pyth2wormhole/program/Cargo.toml b/wormhole-attester/program/Cargo.toml similarity index 79% rename from solana/pyth2wormhole/program/Cargo.toml rename to wormhole-attester/program/Cargo.toml index 4bfdbcacfe..bde90e4206 100644 --- a/solana/pyth2wormhole/program/Cargo.toml +++ b/wormhole-attester/program/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "pyth2wormhole" +name = "pyth-wormhole-attester" version = "0.1.0" -description = "Pyth to Wormhole solana on-chain integration" +description = "Pyth-over-Wormhole Solana contract" edition = "2018" [lib] crate-type = ["cdylib", "lib"] -name = "pyth2wormhole" +name = "pyth_wormhole_attester" [features] default = ["wormhole-bridge-solana/no-entrypoint"] @@ -21,7 +21,7 @@ rocksalt = { git = "https://github.com/wormhole-foundation/wormhole", tag = "v2. solana-program = "=1.10.31" borsh = "=0.9.3" pyth-client = "0.2.2" -p2w-sdk = { path = "../../../third_party/pyth/p2w-sdk/rust", features = ["solana"] } +p2w-sdk = { path = "../../third_party/pyth/p2w-sdk/rust", features = ["solana"] } serde = { version = "1", optional = true} serde_derive = { version = "1", optional = true} serde_json = { version = "1", optional = true} diff --git a/solana/pyth2wormhole/program/src/attest.rs b/wormhole-attester/program/src/attest.rs similarity index 100% rename from solana/pyth2wormhole/program/src/attest.rs rename to wormhole-attester/program/src/attest.rs diff --git a/solana/pyth2wormhole/program/src/config.rs b/wormhole-attester/program/src/config.rs similarity index 100% rename from solana/pyth2wormhole/program/src/config.rs rename to wormhole-attester/program/src/config.rs diff --git a/solana/pyth2wormhole/program/src/initialize.rs b/wormhole-attester/program/src/initialize.rs similarity index 100% rename from solana/pyth2wormhole/program/src/initialize.rs rename to wormhole-attester/program/src/initialize.rs diff --git a/solana/pyth2wormhole/program/src/lib.rs b/wormhole-attester/program/src/lib.rs similarity index 100% rename from solana/pyth2wormhole/program/src/lib.rs rename to wormhole-attester/program/src/lib.rs diff --git a/solana/pyth2wormhole/program/src/message.rs b/wormhole-attester/program/src/message.rs similarity index 100% rename from solana/pyth2wormhole/program/src/message.rs rename to wormhole-attester/program/src/message.rs diff --git a/solana/pyth2wormhole/program/src/migrate.rs b/wormhole-attester/program/src/migrate.rs similarity index 100% rename from solana/pyth2wormhole/program/src/migrate.rs rename to wormhole-attester/program/src/migrate.rs diff --git a/solana/pyth2wormhole/program/src/set_config.rs b/wormhole-attester/program/src/set_config.rs similarity index 100% rename from solana/pyth2wormhole/program/src/set_config.rs rename to wormhole-attester/program/src/set_config.rs diff --git a/solana/pyth2wormhole/program/src/set_is_active.rs b/wormhole-attester/program/src/set_is_active.rs similarity index 100% rename from solana/pyth2wormhole/program/src/set_is_active.rs rename to wormhole-attester/program/src/set_is_active.rs From 69a6e935d26f360c4ffa19543f9ea78aa28b317b Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 14:34:10 +0100 Subject: [PATCH 02/21] cosmwasm: fix contract after faulty merge --- .../cosmwasm/contracts/pyth/src/contract.rs | 3 +++ .../cosmwasm/contracts/pyth/src/msg.rs | 22 +++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/target-chains/cosmwasm/contracts/pyth/src/contract.rs b/target-chains/cosmwasm/contracts/pyth/src/contract.rs index afe06c52cb..2c30ed9490 100644 --- a/target-chains/cosmwasm/contracts/pyth/src/contract.rs +++ b/target-chains/cosmwasm/contracts/pyth/src/contract.rs @@ -30,6 +30,7 @@ use { }, }, cosmwasm_std::{ + coin, entry_point, has_coins, to_binary, @@ -41,6 +42,8 @@ use { DepsMut, Env, MessageInfo, + OverflowError, + OverflowOperation, QueryRequest, Response, StdResult, diff --git a/target-chains/cosmwasm/contracts/pyth/src/msg.rs b/target-chains/cosmwasm/contracts/pyth/src/msg.rs index bd8ddc84d6..90dfb0020f 100644 --- a/target-chains/cosmwasm/contracts/pyth/src/msg.rs +++ b/target-chains/cosmwasm/contracts/pyth/src/msg.rs @@ -4,6 +4,10 @@ use { Binary, Coin, }, + pyth_sdk_cw::{ + PriceFeed, + PriceIdentifier, + }, schemars::JsonSchema, serde::{ Deserialize, @@ -41,7 +45,17 @@ pub enum ExecuteMsg { #[serde(rename_all = "snake_case")] pub struct MigrateMsg {} -pub use pyth_sdk_cw::{ - PriceFeedResponse, - QueryMsg, -}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + PriceFeed { id: PriceIdentifier }, + GetUpdateFee { vaas: Vec }, + GetValidTimePeriod, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct PriceFeedResponse { + pub price_feed: PriceFeed, +} From 9ccc5ea8719097fa9899f238361b794ffadf0218 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 14:34:49 +0100 Subject: [PATCH 03/21] .github: remove unused dependabot config --- .github/dependabot.yml | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index ae0803ffdf..0000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,28 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/bridge_ui" # Location of package manifests - schedule: - interval: "weekly" - labels: - - "dependencies" - - "bridge_ui" - - package-ecosystem: "npm" - directory: "/sdk/js" - schedule: - interval: "weekly" - labels: - - "dependencies" - - "sdk/js" - - package-ecosystem: "npm" - directory: "/spydk/js" - schedule: - interval: "weekly" - labels: - - "dependencies" - - "spydk/js" From e5dbb52e8bbf6f6d6f25cd3f6bf4d7f367563bf4 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:04:37 +0100 Subject: [PATCH 04/21] Fix path references in .github and .pre-commit-config.yml --- .github/workflows/ethereum-contract.yml | 6 +++--- .github/workflows/price-service-image-push.yml | 2 +- .github/workflows/pyth-cosmwasm-contract.yml | 6 +++--- .pre-commit-config.yaml | 16 ++++++++-------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ethereum-contract.yml b/.github/workflows/ethereum-contract.yml index 6ad91404ec..dbf9cf63c9 100644 --- a/.github/workflows/ethereum-contract.yml +++ b/.github/workflows/ethereum-contract.yml @@ -1,13 +1,13 @@ on: pull_request: paths: - - ethereum/** + - target-chains/ethereum/** - third_party/pyth/xc-governance-sdk-js/** push: branches: - main paths: - - ethereum/** + - target-chains/ethereum/** - third_party/pyth/xc-governance-sdk-js/** name: Ethereum Contract @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: ethereum/ + working-directory: target-chains/ethereum/ steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/price-service-image-push.yml b/.github/workflows/price-service-image-push.yml index 18b94ed5a4..b5467d9736 100644 --- a/.github/workflows/price-service-image-push.yml +++ b/.github/workflows/price-service-image-push.yml @@ -37,7 +37,7 @@ jobs: env: AWS_REGION: us-east-1 - run: | - DOCKER_BUILDKIT=1 docker build -f Dockerfile.wasm -o type=local,dest=. . + DOCKER_BUILDKIT=1 docker build -f tilt-devnet/docker-images/Dockerfile.wasm -o type=local,dest=. . DOCKER_BUILDKIT=1 docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f third_party/pyth/price-service/Dockerfile.price_service . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG env: diff --git a/.github/workflows/pyth-cosmwasm-contract.yml b/.github/workflows/pyth-cosmwasm-contract.yml index 1af699c05c..63c12559da 100644 --- a/.github/workflows/pyth-cosmwasm-contract.yml +++ b/.github/workflows/pyth-cosmwasm-contract.yml @@ -3,13 +3,13 @@ name: Pyth CosmWasm Contract on: pull_request: paths: - - cosmwasm/** + - target-chains/cosmwasm/** - third_party/pyth/p2w-sdk/rust/** push: branches: - main paths: - - cosmwasm/** + - target-chainscosmwasm/** - third_party/pyth/p2w-sdk/rust/** env: @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: ./cosmwasm/contracts/pyth + working-directory: target-chains/cosmwasm/contracts/pyth steps: - uses: actions/checkout@v2 - name: Build diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ab57b62aea..ea3c00178d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,30 +33,30 @@ repos: - id: cargo-fmt-attester name: Cargo format for attester language: "rust" - entry: cargo +nightly fmt --manifest-path ./solana/pyth2wormhole/Cargo.toml --all -- --config-path rustfmt.toml + entry: cargo +nightly fmt --manifest-path ./wormhole-attester/Cargo.toml --all -- --config-path rustfmt.toml pass_filenames: false - files: solana/pyth2wormhole/ + files: ./wormhole-attester - id: cargo-clippy-attester name: Cargo clippy for attester language: "rust" entry: | bash -c 'EMITTER_ADDRESS=0 BRIDGE_ADDRESS=0 cargo +nightly clippy --manifest-path \ - ./solana/pyth2wormhole/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings' + ./wormhole-attester/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings' pass_filenames: false - files: solana/pyth2wormhole/ + files: wormhole-attester/ # Hooks for cosmwasm contract - id: cargo-fmt-cosmwasm name: Cargo format for cosmwasm contract language: "rust" - entry: cargo +nightly fmt --manifest-path ./cosmwasm/Cargo.toml --all -- --config-path rustfmt.toml + entry: cargo +nightly fmt --manifest-path ./target-chains/cosmwasmCargo.toml --all -- --config-path rustfmt.toml pass_filenames: false - files: cosmwasm/ + files: target-chains/cosmwasm - id: cargo-clippy-cosmwasm name: Cargo clippy for cosmwasm contract language: "rust" - entry: cargo +nightly clippy --manifest-path ./cosmwasm/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings + entry: cargo +nightly clippy --manifest-path ./target-chains/cosmwasmCargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings pass_filenames: false - files: cosmwasm/ + files: target-chains/cosmwasm # Hooks for p2w-sdk/rust - id: cargo-fmt-p2w-sdk name: Cargo format for p2w-sdk From 5cc6134125a62e48beeda0e0cb4b0399f7fb75a7 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:06:24 +0100 Subject: [PATCH 05/21] .github: Rename attester references to pyth-wormhole-attester --- .github/workflows/attester-image-push.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/attester-image-push.yml b/.github/workflows/attester-image-push.yml index e96e4f2b98..a4d9f5127e 100644 --- a/.github/workflows/attester-image-push.yml +++ b/.github/workflows/attester-image-push.yml @@ -2,7 +2,7 @@ name: Build and Push Attester Image on: push: tags: - - pyth-attester-v* + - pyth-wormhole-attester-v* workflow_dispatch: inputs: dispatch_description: @@ -18,13 +18,13 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set image tag to version of the git tag - if: ${{ startsWith(github.ref, 'refs/tags/pyth-attester-v') }} + if: ${{ startsWith(github.ref, 'refs/tags/pyth-wormhole-attester-v') }} run: | PREFIX="refs/tags/pyth-attester-" VERSION="${GITHUB_REF:${#PREFIX}}" echo "IMAGE_TAG=${VERSION}" >> "${GITHUB_ENV}" - name: Set image tag to the git commit hash - if: ${{ !startsWith(github.ref, 'refs/tags/pyth-attester-v') }} + if: ${{ !startsWith(github.ref, 'refs/tags/pyth-wormhole-attester-v') }} run: | echo "IMAGE_TAG=${{ github.sha }}" >> "${GITHUB_ENV}" - uses: aws-actions/configure-aws-credentials@8a84b07f2009032ade05a88a28750d733cc30db1 @@ -37,9 +37,8 @@ jobs: env: AWS_REGION: us-east-1 - run: | - DOCKER_BUILDKIT=1 docker build -f Dockerfile.client -t bridge-client . DOCKER_BUILDKIT=1 docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f third_party/pyth/Dockerfile.p2w-attest . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG env: ECR_REGISTRY: public.ecr.aws - ECR_REPOSITORY: pyth-network/xc-attest + ECR_REPOSITORY: pyth-network/pyth-wormhole-attester-client From aa6657c20f2db269c69aaf032d985dec554b7525 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:25:57 +0100 Subject: [PATCH 06/21] .pre-commit-config.yaml: fix paths and run all commit hooks --- .pre-commit-config.yaml | 16 +++++++-------- .../cosmwasm/contracts/pyth/Cargo.toml | 2 +- tilt-devnet/docker-images/Dockerfile.client | 2 +- tilt-devnet/docker-images/Dockerfile.multisig | 2 +- tilt-devnet/docker-images/README.md | 2 +- tilt-devnet/secrets/README.md | 1 + wormhole-attester/client/src/lib.rs | 20 ++++++++++++------- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ea3c00178d..d749d13a0a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,20 +22,20 @@ repos: language: "rust" entry: cargo +nightly fmt --manifest-path ./pythnet/remote-executor/Cargo.toml --all -- --config-path rustfmt.toml pass_filenames: false - files: pythnet/remote-executor/ + files: pythnet/remote-executor - id: cargo-clippy-remote-executor name: Cargo clippy for remote executor language: "rust" entry: cargo +nightly clippy --manifest-path ./pythnet/remote-executor/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings pass_filenames: false - files: pythnet/remote-executor/ + files: pythnet/remote-executor # Hooks for the attester - id: cargo-fmt-attester name: Cargo format for attester language: "rust" entry: cargo +nightly fmt --manifest-path ./wormhole-attester/Cargo.toml --all -- --config-path rustfmt.toml pass_filenames: false - files: ./wormhole-attester + files: wormhole-attester - id: cargo-clippy-attester name: Cargo clippy for attester language: "rust" @@ -43,18 +43,18 @@ repos: bash -c 'EMITTER_ADDRESS=0 BRIDGE_ADDRESS=0 cargo +nightly clippy --manifest-path \ ./wormhole-attester/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings' pass_filenames: false - files: wormhole-attester/ + files: wormhole-attester # Hooks for cosmwasm contract - id: cargo-fmt-cosmwasm name: Cargo format for cosmwasm contract language: "rust" - entry: cargo +nightly fmt --manifest-path ./target-chains/cosmwasmCargo.toml --all -- --config-path rustfmt.toml + entry: cargo +nightly fmt --manifest-path ./target-chains/cosmwasm/Cargo.toml --all -- --config-path rustfmt.toml pass_filenames: false files: target-chains/cosmwasm - id: cargo-clippy-cosmwasm name: Cargo clippy for cosmwasm contract language: "rust" - entry: cargo +nightly clippy --manifest-path ./target-chains/cosmwasmCargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings + entry: cargo +nightly clippy --manifest-path ./target-chains/cosmwasm/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings pass_filenames: false files: target-chains/cosmwasm # Hooks for p2w-sdk/rust @@ -63,10 +63,10 @@ repos: language: "rust" entry: cargo +nightly fmt --manifest-path ./third_party/pyth/p2w-sdk/rust/Cargo.toml --all -- --config-path rustfmt.toml pass_filenames: false - files: third_party/pyth/p2w-sdk/rust/ + files: third_party/pyth/p2w-sdk/rust - id: cargo-clippy-p2w-sdk name: Cargo clippy for p2w-sdk language: "rust" entry: cargo +nightly clippy --manifest-path ./third_party/pyth/p2w-sdk/rust/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings pass_filenames: false - files: third_party/pyth/p2w-sdk/rust/ + files: third_party/pyth/p2w-sdk/rust diff --git a/target-chains/cosmwasm/contracts/pyth/Cargo.toml b/target-chains/cosmwasm/contracts/pyth/Cargo.toml index 759fd964d0..16df11bf6b 100644 --- a/target-chains/cosmwasm/contracts/pyth/Cargo.toml +++ b/target-chains/cosmwasm/contracts/pyth/Cargo.toml @@ -28,7 +28,7 @@ generic-array = { version = "0.14.4" } hex = "0.4.2" lazy_static = "1.4.0" bigint = "4" -p2w-sdk = { path = "../../../third_party/pyth/p2w-sdk/rust" } +p2w-sdk = { path = "../../../../third_party/pyth/p2w-sdk/rust" } pyth-sdk-cw = "0.2.0" byteorder = "1.4.3" diff --git a/tilt-devnet/docker-images/Dockerfile.client b/tilt-devnet/docker-images/Dockerfile.client index e7d58b8930..42fdc4c962 100644 --- a/tilt-devnet/docker-images/Dockerfile.client +++ b/tilt-devnet/docker-images/Dockerfile.client @@ -10,7 +10,7 @@ RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && apt-get install ADD rust-toolchain /rust-toolchain ADD wormhole-attester/ /usr/src/wormhole-attester -WORKDIR /usr/src/wormhole-attester +WORKDIR /usr/src/wormhole-attester RUN --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \ diff --git a/tilt-devnet/docker-images/Dockerfile.multisig b/tilt-devnet/docker-images/Dockerfile.multisig index 0721b82470..1ab697e6a8 100644 --- a/tilt-devnet/docker-images/Dockerfile.multisig +++ b/tilt-devnet/docker-images/Dockerfile.multisig @@ -32,6 +32,6 @@ RUN rm -rf node_modules && mv node_modules_cached node_modules # Add the rest of the code. This ensures that real code changes do not affect the layer caching of `npm ci` ADD third_party/pyth /root/pyth -ADD tilt-devnet/secrets/solana/ /solana-secrets +ADD tilt-devnet/secrets/solana/ /solana-secrets RUN npm install diff --git a/tilt-devnet/docker-images/README.md b/tilt-devnet/docker-images/README.md index bc4f41a4ca..ed169b23e1 100644 --- a/tilt-devnet/docker-images/README.md +++ b/tilt-devnet/docker-images/README.md @@ -2,4 +2,4 @@ This directory holds docker images for services that don't have a meaningful source code in this monorepo. Notably, images that prepare - * [ ] Tilt devnet environments are stored here. +Tilt devnet environments are stored here. diff --git a/tilt-devnet/secrets/README.md b/tilt-devnet/secrets/README.md index 108990e576..83ed4689ad 100644 --- a/tilt-devnet/secrets/README.md +++ b/tilt-devnet/secrets/README.md @@ -1,3 +1,4 @@ # IMPORTANT: Never, ever use any of these private keys in a public chain environment + The secrets gathered here may only be used to perform automated testing scenarios in Tilt. They are plainly visible in the code repository **on purpose**. diff --git a/wormhole-attester/client/src/lib.rs b/wormhole-attester/client/src/lib.rs index 823b3e3a63..70570759e8 100644 --- a/wormhole-attester/client/src/lib.rs +++ b/wormhole-attester/client/src/lib.rs @@ -43,6 +43,11 @@ use { warn, }, p2w_sdk::P2WEmitter, + pyth_sdk_solana::state::{ + load_mapping_account, + load_price_account, + load_product_account, + }, pyth_wormhole_attester::{ config::{ OldP2WConfigAccount, @@ -54,11 +59,6 @@ use { }, AttestData, }, - pyth_sdk_solana::state::{ - load_mapping_account, - load_price_account, - load_product_account, - }, solana_client::nonblocking::rpc_client::RpcClient, solana_program::{ hash::Hash, @@ -109,7 +109,10 @@ pub fn gen_init_tx( AccountMeta::new(system_program::id(), false), ]; - let ix_data = (pyth_wormhole_attester::instruction::Instruction::Initialize, config); + let ix_data = ( + pyth_wormhole_attester::instruction::Instruction::Initialize, + config, + ); let ix = Instruction::new_with_bytes(p2w_addr, ix_data.try_to_vec()?.as_slice(), acc_metas); @@ -250,7 +253,10 @@ pub fn gen_migrate_tx( AccountMeta::new(system_program::id(), false), ]; - let ix_data = (pyth_wormhole_attester::instruction::Instruction::Migrate, ()); + let ix_data = ( + pyth_wormhole_attester::instruction::Instruction::Migrate, + (), + ); let ix = Instruction::new_with_bytes(p2w_addr, ix_data.try_to_vec()?.as_slice(), acc_metas); From a393d3362bf775c5a2b4607fa0bca084f5fce909 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:31:37 +0100 Subject: [PATCH 07/21] p2w-relay: Fix faulty merge resolution in favor of origin/main --- third_party/pyth/p2w-relay/package-lock.json | 4 +-- third_party/pyth/p2w-relay/src/relay/terra.ts | 30 ++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/third_party/pyth/p2w-relay/package-lock.json b/third_party/pyth/p2w-relay/package-lock.json index 3d0c3b7a15..ddceac3817 100644 --- a/third_party/pyth/p2w-relay/package-lock.json +++ b/third_party/pyth/p2w-relay/package-lock.json @@ -50,7 +50,7 @@ "dependencies": { "@certusone/wormhole-sdk": "0.2.1", "@improbable-eng/grpc-web-node-http-transport": "^0.14.1", - "@pythnetwork/pyth-sdk-js": "^1.0.0" + "@pythnetwork/pyth-sdk-js": "^1.1.0" }, "devDependencies": { "@openzeppelin/contracts": "^4.2.0", @@ -9305,7 +9305,7 @@ "@certusone/wormhole-sdk": "0.2.1", "@improbable-eng/grpc-web-node-http-transport": "^0.14.1", "@openzeppelin/contracts": "^4.2.0", - "@pythnetwork/pyth-sdk-js": "^1.0.0", + "@pythnetwork/pyth-sdk-js": "^1.1.0", "@typechain/ethers-v5": "^7.1.2", "@types/long": "^4.0.1", "@types/node": "^16.6.1", diff --git a/third_party/pyth/p2w-relay/src/relay/terra.ts b/third_party/pyth/p2w-relay/src/relay/terra.ts index b739890a80..273037a34e 100644 --- a/third_party/pyth/p2w-relay/src/relay/terra.ts +++ b/third_party/pyth/p2w-relay/src/relay/terra.ts @@ -1,4 +1,3 @@ -import { fromUint8Array } from "js-base64"; import { Coin, LCDClient, @@ -7,7 +6,6 @@ import { Msg, MsgExecuteContract, } from "@terra-money/terra.js"; -import { hexToUint8Array } from "@certusone/wormhole-sdk"; import axios from "axios"; import { logger } from "../helpers"; @@ -67,6 +65,9 @@ export class TerraRelay implements Relay { const wallet = lcdClient.wallet(mk); + logger.debug("TIME: Querying fee"); + let fee: Coin = await this.getUpdateFee(signedVAAs); + logger.debug("TIME: creating messages"); let base64VAAs = []; @@ -182,11 +183,6 @@ export class TerraRelay implements Relay { logger.info("Querying terra for price info for priceId [" + priceId + "]"); const lcdClient = new LCDClient(this.lcdConfig); - - const mk = new MnemonicKey({ - mnemonic: this.walletPrivateKey, - }); - return await lcdClient.wasm.contractQuery(this.contractAddress, { price_feed: { id: priceId, @@ -194,6 +190,26 @@ export class TerraRelay implements Relay { }); } + async getUpdateFee(hexVAAs: Array): Promise { + const lcdClient = new LCDClient(this.lcdConfig); + + let base64VAAs = []; + for (let idx = 0; idx < hexVAAs.length; ++idx) { + base64VAAs.push(Buffer.from(hexVAAs[idx], "hex").toString("base64")); + } + + let result = await lcdClient.wasm.contractQuery( + this.contractAddress, + { + get_update_fee: { + vaas: base64VAAs, + }, + } + ); + + return Coin.fromData(result); + } + async getPayerInfo(): Promise<{ address: string; balance: bigint }> { const lcdClient = new LCDClient(this.lcdConfig); From 3a1354b9b3785ab556b2be0aa5fd18d08aba09b4 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:38:55 +0100 Subject: [PATCH 08/21] Dockerfile.pyth_relay: Fix Ethereum path reference --- third_party/pyth/p2w-relay/Dockerfile.pyth_relay | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/third_party/pyth/p2w-relay/Dockerfile.pyth_relay b/third_party/pyth/p2w-relay/Dockerfile.pyth_relay index dbd2bc122e..d84c50b890 100644 --- a/third_party/pyth/p2w-relay/Dockerfile.pyth_relay +++ b/third_party/pyth/p2w-relay/Dockerfile.pyth_relay @@ -1,16 +1,15 @@ FROM node:16-alpine@sha256:72a490e7ed8aed68e16b8dc8f37b5bcc35c5b5c56ee3256effcdee63e2546f93 -ARG P2W_BASE_PATH=/usr/src/pyth2wormhole +ARG BASE_PATH=/usr/src RUN apk --no-cache --update add python3 build-base # Needed by the Ethereum build -WORKDIR ${P2W_BASE_PATH} +WORKDIR ${BASE_PATH} RUN addgroup -S pyth -g 10001 && adduser -S pyth -G pyth -u 10001 RUN chown -R pyth:pyth . USER pyth -WORKDIR ${P2W_BASE_PATH}/ethereum -ADD --chown=pyth:pyth target-chains/ethereum . +ADD --chown=pyth:pyth target-chains/ethereum/ target-chains/ethereum RUN npm install && npm run build USER root @@ -21,7 +20,7 @@ USER pyth # Adds p2w-sdk/js dependency ARG P2W_SDK_REL_PATH=third_party/pyth/p2w-sdk/js -WORKDIR ${P2W_BASE_PATH}/${P2W_SDK_REL_PATH} +WORKDIR ${BASE_PATH}/${P2W_SDK_REL_PATH} ADD --chown=pyth:pyth ${P2W_SDK_REL_PATH} . RUN npm ci && npm run build && npm cache clean --force @@ -29,7 +28,7 @@ RUN npm ci && npm run build && npm cache clean --force # Add the code and compile ARG P2W_RELAY_REL_PATH=third_party/pyth/p2w-relay -WORKDIR ${P2W_BASE_PATH}/${P2W_RELAY_REL_PATH} +WORKDIR ${BASE_PATH}/${P2W_RELAY_REL_PATH} ADD --chown=pyth:pyth ${P2W_RELAY_REL_PATH} . RUN npm ci && npm run build && npm cache clean --force @@ -37,4 +36,4 @@ RUN npm ci && npm run build && npm cache clean --force # If you are building for production # RUN npm ci --only=production -RUN mkdir -p ${P2W_BASE_PATH}/${P2W_RELAY_REL_PATH}/logs +RUN mkdir -p ${BASE_PATH}/${P2W_RELAY_REL_PATH}/logs From 020b6c43074673a59af314f2f7ee1505afbf6d9a Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:41:58 +0100 Subject: [PATCH 09/21] Dockerfile.solana: Trip early cache with arbitrary change --- tilt-devnet/docker-images/Dockerfile.solana | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tilt-devnet/docker-images/Dockerfile.solana b/tilt-devnet/docker-images/Dockerfile.solana index 6728c7628a..fc86d32e8b 100644 --- a/tilt-devnet/docker-images/Dockerfile.solana +++ b/tilt-devnet/docker-images/Dockerfile.solana @@ -3,17 +3,16 @@ FROM pythfoundation/pyth-client:devnet-v2.12.0 as pyth-oracle-copy FROM docker.io/library/rust:1.49@sha256:a50165ea96983c21832578afb1c8c028674c965bc1ed43b607871b1f362e06a5 as build -RUN apt-get update && \ - apt-get install -y \ +RUN apt-get update\ + && apt-get install -y \ clang \ libssl-dev \ libudev-dev \ llvm \ pkg-config \ zlib1g-dev \ - && \ - rm -rf /var/lib/apt/lists/* && \ - rustup component add rustfmt + && rm -rf /var/lib/apt/lists/* \ + && rustup component add rustfmt RUN sh -c "$(curl -sSfL https://release.solana.com/v1.10.31/install)" From 3883381d40cfa53de344b6c4fe9e0737945e0c46 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:44:12 +0100 Subject: [PATCH 10/21] Dockerfile.pyth_relay: typo --- third_party/pyth/p2w-relay/Dockerfile.pyth_relay | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/third_party/pyth/p2w-relay/Dockerfile.pyth_relay b/third_party/pyth/p2w-relay/Dockerfile.pyth_relay index d84c50b890..752d6cf6c4 100644 --- a/third_party/pyth/p2w-relay/Dockerfile.pyth_relay +++ b/third_party/pyth/p2w-relay/Dockerfile.pyth_relay @@ -9,7 +9,8 @@ RUN addgroup -S pyth -g 10001 && adduser -S pyth -G pyth -u 10001 RUN chown -R pyth:pyth . USER pyth -ADD --chown=pyth:pyth target-chains/ethereum/ target-chains/ethereum +WORKDIR ${BASE_PATH}/target-chains/ethereum +ADD --chown=pyth:pyth target-chains/ethereum/ . RUN npm install && npm run build USER root From 33e332c6cdb59a357f16fd477c53ebdd5bb1b8c3 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:48:25 +0100 Subject: [PATCH 11/21] p2w-relay: fix evm build in npm script --- third_party/pyth/p2w-relay/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/pyth/p2w-relay/package.json b/third_party/pyth/p2w-relay/package.json index 22677b56f9..dc5befc7ea 100644 --- a/third_party/pyth/p2w-relay/package.json +++ b/third_party/pyth/p2w-relay/package.json @@ -7,8 +7,8 @@ "build": "npm run build-evm && npm run build-lib", "build-evm": "npm run build-evm-contract && npm run copy-evm-abis && npm run build-evm-bindings", "build-lib": "tsc", - "build-evm-contract": "cd ../../../ethereum/ && (npm run build || npm ci && npm run build)", - "copy-evm-abis": "mkdir -p ./src/evm/abis && cp -r ../../../ethereum/build/contracts/* ./src/evm/abis/", + "build-evm-contract": "cd ../../../target-chains/ethereum/ && (npm run build || npm ci && npm run build)", + "copy-evm-abis": "mkdir -p ./src/evm/abis && cp -r ../../../target-chains/ethereum/build/contracts/* ./src/evm/abis/", "build-evm-bindings": "mkdir -p ./src/evm/bindings/ && typechain --target=ethers-v5 --out-dir=src/evm/bindings/ src/evm/abis/Pyth*.json", "start": "node lib/index.js", "listen_only": "node lib/index.js --listen_only" From b0ba87ee71f3b99adfb58ebfe8ededc1f0f7b9c7 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Mon, 2 Jan 2023 15:52:27 +0100 Subject: [PATCH 12/21] Dockerfile.solana: Retry invalidating cache again --- tilt-devnet/docker-images/Dockerfile.solana | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tilt-devnet/docker-images/Dockerfile.solana b/tilt-devnet/docker-images/Dockerfile.solana index fc86d32e8b..9abafced0c 100644 --- a/tilt-devnet/docker-images/Dockerfile.solana +++ b/tilt-devnet/docker-images/Dockerfile.solana @@ -6,8 +6,8 @@ FROM docker.io/library/rust:1.49@sha256:a50165ea96983c21832578afb1c8c028674c965b RUN apt-get update\ && apt-get install -y \ clang \ - libssl-dev \ libudev-dev \ + libssl-dev \ llvm \ pkg-config \ zlib1g-dev \ From 20c87667af883309edbcd004ba95dc7378525942 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Tue, 3 Jan 2023 15:45:42 +0100 Subject: [PATCH 13/21] near -> target-chains/near --- {near => target-chains/near}/receiver/Cargo.toml | 0 {near => target-chains/near}/receiver/src/error.rs | 0 {near => target-chains/near}/receiver/src/ext.rs | 0 {near => target-chains/near}/receiver/src/governance.rs | 0 {near => target-chains/near}/receiver/src/lib.rs | 0 {near => target-chains/near}/receiver/src/state.rs | 0 {near => target-chains/near}/receiver/src/tests.rs | 0 {near => target-chains/near}/receiver/tests/workspaces.rs | 0 {near => target-chains/near}/wormhole-stub/Cargo.lock | 0 {near => target-chains/near}/wormhole-stub/Cargo.toml | 0 {near => target-chains/near}/wormhole-stub/src/lib.rs | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename {near => target-chains/near}/receiver/Cargo.toml (100%) rename {near => target-chains/near}/receiver/src/error.rs (100%) rename {near => target-chains/near}/receiver/src/ext.rs (100%) rename {near => target-chains/near}/receiver/src/governance.rs (100%) rename {near => target-chains/near}/receiver/src/lib.rs (100%) rename {near => target-chains/near}/receiver/src/state.rs (100%) rename {near => target-chains/near}/receiver/src/tests.rs (100%) rename {near => target-chains/near}/receiver/tests/workspaces.rs (100%) rename {near => target-chains/near}/wormhole-stub/Cargo.lock (100%) rename {near => target-chains/near}/wormhole-stub/Cargo.toml (100%) rename {near => target-chains/near}/wormhole-stub/src/lib.rs (100%) diff --git a/near/receiver/Cargo.toml b/target-chains/near/receiver/Cargo.toml similarity index 100% rename from near/receiver/Cargo.toml rename to target-chains/near/receiver/Cargo.toml diff --git a/near/receiver/src/error.rs b/target-chains/near/receiver/src/error.rs similarity index 100% rename from near/receiver/src/error.rs rename to target-chains/near/receiver/src/error.rs diff --git a/near/receiver/src/ext.rs b/target-chains/near/receiver/src/ext.rs similarity index 100% rename from near/receiver/src/ext.rs rename to target-chains/near/receiver/src/ext.rs diff --git a/near/receiver/src/governance.rs b/target-chains/near/receiver/src/governance.rs similarity index 100% rename from near/receiver/src/governance.rs rename to target-chains/near/receiver/src/governance.rs diff --git a/near/receiver/src/lib.rs b/target-chains/near/receiver/src/lib.rs similarity index 100% rename from near/receiver/src/lib.rs rename to target-chains/near/receiver/src/lib.rs diff --git a/near/receiver/src/state.rs b/target-chains/near/receiver/src/state.rs similarity index 100% rename from near/receiver/src/state.rs rename to target-chains/near/receiver/src/state.rs diff --git a/near/receiver/src/tests.rs b/target-chains/near/receiver/src/tests.rs similarity index 100% rename from near/receiver/src/tests.rs rename to target-chains/near/receiver/src/tests.rs diff --git a/near/receiver/tests/workspaces.rs b/target-chains/near/receiver/tests/workspaces.rs similarity index 100% rename from near/receiver/tests/workspaces.rs rename to target-chains/near/receiver/tests/workspaces.rs diff --git a/near/wormhole-stub/Cargo.lock b/target-chains/near/wormhole-stub/Cargo.lock similarity index 100% rename from near/wormhole-stub/Cargo.lock rename to target-chains/near/wormhole-stub/Cargo.lock diff --git a/near/wormhole-stub/Cargo.toml b/target-chains/near/wormhole-stub/Cargo.toml similarity index 100% rename from near/wormhole-stub/Cargo.toml rename to target-chains/near/wormhole-stub/Cargo.toml diff --git a/near/wormhole-stub/src/lib.rs b/target-chains/near/wormhole-stub/src/lib.rs similarity index 100% rename from near/wormhole-stub/src/lib.rs rename to target-chains/near/wormhole-stub/src/lib.rs From ff0a8b33492688d69d7b2ccb183904dcabbc5467 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Tue, 3 Jan 2023 16:12:08 +0100 Subject: [PATCH 14/21] wormhole-attester: bump on/off-chain major versions due to rename Attester packages were renamed. This possibly breaks most dependees. --- wormhole-attester/Cargo.lock | 4 ++-- wormhole-attester/client/Cargo.toml | 2 +- wormhole-attester/program/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wormhole-attester/Cargo.lock b/wormhole-attester/Cargo.lock index 604a8c7aed..cfa74419e6 100644 --- a/wormhole-attester/Cargo.lock +++ b/wormhole-attester/Cargo.lock @@ -2694,7 +2694,7 @@ dependencies = [ [[package]] name = "pyth-wormhole-attester" -version = "0.1.0" +version = "1.0.0" dependencies = [ "borsh", "p2w-sdk", @@ -2710,7 +2710,7 @@ dependencies = [ [[package]] name = "pyth-wormhole-attester-client" -version = "1.3.0" +version = "2.0.0" dependencies = [ "borsh", "clap 3.1.18", diff --git a/wormhole-attester/client/Cargo.toml b/wormhole-attester/client/Cargo.toml index d880823fe0..6ba2adf0ab 100644 --- a/wormhole-attester/client/Cargo.toml +++ b/wormhole-attester/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyth-wormhole-attester-client" -version = "1.3.0" +version = "2.0.0" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/wormhole-attester/program/Cargo.toml b/wormhole-attester/program/Cargo.toml index bde90e4206..a409b4b019 100644 --- a/wormhole-attester/program/Cargo.toml +++ b/wormhole-attester/program/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyth-wormhole-attester" -version = "0.1.0" +version = "1.0.0" description = "Pyth-over-Wormhole Solana contract" edition = "2018" From b40459729ffc60daa73b6f00be7882fbe3546824 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Tue, 3 Jan 2023 17:14:09 +0100 Subject: [PATCH 15/21] Dockerfile.solana: Improve decoy-crate to have a real lib target --- tilt-devnet/docker-images/Dockerfile.solana | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tilt-devnet/docker-images/Dockerfile.solana b/tilt-devnet/docker-images/Dockerfile.solana index 9abafced0c..9d7ceffec8 100644 --- a/tilt-devnet/docker-images/Dockerfile.solana +++ b/tilt-devnet/docker-images/Dockerfile.solana @@ -24,8 +24,10 @@ ADD rust-toolchain /rust-toolchain USER root # Solana does a questionable download at the beginning of a *first* build-bpf call. Trigger and layer-cache it explicitly. RUN cargo init --lib /tmp/decoy-crate && \ - cd /tmp/decoy-crate && cargo build-bpf && \ - rm -rf /tmp/decoy-crate + cd /tmp/decoy-crate \ + && echo '[lib]\nname=decoy_crate\ncrate-type=["cdylib"]' >> /tmp/decoy-crate/Cargo.toml # Make a more plausible decoy crate with real cdylib target \ + && cargo build-bpf \ + && rm -rf /tmp/decoy-crate WORKDIR /usr/src/bridge From 0239c1a422420e69c077e2c042af004926d9ccb8 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Tue, 3 Jan 2023 18:11:35 +0100 Subject: [PATCH 16/21] .github/[...]/pyth-cosmwasm-contract.yml: typo --- .github/workflows/pyth-cosmwasm-contract.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pyth-cosmwasm-contract.yml b/.github/workflows/pyth-cosmwasm-contract.yml index 63c12559da..042fc645cb 100644 --- a/.github/workflows/pyth-cosmwasm-contract.yml +++ b/.github/workflows/pyth-cosmwasm-contract.yml @@ -9,7 +9,7 @@ on: branches: - main paths: - - target-chainscosmwasm/** + - target-chains/cosmwasm/** - third_party/pyth/p2w-sdk/rust/** env: From fe69009e56a104f6992629a9f983c7214b3cb22e Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Tue, 3 Jan 2023 18:24:20 +0100 Subject: [PATCH 17/21] rust-toolchain: Bump rust to stable 1.63 --- rust-toolchain | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain b/rust-toolchain index 34123a9088..d2ba4fa0bd 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -2,5 +2,5 @@ # ci/rust-version.sh in the branch of the solana repo that corresponds # with the version we're using. [toolchain] -channel = "nightly-2022-02-24" +channel = "1.63.0" profile = "minimal" From 5130db4790297747f772d2e665ea691af8c0c0d8 Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Tue, 3 Jan 2023 18:26:06 +0100 Subject: [PATCH 18/21] rust-toolchain: use christmas nightly --- rust-toolchain | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain b/rust-toolchain index d2ba4fa0bd..4a8166e27f 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -2,5 +2,5 @@ # ci/rust-version.sh in the branch of the solana repo that corresponds # with the version we're using. [toolchain] -channel = "1.63.0" +channel = "nightly-2022-12-24" profile = "minimal" From ef6be583e20ebfc30b93673be8b5169c7c2caabd Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Wed, 4 Jan 2023 10:43:40 +0100 Subject: [PATCH 19/21] empty commit to trigger build From e923bbae06f99917999eea162073305aa917dcab Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Wed, 4 Jan 2023 11:59:45 +0100 Subject: [PATCH 20/21] attester-image-push.yaml: keep xc-attest image name intact --- .github/workflows/attester-image-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/attester-image-push.yml b/.github/workflows/attester-image-push.yml index a4d9f5127e..e2a992e83a 100644 --- a/.github/workflows/attester-image-push.yml +++ b/.github/workflows/attester-image-push.yml @@ -41,4 +41,4 @@ jobs: docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG env: ECR_REGISTRY: public.ecr.aws - ECR_REPOSITORY: pyth-network/pyth-wormhole-attester-client + ECR_REPOSITORY: pyth-network/xc-attest From 844786874fcbfe8ca037299e6a6121d42c4fee5a Mon Sep 17 00:00:00 2001 From: Stan Drozd Date: Wed, 4 Jan 2023 14:33:39 +0100 Subject: [PATCH 21/21] multisig-wh-message-builder: remove accidental revert --- third_party/pyth/multisig-wh-message-builder/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/pyth/multisig-wh-message-builder/src/index.ts b/third_party/pyth/multisig-wh-message-builder/src/index.ts index 7f7dec83c1..8fdff764e8 100644 --- a/third_party/pyth/multisig-wh-message-builder/src/index.ts +++ b/third_party/pyth/multisig-wh-message-builder/src/index.ts @@ -9,7 +9,7 @@ import { SystemProgram, TransactionInstruction, } from "@solana/web3.js"; -import Squads from "@sqds/mesh"; +import Squads, { DEFAULT_MULTISIG_PROGRAM_ID, getMsPDA } from "@sqds/mesh"; import { getIxAuthorityPDA } from "@sqds/mesh"; import { InstructionAccount } from "@sqds/mesh/lib/types"; import bs58 from "bs58"; @@ -125,7 +125,7 @@ program cluster == "localdevnet" ? options.solanaRpc : undefined ); - let vaultAddr = CONFIG[cluster].vault; + let vaultAddr = getMsPDA(createKeyAddr, DEFAULT_MULTISIG_PROGRAM_ID)[0]; console.log("Creating new vault at", vaultAddr.toString()); try {