Skip to content

feat(escrow): support attested releases - #167

Open
aduagba4133 wants to merge 1 commit into
DocForum:mainfrom
aduagba4133:fix/issue-42
Open

aduagba4133 wants to merge 1 commit into
DocForum:mainfrom
aduagba4133:fix/issue-42

Conversation

@aduagba4133

Copy link
Copy Markdown

Summary

  • Add optional per-escrow Ed25519 attesters and a one-time release path.
  • Domain-separate signatures by version, contract, network, escrow ID, and action to prevent replay.
  • Regenerate the contract bindings and add SDK support, migration guidance, and security notes.

Closes #42

Verification

  • cargo test --manifest-path contracts/escrow/Cargo.toml passed (33 tests).
  • cargo build --manifest-path contracts/escrow/Cargo.toml --target wasm32v1-none --release passed.
  • Regenerated sdk/src/generated/contract-client.ts from the compiled Wasm.
  • git diff --check and rustfmt --check passed.

@drips-wave

drips-wave Bot commented Oct 16, 2026

Copy link
Copy Markdown

@aduagba4133 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@afeezorobsco-cyber

Copy link
Copy Markdown
Contributor

@aduagba4133

This PR has merge conflicts with main, which has moved on since this branch was created. Please rebase onto the latest main (or merge main into your branch), resolve the conflicts, and push. CI will then re-run, and the PR can be merged once it's conflict-free, CI is green and it's been reviewed. Thanks!

@afeezorobsco-cyber

Copy link
Copy Markdown
Contributor

@aduagba4133 Thanks for the PR. It can't be merged yet. To unblock it:

CI is failing. Here's what broke:

TypeScript SDK (typecheck + build):

src/index.ts(121,7): error TS2322: Type 'Uint8Array<ArrayBufferLike> | undefined' is not assignable to type 'Option<Buffer>'.

Please fix these errors and run the same steps locally before pushing (npm run typecheck && npm test && npm run build, or cargo test for contracts).

Merge conflicts: this branch conflicts with main. Please rebase onto the latest main (git fetch upstream && git rebase upstream/main), resolve the conflicts (often ROADMAP.md, ARCHITECTURE*.md or prisma/schema.prisma), and force-push.

Push to this same branch and CI will re-run. Once it's green and conflict-free, it'll be reviewed for merge.

@github-actions github-actions Bot added the needs-rebase Has merge conflicts with main; the author needs to rebase label Oct 20, 2026
@zeemscript

Copy link
Copy Markdown

Hi @afeezorobsco-cyber — I reviewed the conflict and CI failure. The branch conflicts across the contract data model, settlement entry points, generated SDK bindings, SDK source/package metadata, and tests; its older CI also fails on a Soroban SDK Uint8Array/Option<Buffer> type mismatch. I left the branch unchanged because resolving this safely requires adapting the attested-release feature to current main’s contract schema and regenerating bindings. Could you advise whether to rework this feature against current main or close it as superseded?

@afeezorobsco-cyber

Copy link
Copy Markdown
Contributor

@aduagba4133 Heads-up: #268 just changed how contract PRs work in this repo. Your PR changes contracts/escrow/src/lib.rs, so CI's new "Contract changes use a fragment, not a version bump" step will fail it until you make these changes (details in contract-changes.d/README.md):

  1. Don't edit CONTRACT_VERSION when you merge main (currently 2.3.0). Keep main's line as it is.

  2. Add a fragment, e.g. contract-changes.d/42-feat-escrow-support-attested-releases.md:

    bump: minor
    ---
    Issue #42: one-paragraph summary of the contract change.

    Use patch for a behaviour fix with no interface change, minor for new entry points, arguments, events or errors, and major for breaking changes.

  3. Switch your new Error codes to provisional ones (issue number × 100 + n). This branch adds InvalidAttestation = 7; use InvalidAttestation = 4200. The fold assigns the final numbers. Don't renumber existing codes.

This should also make your next merge from main much easier: the version line was the one thing every contract PR conflicted on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-rebase Has merge conflicts with main; the author needs to rebase

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Phase E5] Attestation-based release: release authorised by a signed off-chain attestation

3 participants