Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
ed4a544
feat: addresses on the Platform chain (#2866)
QuantumExplorer Dec 9, 2025
0bbbd46
Merge branch 'v2.2-dev' into feat/platformAddresses
QuantumExplorer Dec 9, 2025
b8afffc
feat: add overflow validation for input and recipient sums in state t…
shumkov Dec 10, 2025
38d368e
feat(sdk): platform address support part 1 (#2875)
lklimek Dec 10, 2025
23ef0c8
feat(drive-abci): strategy tests for platform addresses (#2892)
QuantumExplorer Dec 11, 2025
713967d
refactor(drive-abci): strategy test use cases (#2900)
QuantumExplorer Dec 15, 2025
57e356a
fix(drive-abci): missing withdrawal-specific validation (#2885)
shumkov Dec 16, 2025
3c96e2f
feat(dpp): add bech32m address encoding for Platform addresses (DIP-0…
pauldelucia Dec 16, 2025
910a842
test: macro to define stack sizes in tests
lklimek Dec 16, 2025
5cf998d
test(drive-abci): macro to set stack_size in strategy tests
lklimek Dec 11, 2025
c2e43e4
refactor: replace custom stack size code with stack_size macro
lklimek Dec 16, 2025
9c3d487
refactor: rename rs-dapi-grpc-macros to rs-dash-platform-macros
lklimek Dec 16, 2025
a64e491
feat(drive-abci): extra strategy tests and some fixes to sdk (#2901)
QuantumExplorer Dec 16, 2025
e1fa965
feat(platform)!: state transition minimum required balance for fees (…
QuantumExplorer Dec 16, 2025
c60914a
feat(platform): use count sum tree for addresses (#2897)
QuantumExplorer Dec 16, 2025
258fd32
Merge remote-tracking branch 'origin/feat/platformAddresses' into tes…
lklimek Dec 16, 2025
fcd5f2e
refactor: use stack_size macro in tests (#2902)
lklimek Dec 16, 2025
59442d9
fix(platform): platform addresses PR fixes (#2903)
QuantumExplorer Dec 16, 2025
6b1fae4
feat(sdk): parse proofs from address state transition (#2890)
lklimek Dec 16, 2025
f682e13
fix(dpp): return UnsupportedFeatureError for legacy state transition …
QuantumExplorer Dec 16, 2025
225b93c
Merge branch 'v3.0-dev' into feat/platformAddresses
QuantumExplorer Dec 16, 2025
34ec88e
refactor(sdk): remove SimpleAddressSigner in favor of Signer<Platform…
pauldelucia Dec 17, 2025
69a4c2c
fix(dpp): wasm-drive-verify build failing due to feature flag (#2908)
pauldelucia Dec 18, 2025
c9560bc
chore: clippy, cargo machete, rust update to 1.92 (#2905)
lklimek Dec 19, 2025
02ba330
feat(dashmate): add optional GitHub token and fix cargo git cache rac…
pauldelucia Dec 19, 2025
7cbbae8
fix(drive-abci): test updates based on increase asset lock costs (#2910)
QuantumExplorer Dec 19, 2025
aef1919
fix(sdk)!: tenderdash broadcast errors mapped to Internal error (#2853)
lklimek Dec 19, 2025
587cc21
build: bump rust-dashcore to v0.41-dev rev e7792c4 (#2915)
lklimek Dec 19, 2025
69032c9
feat(platform): use provable count sum tree and queries (#2917)
QuantumExplorer Dec 20, 2025
c651a2c
feat: implement address operations and add/update crate-wide docs in …
pauldelucia Dec 20, 2025
f647b3b
test(drive-abci): revert stack size back to 4MB in drive-abci tests (…
lklimek Dec 20, 2025
92e6d73
Merge branch 'v3.0-dev' into feat/platformAddresses
QuantumExplorer Dec 20, 2025
f3bbda6
fix(platform): small fixes for platform addresses (#2918)
QuantumExplorer Dec 20, 2025
5905702
feat(platform)!: addresses on the Platform chain (#2884)
QuantumExplorer Dec 21, 2025
18b847a
chore: bump to version 3.0.0-dev.1
QuantumExplorer Dec 21, 2025
427cfc6
fix
QuantumExplorer Dec 21, 2025
e58b75b
lint fix
QuantumExplorer Dec 21, 2025
176e3c9
chore: bump to version 3.0.0-dev.1 (#2919)
QuantumExplorer Dec 21, 2025
0fa14d7
fix(drive-abci): call update checkpoints (#2920)
QuantumExplorer Dec 23, 2025
ab4099c
fix(drive-abci): update to version 11 should correctly use a provable…
QuantumExplorer Dec 23, 2025
80e7075
ci: fix NPM publish in release (#2923)
shumkov Dec 23, 2025
9ea702f
chore(release): update changelog and version to 3.0.0-dev.4 (#2924)
shumkov Dec 23, 2025
85d581c
fix(drive-abci): verify apphash in finalize_block (#2878)
lklimek Dec 23, 2025
99fc143
build: upgrade yarn to latest version (#2926)
shumkov Dec 23, 2025
bf8a342
chore(release): update changelog and version to 3.0.0-dev.5 (#2927)
shumkov Dec 23, 2025
ae0a754
feat(sdk): query platform addresses in JS SDK (#2925)
shumkov Dec 23, 2025
b0e4ec5
ci: add workflow to auto-assign milestones based on target branch (#2…
thephez Dec 24, 2025
ea339a4
refactor(sdk): conversion methods (#2850)
shumkov Dec 24, 2025
a39756b
chore: validate JS package versions (#2826)
shumkov Dec 25, 2025
6ce1790
fix(drive-abci): use checkpoints properly in queries (#2929)
QuantumExplorer Dec 25, 2025
69487d1
chore: bump to 3.0.0 dev 6 (#2930)
QuantumExplorer Dec 25, 2025
6be3544
feat(sdk): support platform address state transitions in JS SDK (#2931)
shumkov Dec 27, 2025
517862d
fix(sdk): non proved JS SDK methods (#2871)
shumkov Dec 28, 2025
0a6490e
feat(dashmate)!: add quroum list service (#2868)
shumkov Dec 29, 2025
d7dcb6d
fix(drive): failing to prove absent platform addressess (#2934)
shumkov Dec 29, 2025
f935213
feat(platform): sdk support for platform addresses and checkpoint fix…
QuantumExplorer Dec 29, 2025
45ea849
chore(release): update changelog and bump version to 3.0.0-dev.7 (#2937)
shumkov Dec 30, 2025
c81b1fe
feat(platform)!: historical address balance storage (#2936)
QuantumExplorer Dec 30, 2025
b161a3b
fix(dpp): report correct values in `IdentityInsufficientBalanceError`…
pauldelucia Dec 30, 2025
1c9a855
chore: bump package versions to 3.0.0-dev.8 (#2938)
QuantumExplorer Dec 30, 2025
f7ea7e6
fix(dpp): correct revision in identity update transition (#2940)
PastaPastaPasta Jan 1, 2026
39c9f2d
fix(dashmate): npm security issue for qs's arrayLimit (#2942)
QuantumExplorer Jan 3, 2026
ccee0b4
fix(wasm-sdk): support ECDSA_SECP256K1 keys in identity operations (#…
PastaPastaPasta Jan 3, 2026
7baeb20
feat(dashmate): bypass validation for total reset (#2941)
ktechmidas Jan 3, 2026
9f0771c
fix(dashmate): npm security qs 2 (#2943)
QuantumExplorer Jan 3, 2026
6976063
fix(dashmate): npm security issue for qs 3. (#2944)
QuantumExplorer Jan 3, 2026
649b7d3
chore: update dependency versions to 3.0.0-dev.9 (#2945)
QuantumExplorer Jan 3, 2026
a59cae2
fix(wasm-sdk): enable identity_update to add ECDSA_SECP256K1 and BLS1…
PastaPastaPasta Jan 5, 2026
5f426b0
feat(platform)!: clean up expired compacted address balances (#2948)
QuantumExplorer Jan 6, 2026
02610f5
fix(dpp): broken chain lock proof deserialization (#2950)
shumkov Jan 6, 2026
b5000ab
chore(release): update changelog and bump version to 3.0.0-dev.10 (#2…
shumkov Jan 6, 2026
86524da
fix(sdk): adjust metadata freshness criteria for get_addresses_trunk_…
lklimek Jan 7, 2026
d62998f
fix(sdk): clamp address sync branch query depth to platform limits (#…
pauldelucia Jan 8, 2026
6e25d3c
fix(sdk): match `ItemWithSumItem` in `extract_balance_from_element` (…
pauldelucia Jan 8, 2026
f67ba29
fix(rs-sdk-ffi): auto-increment document revision in replace function…
PastaPastaPasta Jan 8, 2026
a0f66ab
feat(platform): update address expiration time from 1 day to 1 week (…
QuantumExplorer Jan 8, 2026
632b3f1
feat(platform): remove platform version patching and state migration …
QuantumExplorer Jan 8, 2026
0fdac51
feat(sdk): return checkpoint height with `AddressSyncResult` (#2965)
pauldelucia Jan 8, 2026
249121c
feat(platform)!: enhanced fetching of compacted address balance chang…
QuantumExplorer Jan 8, 2026
0ae4d16
feat(platform)!: add block-aware credit operations to manage address …
QuantumExplorer Jan 8, 2026
80a5a0c
fix(sdk)!: failed address sync on invalid proof (#2967)
shumkov Jan 8, 2026
5afe0c2
feat(platform): add tests for proof verification of recent address ba…
QuantumExplorer Jan 8, 2026
0ca6cad
chore(release): update changelog and bump version to 3.0.0-dev.11 (#2…
QuantumExplorer Jan 8, 2026
de667e0
feat(sdk)!: return last meaningful error on no available addresses (#…
shumkov Jan 8, 2026
b172460
feat(drive): update verification logic for compacted address balance …
QuantumExplorer Jan 9, 2026
dad7189
fix(wasm-sdk): support ECDSA_SECP256K1 keys in contract create/update…
PastaPastaPasta Jan 12, 2026
eace6d1
fix(drive): use historical path query for contracts with keeps_histor…
PastaPastaPasta Jan 12, 2026
727ef48
fix(drive): not setting `keeps_history` in proof verification for Dat…
pauldelucia Jan 12, 2026
52a2fc5
refactor(sdk)!: typed params for state transition methods (#2932)
shumkov Jan 12, 2026
ec5ed3d
test(sdk): test sync_address_balances (#2957)
lklimek Jan 13, 2026
dcb9f2e
feat(sdk): add validation/tests for registerName publicKeyId paramete…
thephez Jan 13, 2026
32a3345
test(wasm-sdk): enable contract token and group check (#2952)
thephez Jan 13, 2026
17e4c0d
perf(sdk): cache contracts in JS SDK (#2978)
shumkov Jan 13, 2026
bdc6a37
feat(drive): add WalletUtils system data contract during initializati…
QuantumExplorer Jan 13, 2026
68e57b6
refactor(sdk): dpns JS SDK methods
shumkov Jan 13, 2026
f122ad3
Merge branch 'v3.0-dev' of github.com:dashpay/platform into v3.0-dev
shumkov Jan 13, 2026
4786a80
feat(dpp): add Identity new_with_input_addresses_and_keys() (#2971)
lklimek Jan 13, 2026
2388d63
build(drive): update rkyv to 0.7.46 (#2982)
lklimek Jan 13, 2026
16d2bb2
refactor(sdk): re-use sdk methods (#2981)
shumkov Jan 13, 2026
c66c07e
chore(release): update changelog and bump version to 3.0.0-rc.1 (#2984)
shumkov Jan 13, 2026
760df0c
refactor(sdk): introduce `ProRegTxLike` and `NetworkLike` types (#2990)
shumkov Jan 15, 2026
f030a1f
fix(sdk): toJSON returns empty object (#2995)
shumkov Jan 16, 2026
87f8385
chore(release): update changelog and bump version to 3.0.0-rc.2 (#2998)
shumkov Jan 17, 2026
b8ad5dd
feat(drive): improve error handling in merk proof extraction (#3003)
QuantumExplorer Jan 19, 2026
ed85b73
feat(dashmate): add Let's Encrypt SSL provider support (#3000)
ktechmidas Jan 20, 2026
fc41f48
fix(platform): update grovedb dependency to allow for larger proof si…
QuantumExplorer Jan 20, 2026
f6fea2b
chore(release): update changelog and bump version to 3.0.0-rc.3 (#3006)
shumkov Jan 20, 2026
a6ca062
feat(dapi): allow setting max grpc response size (#2997)
lklimek Jan 22, 2026
750f3ee
build(sdk): remove unmaintained rustls-pemfile, update lru to 0.16.3 …
lklimek Jan 23, 2026
b3d0aeb
ci: if test core dumps, upload dump as build artifact (#2906)
lklimek Jan 23, 2026
1a393a2
chore(dapi): regenerate dapi clients for v3.0 (#3012)
lklimek Jan 23, 2026
26f9163
build: update js deps - diff, lodash, micromatch, tar, ignore ellipti…
lklimek Jan 23, 2026
e29f0b8
feat(dpp): update Platform address HRP and type bytes (#3011)
QuantumExplorer Jan 23, 2026
0743dd0
fix(wasm-sdk): invalid get_address_info return object (#3016)
shumkov Jan 23, 2026
45cc347
chore: set versions for dash core and grovedb and release 3.0 (#3010)
QuantumExplorer Jan 23, 2026
ee57ffb
chore: introduce protocol version 12 (#3017)
QuantumExplorer Jan 24, 2026
c529219
feat(drive-abci): debugging tool to replay abci requests (#2862)
lklimek Jan 29, 2026
2aefb29
build: bump Alpine to v3.23 (#3022)
lklimek Jan 29, 2026
48462a9
build: bump tracing-subscriber to 0.3.22 (#3023)
lklimek Jan 29, 2026
1426505
build: update rs-tenderdash-abci to v1.5.0 (#3025)
lklimek Jan 29, 2026
1fdd48e
build: update javascript grpc-js to 1.14.3 (#3015)
lklimek Jan 29, 2026
9767d18
chore!: upgrade bincode to 2.0.1 (#2991)
lklimek Jan 31, 2026
98a0ebe
refactor(sdk)!: comprehensive Evo SDK refactoring (#2999)
shumkov Feb 1, 2026
f449f11
fix(platform)!: 3.0 audit report fixes (#3053)
QuantumExplorer Feb 5, 2026
6a3439a
fix(dashmate): letsencrypt renewal and dashmate doctor fixes (#3018)
ktechmidas Feb 5, 2026
2eb9a0d
chore(dashmate): upgrade to Core 23 (#3054)
shumkov Feb 5, 2026
707a664
chore(release): update changelog and bump version to 3.0.1-hotfix.3 (…
shumkov Feb 5, 2026
8cefed0
fix(dapi-grpc): files generated outside sandbox
lklimek Feb 5, 2026
a9a7d09
chore: use subdir of out_dir
lklimek Feb 5, 2026
d12124e
fix(platform)!: 3.0 audit report fixes (#3053)
QuantumExplorer Feb 5, 2026
2d7ccf7
feat(platform)!: update PlatformAddress encoding and HRP constants (#…
QuantumExplorer Feb 5, 2026
961fe9e
feat(platform)!: update PlatformAddress encoding and HRP constants (#…
QuantumExplorer Feb 5, 2026
3710c31
chore: update all package versions to 3.0.1-hotfix.4 (#3060)
QuantumExplorer Feb 5, 2026
1d7d9ef
Merge remote-tracking branch 'origin/v3.1-dev' into build/dapi-grpc-s…
lklimek Feb 6, 2026
ea51e52
chore: clippy
lklimek Feb 6, 2026
0a60b4d
chore(release): update versions and changing to v3.0.1 (#3063)
shumkov Feb 6, 2026
921a3a4
chore: rust dashcore made a workspace dependency (#3062)
ZocoLini Feb 6, 2026
14927d8
feat(sdk): token config update JS binding (#3038)
shumkov Feb 8, 2026
203468d
fix(sdk): inconsistent document query operator (#3039)
shumkov Feb 8, 2026
4f22b17
refactor(sdk): get rid of static trusted contexts (#3043)
shumkov Feb 8, 2026
7a67938
feat(sdk): retry the wait for result request on deadline exeeded (#3035)
shumkov Feb 8, 2026
8b38996
fix(sdk)!: getSignableBytes is not compatible with sign and verify (#…
shumkov Feb 8, 2026
3be342b
fix(sdk): deserialization error due to outdated contract cache (#3052)
shumkov Feb 8, 2026
b3efcd2
chore(sdk): update address HRP prefix and encoding (#3069)
shumkov Feb 8, 2026
9cf964f
fix(sdk): outdated platfrom version in JS SDK (#3046)
shumkov Feb 9, 2026
e38b0f0
Merge branch 'v3.1-dev' into build/dapi-grpc-sandbox
QuantumExplorer Feb 9, 2026
36a6359
test: regenerate test vectors for v3.0.1 (#3065)
lklimek Feb 9, 2026
97c83c2
test(drive-abci): suppress tracing logs in test output (#3014)
lklimek Feb 9, 2026
6854cd4
refactor(sdk)!: fix type inconsistencies across wasm-sdk and js-evo-s…
shumkov Feb 9, 2026
184629b
build: update js webpack to 5.104.0 (#3068)
lklimek Feb 9, 2026
b1bf5a5
Merge remote-tracking branch 'origin/v3.0-dev' into copilot/merge-cha…
lklimek Feb 9, 2026
e53ee17
Merge branch 'v3.1-dev' into build/dapi-grpc-sandbox
shumkov Feb 9, 2026
641d3db
chore: merge v3.0-dev (v3.0.1 release) into v3.1-dev (#3070)
lklimek Feb 9, 2026
297451e
Merge branch 'v3.1-dev' into build/dapi-grpc-sandbox
lklimek Feb 9, 2026
8063222
fix(sdk): missing `getSignedBytes` method (#3073)
shumkov Feb 9, 2026
ee41550
Merge branch 'v3.1-dev' into build/dapi-grpc-sandbox
lklimek Feb 9, 2026
5645066
fix(dapi): files generated outside sandbox (#3056)
lklimek Feb 9, 2026
5e4dc87
feat(dapi): add method to retrieve all non-banned endpoints (#3072)
lklimek Feb 9, 2026
5c589c5
feat(dashmate): add Tenderdash 1.6 allowlistOnly option (#3067)
lklimek Feb 9, 2026
31da8ca
Initial plan
Copilot Feb 9, 2026
150559c
Merge v3.1-dev into feat/drive-event-bus
Copilot Feb 9, 2026
84b829a
Merge v3.1-dev into feat/drive-event-bus
Copilot Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .github/actions/docker/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ inputs:
cargo_profile:
description: Cargo build profile, i.e release or dev
default: dev
build_args:
description: Additional build arguments to pass to Docker build (one per line)
default: ""
cache_bucket:
description: S3 bucket to use for caching (both sccache and layer cache)
required: true
Expand All @@ -50,6 +53,9 @@ inputs:
cache_to_name:
description: "Save cache to name manifest (should be used only on default branch)"
default: "false"
additional_features:
description: Extra Cargo features to enable (comma-separated)
default: ""
outputs:
digest:
value: ${{ steps.docker_build.outputs.digest }}
Expand Down Expand Up @@ -192,6 +198,8 @@ runs:
AWS=${{ env.HOME }}/.aws/credentials
build-args: |
CARGO_BUILD_PROFILE=${{ inputs.cargo_profile }}
ADDITIONAL_FEATURES=${{ inputs.additional_features }}
${{ inputs.build_args }}
${{ steps.sccache.outputs.env_vars }}
cache-from: ${{ steps.layer_cache_settings.outputs.cache_from }}
cache-to: ${{ steps.layer_cache_settings.outputs.cache_to }}
Expand Down
8 changes: 7 additions & 1 deletion .github/actions/nodejs/action.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
---
name: "Setup Node.JS"
description: "Setup Node.JS binaries, dependencies and cache"
inputs:
node-version:
description: "Node.js version to use"
required: false
default: "24"
runs:
using: composite
steps:
- name: Setup Node.JS
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: ${{ inputs.node-version }}
registry-url: "https://registry.npmjs.org"

- name: Enable corepack
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion .github/package-filters/js-packages-no-workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ dashmate:
- packages/rs-sdk/**
- packages/rs-dapi-client/**
- packages/rs-platform-version/**
- packages/rs-dapi-grpc-macros/**
- packages/rs-dash-platform-macros/**
- packages/dapi-grpc/**

'@dashevo/evo-sdk': &evo-sdk
Expand Down
2 changes: 1 addition & 1 deletion .github/package-filters/js-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ dashmate:
- packages/rs-sdk/**
- packages/rs-dapi-client/**
- packages/rs-platform-version/**
- packages/rs-dapi-grpc-macros/**
- packages/rs-dash-platform-macros/**
- packages/dapi-grpc/**

'@dashevo/evo-sdk': &evo-sdk
Expand Down
2 changes: 1 addition & 1 deletion .github/package-filters/rs-packages-no-workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ drive-abci:

dapi-grpc: &dapi_grpc
- packages/rs-platform-version/**
- packages/rs-dapi-grpc-macros/**
- packages/rs-dash-platform-macros/**
- packages/dapi-grpc/**

rs-dapi-client: &dapi_client
Expand Down
2 changes: 1 addition & 1 deletion .github/package-filters/rs-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ drive-abci:
dapi-grpc: &dapi_grpc
- .github/workflows/tests*
- packages/rs-platform-version/**
- packages/rs-dapi-grpc-macros/**
- packages/rs-dash-platform-macros/**
- packages/dapi-grpc/**

rs-dapi-client: &dapi_client
Expand Down
70 changes: 70 additions & 0 deletions .github/workflows/milestone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Assign Milestone

on:
pull_request:
types: [opened, reopened, edited]

jobs:
assign-milestone:
runs-on: ubuntu-latest
permissions:
pull-requests: write
# Following needed because PRs are technically under issues
issues: write
steps:
- name: Assign milestone based on target branch
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const pr = context.payload.pull_request;
const baseBranch = pr.base.ref;

// Skip if targeting master
if (baseBranch === 'master') {
console.log('PR targets master, skipping milestone assignment');
return;
}

// Parse v*-dev branch pattern
const match = baseBranch.match(/^v(\d+\.\d+)-dev$/);
if (!match) {
console.log(`Branch ${baseBranch} does not match v*-dev pattern`);
return;
}

const milestoneName = `v${match[1]}.0`;

// Skip if PR already has the correct milestone
if (pr.milestone && pr.milestone.title === milestoneName) {
console.log(`PR already has correct milestone: ${pr.milestone.title}`);
return;
}

console.log(`Looking for milestone: ${milestoneName}`);

// Find the milestone
const milestones = await github.rest.issues.listMilestones({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open'
});

const milestone = milestones.data.find(m => m.title === milestoneName);

if (!milestone) {
core.warning(`Milestone ${milestoneName} not found. Create it to enable automatic assignment.`);
return;
}

// Assign or update the milestone
if (pr.milestone) {
console.log(`Updating milestone from ${pr.milestone.title} to ${milestoneName}`);
}
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
milestone: milestone.number
});

console.log(`Assigned milestone ${milestoneName} to PR #${pr.number}`);
2 changes: 1 addition & 1 deletion .github/workflows/prebuild-devcontainers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
- name: Setup Node.JS
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"

- name: Install skopeo
run: |
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/release-docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ on:
type: string
description: Cargo profile. i.e. release, dev
default: release
additional_features:
type: string
description: Extra Cargo features to enable for Drive builds (comma-separated)
default: ""
env:
DIGEST_NAME: digests-${{ inputs.image_org }}-${{ inputs.image_name }}-${{ inputs.tag }}-${{ inputs.cargo_profile }}-${{ github.sha }}
DIGEST_DIR_PATH: /tmp/digests
Expand Down Expand Up @@ -66,6 +70,7 @@ jobs:
cache_secret_access_key: ${{ secrets.CACHE_SECRET_KEY }}
# On release, we generate a new "base" image, so we need to save cache to name manifest, like '.../drive'
cache_to_name: ${{ github.event_name == 'release' && 'true' || 'false' }}
additional_features: ${{ inputs.additional_features }}

- name: Export digest
run: |
Expand Down
13 changes: 11 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

# Required for NPM publish
permissions:
id-token: write
contents: read

jobs:
release-npm:
name: Release NPM packages
Expand Down Expand Up @@ -120,8 +125,11 @@ jobs:
echo "NPM suffix: ${{ steps.suffix.outputs.result }}"
echo "NPM release tag: ${{ steps.tag.outputs.result }}"

- name: Configure NPM auth token
run: yarn config set npmAuthToken ${{ secrets.NPM_TOKEN }}
# We need NodeJS 24 for https://docs.npmjs.com/trusted-publishers
- name: Setup Node.JS
uses: ./.github/actions/nodejs
with:
node-version: 24

- name: Publish NPM packages
run: yarn workspaces foreach --all --no-private --parallel npm publish --tolerate-republish --access public --tag ${{ steps.tag.outputs.result }}
Expand Down Expand Up @@ -178,6 +186,7 @@ jobs:
target: drive-abci
cargo_profile: dev
tag: ${{ inputs.tag || github.event.release.tag_name }}-debug
additional_features: console,grovedbg,replay

release-rs-dapi-image:
name: Release RS-DAPI image
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/swift-sdk-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,24 +88,24 @@ jobs:
echo "PROTOC=$HOME/.local/protoc-32.0/bin/protoc" >> "$GITHUB_ENV"
"$HOME/.local/protoc-32.0/bin/protoc" --version

- name: Determine rust-dashcore revision (from rs-dpp)
- name: Determine rust-dashcore revision (from workspace Cargo.toml)
id: dashcore_rev
shell: bash
run: |
set -euo pipefail
# Use the same rust-dashcore revision/tag as rs-dpp
# Try to find tag first (preferred format)
REV=$(grep -E '^[[:space:]]*dashcore[[:space:]]*=[[:space:]]*\{.*tag[[:space:]]*=' packages/rs-dpp/Cargo.toml \
REV=$(grep -E '^[[:space:]]*dashcore[[:space:]]*=[[:space:]]*\{.*tag[[:space:]]*=' Cargo.toml \
| sed -E 's/.*tag[[:space:]]*=[[:space:]]*"([^"]+)".*/\1/' \
| head -n1 || true)
# If no tag found, try rev format
if [ -z "${REV:-}" ]; then
REV=$(grep -E '^[[:space:]]*dashcore[[:space:]]*=[[:space:]]*\{.*rev[[:space:]]*=' packages/rs-dpp/Cargo.toml \
REV=$(grep -E '^[[:space:]]*dashcore[[:space:]]*=[[:space:]]*\{.*rev[[:space:]]*=' Cargo.toml \
| sed -E 's/.*rev[[:space:]]*=[[:space:]]*"([^"]+)".*/\1/' \
| head -n1 || true)
fi
if [ -z "${REV:-}" ]; then
echo "Failed to determine rust-dashcore revision or tag from Cargo.toml" >&2
echo "Failed to determine rust-dashcore revision or tag from workspace Cargo.toml" >&2
exit 1
fi
echo "rev=$REV" >> "$GITHUB_OUTPUT"
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/tests-build-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ on:
type: string
description: Image target
required: true
build_args:
type: string
description: Additional build arguments to pass to Docker build
default: ""

jobs:
build-image:
Expand Down Expand Up @@ -41,6 +45,7 @@ jobs:
target: ${{ inputs.target }}
platform: linux/amd64
push_tags: true
build_args: ${{ inputs.build_args }}
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_token: ${{ secrets.DOCKERHUB_TOKEN }}
cache_region: ${{ vars.CACHE_REGION }}
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/tests-packges-functional.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ jobs:
- name: Run SDK functional tests
run: yarn workspace dash test:functional

- name: Run WASM SDK functional tests
run: yarn workspace @dashevo/wasm-sdk test:functional

- name: Show Docker logs
if: ${{ failure() }}
uses: jwalton/gh-docker-logs@v2
59 changes: 57 additions & 2 deletions .github/workflows/tests-rs-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
direct-packages:
description: JSON array of packages that changed directly (not via deps)
type: string
default: '[]'
default: "[]"

jobs:
lint:
Expand Down Expand Up @@ -198,15 +198,70 @@ jobs:
- name: Install librocksdb
uses: ./.github/actions/librocksdb

- name: Configure core dumps
run: |
sudo mkdir /cores
sudo chmod 777 /cores
# Core filenames will be of the form executable.pid.timestamp:
sudo bash -c 'echo "/cores/%e.%p.%t" > /proc/sys/kernel/core_pattern'

- name: Run tests
run: RUST_MIN_STACK=16777216 cargo test --package=${{ inputs.package }} --all-features --locked
run: |
ulimit -c unlimited
RUST_MIN_STACK=4194304 cargo test --package=${{ inputs.package }} --all-features --locked
env:
SCCACHE_S3_KEY_PREFIX: ${{ runner.os }}/sccache/${{ runner.arch }}/linux-gnu
ROCKSDB_STATIC: "/opt/rocksdb/usr/local/lib/librocksdb.a"
ROCKSDB_LIB_DIR: "/opt/rocksdb/usr/local/lib"
SNAPPY_STATIC: "/usr/lib/x86_64-linux-gnu/libsnappy.a"
SNAPPY_LIB_DIR: "/usr/lib/x86_64-linux-gnu"

# Zip crash artifacts (core files + binaries) so filenames stay safe
- name: Collect crash artifacts
if: failure()
env:
PACKAGE_NAME: ${{ inputs.package }}
run: |
set -euo pipefail
shopt -s nullglob

if ! compgen -G "/cores/*" > /dev/null; then
echo "No core dumps were produced; skipping artifact archive."
exit 0
fi

ARTIFACT_DIR=crash-artifacts
rm -rf "${ARTIFACT_DIR}"
mkdir -p "${ARTIFACT_DIR}/cores" "${ARTIFACT_DIR}/binaries"

cp -a /cores/. "${ARTIFACT_DIR}/cores/"

BIN_PREFIX=$(echo "${PACKAGE_NAME}" | tr '-' '_')
for path in target/debug/deps/${BIN_PREFIX}-* target/debug/${BIN_PREFIX}-*; do
if [[ -f "$path" && -x "$path" ]]; then
cp -a "$path" "${ARTIFACT_DIR}/binaries/"
fi
done

for extra in target/debug/deps/${BIN_PREFIX}-*.dwp target/debug/${BIN_PREFIX}.dwp; do
if [[ -e "$extra" ]]; then
cp -a "$extra" "${ARTIFACT_DIR}/binaries/"
fi
done

(cd "${ARTIFACT_DIR}" && zip -9 -r ../core-dumps.zip .)

- name: Upload core dumps
if: failure()
uses: actions/upload-artifact@v4
with:
name: core-dumps-${{ inputs.package }}
path: |
core-dumps.zip
if-no-files-found: ignore
retention-days: 3
# Inspect locally with: gdb path/to/binary path/to/core

check_each_feature:
name: Check each feature
runs-on: ubuntu-24.04
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ jobs:
- name: Drive
image_name: drive
target: drive-abci
build_args: |
SDK_TEST_DATA=true
- name: RS-DAPI
image_name: rs-dapi
target: rs-dapi
Expand All @@ -89,6 +91,7 @@ jobs:
name: ${{ matrix.name }}
image_name: ${{ matrix.image_name }}
target: ${{ matrix.target }}
build_args: ${{ matrix.build_args }}

rs-packages:
name: Rust packages
Expand Down Expand Up @@ -155,7 +158,7 @@ jobs:
- name: Setup Node.JS
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"

- name: Enable corepack
run: corepack enable
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ node_modules
# Yarn
.yarn/*
!.yarn/cache
!.yarn/constraints.pro
!.yarn/patches
!.yarn/plugins
!.yarn/releases
Expand Down
Loading
Loading