Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d4983b6
build(solidity): integrate maintained deploy with the strict tooling …
mswilkison Sep 8, 2026
cd86642
build(solidity): migrate Beacon and ECDSA tooling to ethers v6
mswilkison Sep 8, 2026
8a3022e
fix(solidity): preserve Yarn patches in builds and publication
mswilkison Sep 8, 2026
90aff0b
fix(solidity): migrate publication hooks to deployment artifact exporter
mswilkison Sep 8, 2026
2b97151
fix(ci): gate ethers v6 npm publication until consumers migrate
mswilkison Sep 8, 2026
9ce8cf9
fix(ecdsa): load ethers v6 Beacon task exports
mswilkison Sep 8, 2026
e67aac6
fix(solidity): regenerate lockfiles for rebase-onto-dev consistency
piotr-roslaniec Sep 12, 2026
25730b2
fix(solidity): resolve axios CVE, drop stale export-baseline, fix Yar…
piotr-roslaniec Sep 12, 2026
fb481f7
fix(ci): close npm-publish gate gaps and extend ECDSA path filter
piotr-roslaniec Sep 12, 2026
eba96cf
fix(solidity): restore form-encoded body in OZ Etherscan-v2 patch
piotr-roslaniec Sep 12, 2026
6afd50d
fix(solidity): fix tautological pack-and-capture checks and diagnostics
piotr-roslaniec Sep 12, 2026
07ad3c2
fix(solidity): retry wait-for-confirmations polling and harden export…
piotr-roslaniec Sep 12, 2026
c2f96c2
test(ecdsa): cover struct-mock comparison, fix mutation and dead code
piotr-roslaniec Sep 12, 2026
f9ef022
test(random-beacon): cover initialize-task idempotency and default au…
piotr-roslaniec Sep 12, 2026
268ec82
test(ecdsa): cover deploy/17_upgrade_wallet_registry_v2 success path
piotr-roslaniec Sep 12, 2026
12f31d3
fix(solidity): fix typecheck and test regressions from the dev rebase
piotr-roslaniec Sep 12, 2026
9c81ba0
fix(solidity): restore export-identity baselines and fix Prettier drift
piotr-roslaniec Sep 13, 2026
9b3d224
chore(ci): trigger CI run against retargeted dev base
piotr-roslaniec Sep 13, 2026
638debb
fix(ecdsa): resync vendored random-beacon export bundle
piotr-roslaniec Sep 13, 2026
0aa6c23
test(ecdsa): widen flaky gas-tolerance margin in DKG approval tests
piotr-roslaniec Sep 13, 2026
a8a44b9
Merge remote-tracking branch 'origin/dev' into codex/4295-ethers-v6
piotr-roslaniec Sep 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions .github/workflows/contracts-ecdsa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -264,9 +264,15 @@ jobs:

contracts-deployment-testnet:
needs: [contracts-build-and-test]
if: |
github.event_name == 'workflow_dispatch'
&& github.ref != 'refs/heads/dapp-development'
# The ethers v6 deployment exports break existing ethers v5 consumers.
# Block workflow_dispatch publication to the `<environment>` tag; this
# gate replaces the original dispatch condition, kept here so it can be
# restored:
# github.event_name == 'workflow_dispatch'
# && github.ref != 'refs/heads/dapp-development'
# Re-enable only after the consumer migration and release pins are ready;
# see solidity/docs/ethers-v6-compatibility.md#limits-and-release-gates.
if: ${{ false }}
runs-on: ubuntu-latest
defaults:
run:
Expand Down Expand Up @@ -364,9 +370,15 @@ jobs:
# `dapp-development`.
contracts-dapp-development-deployment-testnet:
needs: [contracts-build-and-test]
if: |
github.event_name == 'workflow_dispatch'
&& github.ref == 'refs/heads/dapp-development'
# The ethers v6 deployment exports break existing ethers v5 consumers.
# Block workflow_dispatch publication to the
# `dapp-development-<environment>` tag; this gate replaces the original
# dispatch condition, kept here so it can be restored:
# github.event_name == 'workflow_dispatch'
# && github.ref == 'refs/heads/dapp-development'
# Re-enable only after the consumer migration and release pins are ready;
# see solidity/docs/ethers-v6-compatibility.md#limits-and-release-gates.
if: ${{ false }}
runs-on: ubuntu-latest
defaults:
run:
Expand Down
85 changes: 79 additions & 6 deletions .github/workflows/contracts-random-beacon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
path-filter: ${{ steps.filter.outputs.path-filter }}
bundled-beacon-export-filter: ${{ steps.filter.outputs.bundled-beacon-export-filter }}
steps:
- uses: actions/checkout@v3
if: github.event_name == 'pull_request'
Expand All @@ -50,6 +51,12 @@ jobs:
- './.github/workflows/contracts-random-beacon.yml'
- './.github/actions/install-yarn-deps/**'
- './.github/actions/docker-build-push/**'
bundled-beacon-export-filter:
- './solidity/random-beacon/deploy/**'
- './solidity/random-beacon/tasks/**'
- './solidity/random-beacon/utils/**'
- './solidity/ecdsa/external/random-beacon-export/**'
- './.github/workflows/contracts-random-beacon.yml'

