docs: clarify EVM channel and transfer method semantics#2325
docs: clarify EVM channel and transfer method semantics#2325EfeDurmaz16 wants to merge 2 commits into
Conversation
|
@EfeDurmaz16 is attempting to deploy a commit to the Coinbase Team on Vercel. A member of the Team first needs to authorize it. |
Signed-off-by: EfeDurmaz16 <efebarandurmaz05@gmail.com>
|
Thanks for picking this up quickly. The fix matches both points from #2323. For independent confirmation on the channelId one: I implemented batch-settlement in Rust and compute channelId as the EIP-712 typed-data hash of ChannelConfig (keccak256(0x1901 ‖ domainSeparator ‖ hashStruct)), the way computeChannelId does — not keccak256(abi.encode(...)) as the old docstring read. Golden tests decode the verbatim Base64 vectors from specs/transports-v2/http.md and reproduce channelId, the Voucher digest and signer recovery byte-for-byte against viem. So the corrected docstring reflects the actual on-the-wire semantics; the previous wording would have sent an implementer to a wrong preimage. Same holds for the assetTransferMethod default — modelling it as required fails to parse the canonical PaymentRequired; optional with an eip3009 default is correct. Happy to share the EIP-712 vectors as conformance fixtures if that's useful for the EVM tests. |
Summary
channelIdso it points to the EIP-712ChannelConfighash used bycomputeChannelIdextra.assetTransferMethodin EVMexactPaymentRequiredmeans the defaulteip3009methodextra.assetTransferMethodis intentionally omittedFixes #2323
Verification