SuperAPI AI 工具集

controller-setup

前端与建站

查看项目

更新于 10-15 20:10

技能介绍

用途:将 Cartridge Controller 钱包集成到 Starknet 应用,尤其适合游戏类场景。它是以智能合约为核心的钱包,支持 session key、passkey 与 paymaster。

安装:基础用法执行 pnpm add @cartridge/controller starknet;如需框架连接器(React、原生应用),再执行 pnpm add @cartridge/controller @cartridge/connector starknet。

快速开始:从 @cartridge/controller 引入 Controller,创建实例后调用 connect() 获得 account,即可执行交易。

会话策略:基于 session 的交易执行必须提供 policies,否则 execute() 会以错误码 130 失败,因为会话校验需要每次调用的 merkle proof。未配置 policies 时,会回退到由托管 keychain 弹窗手动批准。在本地 Katana 上同样必须配置,否则新 Controller 账户无法正确部署。

选择连接器:Web 应用配 starknet-react 用 ControllerConnector,密钥通过浏览器 cookie 与 localStorage 管理;原生/移动应用用 SessionConnector,由应用生成本地密钥对,经浏览器重定向认证,流程为应用生成密钥对→用户在浏览器认证→重定向回应用→应用本地签名交易。

链配置:默认提供 RPC 端点,可通过 chains 数组与 defaultChainId 覆盖,例如主网、Sepolia 与本地 Katana 端点。

本地开发:本地 Katana 必须通过配置在创世时部署 Controller 合约,否则交易会报合约地址未部署。katana.toml 需设置 [dev] dev=true、no_fee=true,[cartridge] paymaster=true(会同时启用 paymaster 并在创世部署 Controller 合约),[server] http_cors_origins="*"。用 katana --config katana.toml 启动。

性能:设置 lazyload: true 可延迟 iframe 挂载到 connect() 调用时。

选项:ControllerOptions 支持 chains、defaultChainId、policies、propagateSessionErrors、errorDisplayMode(modal/notification/silent)、lazyload、preset、signupOptions。

兼容版本:@cartridge/connector 与 @cartridge/controller 为 0.11.3-alpha.1,@starknet-react/core 与 @starknet-react/chains 为 ^5.0.1,starknet 为 ^8.1.2。

限制与常见问题:需要 cookie 用于初始化;开发环境需要 HTTPS,可用 vite-plugin-mkcert;ControllerConnector 应在 React 组件外创建,避免重渲染时重建。