contracts-lint:
needs: contracts-detect-changes
Expand Down Expand Up @@ -251,11 +258,71 @@ jobs:
fi
echo 'export byte-identity OK'

# ECDSA bundles the compiled Beacon deployment scripts, tasks and utilities
# under solidity/ecdsa/external/random-beacon-export/ so it can deploy
# against a v6 Beacon while the published Beacon package is still ethers v5.
# That bundle is generated from this package's TypeScript sources, so any
# change under deploy/, tasks/ or utils/ silently makes it stale - until now
# only the manual
# solidity/scripts/ethers-v6-compatibility/pack-and-capture.cjs script
# checked it, and that script never runs in CI. This job regenerates the
# exports and byte-compares them against the committed bundle, so drift
# fails here instead of shipping.
bundled-beacon-export-freshness:
needs: contracts-detect-changes
if: github.event_name != 'pull_request' || needs.contracts-detect-changes.outputs.bundled-beacon-export-filter == 'true'
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./solidity/random-beacon
steps:
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
# Pinned to match the Dockerfiles exactly so CI and the image cannot
# drift apart. Node 24 requires hardhat >= 2.26 - below it, the solc
# download fails with HH502 (see PR description for details).
node-version: "24.11.1"

- uses: ./.github/actions/install-yarn-deps
with:
working-directory: ./solidity/random-beacon

- name: Build solidity contracts
run: yarn build

- name: Generate packed export artifacts
run: yarn prepack

