starkzap-sdk

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Starkzap SDK

Starkzap SDK

Project-focused guide for
https://github.com/keep-starknet-strange/starkzap
.
Use this skill when requests involve Starkzap SDK code, examples, or docs.
这是针对
https://github.com/keep-starknet-strange/starkzap
的项目专属指南。
当需求涉及Starkzap SDK代码、示例或文档时,可使用本技能。

When To Use

适用场景

Trigger for tasks like:
  • "Add a new onboarding flow in Starkzap"
  • "Fix sponsored transaction behavior in wallet.execute"
  • "Update staking pool logic or validator presets"
  • "Patch Privy signer/server integration"
  • "Review Starkzap tests/docs/examples"
触发以下类型任务时使用:
  • "在Starkzap中添加新的用户引导流程"
  • "修复wallet.execute中的赞助交易行为"
  • "更新质押池逻辑或验证节点预设"
  • "修复Privy签名器/服务器集成问题"
  • "审核Starkzap的测试/文档/示例"

Repository Map

仓库结构

Primary implementation:
  • src/sdk.ts
    - top-level orchestration (
    StarkSDK
    )
  • src/wallet/*
    - wallet implementations and lifecycle
  • src/signer/*
    -
    StarkSigner
    ,
    PrivySigner
    , signer adapter
  • src/tx/*
    -
    Tx
    and
    TxBuilder
  • src/erc20/*
    - token helpers, balance/transfer logic
  • src/staking/*
    - staking operations and pool discovery
  • src/types/*
    - shared domain types (
    Address
    ,
    Amount
    , config)
Operational and docs:
  • tests/*
    and
    tests/integration/*
  • examples/web
    ,
    examples/server
    ,
    examples/mobile
    ,
    examples/flappy-bird
  • scripts/*
    for generated artifacts in the Starkzap repo
  • docs/*
    and
    mintlify-docs/*
Skill resources:
  • skills/starkzap-sdk/references/signer-integration.md
    - signer trust boundaries and auth assumptions
  • skills/starkzap-sdk/references/sponsored-transactions.md
    - paymaster flow and fee mode behavior
  • skills/starkzap-sdk/references/erc20-helpers.md
    -
    Amount
    semantics and transfer patterns
  • skills/starkzap-sdk/references/staking-reliability.md
    - pool discovery and timeout/abort safety
  • skills/starkzap-sdk/scripts/wallet-execute-example.ts
    - wallet readiness and execute flow
  • skills/starkzap-sdk/scripts/staking-pool-discovery.ts
    - staking pool discovery and diagnostics
核心实现文件:
  • src/sdk.ts
    - 顶层编排逻辑(
    StarkSDK
  • src/wallet/*
    - 钱包实现及生命周期管理
  • src/signer/*
    -
    StarkSigner
    PrivySigner
    、签名器适配器
  • src/tx/*
    -
    Tx
    TxBuilder
  • src/erc20/*
    - 代币工具类、余额/转账逻辑
  • src/staking/*
    - 质押操作及质押池发现逻辑
  • src/types/*
    - 共享领域类型(
    Address
    Amount
    、配置项)
运维与文档相关:
  • tests/*
    tests/integration/*
  • examples/web
    examples/server
    examples/mobile
    examples/flappy-bird
  • scripts/*
    用于生成Starkzap仓库中的制品
  • docs/*
    mintlify-docs/*
技能相关资源:
  • skills/starkzap-sdk/references/signer-integration.md
    - 签名器信任边界与认证假设
  • skills/starkzap-sdk/references/sponsored-transactions.md
    - Paymaster流程与费用模式行为
  • skills/starkzap-sdk/references/erc20-helpers.md
    -
    Amount
    语义与转账模式
  • skills/starkzap-sdk/references/staking-reliability.md
    - 质押池发现与超时/终止安全机制
  • skills/starkzap-sdk/scripts/wallet-execute-example.ts
    - 钱包就绪状态与执行流程
  • skills/starkzap-sdk/scripts/staking-pool-discovery.ts
    - 质押池发现与诊断逻辑

Quick Reference

快速参考

Common starknet.js patterns (provider/account/call/execute/listen):
typescript
import { Account, Contract, RpcProvider } from "starknet";

const provider = await RpcProvider.create({
  nodeUrl: process.env.RPC_URL!,
});

const account = new Account({
  provider,
  address: process.env.ACCOUNT_ADDRESS!,
  signer: process.env.PRIVATE_KEY!,
  cairoVersion: "1",
});

const contract = new Contract({
  abi,
  address: process.env.CONTRACT_ADDRESS!,
  providerOrAccount: account,
});
await contract.call("balance_of", [account.address]); // read

const tx = await account.execute([
  {
    contractAddress: process.env.CONTRACT_ADDRESS!,
    entrypoint: "do_work",
    calldata: [],
  },
]);
await provider.waitForTransaction(tx.transaction_hash);
typescript
// With Starkzap Tx wrapper
const submitted = await wallet.execute(calls, { feeMode: "user_pays" });
const stop = submitted.watch(
  ({ finality, execution }) => console.log(finality, execution),
  { pollIntervalMs: 5000, timeoutMs: 120000 }
);
// stop(); // call to unsubscribe early
Common error classes and immediate recovery:
Error ClassTypical SignalImmediate Recovery
VALIDATION_ERROR
Invalid token decimals
,
Amount.parse(...)
failure
Re-check token decimals/symbol, parse from known token preset, avoid mixing token types.
UNDEPLOYED_ACCOUNT
Account is not deployed
on
wallet.execute(...)
Run
wallet.ensureReady({ deploy: "if_needed" })
before
user_pays
writes.
RPC_OR_NETWORK
timeout, 429, provider mismatchRetry with backoff, confirm
rpcUrl
and
chainId
, switch to stable RPC for production.
TX_REVERTED
preflight.ok === false
or reverted receipt
Run
wallet.preflight({ calls })
, inspect reason, reduce batch size, verify call ordering.
AUTH_OR_PERMISSION
Privy 401/403, invalid signature responseVerify signer server auth, headers/body resolver, and trusted
serverUrl
.
See also:
  • skills/starkzap-sdk/references/*
    for implementation-specific troubleshooting
  • skills/starkzap-sdk/scripts/*
    for runnable diagnostic examples
常见starknet.js模式(provider/account/call/execute/listen):
typescript
import { Account, Contract, RpcProvider } from "starknet";

const provider = await RpcProvider.create({
  nodeUrl: process.env.RPC_URL!,
});

const account = new Account({
  provider,
  address: process.env.ACCOUNT_ADDRESS!,
  signer: process.env.PRIVATE_KEY!,
  cairoVersion: "1",
});

const contract = new Contract({
  abi,
  address: process.env.CONTRACT_ADDRESS!,
  providerOrAccount: account,
});
await contract.call("balance_of", [account.address]); // 读取操作

const tx = await account.execute([
  {
    contractAddress: process.env.CONTRACT_ADDRESS!,
    entrypoint: "do_work",
    calldata: [],
  },
]);
await provider.waitForTransaction(tx.transaction_hash);
typescript
// 使用Starkzap Tx包装器
const submitted = await wallet.execute(calls, { feeMode: "user_pays" });
const stop = submitted.watch(
  ({ finality, execution }) => console.log(finality, execution),
  { pollIntervalMs: 5000, timeoutMs: 120000 }
);
// stop(); // 提前取消订阅时调用
常见错误类与即时恢复方案:
错误类典型标识即时恢复方案
VALIDATION_ERROR
Invalid token decimals
Amount.parse(...)
执行失败
重新检查代币小数位数/符号,从已知代币预设中解析,避免混合不同代币类型。
UNDEPLOYED_ACCOUNT
调用
wallet.execute(...)
时提示
Account is not deployed
在执行
user_pays
类型的写入操作前,先调用
wallet.ensureReady({ deploy: "if_needed" })
RPC_OR_NETWORK
超时、429错误、Provider不匹配带退避策略重试,确认
rpcUrl
chainId
,生产环境切换至稳定RPC节点。
TX_REVERTED
preflight.ok === false
或交易回执显示回滚
先执行
wallet.preflight({ calls })
,检查失败原因,减小批量操作大小,验证调用顺序。
AUTH_OR_PERMISSION
Privy 401/403错误、无效签名响应验证签名器服务器认证信息、请求头/请求体解析逻辑,以及可信
serverUrl
更多参考:
  • skills/starkzap-sdk/references/*
    针对实现细节的故障排查
  • skills/starkzap-sdk/scripts/*
    可运行的诊断示例

Core Workflows

核心工作流

1) Configure
StarkSDK
and Connect Wallets

1) 配置
StarkSDK
并连接钱包

Common API path:
  1. Instantiate
    StarkSDK
    with
    network
    or
    rpcUrl + chainId
    .
  2. Use
    sdk.onboard(...)
    or
    sdk.connectWallet(...)
    .
  3. Call
    wallet.ensureReady({ deploy: "if_needed" })
    before user-pays writes.
Supported onboarding strategies:
  • OnboardStrategy.Signer
  • OnboardStrategy.Privy
  • OnboardStrategy.Cartridge
For Cartridge:
  • Treat as web-only runtime.
  • Expect popup/session behavior and policy scoping requirements.
typescript
import {
  ChainId,
  OnboardStrategy,
  StarkSDK,
  StarkSigner,
} from "starkzap";

const sdk = new StarkSDK({ network: "sepolia" });

const customSdk = new StarkSDK({
  rpcUrl: process.env.RPC_URL!,
  chainId: ChainId.SEPOLIA,
});

const signerResult = await sdk.onboard({
  strategy: OnboardStrategy.Signer,
  account: { signer: new StarkSigner(process.env.PRIVATE_KEY!) },
  feeMode: "user_pays",
  deploy: "if_needed",
});

const privyResult = await sdk.onboard({
  strategy: OnboardStrategy.Privy,
  privy: {
    resolve: async () => ({
      walletId: process.env.PRIVY_WALLET_ID!,
      publicKey: process.env.PRIVY_PUBLIC_KEY!,
      serverUrl: process.env.PRIVY_SIGNER_URL!,
    }),
  },
  feeMode: "sponsored",
});

const cartridgeResult = await sdk.onboard({
  strategy: OnboardStrategy.Cartridge,
  cartridge: {
    preset: "controller",
    policies: [{ target: "0xPOOL", method: "stake" }],
  },
});

const wallet = await sdk.connectWallet({
  account: { signer: new StarkSigner(process.env.PRIVATE_KEY!) },
  feeMode: "sponsored",
});

await wallet.ensureReady({ deploy: "if_needed" });
通用API流程:
  1. 使用
    network
    rpcUrl + chainId
    实例化
    StarkSDK
  2. 调用
    sdk.onboard(...)
    sdk.connectWallet(...)
  3. 在执行用户付费的写入操作前,调用
    wallet.ensureReady({ deploy: "if_needed" })
支持的用户引导策略:
  • OnboardStrategy.Signer
  • OnboardStrategy.Privy
  • OnboardStrategy.Cartridge
关于Cartridge:
  • 仅支持Web运行时。
  • 需注意弹窗/会话行为及策略范围要求。
typescript
import {
  ChainId,
  OnboardStrategy,
  StarkSDK,
  StarkSigner,
} from "starkzap";

const sdk = new StarkSDK({ network: "sepolia" });

const customSdk = new StarkSDK({
  rpcUrl: process.env.RPC_URL!,
  chainId: ChainId.SEPOLIA,
});

const signerResult = await sdk.onboard({
  strategy: OnboardStrategy.Signer,
  account: { signer: new StarkSigner(process.env.PRIVATE_KEY!) },
  feeMode: "user_pays",
  deploy: "if_needed",
});

const privyResult = await sdk.onboard({
  strategy: OnboardStrategy.Privy,
  privy: {
    resolve: async () => ({
      walletId: process.env.PRIVY_WALLET_ID!,
      publicKey: process.env.PRIVY_PUBLIC_KEY!,
      serverUrl: process.env.PRIVY_SIGNER_URL!,
    }),
  },
  feeMode: "sponsored",
});

const cartridgeResult = await sdk.onboard({
  strategy: OnboardStrategy.Cartridge,
  cartridge: {
    preset: "controller",
    policies: [{ target: "0xPOOL", method: "stake" }],
  },
});

const wallet = await sdk.connectWallet({
  account: { signer: new StarkSigner(process.env.PRIVATE_KEY!) },
  feeMode: "sponsored",
});

await wallet.ensureReady({ deploy: "if_needed" });

2) Execute Transactions (
wallet.execute
,
wallet.preflight
,
wallet.tx
)

2) 执行交易(
wallet.execute
wallet.preflight
wallet.tx

Use:
  • wallet.execute(calls, options)
    for direct execution.
  • wallet.preflight({ calls, feeMode })
    for simulation checks.
  • wallet.tx()
    (
    TxBuilder
    ) for batched operations with deterministic ordering.
typescript
const calls = [
  {
    contractAddress: process.env.CONTRACT_ADDRESS!,
    entrypoint: "do_work",
    calldata: [],
  },
];

const preflight = await wallet.preflight({
  calls,
  feeMode: "user_pays",
});
if (!preflight.ok) {
  throw new Error(`Preflight failed: ${preflight.reason}`);
}

const userPaysTx = await wallet.execute(calls, { feeMode: "user_pays" });
await userPaysTx.wait();

const sponsoredTx = await wallet.execute(calls, { feeMode: "sponsored" });
await sponsoredTx.wait();

const batchedTx = await wallet
  .tx()
  .add(...calls)
  .send({ feeMode: "sponsored" });
await batchedTx.wait();
typescript
function getSdkErrorClass(error: unknown): string {
  const message = error instanceof Error ? error.message : String(error);
  if (message.includes("not deployed")) return "UNDEPLOYED_ACCOUNT";
  if (message.includes("timed out") || message.includes("429")) {
    return "RPC_OR_NETWORK";
  }
  if (message.includes("signature") || message.includes("Privy")) {
    return "AUTH_OR_PERMISSION";
  }
  if (message.includes("Invalid") || message.includes("Amount")) {
    return "VALIDATION_ERROR";
  }
  return "UNKNOWN";
}

try {
  await wallet.execute(calls, { feeMode: "user_pays" });
} catch (error) {
  const kind = getSdkErrorClass(error);
  if (kind === "UNDEPLOYED_ACCOUNT") {
    await wallet.ensureReady({ deploy: "if_needed" });
  }
  throw error;
}
When changing execution behavior:
  • Audit deploy vs execute path for undeployed accounts.
  • Verify runtime constraints (
    OnboardStrategy.Cartridge
    is web-only).
  • Cover both
    user_pays
    and
    sponsored
    branches in tests.
使用场景:
  • wallet.execute(calls, options)
    用于直接执行交易。
  • wallet.preflight({ calls, feeMode })
    用于模拟检查。
  • wallet.tx()
    TxBuilder
    )用于确定性排序的批量操作。
typescript
const calls = [
  {
    contractAddress: process.env.CONTRACT_ADDRESS!,
    entrypoint: "do_work",
    calldata: [],
  },
];

const preflight = await wallet.preflight({
  calls,
  feeMode: "user_pays",
});
if (!preflight.ok) {
  throw new Error(`预检查失败: ${preflight.reason}`);
}

const userPaysTx = await wallet.execute(calls, { feeMode: "user_pays" });
await userPaysTx.wait();

const sponsoredTx = await wallet.execute(calls, { feeMode: "sponsored" });
await sponsoredTx.wait();

const batchedTx = await wallet
  .tx()
  .add(...calls)
  .send({ feeMode: "sponsored" });
await batchedTx.wait();
typescript
function getSdkErrorClass(error: unknown): string {
  const message = error instanceof Error ? error.message : String(error);
  if (message.includes("not deployed")) return "UNDEPLOYED_ACCOUNT";
  if (message.includes("timed out") || message.includes("429")) {
    return "RPC_OR_NETWORK";
  }
  if (message.includes("signature") || message.includes("Privy")) {
    return "AUTH_OR_PERMISSION";
  }
  if (message.includes("Invalid") || message.includes("Amount")) {
    return "VALIDATION_ERROR";
  }
  return "UNKNOWN";
}

try {
  await wallet.execute(calls, { feeMode: "user_pays" });
} catch (error) {
  const kind = getSdkErrorClass(error);
  if (kind === "UNDEPLOYED_ACCOUNT") {
    await wallet.ensureReady({ deploy: "if_needed" });
  }
  throw error;
}
修改执行行为时:
  • 审核未部署账户的部署与执行路径。
  • 验证运行时约束(
    OnboardStrategy.Cartridge
    仅支持Web环境)。
  • 测试中覆盖
    user_pays
    sponsored
    两种分支。

3) ERC20 and Staking Scope

3) ERC20与质押范围

ERC20 notes (starkzap-sdk internal token operations, no avnu required):
  • Validate
    Amount
    with the token preset used for the call.
  • Keep multicall ordering explicit for batched transfers.
typescript
import { Amount } from "starkzap";

const usdcAmount = Amount.parse("25", USDC);

try {
  const tx = await wallet
    .tx()
    .transfer(USDC, [
      { to: recipientA, amount: usdcAmount },
      { to: recipientB, amount: Amount.parse("5", USDC) },
    ])
    .send({ feeMode: "user_pays" });
  await tx.wait();
} catch (error) {
  // Re-parse Amount from the expected token preset before retrying.
  throw error;
}
Staking notes (starkzap-specific staking flows):
  • Membership-sensitive operations:
    enter
    ,
    add
    ,
    exit intent
    ,
    exit
    .
  • Validate staking config and chain presets before execution.
  • Verify timeout/abort behavior where pool resolution is involved.
For general DeFi operations (swaps, DCA, lending) and STRK staking via the avnu aggregator, use the
starknet-defi
skill.
ERC20注意事项(starkzap-sdk内部代币操作,无需avnu):
  • 使用调用对应的代币预设验证
    Amount
  • 批量转账时明确多调用的顺序。
typescript
import { Amount } from "starkzap";

const usdcAmount = Amount.parse("25", USDC);

try {
  const tx = await wallet
    .tx()
    .transfer(USDC, [
      { to: recipientA, amount: usdcAmount },
      { to: recipientB, amount: Amount.parse("5", USDC) },
    ])
    .send({ feeMode: "user_pays" });
  await tx.wait();
} catch (error) {
  // 重试前从预期的代币预设重新解析Amount。
  throw error;
}
质押注意事项(Starkzap专属质押流程):
  • 成员敏感操作:
    enter
    add
    exit intent
    exit
  • 执行前验证质押配置和链预设。
  • 涉及质押池解析时,验证超时/终止行为。
对于通用DeFi操作(兑换、DCA、借贷)及通过avnu聚合器进行的STRK质押,请使用
starknet-defi
技能。

4) Examples + Integration Surfaces

4) 示例与集成面

Check for drift between:
  • examples/web/main.ts
  • examples/server/server.ts
  • README
    and docs links
Specifically verify endpoint and auth consistency for Privy + paymaster proxy flows.
检查以下文件间的差异:
  • examples/web/main.ts
  • examples/server/server.ts
  • README
    及文档链接
特别验证Privy + Paymaster代理流程的端点和认证一致性。

Guardrails

防护规则

Do not hand-edit generated files:
  • src/erc20/token/presets.ts
  • src/erc20/token/presets.sepolia.ts
  • src/staking/validator/presets.ts
  • src/staking/validator/presets.sepolia.ts
  • docs/api/**
  • docs/export/**
Regenerate with scripts:
bash
npm run generate:tokens
npm run generate:tokens:sepolia
npm run generate:validators
npm run generate:validators:sepolia
npm run docs:api
npm run docs:export
Keep API export changes explicit:
  • If new public API is added/removed, update
    src/index.ts
    .
请勿手动编辑生成的文件:
  • src/erc20/token/presets.ts
  • src/erc20/token/presets.sepolia.ts
  • src/staking/validator/presets.ts
  • src/staking/validator/presets.sepolia.ts
  • docs/api/**
  • docs/export/**
通过脚本重新生成:
bash
npm run generate:tokens
npm run generate:tokens:sepolia
npm run generate:validators
npm run generate:validators:sepolia
npm run docs:api
npm run docs:export
明确API导出变更:
  • 若添加/移除新的公共API,需更新
    src/index.ts

Validation Checklist

验证检查清单

Run minimal set first:
bash
npm run typecheck
npm test
Run broader checks when behavior is cross-cutting:
bash
npm run build
npm run test:all
Integration tests may require local devnet/fork setup:
bash
npm run test:integration
If not run, clearly report why.
先运行最小集检查:
bash
npm run typecheck
npm test
当行为涉及跨模块时,运行更全面的检查:
bash
npm run build
npm run test:all
集成测试可能需要本地devnet/分叉环境:
bash
npm run test:integration
若未运行,请明确说明原因。

Error Codes & Recovery

错误码与恢复方案

Map observed errors to actionable recovery:
Error ClassTypical TriggerRecovery Steps
VALIDATION_ERROR
Amount.parse(...)
/token mismatch, malformed address, invalid config
Confirm token decimals/symbol, re-create
Amount
from known token presets, validate config against
src/types/*
and
src/sdk.ts
.
RPC_OR_NETWORK
RPC timeout,
429
, transient JSON-RPC failures, chain mismatch
Retry with exponential backoff, check
rpcUrl
/
chainId
, verify provider health, reduce batch size for retries.
TX_REVERTED
wallet.preflight(...)
fails or receipt is reverted
Run
wallet.preflight({ calls, feeMode })
first, inspect revert reason, reorder calls in
wallet.tx()
, split large multicalls.
RATE_LIMIT_OR_TIMEOUT
tx.watch
timeout, stalled polling, pool resolution timeout
Increase timeout where appropriate, add abort handling, retry on fresh provider session, avoid parallel heavy queries.
AUTH_OR_PERMISSION
Privy signing errors, 401/403, invalid signature payloadsVerify signer server auth headers/body, validate trusted
serverUrl
, check
examples/server/server.ts
auth middleware alignment.
UNDEPLOYED_ACCOUNT
wallet.execute(..., { feeMode: "user_pays" })
on undeployed account
Run
wallet.ensureReady({ deploy: "if_needed" })
, then retry execution; use sponsored mode only when paymaster path is configured.
GENERATED_ASSET_DRIFT
Preset/docs changes diverge from source of truthRegenerate via
npm run generate:tokens
,
npm run generate:tokens:sepolia
,
npm run generate:validators
,
npm run generate:validators:sepolia
,
npm run docs:api
,
npm run docs:export
.
If a fix is uncertain:
  • Reproduce with the closest example in
    examples/*
    .
  • Capture command, environment, and failing test IDs.
  • Report exact file/path + remediation attempted.
将观测到的错误映射到可执行的恢复步骤:
错误类典型触发场景恢复步骤
VALIDATION_ERROR
Amount.parse(...)
/代币不匹配、地址格式错误、配置无效
确认代币小数位数/符号,从已知代币预设重新创建
Amount
,对照
src/types/*
src/sdk.ts
验证配置。
RPC_OR_NETWORK
RPC超时、429错误、临时JSON-RPC失败、链不匹配指数退避策略重试,检查
rpcUrl
/
chainId
,验证Provider健康状态,重试时减小批量操作大小。
TX_REVERTED
wallet.preflight(...)
失败或交易回执回滚
先执行
wallet.preflight({ calls, feeMode })
,检查回滚原因,在
wallet.tx()
中重新排序调用,拆分大型多调用。
RATE_LIMIT_OR_TIMEOUT
tx.watch
超时、轮询停滞、质押池解析超时
适当增加超时时间,添加终止处理逻辑,在新的Provider会话中重试,避免并行执行重型查询。
AUTH_OR_PERMISSION
Privy签名错误、401/403错误、无效签名负载验证签名器服务器认证头/请求体,验证可信
serverUrl
,对照
examples/server/server.ts
的认证中间件。
UNDEPLOYED_ACCOUNT
对未部署账户执行
wallet.execute(..., { feeMode: "user_pays" })
先调用
wallet.ensureReady({ deploy: "if_needed" })
,然后重试执行;仅当Paymaster路径配置完成时使用赞助模式。
GENERATED_ASSET_DRIFT
预设/文档变更与源数据不一致通过
npm run generate:tokens
npm run generate:tokens:sepolia
npm run generate:validators
npm run generate:validators:sepolia
npm run docs:api
npm run docs:export
重新生成。
若不确定修复方案:
  • 使用
    examples/*
    中最接近的示例复现问题。
  • 记录命令、环境及失败测试ID。
  • 报告确切文件/路径 + 已尝试的修复措施。

Useful Task Patterns

实用任务模式

  • Bug fix in wallet lifecycle:
    • inspect
      src/wallet/index.ts
      ,
      src/wallet/utils.ts
    • patch
    • update
      tests/wallet*.test.ts
  • Privy auth/signature issue:
    • inspect
      src/signer/privy.ts
    • align with
      examples/server/server.ts
    • update
      tests/privy-signer.test.ts
  • Staking regression:
    • inspect
      src/staking/staking.ts
      ,
      src/staking/presets.ts
    • add/adjust integration assertions in
      tests/integration/staking.test.ts
  • 钱包生命周期Bug修复:
    • 检查
      src/wallet/index.ts
      src/wallet/utils.ts
    • 修复代码
    • 更新
      tests/wallet*.test.ts
  • Privy认证/签名问题:
    • 检查
      src/signer/privy.ts
    • examples/server/server.ts
      对齐
    • 更新
      tests/privy-signer.test.ts
  • 质押功能回归:
    • 检查
      src/staking/staking.ts
      src/staking/presets.ts
    • tests/integration/staking.test.ts
      中添加/调整集成断言

Example Prompt

示例提示

"Use this skill to fix Starkzap sponsored execution for undeployed accounts, add tests, and list behavior changes."
"使用本技能修复Starkzap针对未部署账户的赞助执行问题,添加测试并列出行为变更。"