v0.28.1
What's Changed
Security
eip3009AuthenticatedFetchnow validates the 402 challenge'sassetandnetworkbefore signing: the network must be supported and the asset must be the canonical USDC contract for that network. This closes a signature-phishing surface where a zero-value challenge could name an arbitrary verifying contract / EIP-712 domain and still get signed (#507).eip3009AuthenticatedFetchenforces the documented zero-value guarantee: it only signsX-Paymentauthorizations withvalue: 0, and returns non-zero (or unparseable-amount) 402 challenges as-is instead of signing an authorization that could move USDC to the server's advertisedpayTo(#504).
Internal
- Deduplicate CLI command boilerplate: shared
WALLET_PROVIDER_OPTION_DESCRIPTIONconstant andparseToolId()helper incli/commands/shared.ts. No behavior change (#501). - Deduplicate predicate-client boilerplate: shared
openSeaAssetLinks()helper plus typedread()/write()helpers onBasePredicateClient. No behavior change (#503).
Community Contributions
- Thanks to @Nexory for raising the x402-signing hardening that motivated the
eip3009AuthenticatedFetchasset/network and zero-value validation in this release (tool-sdk#11).
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.28.0...tool-sdk-v0.28.1