fix: payment hardening -- pricing, panics, external signer#5
Open
fix: payment hardening -- pricing, panics, external signer#5
Conversation
Replace two .expect() calls that could panic in production: - PoolCommitment::to_packed(): Vec-to-array conversion now uses .map_err(|_| CostUnitOverflow)? instead of .expect() - get_payment_packed_commitments(): on-chain calldata decoding now returns Error::Rpc with candidate count details instead of .expect() Both changes maintain identical behavior on the happy path while preventing process crashes on malformed data.
…regate - Add calculate_price() to quoting_metrics.rs (same formula as ant-node and the on-chain MerklePaymentVault contract) - In get_market_price(): when contract returns 1 price for N nodes, compute individual prices from each node's QuotingMetrics locally - Replace FIXME workaround in handler.rs with clean padding logic - This ensures per-node fullness-based pricing works correctly
- Make pay_for_merkle_tree_calldata public in handler - Add pay_for_merkle_tree_calldata() to external_signer.rs with MerklePaymentCalldataReturn type containing calldata, contract address, and approval details for external wallet signing
- Remove padding in get_quote handler that expanded single-price to N-prices, defeating the local per-node pricing fallback in mod.rs - Replace inline paths with top-level use imports in external_signer.rs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
expect()panics with properResultpropagation inPoolCommitment::to_packed()andget_payment_packed_commitments()calculate_price()toquoting_metrics.rsso client and node share the same deterministic pricing formulapay_for_merkle_tree_calldata())Dependency note
ant-node and ant-client depend on evmlib 0.5.0 from crates.io. This PR needs a new evmlib release before the other two PRs can use it.
Related PRs
Test plan
cfdpasses