Changelog
All notable changes to this project will be documented in this file.
[0.20.8] - 2026-06-18
Address bug fix (single source of truth). @aastar/airaccount carried its own hardcoded copy of protocol contract addresses, stale at v0.17.2-beta.4, while @aastar/core CANONICAL_ADDRESSES (the authority) was at v0.19.0-beta.2 (Sepolia full redeploy). The airaccount server used the stale copy internally.
AIRACCOUNT_ADDRESSEScurrent Sepolia fields now derive from@aastar/coreCANONICAL_ADDRESSES[11155111]— factory0x52c5190E, accountImpl0x7fe62d51, delegate/extension/agentRegistry/validatorRouter/BLS/sessionKey/forceExit/calldataParser realigned to v0.19.0-beta.2. Legacy/deprecated factory addresses retained for historical account recovery.- Added
@aastar/coreas an@aastar/airaccountdependency + an anti-drift test asserting the derived fields equalCANONICAL_ADDRESSES(CI fails if they ever diverge again). - Audit: confirmed
airaccountwas the ONLY package not sourcing addresses from@aastar/core; all others already do.
SDK Code Integrity Hash: 1b43e81d4cc394b44ed39665749d678666d9e7571054619f8da09aa64b04fec1
[0.20.7] - 2026-06-18
viem-only — ethers fully removed. Published with deps viem + @simplewebauthn/browser + axios (no ethers), Apache-2.0.
- ethers → viem migration:
@aastar/airaccount(the last ethers consumer) migrated 100% to viem — provider hub, signer hub, all 16 services, BLS packing, signatures. Byte-for-byte equivalence proven by a differential parity layer, now ethers-free golden-fixture tests.ethersremoved as a dependency everywhere (incl. root devDep + on-chain evidence scripts). - Passkey client decoupled from the YAA backend:
YAAAClient→AirAccountClient,YAAAServerClient→AirAccountServerClient(deprecated aliases kept). Passkey routes parameterized (DEFAULT_PASSKEY_ROUTES, overridable); deadapi.yetanotheraa.comdefault removed. Official hosted Relying-Party will beauth.aastar.io(served by aNode). - Hardening: typed wrappers for high-risk contract reads (gas budget, fund-custody address, guard allow/deny gates, session-key grant hashes); uint256 args enforced as
bigint. - Builds on 0.20.6 (repaired published
.d.tstypes + browser-build fix) and 0.20.5 (single-package@aastar/sdk/kmssubpath + seamless multi-chain address auto-resolution). - Tooling: SDK anvil business-regression harness repaired (address sync + honest pass/fail); TypeDoc API-doc generation restored.
SDK Code Integrity Hash: 55018672abdf24b1c9a66235c8f9f72d9e0c410ea6e1e5c9701fbca17bd68d5f
[0.20.1] - 2026-06-16
Upstream sync (radar-driven, detect→upgrade→test). Four upstreams moved on 2026-06-16:
- SuperPaymaster fresh Sepolia redeploy — 17 addresses re-synced + xPNTsToken
setSpenderDailyCapFor/spenderDailyCapOverride(ABI + wrappers + tests). - KMS openapi 0.22.0 → 0.23.0 (coverage already 100%; pin only).
- AirAccount contracts v0.18.0-beta.2 → v0.19.0-beta.2 — FULL Sepolia redeploy: although v0.19 has no new Solidity logic, the
ACCOUNT_VERSION/FACTORY_VERSIONbump to"0.19.0"changed bytecode and redeployed all 11 addresses (factory0x52c5190E, impl0x7fe62d51, BLS verifierAAStarBLSAlgorithm 0xA9EE4f8A→0x68c381Ad, aggregator0x77f7bf95, validator-router, session-key/force-exit/delegate/extension/agent-registry/calldata-parser). The DVT real-node E2E verifier was repointed to the newAAStarBLSAlgorithm. - DVT (YetAnotherAA-Validator) v1.2.0 → v1.3.0 — new opt-in
POST /signature/sign{ status: "pending_confirmation", userOpHash }response (CONFIRM_ENABLED high-value ops, released viaPOST /signature/confirm). The SDK now surfaces it as a typedDvtPendingConfirmationErrorfrom the co-sign assembly path instead of silently dropping the node; the full confirm-flow client remains tracked in #82.
Radar fix: the AirAccount address anchor now tracks the latest upstream CHANGELOG deploy table (a fixed version-specific E2E doc silently false-greened the v0.19 redeploy); self-contradiction now compares same-version docs only.
Compatible upstreams: AirAccount v0.19.0-beta.2 / SuperPaymaster v5.4.0-beta.1 (2026-06-16 redeploy) / KMS openapi 0.23.0 / DVT v1.3.0.
[0.20.0] - 2026-06-16
Compatible upstream versions: AirAccount contracts v0.18.0-beta.2 · SuperPaymaster v5.4.0-beta.1 · KMS openapi 0.22.0 · DVT (YetAnotherAA-Validator) v1.2.0. (Numbered 0.20.0 —
[0.19.0]was already used by an earlier, unreleased CHANGELOG entry below.)
Highlights this cycle
- 100% upstream ABI/API coverage (KMS / SuperPaymaster / AirAccount), enforced by
scripts/coverage/check-doc-coverage.ts+ an ABI-absent-wrapper audit. Closed across waves: SuperPaymaster pre-flight/price/BLS-timelock reads, the governance/admin surface (Registry/BLSAggregator/DVTValidator/GTokenStaking/MicroPaymentChannel/ReputationSystem), the full AirAccount account/factory/session/agent surface, xPNTsToken finance, KMS/UnfreezeKey, and the KMS TEE remote-attestation endpoints (/attestation+.well-known/attestation-measurements*, #37/#12/#87). - AirAccount contracts synced to v0.18.0-beta.2 (full Sepolia redeploy — all 11 addresses updated to the E2E-verified beta.2 deployment, incl. the DVT verifier
AAStarBLSAlgorithm 0xA9EE4f8A; re-vendored the 2 ABIs that changed:+guardSetStrictModeon the account,-g2Addon AAStarBLSAlgorithm);microPaymentChannelSepolia config drift fixed. - issue #30 — 65+ ABI-absent wrappers repaired: every action wrapper that called a
functionNameabsent from its ABI (v5.x removed/renamed fns; would revert on-chain) was re-verified and fixed — RENAMED where the ABI has the fn, or made to THROWNOT_IMPLEMENTEDwhere genuinely removed.x402.tsswitched toX402FacilitatorABI. - DVT v1 client aggregation (#63):
dvtWire.tsassembles the combined signature in the verifier's exact[tier][P256][nodeIds][blsSig]wire (byte-for-byte vs live Sepolia txs); an SDK-driven real-node E2E proves on-chainAAStarBLSAlgorithm.validate = 0. - Beta4 — agent on-chain lifecycle: complete viem agent surface (
agentRegistry+airAccountFactory) + a Sepolia E2E with real tx hashes (createAgentAccount → registerAgent → revokeAgent). - YAA #52 (Beta3.1):
issueXPNTsfix,checkResources, batch SBT mint, registry queries +getCommunityProfile(event back-trace),configureSBTRules/getCommunityStats,getMySBTIdfix; + repaired pre-existing dangling getters. - WebAuthn #49 challenge-binding (#58): TA-nonce →
clientDataJSONceremony across the KMS server-side signing paths (mainnet prerequisite beforeENFORCE_TA_CHALLENGE=true). - AirAccount v0.18 + SuperPaymaster v5.4 ABI/address sync; new
policyRegistry/x402Facilitator/timelockController/agentValidationRegistrykeys;microPaymentChannel+pntsrealigned to the live deployments. - Docs: README "Integration Infrastructure & Upstream Version Pins" (4 stacks) + mandatory
docs/RELEASE-CHECKLIST.md.
SuperPaymaster v5.4.0-beta.1 sync (chore/sync-superpaymaster-v5.4)
Added
X402FacilitatorABI (@aastar/corepackages/core/src/abis/X402Facilitator.json) +X402FacilitatorABI/X402FacilitatorArtifactexports. x402 micropayment settlement entrypoint (verify/settle EIP-3009 authorizations + direct xPNTs, operator/facilitator fees).x402FacilitatorandtimelockControllerkeys added toCANONICAL_ADDRESSESfor all chains (real on Sepolia11155111, zero on10/11155420). Sepolia x402Facilitator0xFe95a77e4Db593E6EA88000Aad9cD1230BAB4512, timelockController0x6cEc100c9CDc6ee7D9EDe0533edD3554E641DdBF. The x402 facilitator address is now resolvable from the SDK (previously absent everywhere).
Changed
- Re-synced
SuperPaymaster.json,Registry.json,PolicyRegistry.jsonABIs from the SuperPaymaster repo (v5.4 god-split / L-C surface). - Fixed stale Sepolia addresses: SP impl comment
0xEB2C9Cb…→0xE84Ae83E…;registryImplin rootconfig.sepolia.json0x1bd28f89…→0x0B5ce703…; addedx402Facilitator/policyRegistry/timelockControllerand updated stalespImplinconfig.sepolia.json. @aastar/core0.18.0→0.18.1.
KMS v0.20.0 + ERC-8004 SDK integration (feat/kms-v0.20.0-integration)
⚠ BREAKING CHANGES
WebAuthnAssertionfields renamed from camelCase to PascalCase —challengeId→ChallengeId,credential→Credential— to match the KMS wire format (the server struct uses#[serde(rename = "ChallengeId" / "Credential")]). Any code constructing aWebAuthnAssertionliteral must update the field casing. The previous camelCase shape never matched the server and would have been rejected.KmsBeginGrantSessionAuthResponsefields likewise PascalCased:challengeId→ChallengeId,options→Options(matchesAuthenticationOptionsResponse).KmsSignGrantSessionRequest/KmsSignP256GrantSessionRequest:contractScopeandselectorScopeare nowstring(wasnumber) — the KMS server types areString(selectorScopeis a bytes4 hex); numeric values failed server deserialization.- Default KMS endpoint is now
https://kms.aastar.io(washttps://kms1.aastar.io).
Added
KmsHttpClient— shared KMS HTTP transport (post/get/amzPost/postWithBearer).KmsManagerkey methods:sign(message/EIP-155 tx),getPublicKey,deriveAddress,listKeys,deleteKey,changePasskey;signTypedDataWithWebAuthnnow posts full EIP-712 typed data to/kms/SignTypedData;beginWebAuthnAuthuses/BeginAuthentication.KmsAgentService(agent TEE-JWT lifecycle),KmsSessionService(P256 session keys),KmsPaymentSigner(Micropayment / GToken EIP-3009 / x402 signers),KmsMonitorService(health/version/queueStatus/rollbackCounter/stats +@internaladminPurgeKey).ERC8004Service— ERC-8004 agent identity calldata encoders + chain-derived registry addresses.
[0.19.0] - 2026-03-30
Breaking Changes
AIRACCOUNT_ADDRESSES.sepolia.factorynow points to M7 r6 (0x42f82d77...). Existing M7 r5 accounts will have different CREATE2 addresses under the new factory. Old r5 factory address is preserved asfactoryM7r5Prevfor reference.
Added
AccountManager.buildGuardianAcceptanceHash(owner, salt, factoryAddress, chainId, dailyLimit)— computes the raw keccak256 guardian acceptance hash (guardians sign viapersonal_sign);dailyLimitis bound into the hash (M9 C-3 front-run fix);saltacceptsnumber | bigintAccountManager.createAccountWithGuardians(params)— creates an account with two explicit user guardians + community guardian (v0.7+ only); throws for v0.6AccountRecordnew optional fields:dailyLimit,guardian1,guardian1Sig,guardian2,guardian2Sig— persisted for deterministic initCode reconstructioncreateAccountaccepts new optionaldailyLimit: bigintparameter; written into the factory config so initCode stays identical across process restartsTransferManager: guardian accounts usecreateAccountWithDefaultsfor initCode (fixes sender/initCode mismatch that would cause bundlers to reject first UserOp)
[0.18.0] - 2026-03-27
M7 r5 SDK Upgrade (feat/m7-sdk-upgrade)
⚠ BREAKING CHANGES
AIRACCOUNT_ADDRESSES.sepolia.factorynow points to the M7 r5 factory contract (0xa0007c5db27548d8c1582773856db1d123107383). The previous M5 address has been renamed tofactoryM5(0xd72a236d84be6c388a8bc7deb64afd54704ae385). Any existing code referencing.factorywill now target the M7 contract, producing different CREATE2 account addresses. This affects counterfactual address derivation and asset routing for accounts created via the old factory.- Migration: use
.factoryM7(explicit) or.factoryM5(legacy M5 accounts).
- Migration: use
SessionKeyServiceconstructor no longer has default address values forsessionKeyValidatorAddressandagentSessionKeyValidatorAddress. Both addresses must now be passed explicitly to avoid cross-network address mismatches.SessionKeyService.encodeGrantAgentSessionsignature changed: the unusedaccountparameter has been removed. Contract usesmsg.sender; the first argument is nowsessionKey.
Features
- M7 r5 contract addresses and ABIs (
compositeValidator,tierGuardHook,agentSessionKeyValidator,accountImpl) - F6
GuardStateReader— ETH and per-token spending state - F7 OAPD address derivation (
getOapdAddress,getOapdAddressWithChainId) - F4 EIP-1193/6963 —
AirAccountEIP1193Provider,announceAirAccount(),watchProviders() - F4
personal_signandeth_signTypedData_v4support inAirAccountEIP1193Provider - F1 Hardware wallets —
connectLedger()(WebHID ECDSA) +createYubiKeySigner()(WebAuthn P256, Tier 2/3) - F2 Helios —
createHeliosTransport()(a16z WASM light client viem transport) - F3 ENS —
resolveEns(),lookupAddress(),resolveEnsVerified()
[0.17.0] - 2026-03-24
V5.3 Agent Economy SDK
- [FEATURE] @aastar/x402: x402 payment client — EIP-3009 signing, payment header encode/decode, x402Fetch auto-retry
- [FEATURE] @aastar/channel: MicroPaymentChannel client — EIP-712 voucher signing, channel lifecycle management
- [FEATURE] @aastar/cli: CLI tool —
aastar x402/channel/agentcommands - [FEATURE] Core L1 Actions:
x402Actions,agentActions,channelActions— three new action factories - [SYNC] SuperPaymaster ABI synced to V5.3.0 (x402 settlement, agent sponsorship, facilitator fees)
- [ADDED] MicroPaymentChannel ABI
- [ADDED] Address constants: microPaymentChannel, agentIdentityRegistry, agentReputationRegistry (Sepolia deployed)
[0.20.8] - 2026-06-18
SDK Code Integrity Hash: 1b43e81d4cc394b44ed39665749d678666d9e7571054619f8da09aa64b04fec1(Excludes metadata/markdown to ensure stability / 排除文档文件以确保哈希稳定)
⛽ Gas Fee Strategy (PaymasterClient)
- [FIX] Testnet/Mainnet Split Gas Pricing:
- Testnets (Sepolia, OP-Sepolia, Anvil, chainId 11155111/11155420/31337): apply
0.5 Gweifloor onmaxPriorityFeePerGas/1.0 Gweifloor onmaxFeePerGas. FixesWaitForUserOperationReceiptTimeoutErrorcaused by Alchemy bundler's minimum fee requirement being higher than OP Sepolia's near-zero network fee. - Mainnet: pure dynamic
estimateFeesPerGas() × 1.2(reduced from 1.5× — saves ~20% on reported maxFee while maintaining sufficient overhead for OP FIFO sequencer). - Strategy applied in both
estimateUserOperationGasandsubmitGaslessUserOperation. - Added diagnostic log:
[PaymasterClient] Gas Pricing: TESTNET (0.5 Gwei floor) | priority=... maxFee=...
- Testnets (Sepolia, OP-Sepolia, Anvil, chainId 11155111/11155420/31337): apply
- [FIX] Retry Loop Extended: max attempts 3→5 (
attempt < 4guard), handles compound PVG + fee bump errors within a single retry pass.
🧰 Keeper (Price Updater)
- [FIX]
cast sendHang Prevention:runCastSend()now applies a hard 90-secondSIGKILLtimeout. Previously--timeout 60only controlled receipt polling, not the subprocess itself—causing the keeper to block indefinitely when Alchemy rate-limitedeth_estimateGas. - [FIX] Explicit Gas Price: before each
sendUpdate, keeper fetchesgetGasPrice()and passes it via--gas-pricetocast send, eliminating cast's owneth_estimateGascall (which was the source of the hang). - [IMPROVED] Print on-chain
priceStalenessThreshold()for both SuperPaymaster and PaymasterV4 during INIT. - [IMPROVED] Keeper anomaly docs: Chainlink stale + external/Chainlink deviation + external short-term volatility alerts documented.
🌐 Network Config
- [FIX] OP Sepolia
blockExplorerURL changed fromoptimism-sepolia.blockscout.com→sepolia-optimism.etherscan.io. Affects all scripts/tests that usegetTxUrl('op-sepolia', ...).
📊 Analytics (Paper3 / Paper7)
- [ADDED]
packages/analytics/data/paper_gas_op_mainnet/2026-02-17/: PaymasterV4 (n=36) and SuperPaymaster (n=43) baseline CSVs with strict single-UserOp + ERC20-transfer filter. - [ADDED]
packages/analytics/data/paper_gas_op_mainnet/2026-02-18/: Relaxed-filter datasets with sender field;super_t2_sender.csv(n=50) satisfies Paper3 SuperPaymaster sample target. - [ADDED]
packages/analytics/data/industry_paymaster_baselines.csv: Alchemy Gas Manager (n=50, mean=257k gas) and Pimlico ERC-20 PM (n=50, mean=387k gas) on-chain baselines for industry comparison. - [ADDED]
packages/analytics/data/gasless_metrics_detailed.csv: 21 records with full L1/L2 fee decomposition (L2GasUsed, L1GasUsed, L1FeesPaid, L2FeesPaid, ActualGasUsed). - [ADDED] Paper7 exclusive datasets: credit cycle JSON records and liquidity velocity simulation CSVs under
data/paper7_exclusive/. - [ADDED]
packages/analytics/run_paper7_exclusive_data.shfor Paper7 data pipeline. - [CHANGED]
gasless_data_collection.csv(v1): +31 rows;gasless_data_collection_v2.csv: +28 rows including T1=22, T2_SP_Credit=22, T5=20. - [ADDED]
scripts/collect_paymaster_baselines.ts: reproducible on-chain event collection with--strict-transfer,--single-userop,--n,--append,--dedupeflags. - [ADDED]
scripts/collect_eoa_erc20_baseline.ts: raw EOA ERC20 transfer baseline for comparison. - [ADDED]
scripts/compute_cost_summary.ts: aggregation script for cost breakdown tables.
📚 Docs
- [CHANGED] Regenerated API markdown output under
docs/api/. - [ADDED]
docs/guide/keeper.md: keeper quickstart, anomaly detection, Telegram setup.
🗂️ Analytics Consolidation
- [REFACTOR] Moved all data collection scripts from
scripts/root intopackages/analytics/scripts/(git mv, history preserved):collect_paymaster_baselines,collect_eoa_erc20_baseline,collect_industry_baseline,compute_cost_summary,gasless-collect,paper7-exclusive-data,paper7_credit_loop,paper7_reputation_credit,run_analytics_coordinator,run_paper7_exclusive_data.sh,fetch-tx-hashes - [ADDED]
packages/analytics/docs/OP_Mainnet_Gas_Analysis_Report.md: gas cost evidence for Paper3/Paper7 (L1/L2 breakdown, PVG analysis, industry comparison, Mermaid pie charts). - [UPDATED]
packages/analytics/README.md: new directory tree, updated all command paths topackages/analytics/scripts/.... - Note: Root shell scripts (
run-keeper-main.sh,run-optimism-tx-data.sh, etc.) are unaffected — they only callscripts/l4-*.tsandscripts/keeper.tswhich remain in place.
🔒 SDK Integrity
SDK Code Integrity Hash: cebb1de2edab0fb63cd47684ab977488410262fa50e485045abc5901894a3f6f(Excludes metadata/markdown to ensure stability / 排除文档文件以确保哈希稳定)
[0.16.22] - 2026-02-11
SDK Code Integrity Hash: 89da8c80ebe6ad8b06adbd4946a00817b18ae79296550709b20bd9ca3af424f9(Excludes metadata/markdown to ensure stability / 排除文档文件以确保哈希稳定)
🌍 Multi-Chain & Infrastructure
- [FEATURE] Optimism Mainnet Canonical Addresses:
- Embedded canonical contract addresses for Optimism (Chain ID: 10) in
@aastar/core. NETWORK=optimismnow resolvesCHAIN_ID=10by default whenCHAIN_IDis not provided.
- Embedded canonical contract addresses for Optimism (Chain ID: 10) in
[0.16.21] - 2026-02-11
SDK Code Integrity Hash: 8d5b71dda17e2cb746e4a70a98020b9c7a4f2b390a82804f7e5924b0bf5a51d5(Excludes metadata/markdown to ensure stability / 排除文档文件以确保哈希稳定)
⚡ Gasless Execution
- [FIX] Paymaster V4 Cached Price Staleness:
PaymasterClientnow treats stalecachedPriceas invalid.- Testnets auto-refresh via
updatePrice()when needed; mainnet requires a running keeper.
- [FIX] Native UserOp Gas Defaults:
- Reduced
UserOpScenarioType.NATIVEverificationGasLimitto a more realistic default.
- Reduced
🧰 Tooling & Regression
- [ADDED] EIP-2537 precompile verification script and historical check dataset.
[0.16.20] - 2026-02-07
SDK Code Integrity Hash: 0a9c8a4a778bb1b64fac6fd29d8a61b2f9b02566f33b2de65e2c26e536f9fff8(Excludes metadata/markdown to ensure stability / 排除文档文件以确保哈希稳定)
🌍 Infrastructure & Distribution
- [FEATURE] Canonical Address Solidification:
- Hardcoded canonical contract addresses for Sepolia and OP Sepolia within
@aastar/core. - SDK is now self-contained and ready for NPM distribution without requiring local JSON configuration files.
- Maintained三级优先级 (ENV > Local Config > Canonical Defaults) to support flexible development.
- Hardcoded canonical contract addresses for Sepolia and OP Sepolia within
- [FIX] SuperPaymaster Price Refresh:
- Fixed "UserOperation expired" errors by enabling automated owner-based price refreshes in
l4-setup.ts. - Added Chainlink fallback logic for robust price synchronization on testnets.
- Fixed "UserOperation expired" errors by enabling automated owner-based price refreshes in
🛡️ Integrity
- [ADDED] SDK Source Integrity Monitoring:
- Introduced a unique SHA-256 hash for the entire SDK source tree to ensure verifiable releases.
[0.16.17] - 2026-02-07
🌍 Infrastructure & Compatibility
- [FEATURE] Universal Browser Support:
- Refactored
@aastar/coreto support dual entry points viapackage.jsonexports. - Browser: Adds
dist/index.js(Pure ESM) which is free of Node.js specific code (createRequire,fs), ensuring seamless integration with Vite/Next.js. - Node.js: Adds
dist/index.node.jswhich automatically loads localconfig.{network}.jsonfor backward compatibility. - Refactored
constants.tsto support dynamic configuration injection viaapplyConfig().
- Refactored
🛡️ SDK Integrity Verification
IMPORTANT
Security First: To ensure you are using an official release and protect your private keys, always verify the integrity of the SDK code immediately after installation.
Current Code Integrity Hash (v0.19.0): b39aef2a020061c37725d0e80295774dadadc7ff964fef723287bfc71520dbb5
To verify, run this stable command (excludes non-code markdown files):
git ls-files -z | grep -zvE '\.md$' | xargs -0 sha256sum | sha256sumThe resulting hash must match the one listed in the Changelog.
[0.16.14] - 2026-01-24
🌍 Multi-Chain & Infrastructure
- [FEATURE] Standardized Config Loader:
- Restructured
config.tsto implement a robust multi-chain loading priority. - Internal Protocol Contracts (Registry, Paymasters, GToken) now strictly prioritize
config.{network}.json. - Infrastructure Contracts (EntryPoint, PriceFeed) and URLs (RPC, Bundler) are now sourced primarily from
.env.{network}.
- Restructured
- [FIX] Hardcoded Dependencies Cleanup:
- Successfully removed all remaining hardcoded
0xaddresses andsepoliastring literals across alltests/andexamples/scripts. - Every script now supports the
--networkparameter for dynamic environment switching.
- Successfully removed all remaining hardcoded
- [REPAIR] Reputation Activity Metrics: Corrected the
opNamelookup string inl4-reputation-tiers.tsto align with the latestl4-setup.tsstate files.
⚡ Gasless Execution Efficiency
- [IMPROVED] SuperPaymaster Verification Tuning:
- Implemented "Dynamic Nominal Gas Tuning" in
SuperPaymasterClientto optimizepaymasterVerificationGasLimit. - Resolved "Efficiency too low" (AA30) errors on Alchemy/Optimism-Sepolia by maintaining a strict balance between execution safety and bundler efficiency ratios (>= 0.4).
- Implemented "Dynamic Nominal Gas Tuning" in
[0.16.13] - 2026-01-23
🛡️ Security & Stability
- [SECURITY] Strict Address Resolution:
- Enforced strict environment variable lookup for third-party contract addresses (
entryPoint,simpleAccountFactory,priceFeed) on non-Anvil networks. - Eliminated fallback to outdated
config.jsonfiles to prevent deployment misconfigurations.
- Enforced strict environment variable lookup for third-party contract addresses (
- [SECURITY] Token Transfer Limits:
- Updated ABI to reflect new
MAX_SINGLE_TX_LIMITenforcement inxPNTsToken. SDK transactions respecting standard limits will continue to work; anomalous high-value transfers may now revert at the contract level.
- Updated ABI to reflect new
- [SECURITY] Operator Firewall:
- Updated ABI to reflect
autoApprovedSpenderslogic.
- Updated ABI to reflect
⚙️ Core Improvements
- [FIX] xPNTsToken Initialization: Adjusted factory logic to support EIP-1167 Minimal Clones using
initialize()pattern. - [SYNC] Contract ABIs: Synchronized all ABIs with
SuperPaymasterv3.6.3, including new governance functionsrenounceFactoryandemergencyRevokePaymaster.
[0.16.11] - 2026-01-19
📊 Gas Analytics & Reporting (New Package)
- [NEW] Added
@aastar/analyticspackage for comprehensive gas analysis. - [FEATURE]
CostCalculator: Calculates true L1/L2 gas costs, protocol profit (10% premium + buffer), and user savings. - [FEATURE]
AttributionAnalyzer: Simulates L2 costs (Optimism model) to provide "Apple-to-Apple" competitiveness comparisons. - [REPORT]
gas-analyzer-v4.ts: Generates detailed reports showing ~28% protocol profit margin and ~400x savings vs. Ethereum L1.
SDK & Core Enhancements
- [FIX] Anni Gasless Fix: Updated
l4-setup.tsto useupdatePriceDVTfor refreshing stale SuperPaymaster price cache, preventing "UserOperation expired" errors. - [FIX] Duplicate Build Fix: Resolved merge conflicts and duplicate identifiers in
packages/coreactions (e.g.,contracts.ts,actions/index.ts). - [FIX] Build System: Removed residual
*.test.tsfiles in modification directories to ensure cleantscbuilds.
Regression & Testing
[IMPROVED]
L4 Regression: Full automation for Setup -> Funding -> Gasless Transactions -> Analytics.[FEATURE]
DVT Price Update: Integrated DVT signature generation in test setup to simulate authenticated price updates.[BREAKING] Decoupled development and production build configurations.
- Added
tsconfig.build.jsonfor strictly clean production builds (pnpm build). - Updated root
tsconfig.jsonto retainpathsmappings for rapid development (tsx). - Updated all
packages/*/tsconfig.jsonto extend the build configuration.
- Added
Fixed
packages/corebuild output to correctly generate type definitions (.d.ts).
SDK Core (@aastar/core)
- [CHANGED]
BaseClientvisibility update.- Changed
clientandgetStartPublicClientfromprotectedtopublicto allow easier extension and debugging in consuming applications.
- Changed
- [Check] Standardized ABI exports.
- Updated
abis/index.tsto support both array-based and object-based ({ abi: [] }) ABI JSON formats, resolving compatibility issues with external artifacts.
- Updated
SDK Operator (@aastar/operator)
- [FIXED] ABI Property Access.
- Fixed runtime error where
PaymasterOperatorClientattempted to access.abion a raw ABI array. Now uses the standardizedPaymasterABIexport.
- Fixed runtime error where
SDK EndUser (@aastar/enduser)
- [FIXED]
UserClientbuild failure due toBaseClientvisibility issues.
Testing & Regression
- [ADDED]
run_sdk_regression.shnow supports a strictsepoliaenvironment mode with correct.envloading (set -a). - [ADDED]
extract_v3_abis.shintegration for reliable ABI synchronization from the SuperPaymaster project.
