Add full V2 transaction verification pipeline: parse SignaturesRaw variant vector into structured ZC signature data, verify CLSAG GGX ring signatures per ZC input, verify BPP range proofs, and verify BGE asset surjection proofs with correct ring construction (mul8 point arithmetic). Fix three wire format bugs that caused V2 parsing failures: - RefTypeGlobalIndex (tag 0x1A) uses 8-byte LE, not varint - Raw uint64_t variant (tagUint64) uses 8-byte LE, not varint - zarcanum_tx_data_v1 fee uses FIELD() → 8-byte LE, not VARINT_FIELD() Add cn_point_sub to C++ bridge and Go wrapper for BGE ring construction. Add GetZCRingOutputs to chain for fetching ZC ring member data. Co-Authored-By: Charon <charon@lethean.io> |
||
|---|---|---|
| .. | ||
| README | ||
| v2_spending_tx_mixin0.hex | ||
| v2_spending_tx_mixin10.hex | ||
Testnet V2 Spending Transaction Test Vectors ============================================= Generated on testnet at height ~2880. v2_spending_tx_mixin0.hex: TX hash: 89c8839e3c6be3bb3616a5c2e7028fd8f33992e4f9ff218f8224825702865b8b Block: 2823 Version: 3 Ring size: 16 (mixin 0 + ZC default) Inputs: 1 txin_zc_input Outputs: 2 tx_out_zarcanum Signatures: CLSAG GGX Proofs: BGE (2), BPP (1 with aggregation), ZC balance v2_spending_tx_mixin10.hex: TX hash: 87fbc60cde013579e1ad6ab403dee81c4da7a6b4621bea44f6973568c37b0af6 Block: ~2878 Version: 3 Ring size: 26 (mixin 10 + ZC default) Inputs: 1 txin_zc_input Outputs: 2 tx_out_zarcanum Signatures: CLSAG GGX Proofs: BGE (2), BPP (1 with aggregation), ZC balance