Skip to content

Conversation

@dannywillems
Copy link
Member

@dannywillems dannywillems commented Dec 7, 2025

Summary

  • Add initial RFC page for documenting how zkApp transactions are signed in the
    Mina Protocol
  • Add page to sidebar under Researchers > Cryptography section

This page will serve as the specification for external implementers (e.g.,
hardware wallet teams like Ledger/Zondax).

This will also be important to verify that we are actually signing zkApp correctly in the Rust codebase.

Related issues

Test plan

  • Verify the page renders correctly on the documentation website
  • Verify sidebar navigation works

@github-actions
Copy link

github-actions bot commented Dec 7, 2025

OCaml Reference Validation Results

Repository: https://github.com/MinaProtocol/mina.git
Branch: compatible
Status: ✓ Validation passed

Click to see full validation output
Checking OCaml references against https://github.com/MinaProtocol/mina.git (branch: compatible)
Fetching current commit from compatible...
Current OCaml commit: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c

Validating references...
========================
✓ VALID: ledger/src/account/account.rs -> src/lib/mina_base/account.ml L:201-224
  ⚠ STALE COMMIT: fc6be4c58091c761f827c858229c2edf9519e941 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/for_tests.rs -> src/lib/transaction_logic/mina_transaction_logic.ml L:2285-2285
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/for_tests.rs -> src/lib/transaction_logic/mina_transaction_logic.ml L:2351-2356
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/for_tests.rs -> src/lib/transaction_logic/mina_transaction_logic.ml L:2407
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/mina_base/transaction_status.ml L:9-51
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/mina_base/transaction_status.ml L:452-454
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/mina_base/with_status.ml L:6-10
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/mina_base/fee_transfer.ml L:76-80
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/mina_base/fee_transfer.ml L:68-69
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/mina_base/coinbase.ml L:17-21
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/mod.rs -> src/lib/transaction/transaction.ml L:8-11
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/signed_command.rs -> src/lib/mina_base/signed_command_payload.ml L:34-48
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/signed_command.rs -> src/lib/mina_base/stake_delegation.ml L:11-13
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/signed_command.rs -> src/lib/mina_base/signed_command_payload.ml L:179-181
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/signed_command.rs -> src/lib/mina_base/signed_command_payload.ml L:239-243
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)
✓ VALID: ledger/src/scan_state/transaction_logic/signed_command.rs -> src/lib/mina_base/signed_command_payload.ml L:352-362
  ⚠ STALE COMMIT: 5da42ccd72e791f164d4d200cf1ce300262873b3 (current: ecbf1132c1c05dddc4629dd1ecf0a31c1af6682c)

Summary
=======
Total references found: 16
Valid references: 16
Invalid references: 0
Stale commits: 16

⚠ Warning: 16 reference(s) have stale commits
Run with --update to update them automatically

Add initial RFC page for documenting how zkApp transactions are signed
in the Mina Protocol. This page will serve as the specification for
external implementers (e.g., hardware wallet teams).

Related issues:
- #1748 (zkApp signing documentation)
- #1756 (Transaction SNARK specification)
- #1665 (Transaction types crate)
- #1409 (Ledger App test vectors)
@github-actions
Copy link

github-actions bot commented Dec 7, 2025

✓ Code Reference Verification Passed

All code references in the documentation have been verified successfully!

Total references checked: 1
Valid references: 1

The documentation is in sync with the codebase on the develop branch.

@dannywillems dannywillems self-assigned this Dec 7, 2025
@dannywillems dannywillems moved this to In Review in Rust node Dec 7, 2025
@dannywillems dannywillems marked this pull request as draft December 8, 2025 13:59
@dannywillems dannywillems moved this from In Review to In Progress in Rust node Dec 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

2 participants