- name: Verify bundled Beacon export is up to date
run: |
set -e
bundle=../ecdsa/external/random-beacon-export
staging="$(mktemp -d)"
mkdir -p "$staging/deploy" "$staging/utils" "$staging/tasks/utils"
cp export/deploy/*.js "$staging/deploy/"
cp export/utils/wait-for-confirmations.js "$staging/utils/"
cp export/tasks/initialize.js export/tasks/unlock-eth-accounts.js "$staging/tasks/"
cp export/tasks/utils/*.js "$staging/tasks/utils/"
if ! diff -r --exclude=README.md "$staging" "$bundle"; then
echo '::error::solidity/ecdsa/external/random-beacon-export/ is stale - it no longer matches solidity/random-beacon/export/.'
echo '::error::Regenerate it with the commands documented in solidity/ecdsa/external/random-beacon-export/README.md and commit the result alongside this change.'
exit 1
fi
echo 'bundled Beacon export freshness OK'

contracts-deployment-testnet:
needs: [contracts-build-and-test]
if: |
github.event_name == 'workflow_dispatch'
&& github.ref != 'refs/heads/dapp-development'
# The ethers v6 deployment exports break existing ethers v5 consumers.
# Block workflow_dispatch publication to the `<environment>` tag; this
# gate replaces the original dispatch condition, kept here so it can be
# restored:
# github.event_name == 'workflow_dispatch'
# && github.ref != 'refs/heads/dapp-development'
# Re-enable only after the consumer migration and release pins are ready;
# see solidity/docs/ethers-v6-compatibility.md#limits-and-release-gates.
if: ${{ false }}
runs-on: ubuntu-latest
defaults:
run:
Expand Down Expand Up @@ -351,9 +418,15 @@ jobs:
# `dapp-development`.
contracts-dapp-development-deployment-testnet:
needs: [contracts-build-and-test]
if: |
github.event_name == 'workflow_dispatch'
&& github.ref == 'refs/heads/dapp-development'
# The ethers v6 deployment exports break existing ethers v5 consumers.
# Block workflow_dispatch publication to the
# `dapp-development-<environment>` tag; this gate replaces the original
# dispatch condition, kept here so it can be restored:
# github.event_name == 'workflow_dispatch'
# && github.ref == 'refs/heads/dapp-development'
# Re-enable only after the consumer migration and release pins are ready;
# see solidity/docs/ethers-v6-compatibility.md#limits-and-release-gates.
if: ${{ false }}
runs-on: ubuntu-latest
defaults:
run:
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/npm-ecdsa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,24 @@ on:
- "solidity/ecdsa/contracts/**"
- "solidity/ecdsa/deploy/**"
- "solidity/ecdsa/tasks/**"
- "solidity/ecdsa/utils/**"
- "solidity/ecdsa/external/**"
- "solidity/ecdsa/hardhat.config.ts"
- "solidity/ecdsa/package.json"
- "solidity/ecdsa/yarn.lock"
- "solidity/ecdsa/.nvmrc"
- "solidity/ecdsa/.yarnrc.yml"
- "solidity/ecdsa/.yarn/patches/**"
- ".github/workflows/npm-ecdsa.yml"
workflow_dispatch:

jobs:
npm-compile-publish-contracts:
# The ethers v6 deployment exports break existing ethers v5 consumers.
# Block both push and workflow_dispatch publication, including latest.
# Re-enable only after the consumer migration and release pins are ready;
# see solidity/docs/ethers-v6-compatibility.md#limits-and-release-gates.
if: ${{ false }}
runs-on: ubuntu-latest
defaults:
run:
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/npm-random-beacon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,23 @@ on:
- "solidity/random-beacon/contracts/**"
- "solidity/random-beacon/deploy/**"
- "solidity/random-beacon/tasks/**"
- "solidity/random-beacon/utils/**"
- "solidity/random-beacon/hardhat.config.ts"
- "solidity/random-beacon/package.json"
- "solidity/random-beacon/yarn.lock"
- "solidity/random-beacon/.nvmrc"
- "solidity/random-beacon/.yarnrc.yml"
- "solidity/random-beacon/.yarn/patches/**"
- ".github/workflows/npm-random-beacon.yml"
workflow_dispatch:

jobs:
npm-compile-publish-contracts:
# The ethers v6 deployment exports break existing ethers v5 consumers.
# Block both push and workflow_dispatch publication, including latest.
# Re-enable only after the consumer migration and release pins are ready;
# see solidity/docs/ethers-v6-compatibility.md#limits-and-release-gates.
if: ${{ false }}
runs-on: ubuntu-latest
defaults:
run:
Expand All @@ -35,18 +44,9 @@ jobs:
with:
working-directory: ./solidity/random-beacon

- name: Resolve latest contracts
# `@threshold-network/solidity-contracts` is pinned to 1.3.0-dev.11
# (the version used by the last successful publish, 2.1.0-dev.18)
# because the `development` dist-tag was bumped to 1.3.0-dev.16,
# which refactored `TokenStaking` and removed `approveApplication`
# (called by `deploy/05_approve_random_beacon_in_token_staking.ts`).
# Unpin once the deploy scripts and Go ABI bindings are migrated
# to the new TokenStaking API.
run: |
yarn up --exact \
@keep-network/sortition-pools \
@threshold-network/solidity-contracts@1.3.0-dev.11
- name: Install locked dependencies
# Preserve the tested Threshold version and its local ethers v6 patch.
run: yarn install --immutable

# Deploy contracts to a local network to generate deployment artifacts that
# are required by dashboard and client compilation.
Expand Down
2 changes: 2 additions & 0 deletions solidity/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Unified patch context lines intentionally preserve source whitespace.
*/.yarn/patches/*.patch -whitespace
Loading
Loading