diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 46abc1caa..21014d64f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "LayerZero Devtools", - "image": "ghcr.io/layerzero-labs/devtools-dev-base:shankar-ci-upgrade", + "image": "ghcr.io/layerzero-labs/devtools-dev-base:solana-examples-update-anchor-version-try-diff-toolchain-version", "mounts": ["type=volume,target=${containerWorkspaceFolder}/node_modules"], "runArgs": ["--env-file", ".env"], "features": { diff --git a/.github/workflows/reusable-publish.yaml b/.github/workflows/reusable-publish.yaml index 7f8f35294..608e18178 100644 --- a/.github/workflows/reusable-publish.yaml +++ b/.github/workflows/reusable-publish.yaml @@ -31,7 +31,7 @@ jobs: # We'll run the job on the prebuilt base image container: - image: ghcr.io/layerzero-labs/devtools-dev-base:shankar-ci-upgrade + image: ghcr.io/layerzero-labs/devtools-dev-base:solana-examples-update-anchor-version-try-diff-toolchain-version steps: - name: Checkout repo diff --git a/.github/workflows/reusable-test.yaml b/.github/workflows/reusable-test.yaml index 4837afc83..087e953f3 100644 --- a/.github/workflows/reusable-test.yaml +++ b/.github/workflows/reusable-test.yaml @@ -38,7 +38,7 @@ jobs: # We'll run the job on the prebuilt base image container: - image: ghcr.io/layerzero-labs/devtools-dev-base:shankar-ci-upgrade + image: ghcr.io/layerzero-labs/devtools-dev-base:solana-examples-update-anchor-version-try-diff-toolchain-version steps: - name: Checkout repo @@ -107,11 +107,11 @@ jobs: JEST_TIMEOUT: 60_000 # Increase timeout for ARM builds TEST_TIMEOUT: 600_000 # 10 minutes timeout for long-running tests # We'll use the prebuilt base image - DEVTOOLS_BASE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-base:shankar-ci-upgrade + DEVTOOLS_BASE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-base:solana-examples-update-anchor-version-try-diff-toolchain-version # And the prebuilt hardhat EVM node image - DEVTOOLS_EVM_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-evm-hardhat:shankar-ci-upgrade + DEVTOOLS_EVM_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-evm-hardhat:solana-examples-update-anchor-version-try-diff-toolchain-version # And the prebuilt TON node image - DEVTOOLS_TON_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-ton-my-local-ton:shankar-ci-upgrade + DEVTOOLS_TON_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-ton-my-local-ton:solana-examples-update-anchor-version-try-diff-toolchain-version # Provided we have good quality Solana RPCs, we can enable Solana tests # # FIXME The Solana tests need to be ported to either use a stable deployment @@ -175,17 +175,17 @@ jobs: LAYERZERO_EXAMPLES_REPOSITORY_URL: https://github.com/${{ github.repository }}.git LAYERZERO_EXAMPLES_REPOSITORY_REF: ${{ github.ref }} # We'll use the prebuilt base image - DEVTOOLS_BASE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-base:shankar-ci-upgrade + DEVTOOLS_BASE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-base:solana-examples-update-anchor-version-try-diff-toolchain-version # And the prebuilt hardhat EVM node image - DEVTOOLS_EVM_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-evm-hardhat:shankar-ci-upgrade + DEVTOOLS_EVM_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-evm-hardhat:solana-examples-update-anchor-version-try-diff-toolchain-version # Using the local Aptos testnet node - DEVTOOLS_APTOS_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-aptos-local-testnet:shankar-ci-upgrade + DEVTOOLS_APTOS_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-aptos-local-testnet:solana-examples-update-anchor-version-try-diff-toolchain-version # Using the local TON node - i do not know if this is working - DEVTOOLS_TON_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-ton-my-local-ton:shankar-ci-upgrade + DEVTOOLS_TON_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-ton-my-local-ton:solana-examples-update-anchor-version-try-diff-toolchain-version # Using the local Initia node - DEVTOOLS_INITIA_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-initia-localnet:shankar-ci-upgrade + DEVTOOLS_INITIA_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-initia-localnet:solana-examples-update-anchor-version-try-diff-toolchain-version # Using the local Solana test validator - may fail due to RPC issues - DEVTOOLS_SOLANA_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-solana-test-validator:shankar-ci-upgrade + DEVTOOLS_SOLANA_NODE_IMAGE: ghcr.io/layerzero-labs/devtools-dev-node-solana-test-validator:solana-examples-update-anchor-version-try-diff-toolchain-version # We'll collect the docker compose logs from all containers on failure diff --git a/Dockerfile b/Dockerfile index 4408200f9..b6028439f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -112,7 +112,14 @@ RUN apt-get install --yes \ ARG RUST_TOOLCHAIN_VERSION=1.84.1 RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | sh -s -- -y --profile minimal --default-toolchain ${RUST_TOOLCHAIN_VERSION} +# Ensure stable is installed and available RUN rustup toolchain install 1.84.1 +# Pre-install nightly toolchains used by Anchor IDL builds +# Install both a pinned nightly and the moving 'nightly' channel with required components +ARG RUST_NIGHTLY_VERSION=nightly-2025-05-01 +RUN rustup toolchain install ${RUST_NIGHTLY_VERSION} && \ + rustup component add --toolchain ${RUST_NIGHTLY_VERSION} cargo rustfmt clippy +ENV RUSTUP_TOOLCHAIN=${RUST_NIGHTLY_VERSION} RUN rustc --version ### Setup go diff --git a/examples/lzapp-migration/README.md b/examples/lzapp-migration/README.md index 746c065f7..04d47e677 100644 --- a/examples/lzapp-migration/README.md +++ b/examples/lzapp-migration/README.md @@ -16,7 +16,7 @@ ## Requirements -- Rust `nightly-2025-05-01` +- Rust `1.84.1` - Anchor `0.31.1` - Solana CLI `2.2.20` - Docker `28.3.0` diff --git a/examples/lzapp-migration/pnpm-lock.yaml b/examples/lzapp-migration/pnpm-lock.yaml index 039a95897..a90231aa4 100644 --- a/examples/lzapp-migration/pnpm-lock.yaml +++ b/examples/lzapp-migration/pnpm-lock.yaml @@ -84,8 +84,8 @@ devDependencies: specifier: ^7.23.9 version: 7.28.4 '@coral-xyz/anchor': - specifier: ^0.29.0 - version: 0.29.0 + specifier: ^0.31.1 + version: 0.31.1 '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.9.2) @@ -460,6 +460,11 @@ packages: engines: {node: '>=10'} dev: false + /@coral-xyz/anchor-errors@0.31.1: + resolution: {integrity: sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==} + engines: {node: '>=10'} + dev: true + /@coral-xyz/anchor@0.29.0: resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} engines: {node: '>=11'} @@ -508,6 +513,29 @@ packages: - utf-8-validate dev: false + /@coral-xyz/anchor@0.31.1: + resolution: {integrity: sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA==} + engines: {node: '>=17'} + dependencies: + '@coral-xyz/anchor-errors': 0.31.1 + '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.95.8) + '@noble/hashes': 1.8.0 + '@solana/web3.js': 1.95.8 + bn.js: 5.2.2 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: true + /@coral-xyz/borsh@0.29.0(@solana/web3.js@1.95.8): resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} engines: {node: '>=10'} @@ -529,6 +557,17 @@ packages: buffer-layout: 1.2.2 dev: false + /@coral-xyz/borsh@0.31.1(@solana/web3.js@1.95.8): + resolution: {integrity: sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.69.0 + dependencies: + '@solana/web3.js': 1.95.8 + bn.js: 5.2.2 + buffer-layout: 1.2.2 + dev: true + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} diff --git a/examples/oapp-solana/README.md b/examples/oapp-solana/README.md index bff4aecdc..e447b39b1 100644 --- a/examples/oapp-solana/README.md +++ b/examples/oapp-solana/README.md @@ -25,7 +25,7 @@ For a more thorough walkthrough of how a Solana OApp works, refer to [Solana OAp ## Requirements -- Rust `nightly-2025-05-01` +- Rust `1.84.1` - Anchor `v0.31.1` - Solana CLI `v2.2.20` - Docker diff --git a/examples/oapp-solana/pnpm-lock.yaml b/examples/oapp-solana/pnpm-lock.yaml index bf3d376c1..b50bee70e 100644 --- a/examples/oapp-solana/pnpm-lock.yaml +++ b/examples/oapp-solana/pnpm-lock.yaml @@ -30,8 +30,8 @@ devDependencies: specifier: ^7.23.9 version: 7.28.4 '@coral-xyz/anchor': - specifier: ^0.29.0 - version: 0.29.0 + specifier: ^0.31.1 + version: 0.31.1 '@layerzerolabs/devtools': specifier: ~2.0.0 version: 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.128)(zod@3.25.76) @@ -445,6 +445,11 @@ packages: engines: {node: '>=10'} dev: true + /@coral-xyz/anchor-errors@0.31.1: + resolution: {integrity: sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==} + engines: {node: '>=10'} + dev: true + /@coral-xyz/anchor@0.29.0: resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} engines: {node: '>=11'} @@ -494,6 +499,29 @@ packages: - utf-8-validate dev: true + /@coral-xyz/anchor@0.31.1: + resolution: {integrity: sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA==} + engines: {node: '>=17'} + dependencies: + '@coral-xyz/anchor-errors': 0.31.1 + '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.95.8) + '@noble/hashes': 1.8.0 + '@solana/web3.js': 1.95.8 + bn.js: 5.2.2 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: true + /@coral-xyz/borsh@0.29.0(@solana/web3.js@1.95.8): resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} engines: {node: '>=10'} @@ -516,6 +544,17 @@ packages: buffer-layout: 1.2.2 dev: true + /@coral-xyz/borsh@0.31.1(@solana/web3.js@1.95.8): + resolution: {integrity: sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.69.0 + dependencies: + '@solana/web3.js': 1.95.8 + bn.js: 5.2.2 + buffer-layout: 1.2.2 + dev: true + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} diff --git a/examples/oapp-solana/rust-toolchain.toml b/examples/oapp-solana/rust-toolchain.toml index 1776b983b..fcb78ec56 100644 --- a/examples/oapp-solana/rust-toolchain.toml +++ b/examples/oapp-solana/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "nightly-2025-05-01" +channel = "1.84.1" diff --git a/examples/oft-solana/README.md b/examples/oft-solana/README.md index e2166240c..277faca37 100644 --- a/examples/oft-solana/README.md +++ b/examples/oft-solana/README.md @@ -44,7 +44,7 @@ ## Requirements -- Rust `nightly-2025-05-01` +- Rust `1.84.1` - Anchor `0.31.1` - Solana CLI `2.2.20` - Docker `28.3.0` diff --git a/examples/oft-solana/pnpm-lock.yaml b/examples/oft-solana/pnpm-lock.yaml index 5022b0f29..a976c264b 100644 --- a/examples/oft-solana/pnpm-lock.yaml +++ b/examples/oft-solana/pnpm-lock.yaml @@ -11,8 +11,8 @@ overrides: devDependencies: '@coral-xyz/anchor': - specifier: ^0.29.0 - version: 0.29.0(typescript@5.9.2) + specifier: ^0.31.1 + version: 0.31.1(typescript@5.9.2) '@ethersproject/abi': specifier: ^5.7.0 version: 5.8.0 @@ -648,6 +648,11 @@ packages: engines: {node: '>=10'} dev: true + /@coral-xyz/anchor-errors@0.31.1: + resolution: {integrity: sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==} + engines: {node: '>=10'} + dev: true + /@coral-xyz/anchor@0.26.0(typescript@5.9.2): resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} engines: {node: '>=11'} @@ -725,6 +730,30 @@ packages: - utf-8-validate dev: true + /@coral-xyz/anchor@0.31.1(typescript@5.9.2): + resolution: {integrity: sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA==} + engines: {node: '>=17'} + dependencies: + '@coral-xyz/anchor-errors': 0.31.1 + '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.98.4) + '@noble/hashes': 1.8.0 + '@solana/web3.js': 1.98.4(typescript@5.9.2) + bn.js: 5.2.2 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + dev: true + /@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.4): resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==} engines: {node: '>=10'} @@ -758,6 +787,17 @@ packages: buffer-layout: 1.2.2 dev: true + /@coral-xyz/borsh@0.31.1(@solana/web3.js@1.98.4): + resolution: {integrity: sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.98.0 + dependencies: + '@solana/web3.js': 1.98.4(typescript@5.9.2) + bn.js: 5.2.2 + buffer-layout: 1.2.2 + dev: true + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1089,7 +1129,7 @@ packages: functional-red-black-tree: 1.0.1 mcl-wasm: 0.7.9 merkle-patricia-tree: 4.2.4 - rustbn.js: 0.2.0 + rustbn.js: 0.3.0 transitivePeerDependencies: - supports-color dev: true @@ -11093,8 +11133,8 @@ packages: queue-microtask: 1.2.3 dev: true - /rustbn.js@0.2.0: - resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} + /rustbn.js@0.3.0: + resolution: {integrity: sha512-RXLW0TSDBFlujBgq/ZdWa6ADGKiEFZgSqRdCcSXy8XiPqLPApKwaJjf14ImspysQm2mI8hA3EBWN+IOQReqwtA==} dev: true /rxjs@7.8.2: diff --git a/examples/oft-solana/rust-toolchain.toml b/examples/oft-solana/rust-toolchain.toml index 45bf249e0..f06204d12 100644 --- a/examples/oft-solana/rust-toolchain.toml +++ b/examples/oft-solana/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-05-01" +channel = "1.84.1" components = ["rustfmt", "clippy"]