From c90ea4b7266728987f0b5fb86c5a1e18d296e0a3 Mon Sep 17 00:00:00 2001 From: Bruno Menezes Date: Tue, 20 Oct 2026 17:25:21 +0100 Subject: [PATCH 1/5] wip(cli): temporary plumbing for the rollups-node alpha.14 build, drop before merge --- .github/workflows/cli.yaml | 29 ++++++++++++++++ .github/workflows/sdk.yaml | 12 ++++--- packages/sdk/.gitignore | 1 + packages/sdk/Dockerfile | 38 +++++++++------------ packages/sdk/devnet | 2 +- packages/sdk/docker-bake.hcl | 9 +++-- packages/sdk/package.json | 3 +- packages/sdk/scripts/fetch-rollups-node.sh | 39 ++++++++++++++++++++++ 8 files changed, 99 insertions(+), 34 deletions(-) create mode 100755 packages/sdk/scripts/fetch-rollups-node.sh diff --git a/.github/workflows/cli.yaml b/.github/workflows/cli.yaml index f84381229..caf6b7acc 100644 --- a/.github/workflows/cli.yaml +++ b/.github/workflows/cli.yaml @@ -3,7 +3,9 @@ on: pull_request: paths: - ".github/workflows/cli.yaml" + - ".github/workflows/sdk.yaml" - "apps/cli/**" + - "packages/sdk/**" - "packages/tsconfig/**" concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} @@ -13,11 +15,21 @@ permissions: packages: write pull-requests: write jobs: + sdk: + uses: ./.github/workflows/sdk.yaml + secrets: inherit + permissions: + contents: read + packages: write + id-token: write + actions: write build: + needs: sdk runs-on: ubuntu-latest env: TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ vars.TURBO_TEAM }} + SDK_TAG: pr-${{ github.event.pull_request.number }} steps: - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -28,6 +40,20 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1 + - name: Login to GitHub Container Registry + uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Retag SDK images + run: | + for image in sdk rollups-runtime rollups-database; do + docker pull "ghcr.io/cartesi/$image:$SDK_TAG" + docker tag "ghcr.io/cartesi/$image:$SDK_TAG" "cartesi/$image:$SDK_TAG" + done + - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 @@ -45,6 +71,9 @@ jobs: - name: Test run: bun test apps/cli/ + env: + CARTESI_TEST_SDK: cartesi/sdk:${{ env.SDK_TAG }} + CARTESI_TEST_RUNTIME_VERSION: ${{ env.SDK_TAG }} - name: Coverage Report uses: 70-10/bun-coverage-report-action@6173866ce2a31456a726ff3f4c91f230bd94a9e9 # v1.0.3 diff --git a/.github/workflows/sdk.yaml b/.github/workflows/sdk.yaml index e1da4d3fc..52d6c6f84 100644 --- a/.github/workflows/sdk.yaml +++ b/.github/workflows/sdk.yaml @@ -6,12 +6,8 @@ on: required: true DOCKERHUB_TOKEN: required: true - pull_request: - paths: - - ".github/workflows/sdk.yaml" - - "packages/sdk/**" concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} + group: sdk-${{ github.ref }} cancel-in-progress: true permissions: contents: read @@ -83,6 +79,12 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Fetch rollups-node packages + run: ./packages/sdk/scripts/fetch-rollups-node.sh + env: + # rollups-node#815 (chore/bump-version-alpha14) at e9eebb72 + ROLLUPS_NODE_RUN_ID: "41211121596" + - name: Build and push uses: docker/bake-action@018cb6412ab401ebaa809aa5f85966b74628600f # v7.4.0 if: ${{ !startsWith(github.ref, 'refs/tags/sdk@') }} diff --git a/packages/sdk/.gitignore b/packages/sdk/.gitignore index 85b2aef5c..a8453c9c7 100644 --- a/packages/sdk/.gitignore +++ b/packages/sdk/.gitignore @@ -1 +1,2 @@ build.json +rollups-node/ diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index 72af7b362..b37f67a71 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -88,7 +88,7 @@ RUN < /opt/devnet/anvil_state.json rm /tmp/prt-anvil.tar.gz echo ${CARTESI_PRT_VERSION} > /opt/devnet/PRT_VERSION @@ -160,11 +160,11 @@ ARG CARTESI_PRT_VERSION ARG TARGETARCH WORKDIR /tmp RUN </docker (not .../data), +# so copy the whole VOLUME directory; the final stage shares the same default PGDATA +COPY --from=postgresql-initdb /var/lib/postgresql /var/lib/postgresql ################################################################################ # alto build @@ -314,21 +310,19 @@ EOF ################################################################################ # linux kernel image stage FROM scratch AS kernel-image -ARG CARTESI_IMAGE_KERNEL_VERSION ARG CARTESI_LINUX_KERNEL_VERSION -ADD --checksum=sha256:5c900060da2db2bfa84cd39cd9cd722988c83c42225f3cac55f2d3157e48f32f \ - https://github.com/cartesi/image-kernel/releases/download/v${CARTESI_IMAGE_KERNEL_VERSION}/linux-${CARTESI_LINUX_KERNEL_VERSION}.bin \ +ADD --checksum=sha256:ad12ad141e639fb7b8ce0477dfbb7aa7a4d178222b06e0ce9b335a1c5230f0e1 \ + https://github.com/cartesi/linux/releases/download/v${CARTESI_LINUX_KERNEL_VERSION}/linux-${CARTESI_LINUX_KERNEL_VERSION}.bin \ /usr/share/cartesi-machine/images/linux.bin ################################################################################ # linux headers stage FROM base AS kernel-headers -ARG CARTESI_IMAGE_KERNEL_VERSION ARG CARTESI_LINUX_KERNEL_VERSION -ADD --checksum=sha256:e3f140a8632fcfb18218e7aea32a7d002124d3dce5ba8121ae061ab7f40a6cf4 \ - https://github.com/cartesi/image-kernel/releases/download/v${CARTESI_IMAGE_KERNEL_VERSION}/linux-headers-${CARTESI_LINUX_KERNEL_VERSION}.tar.xz \ +ADD --checksum=sha256:0c6ef54c47e50502a00f6d3785be1f797f74c8bc2f0b3bc0f22bc26017569aa1 \ + https://github.com/cartesi/linux/releases/download/v${CARTESI_LINUX_KERNEL_VERSION}/linux-headers-${CARTESI_LINUX_KERNEL_VERSION}.tar.xz \ /tmp/linux-headers-${CARTESI_LINUX_KERNEL_VERSION}.tar.xz RUN tar -xJf "/tmp/linux-headers-${CARTESI_LINUX_KERNEL_VERSION}.tar.xz" -C / diff --git a/packages/sdk/devnet b/packages/sdk/devnet index 960f2d6c4..418adf174 100755 --- a/packages/sdk/devnet +++ b/packages/sdk/devnet @@ -1,3 +1,3 @@ #!/usr/bin/env sh set -e -exec anvil --load-state /usr/share/cartesi/anvil_state.json "$@" +exec anvil --load-state /usr/share/cartesi/anvil_state.json --preserve-historical-states --max-persisted-states 86400 "$@" diff --git a/packages/sdk/docker-bake.hcl b/packages/sdk/docker-bake.hcl index d5bcaa8ad..feb3343b1 100644 --- a/packages/sdk/docker-bake.hcl +++ b/packages/sdk/docker-bake.hcl @@ -9,18 +9,17 @@ target "default" { ALTO_VERSION = "1.2.7" ALTO_PACKAGE_VERSION = "0.0.20" CARTESI_BASE_IMAGE = "docker.io/library/debian:trixie-20260918@sha256:9cc080028c43b27d2074d63a5f9caf7166d731494965616c1a6d2827a004585c" - CARTESI_IMAGE_KERNEL_VERSION = "0.21.0" - CARTESI_LINUX_KERNEL_VERSION = "6.5.13-ctsi-2-v0.21.0" - CARTESI_MACHINE_EMULATOR_VERSION = "0.21.0" + CARTESI_LINUX_KERNEL_VERSION = "6.18.56-ctsi-1" + CARTESI_MACHINE_EMULATOR_VERSION = "0.22.0" CARTESI_PASSKEY_SERVER_VERSION = "1.0.1" CARTESI_PAYMASTER_VERSION = "0.2.0" - CARTESI_PRT_VERSION = "3.0.0-alpha.5" + CARTESI_PRT_VERSION = "3.0.0-alpha.6" CARTESI_ROLLUPS_NODE_VERSION = "2.0.0-alpha.13" FOUNDRY_VERSION = "1.5.1" NITRO_VERSION = "c937fa4fd202074dd250086ebd92de6884968b84" # v0.8.1 NODE_VERSION = "24.14.0" NVM_VERSION = "977563e97ddc66facf3a8e31c6cff01d236f09bd" # 0.40.3 - POSTGRES_BASE_IMAGE = "docker.io/library/postgres:17-trixie@sha256:d74eeac9a635390a49bc21bd49fccd973de707e2a53a76ac49b552b8712ec46f" + POSTGRES_BASE_IMAGE = "docker.io/library/postgres:18-trixie@sha256:74935e72241653ca55e0414067e6d8763aceb8a810eb51b452253ec3dcfc4336" SQUASHFS_TOOLS_VERSION = "bad1d213ab6df587d6fa0ef7286180fbf7b86167" # 4.7.4 SU_EXEC_VERSION = "0.3" TELEGRAF_VERSION = "1.38.0" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 464fc4cfb..eea712cc9 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -3,6 +3,7 @@ "private": true, "version": "0.12.0-alpha.44", "scripts": { - "build": "docker buildx bake --load --metadata-file=build.json" + "build": "docker buildx bake --load --metadata-file=build.json", + "fetch:rollups-node": "./scripts/fetch-rollups-node.sh" } } diff --git a/packages/sdk/scripts/fetch-rollups-node.sh b/packages/sdk/scripts/fetch-rollups-node.sh new file mode 100755 index 000000000..30ebf1990 --- /dev/null +++ b/packages/sdk/scripts/fetch-rollups-node.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# Fetch the rollups-node .deb files built by cartesi/rollups-node CI, through +# nightly.link. WIP plumbing until the next rollups-node release. +set -euo pipefail + +BRANCH="${ROLLUPS_NODE_BRANCH:-next/2.0}" +RUN_ID="${ROLLUPS_NODE_RUN_ID:-}" +BASE="https://nightly.link/cartesi/rollups-node" +DEST="$(cd "$(dirname "$0")/.." && pwd)/rollups-node" + +sha256() { + if command -v sha256sum >/dev/null; then sha256sum "$@"; else shasum -a 256 "$@"; fi +} + +if [[ -z "$RUN_ID" ]]; then + page="$BASE/workflows/build/${BRANCH//\//%2F}" + RUN_ID="$(curl -fsSL "$page" | grep -oE 'actions/runs/[0-9]+/artifacts\.zip' | head -n1 | grep -oE '[0-9]+' || true)" + [[ -n "$RUN_ID" ]] || { echo "no successful run found at $page" >&2; exit 1; } +fi + +url="$BASE/actions/runs/$RUN_ID/artifacts.zip" +tmp="$(mktemp -d)" +trap 'rm -rf "$tmp"' EXIT +curl -fsSL "$url" -o "$tmp/artifacts.zip" +unzip -q "$tmp/artifacts.zip" -d "$tmp/artifacts" + +mkdir -p "$DEST" +rm -f "$DEST"/*.deb +for arch in amd64 arm64; do + src=("$tmp"/artifacts/cartesi-rollups-node-v*_"$arch".deb) + [[ -f "${src[0]}" ]] || { echo "missing $arch .deb in run $RUN_ID" >&2; exit 1; } + cp "${src[0]}" "$DEST/cartesi-rollups-node_$arch.deb" +done + +{ + echo "run: https://github.com/cartesi/rollups-node/actions/runs/$RUN_ID" + echo "url: $url" + (cd "$DEST" && sha256 cartesi-rollups-node_*.deb) +} | tee "$DEST/SOURCE" From fc95acd5e3448c82bd0ad11fd2fe8fa11f664194 Mon Sep 17 00:00:00 2001 From: Bruno Menezes Date: Tue, 20 Oct 2026 18:41:36 +0100 Subject: [PATCH 2/5] feat(cli): require cartesi-machine 0.22 --- .changeset/seven-moments-prove.md | 5 +++++ apps/cli/src/exec/cartesi-machine.ts | 2 +- apps/cli/tests/unit/exec/cartesi-machine.test.ts | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/seven-moments-prove.md diff --git a/.changeset/seven-moments-prove.md b/.changeset/seven-moments-prove.md new file mode 100644 index 000000000..3afe73494 --- /dev/null +++ b/.changeset/seven-moments-prove.md @@ -0,0 +1,5 @@ +--- +"@cartesi/cli": minor +--- + +Require cartesi-machine 0.22. Machines stored by 0.21 can't be loaded by 0.22: rebuild and redeploy every application. diff --git a/apps/cli/src/exec/cartesi-machine.ts b/apps/cli/src/exec/cartesi-machine.ts index 30571500e..1fb601123 100644 --- a/apps/cli/src/exec/cartesi-machine.ts +++ b/apps/cli/src/exec/cartesi-machine.ts @@ -4,7 +4,7 @@ import { type ExecaOptionsDockerFallback, } from "./util.js"; -export const requiredVersion = new Range("^0.21.0"); +export const requiredVersion = new Range("^0.22.0"); export const boot = ( args: readonly string[], diff --git a/apps/cli/tests/unit/exec/cartesi-machine.test.ts b/apps/cli/tests/unit/exec/cartesi-machine.test.ts index eb0c10ccb..2ef48f520 100644 --- a/apps/cli/tests/unit/exec/cartesi-machine.test.ts +++ b/apps/cli/tests/unit/exec/cartesi-machine.test.ts @@ -9,11 +9,11 @@ import { const semver = (version: string) => parse(version) as SemVer; describe("requiredVersion", () => { - it.each(["0.21.0", "0.21.3"])("should accept %s", (version) => { + it.each(["0.22.0", "0.22.3"])("should accept %s", (version) => { expect(satisfies(version, requiredVersion)).toBeTruthy(); }); - it.each(["0.20.0", "0.20.9", "0.22.0", "1.0.0"])( + it.each(["0.21.0", "0.21.9", "0.23.0", "1.0.0"])( "should reject %s", (version) => { expect(satisfies(version, requiredVersion)).toBeFalsy(); @@ -22,11 +22,11 @@ describe("requiredVersion", () => { }); describe("assertSupported", () => { - it.each(["0.21.0", "0.21.3"])("should accept %s", (version) => { + it.each(["0.22.0", "0.22.3"])("should accept %s", (version) => { expect(() => assertSupported(semver(version))).not.toThrow(); }); - it.each(["0.20.0", "0.22.0"])("should reject %s", (version) => { + it.each(["0.21.0", "0.23.0"])("should reject %s", (version) => { expect(() => assertSupported(semver(version))).toThrowError( new UnsupportedVersionError(semver(version)), ); From 8d41e7b63b0be168eef24dfc078d5bcf95437320 Mon Sep 17 00:00:00 2001 From: Bruno Menezes Date: Tue, 20 Oct 2026 18:41:36 +0100 Subject: [PATCH 3/5] test(cli): withdraw from nvram accounts drives --- .../commands/fixtures/accounts-withdrawal-layouts.ts | 6 ------ .../tests/integration/commands/withdrawal-layouts.test.ts | 4 +--- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal-layouts.ts b/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal-layouts.ts index 4b39f6917..e05b8581e 100644 --- a/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal-layouts.ts +++ b/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal-layouts.ts @@ -21,9 +21,6 @@ export type Layout = { at: number; // offset of data, the rest is zeros data: Buffer; }; - // TODO: the machine-tool of rollups-node v2.0.0-alpha.13 only looks for the - // accounts drive among the flash drives, unskip once it finds nvrams too - skip?: boolean; }; const scratchDrive = ` @@ -76,7 +73,6 @@ accounts_drive = true `, label: "accounts", device: "/dev/uio0", - skip: true, }, { name: "the beginning of a larger nvram", @@ -96,7 +92,6 @@ accounts_drive_size = "4Mi" label: "state", device: "/dev/uio1", accountsSize: 4 * MiB, - skip: true, }, { // like a DEX, which memory-maps its state after the accounts, from an image @@ -118,6 +113,5 @@ accounts_drive_size = "4Mi" at: 4 * MiB, data: Buffer.alloc(8 * MiB, 0xab), }, - skip: true, }, ]; diff --git a/apps/cli/tests/integration/commands/withdrawal-layouts.test.ts b/apps/cli/tests/integration/commands/withdrawal-layouts.test.ts index 350e75296..02ed278c3 100644 --- a/apps/cli/tests/integration/commands/withdrawal-layouts.test.ts +++ b/apps/cli/tests/integration/commands/withdrawal-layouts.test.ts @@ -65,9 +65,7 @@ ${layout.accountsSize ? `ACCOUNTS_SIZE = "${layout.accountsSize}"` : ""} }; layouts.forEach((layout, index) => { - const describeLayout = layout.skip ? describe.skip : describe; - - describeLayout(`emergency withdrawal from ${layout.name}`, () => { + describe(`emergency withdrawal from ${layout.name}`, () => { const projectName = `layouts-${index}-${process.pid}`; let appDir: string; let cleanup: () => void; From 0ea508e3c9d20f59d472c48cd606ff2593db6737 Mon Sep 17 00:00:00 2001 From: Bruno Menezes Date: Wed, 28 Oct 2026 20:42:39 +0000 Subject: [PATCH 4/5] test(cli): withdraw next to an account with no balance --- .../fixtures/accounts-withdrawal/dapp.sh | 2 +- .../integration/commands/recovery.test.ts | 29 +++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal/dapp.sh b/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal/dapp.sh index fd7c9b5ba..aaa2e5f64 100755 --- a/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal/dapp.sh +++ b/apps/cli/tests/integration/commands/fixtures/accounts-withdrawal/dapp.sh @@ -106,8 +106,8 @@ handle_erc20_deposit() { [[ "$token" == "$trusted_token" ]] || return 1 [[ "${amount_hex:0:49}" =~ ^0{48}[0-7]$ ]] || return 1 + # a zero deposit opens an account with no balance, as one emptied by a debit would be amount="$(uint64_be_to_dec "${amount_hex:48:16}")" - (( amount > 0 )) || return 1 credit_account "$sender" "$amount" } diff --git a/apps/cli/tests/integration/commands/recovery.test.ts b/apps/cli/tests/integration/commands/recovery.test.ts index 2ffb61588..9c1b634ff 100644 --- a/apps/cli/tests/integration/commands/recovery.test.ts +++ b/apps/cli/tests/integration/commands/recovery.test.ts @@ -42,8 +42,10 @@ import { * The runtime must ship a rollups node with the refund command, as the * default SDK does. * - * Inputs: alice (0), bob (1) and erin (2) are finalized in epoch 0; carol (3) - * and dave (4) stay in the open epoch 1 and are refunded. + * Inputs: alice (0), bob (1), erin (2) and frank (3) are finalized in epoch 0; + * carol (4) and dave (5) stay in the open epoch 1 and are refunded. frank + * deposits nothing, leaving an account with no balance in the drive, which + * must not stop the other accounts from being proven. */ const EPOCH_LENGTH = 720; @@ -56,13 +58,21 @@ const bob = devnetAccount(2); const carol = devnetAccount(3); const dave = devnetAccount(4); const erin = devnetAccount(5); +const frank = devnetAccount(6); // the guardian comes from a mnemonic the node doesn't sign with const guardianMnemonic = "legal winner thank year wave sausage worth useful legal winner thank yellow"; const guardian = mnemonicToAccount(guardianMnemonic).address; -const amounts = { alice: 100n, bob: 50n, carol: 25n, dave: 15n, erin: 10n }; +const amounts = { + alice: 100n, + bob: 50n, + carol: 25n, + dave: 15n, + erin: 10n, + frank: 0n, +}; const count = (text: string, part: string) => text.split(part).length - 1; @@ -177,6 +187,7 @@ guardian = "${guardian}" await deposit(alice, amounts.alice); await deposit(bob, amounts.bob); await deposit(erin, amounts.erin); + await deposit(frank, amounts.frank); // close the first epoch and wait for its claim to be accepted await anvil.mine({ blocks: EPOCH_LENGTH }); @@ -193,7 +204,7 @@ guardian = "${guardian}" await deposit(carol, amounts.carol); await deposit(dave, amounts.dave); await waitFor(() => - getNodeInput({ application, inputIndex: 4n, projectName }), + getNodeInput({ application, inputIndex: 5n, projectName }), ); }, TIMEOUT, @@ -203,7 +214,7 @@ guardian = "${guardian}" it( "should pass the node's NotForeclosed error through on refund", async () => { - const refund = await cli(["refund", "3", "--yes"]); + const refund = await cli(["refund", "4", "--yes"]); expect(refund.exitCode).not.toBe(0); expect(refund.all).toContain("NotForeclosed"); }, @@ -273,10 +284,10 @@ guardian = "${guardian}" "should refund a deposit that was not finalized", async () => { expect(await usdcBalance(carol)).toBe(0n); - const refund = await cli(["refund", "3", "--yes", "--json"]); + const refund = await cli(["refund", "4", "--yes", "--json"]); expect(refund.exitCode, refund.all).toBe(0); expect(JSON.parse(refund.stdout)).toMatchObject({ - input_index: "3", + input_index: "4", }); expect(await usdcBalance(carol)).toBe(amounts.carol); }, @@ -288,7 +299,7 @@ guardian = "${guardian}" async () => { const rawData = await getNodeInput({ application, - inputIndex: 4n, + inputIndex: 5n, projectName, }); const inputFile = path.join(appDir, "dave-input.hex"); @@ -296,7 +307,7 @@ guardian = "${guardian}" expect(await usdcBalance(dave)).toBe(0n); const refund = await cli([ "refund", - "4", + "5", "--input-file", inputFile, "--yes", From 4f3d67a11136c9407c78b504844428efbbf16a51 Mon Sep 17 00:00:00 2001 From: Bruno Menezes Date: Wed, 4 Nov 2026 09:33:53 +0000 Subject: [PATCH 5/5] chore(cli): bump @cartesi/wagmi-plugin to 1.0.0-alpha.9 --- .changeset/strict-grapes-do.md | 5 +++++ apps/cli/package.json | 2 +- bun.lock | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/strict-grapes-do.md diff --git a/.changeset/strict-grapes-do.md b/.changeset/strict-grapes-do.md new file mode 100644 index 000000000..720d12766 --- /dev/null +++ b/.changeset/strict-grapes-do.md @@ -0,0 +1,5 @@ +--- +"@cartesi/cli": patch +--- + +Use the Dave 3.0.0-alpha.6 PRT contracts. Every PRT address moves, including the devnet DaveAppFactory. The rollups contract addresses are unchanged. diff --git a/apps/cli/package.json b/apps/cli/package.json index fb9d1d382..750c6c9e4 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -14,7 +14,7 @@ "/dist" ], "devDependencies": { - "@cartesi/wagmi-plugin": "1.0.0-alpha.7", + "@cartesi/wagmi-plugin": "1.0.0-alpha.9", "@commander-js/extra-typings": "^15.0.0", "@inquirer/confirm": "^6.3.3", "@inquirer/core": "^12.0.4", diff --git a/bun.lock b/bun.lock index 98f12444d..bb3025ba9 100644 --- a/bun.lock +++ b/bun.lock @@ -18,7 +18,7 @@ "cartesi": "./dist/index.js", }, "devDependencies": { - "@cartesi/wagmi-plugin": "1.0.0-alpha.7", + "@cartesi/wagmi-plugin": "1.0.0-alpha.9", "@commander-js/extra-typings": "^15.0.0", "@inquirer/confirm": "^6.3.3", "@inquirer/core": "^12.0.4", @@ -113,7 +113,7 @@ "@cartesi/sdk": ["@cartesi/sdk@workspace:packages/sdk"], - "@cartesi/wagmi-plugin": ["@cartesi/wagmi-plugin@1.0.0-alpha.7", "", { "dependencies": { "abitype": "^1.3.0", "modern-tar": "^0.8.4" }, "peerDependencies": { "@wagmi/cli": "^2.10.0", "viem": "^2.0.0" } }, "sha512-oVgBBMxuEd/xa5OSxToGjRf7nOA9OyjXLmCyH8V19DjZ+k9GNFFfZSDsk7bbDHtia1Vnq4nl6aNU6dU0K7po3w=="], + "@cartesi/wagmi-plugin": ["@cartesi/wagmi-plugin@1.0.0-alpha.9", "", { "dependencies": { "abitype": "^1.3.0", "modern-tar": "^0.8.6" }, "peerDependencies": { "@wagmi/cli": "^2.10.0", "viem": "^2.0.0" } }, "sha512-NDk3CQhgY1uowuFz9QVpj0KycSN2nxlmHRM7SxwmtOwRDpZkTlhO1IYXs1YJk92+s3grS9igP8CbpXjCkB76mw=="], "@changesets/apply-release-plan": ["@changesets/apply-release-plan@8.1.1", "", { "dependencies": { "@changesets/config": "^4.0.1", "@changesets/format": "^0.1.2", "@changesets/git": "^4.0.1", "@changesets/should-skip-package": "^1.0.0", "@changesets/types": "^7.0.0", "import-meta-resolve": "^4.2.0", "jsonc-parser": "^3.3.1", "semver": "^7.8.1" } }, "sha512-nk2Hbq3M9NeHMdaIRBDvawKrQJzXB9sGyBUE5yWnIKtvdcNCPj75zBekJYr0gTT2ecJH3eFeTrc8eisPImcv0Q=="],