Conversation
…-apps into illuzen/wormhole
|
Draft PR overview / Review. PR OverviewBranch:
Architecture SummaryThe flow: miner earns rewards to a wormhole address → tracks transfer UTXOs → generates ZK proofs (one per UTXO) → aggregates into a batch proof → submits unsigned extrinsic to chain for withdrawal. Cross-Verification with qp-zk-circuitsThe
Potential concern: Block hash computation — the circuit uses Bugs and Issues FoundHigh Severity
Medium Severity
Low Severity
Existing TestsRust (quantus_sdk/rust/src/api/wormhole.rs) — 10 unit tests
qp-zk-circuits — ComprehensiveThe circuit repo has thorough tests: circuit fragment tests, E2E prove-verify, aggregation with dummies, negative cases for block consistency and asset ID mismatches. Dart — Zero wormhole testsNo Dart tests exist for any wormhole-related code. Missing TestsRust (quantus_sdk) — Missing
Dart — All missing
SummaryThe wormhole implementation is architecturally sound — it correctly layers Rust ZK circuits → FFI bridge → Dart services → UI. The circuit integration with
|
* fix compute_block_hash_internal use qp-zk-circuits known values
…into illuzen/wormhole
…-apps into illuzen/wormhole
…into illuzen/wormhole
…-apps into illuzen/wormhole
| source: hosted | ||
| version: "0.8.13+6" | ||
| version: "0.8.13+3" | ||
| image_picker_linux: |
There was a problem hiding this comment.
hmm why is image picker in the mobile app changed?
can we remove this change, or do we actually need this version of the picker for some reason
|
Notes: PR #407 — Wormhole Implementation ReviewBranch: OverviewThis PR implements the wormhole withdrawal system across three layers: Rust ZK proof generation, Dart SDK services, and the miner app UI. The bulk of the line count (~50k) is generated Planck pallet bindings. The core implementation is ~5k lines of hand-written code. Architecture — Looks GoodThe layered design is clean and well-separated: Supporting services are well-factored:
Previously Reported Bugs — FixedThe Issues FoundHIGH — Sensitive secrets persisted in plaintext
Map<String, dynamic> toJson() => {'address': address, 'purpose': purpose, 'index': index, 'secretHex': secretHex};Recommendation: Either re-derive secrets on demand from the mnemonic (which is stored in secure storage), or encrypt the file. Storing raw secrets in plaintext undermines the secure mnemonic storage. HIGH —
|
No description provided.