You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Renumber note (2026-06-01): This was filed as LP-182 in the title. LP-182 was consumed by Agent Payment Standard (luxfi/LPs#660, also abhicris) earlier today. This issue is renumbered to LP-183 going forward.
Problem
The ZAP wire transport (PR #21) ships a Rust reference codec for PaymentOffer / PaymentProof envelopes. A pure-Solidity decoder of the same format benchmarks at ~4.9M gas per 1 KiB frame — prohibitive for the per-payment, per-anchor, per-message decode that AgentEscrow + future bridge anchors need to do inline.
We need a native EVM precompile at address 0x0c (canonical short form) that decodes a ZAP frame into an ABI-encoded tuple (uint8 version, uint8 scheme, bytes32 headerDigest, bytes payload, uint8 nestedTag, bytes nestedPayload), with the same byte-for-byte semantics as the Rust codec.
This is the kcolbchain-side reference implementation for LP-183. The luxfi/LPs proposal will land separately; this issue tracks the Go port of the decode path so the precompile is callable from any Lux subnet (and from Create Protocol at genesis).
Renumber note (2026-06-01): This was filed as LP-182 in the title. LP-182 was consumed by Agent Payment Standard (luxfi/LPs#660, also abhicris) earlier today. This issue is renumbered to LP-183 going forward.
Problem
The ZAP wire transport (PR #21) ships a Rust reference codec for
PaymentOffer/PaymentProofenvelopes. A pure-Solidity decoder of the same format benchmarks at ~4.9M gas per 1 KiB frame — prohibitive for the per-payment, per-anchor, per-message decode that AgentEscrow + future bridge anchors need to do inline.We need a native EVM precompile at address
0x0c(canonical short form) that decodes a ZAP frame into an ABI-encoded tuple(uint8 version, uint8 scheme, bytes32 headerDigest, bytes payload, uint8 nestedTag, bytes nestedPayload), with the same byte-for-byte semantics as the Rust codec.This is the kcolbchain-side reference implementation for LP-183. The luxfi/LPs proposal will land separately; this issue tracks the Go port of the decode path so the precompile is callable from any Lux subnet (and from Create Protocol at genesis).
Proposed Approach
x402,Warp 2.0)gas = 50 + 8 * len(input), calibrated againstRIPEMD-160andIDENTITYcurves.0x0c.Acceptance Criteria
References
luxfi/zap— canonical Go reference encoder (encode path)parsdao/precompile— Go precompile registry pattern, proposed host for cross-impl test vectors