Conversation
Lands Tempo accounts on ox primitives: secp256k1/P256/WebAuthn/WebCrypto sources with root and access-key modes, keychain (v2) signature enveloping, synthetic multisig accounts, voucher and key-authorization signing, and access-key resolution. signTransaction implements the core local-account shape: sign payloads and wire formats come from the chain's transaction hooks (with TxEnvelopeTempo defaults), so the account carries no serialization logic; multisig requests return owner approvals over the multisig digest. Cross-checked byte-for-byte against the v2 implementation. Dependency-blocked v2 test ports are marked test.todo (convention added to AGENTS.tmp.md); WebAuthn coverage now runs against a fake authenticator built on ox, closing the earlier getCredential deferral. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Refreshes src-old, test-old, contracts-old, and site-old to wevm/viem main @ 8cebc26 (v2.54.6). Brings in storage credits, the updated multisig implementation, sponsored feeToken fixes, client-less token call builders, encryptedDeposit.prepare, receive-policy claimer validation, and getRawTransaction as the new parity baseline. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Ports the main deltas that touch migrated modules: the storage-credits precompile (ABI via a verbatim generator override — the interface is not in the pinned node crates — plus address and selector map), the previously missing tip20ChannelReserve address, client-less resolveToken and the CallParameters/resolveCallParameters plumbing for token call builders, the sponsored-multisig e2e case (as test.todo), and the Mars Credit chain. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Ports upstream getRawTransaction (v2.54.5) into the transaction namespace: returns the raw serialized transaction for a hash via eth_getRawTransactionByHash, throwing Transaction.NotFoundError when unknown. Also documents the existing EIP-1898 blockHash/requireCanonical options on contract.read. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Chain request codecs were invoked via `z.decode`, which validates against the codec's RPC side and rejects native inputs (bigint quantities); ox `*ToRpc` codecs now plug in directly, and `Chain.ExtractTransactionRequest` resolves the native request type from `z.output`. `transaction.estimateGas` threads the chain request codec so chain-specific fields reach the node. `transaction.prepare` respects hook-modified `request.account` (multisig sender derivation) and no longer feeds self-derived fees into its internal gas estimation (nodes cap estimable gas by sender balance, breaking sponsored senders). Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Lands `chainConfig.ts` (RPC codecs over ox tempo primitives with a thin client-concern adapter, envelope hooks with multisig combining and fee-payer format selection, the full prepare hook, and signature-envelope `verifyHash`), re-wires the tempo chain definitions (+ `hardfork` fields), adds the `Chain.ts` alias module and `zones/zone.ts`, and gives `Account.signTransaction` the local fee-payer co-sign branch (TIP-1 gas sponsorship). Bumps ox to 1.0.0-beta.14, which owns the tempo request wire fields upstream. Adds the signing e2e node gate covering root, access-key (secp256k1/p256/webAuthn), fee-token, expiring-nonce, and sponsored flows; native multisig stays gated until the public node image decodes the multisig signature envelope. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Port the TIP-20 token action namespace from v2: writes with sync variants, reads, and event watchers, plus the Tempo client factory, decorator, and `viem/tempo` entrypoint. Includes per-action docs pages, harness updates for fee-token setup reuse, and widened `Account.Account` to include multisig accounts. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Port the fee namespace (validateToken, user/validator token reads, writes with sync variants, watchers) and the nonce namespace from v2. The nonce actions drop the namespace echo (getNonce -> nonce.get, watchNonceIncremented -> nonce.watchIncremented). Includes decorator wiring with per-method JSDoc, per-action docs pages + sidebar groups, and a registerValidator test-harness helper. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Port the fee-AMM, payment-channel, and stablecoin-DEX namespaces from v2 (51 actions) with identical export sets. Pool ids are computed directionally inline (fee-AMM ids are not pair-sorted), getPool reads batch through the client instead of multicall, and channel.signVoucher rides Account.signVoucher. Fixes found by the ported suites: channel settle/close no longer leak the voucher signature into the transaction request, and watchFlipOrderPlaced filters isFlipOrder client-side (non-indexed args cannot be topic-filtered). Includes decorator wiring with per-method JSDoc and per-action docs pages + sidebar groups. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Cut `as never` from 683 to 103 sites, every survivor verified load-bearing. Union-of-actions dispatch now routes through shared internal helpers (dispatchWrite/dispatchSend/estimateWrite/ simulateWrite) instead of per-file casts; either-or block selectors thread conditional spreads; runtime-discriminated calls branch so each arm typechecks. Fixes a real public inference bug: `strict: true` on contract.getLogs/watchEvent/createEventFilter and event.createFilter now narrows decoded `log.args` (the widened `strict | boolean` property defeated generic pinning). Adds the "No `as never`" convention to AGENTS.md. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Port the TIP-403 transfer-policy, receive-policy, and validator-config namespaces from v2 (43 actions) with identical export sets, built on the cast-free dispatch idiom. policy.create now honors an explicit admin option (v2 silently used the sender). Unblocks and ports the dex cancelStale test, which surfaced that fee transfers are now policy-enforced (blacklisted senders must pay fees in another token). Includes decorator wiring with per-method JSDoc and per-action docs pages + sidebar groups. Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
- drop runtime z.RpcSchema usage from core action paths - emit tempo abis aggregate as pure IIFE - tempo transaction hooks delegate non-tempo shapes to core defaults Amp-Thread-ID: https://ampcode.com/threads/T-019f3562-6191-707e-8402-ee011f40a8a0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Contributor
|
@jxom packages are ready now. All are 2.3.0. Curves are post-audit. |
* fix: accept partial logs in `extractEvent` helpers
EIP-5792 call receipts expose logs as `{ address, data, topics }`. These
wrappers required a full `Log.Log`, so decoding a batched receipt needed a cast
even though `AbiEvent.extractLogs` accepts the partial shape already.
Make them generic over the logs passed in, so the return keeps whatever
metadata the input carried.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: accept partial logs in OP Stack & Earn extractors
Same widening as the `extractEvent` sweep, but these three surfaces need more
than a signature change.
`Earn` filters logs by emitting address before decoding, so its constraint
requires `address` and its `filter` carries a type predicate. Without it,
`filter` widens to the constraint and blurs metadata for full-log callers.
OP Stack declares its decoded-log types up front, so those gain a log type
parameter defaulting to `Log.Log`. `Deposit.getL2TransactionHashes` stays
pinned to full logs: its source hash is derived from `blockHash` & `logIndex`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* docs: update changeset
* fix: accept partial logs in remaining extractors
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: jxom <7336481+jxom@users.noreply.github.com>
|
All alerts resolved. Learn more about Socket for GitHub. This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored. |
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat: add block header watcher (#4999) * fix: complete block header watcher integration (#5001) * chore: version package (#5000) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(tempo): bind encrypted deposits to sender (#5002) * fix(tempo): bind encrypted deposits to sender Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com> * ci: test sender-bound zone deposits * ci: align Tempo and Zone fixtures * test(tempo): routed T10 fixtures through encrypted deposits * chore: logged local Zone provisioning stall * chore: ignored unpatched extract-zip advisory * fix(tempo): defaulted encrypted deposit sender * ci: skipped Wagmi verification * chore: remove friction log --------- Co-authored-by: 0xrusowsky <90208954+0xrusowsky@users.noreply.github.com> Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com> Co-authored-by: Steven Truong <struong@users.noreply.github.com> Co-authored-by: jxom <7336481+jxom@users.noreply.github.com> * chore: version package (#5003) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(siwe): reject unparseable expirationTime and notBefore (#4990) * fix(siwe): reject unparseable expirationTime and notBefore Invalid Date values from parseSiweMessage (e.g. Expiration Time: never) are truthy, so comparisons like `time >= expirationTime` are always false and lifetime / nbf checks were skipped. Fail closed when either field is present but not a real date (sibling of thirdweb-dev/js#8875 / supabase/auth#2688). * fix(siwe): require EIP-4361 date-time strings and reject invalid time Validate raw SIWE timestamps against the RFC 3339 profile before Date coercion, and fail closed when the caller-supplied time is invalid so lifetime comparisons cannot be skipped. * fix(siwe): inline date validation --------- Co-authored-by: jxom <7336481+jxom@users.noreply.github.com> * fix: asset discovery in `simulateCalls` (#4997) * fix(simulateCalls): discover assets from simulated logs * refactor(simulateCalls): align asset discovery with repo conventions * fix(simulateCalls): pin both asset-tracing passes to one base block * test(simulateCalls): skip asset tracing on the pinned Anvil * chore: update accessListHints comment * fix(simulateCalls): preserve block tags and request errors * fix(simulateCalls): harden asset trace discovery * test: use reth for mainnet forks * test(simulateCalls): run asset tracing against reth * fix(simulateCalls): align asset trace simulations * fix(simulateCalls): stabilize asset tracing * chore: add static call source * fix(simulateCalls): simplify asset tracing * fix(simulateCalls): isolate asset balance probes * fix(simulateCalls): align asset probe callers * fix(simulateCalls): preserve pending block tag * fix(simulateCalls): normalize transfer topics * refactor(simulateCalls): remove redundant asset deduplication * test(simulateCalls): cover asset tracing edge cases * docs(simulateCalls): describe pending asset tracing --------- Co-authored-by: jxom <7336481+jxom@users.noreply.github.com> * fix: update nanoid security override * fix: increase package size limits * ci: remove docs deployment --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: struong <steven@tempo.xyz> Co-authored-by: 0xrusowsky <90208954+0xrusowsky@users.noreply.github.com> Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com> Co-authored-by: Steven Truong <struong@users.noreply.github.com> Co-authored-by: Sash <sash@ela.city> Co-authored-by: Ghadi <92851745+Ghadi8@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.
npm i viem@next