跳到主要内容

PlaTrust钱包 js-sdk-API说明

一. 枚举 (enum)#

  1. Operation 交易的调用方式
CALL: 跨合约 call 调用DElEGATECALL: 跨合约 delegatecall 调用
  1. SignatureMode 签名组成模式
guardians: 多签必须是钱包的 guardian 成员owner: 多签必须是钱包的 owner 成员session: session 免多签session模式下的单签

二. 类 (class)#

  1. WalletLib: 钱包基础库
  2. Bundler:bundler rpc库
  3. Paymaster:paymaster 操作库
  4. UserOperation: 用户操作结构封装
  5. Callbase: 组装调用钱包函数的 UserOperation 基础类
  6. ERC20: 组装 ERC20 相关的函数调用的 UserOperation 入口 (依赖 Callbase 类)
  7. ERC721: 组装 ERC721 相关的函数调用的 UserOperation 入口 (依赖 Callbase 类)
  8. ERC1155: 组装 ERC1155 相关的函数调用的 UserOperation 入口 (依赖 Callbase 类)
  9. LAT: 组装对钱包lat做转账的 UserOperation 入口 (依赖 Callbase 类)

三. 接口 (interface)#

  1. ApproveToken: ERC20 approve 参数封装
  2. ExecutionResult: 交易正常执行的结果封装
  3. ValidationResult: EIP-4337 定义执行校验userOp结果
  4. FailedOp: 异常信息
  5. Result:ExecutionResult、ValidationResult、FailedOp的包装信息
  6. StakeInfo: 质押信息
  7. ReturnInfo:执行模拟交易时返回的 gas 和内容
  8. EstimateUserOpGas: 预估 userOp 的 gas 结果
  9. ParsedTransaction:交易回执封装
  10. UserOperationReceipt:userOp的执行回执信息
  11. Logs:交易回执的logs封装

四. 全局函数#

  1. encodeSignature: 编码 userOp 的 signature 信息
encodeSignature(signatureMode, signature, validAfter?, validUntil?, aggregator?): string

入参说明:

字段名类型说明是否必须
signatureModeBigNumber签名模式,0:owner; 1: guardians; 2: sessionY
signaturestring十六进制的签名信息Y
aggregatorstring聚合签名的聚合器地址N
validAfterBigNumber签名有效期起始时间N
validUntilBigNumber签名有效期结束时间N

返参说明:

字段名类型说明
packedSignaturestringuserOp的签名信息
  1. decodeSignature: 解码 userOp 的 signature 信息
decodeSignature(packedSignature): Object

入参说明:

字段名类型说明是否必须
packedSignaturestringuserOp的签名信息Y

返参说明:

字段名类型说明
signatureModeBigNumber签名模式,0:owner; 1: guardians; 2: session
signaturestring十六进制的签名信息
aggregatorstring聚合签名的聚合器地址
validAfterBigNumber签名有效期起始时间
validUntilBigNumber签名有效期结束时间
  1. packSignatureHash: 求数据Hash的签名信息
packSignatureHash(hash, signatureMode?, validAfter?, validUntil?, aggregator?): string

入参说明:

字段名类型说明是否必须
hashstring需要做签名的数据Hash信息Y
signatureModeBigNumber签名模式,0:owner; 1: guardians; 2: sessionN
aggregatorstring聚合签名的聚合器地址N
validAfterBigNumber签名有效期起始时间N
validUntilBigNumber签名有效期结束时间N

返参说明:

字段名类型说明
_hashstringkeccak256(abi.encodePacked(hash,signatureMode,aggregator&validAfter&validUntil))的值
  1. recoverAddress: 解析出签名者账户地址
recoverAddress(msg, signature): string

入参说明:

字段名类型说明是否必须
msgstring签名时用到的数据Y
signaturestring签名信息Y

返参说明:

字段名类型说明
-string签名者账户地址
  1. signMessage: 使用私钥对消息进行签名
signMessage(msg, privateKey): string

入参说明:

字段名类型说明是否必须
msgstring需要做签名的消息Y
privateKeystring私钥Y

返参说明:

字段名类型说明
-string签名

五. WalletLib 对外函数#

  1. 构造函数
new WalletLib(singletonFactory?)

入参说明:

字段名类型说明是否必须
singletonFactorystring钱包工厂合约地址N

返参说明:

WalletLib

  1. singletonFactory 获取钱包的工厂合约地址
singletonFactory():string 

入参说明:

返参说明:

字段名类型说明
-string钱包的工厂合约地址
  1. getInitCode 获取钱包的initCode
getInitCode(walletFactory, walletLogic, initializer, salt): string

入参说明:

字段名类型说明是否必须
walletFactorystring钱包的工厂合约地址Y
walletLogicstring钱包的逻辑合约地址Y
initializerstring钱包初始化编码 (setUp函数的编码)Y
saltstring盐 (控制 create2 生成钱包反事实地址)Y

返参说明:

字段名类型说明
-string钱包的initCode
  1. getNonce 获取钱包的nonce值
getNonce(walletAddress, etherProvider, defaultBlock?): Promise<number>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包的工厂合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
defaultBlockstringearliest、latest、pending,默认:latestN

返参说明:

字段名类型说明
-number钱包的nonce
  1. getPaymasterData 获取组装userOp时的paymaster调用信息
getPaymasterData(payMasterAddress, token, maxCost): string

入参说明:

字段名类型说明是否必须
payMasterAddressstringpaymaster地址Y
tokenstringpaymaster接受的token地址Y
maxCostBigNumber最大花费Y

返参说明:

字段名类型说明
-numberpaymaster调用信息
  1. getSetupCode 获取钱包实例的setUp调用编码
getSetupCode(entryPoint, owners, threshold, to, data, fallbackHandler, lockPeriod): string

入参说明:

字段名类型说明是否必须
entryPointstringentryPoint合约地址Y
ownersstring[]钱包的多个持有者,至少传入一个Y
thresholdBigNumber钱包持有者的多签阈值Y
tostring钱包的 module 的调用 to 参数Y
datastring钱包的 module 的调用 calldata 信息 (十六进制)Y
fallbackHandlerstring钱包的 fallback 处理合约地址Y
lockPeriodBigNumber钱包的锁定时长,【建议设为 1周】 (单位: ms)Y

返参说明:

字段名类型说明
-stringsetUp调用编码
  1. getWalletCode 获取钱包实部署编码
getWalletCode(walletLogicAddress, walletProxyConfig?): string

入参说明:

字段名类型说明是否必须
walletLogicAddressstring钱包逻辑合约地址Y
walletProxyConfigstructproxy的配置(包含proxy的ABI和proxy的bytecode)N

返参说明:

字段名类型说明
-string实际要用来做部署的walletproxy的编码(包含了walletProxyConfig中的bytecode)
  1. lockWalletOp 组装锁定钱包的userOp
lockWalletOp(walletAddress, etherProvider, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
paymasterAndDatastringpaymaster的调用信息Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. unlockWalletOp 组装解锁钱包的userOp
unlockWalletOp(walletAddress, etherProvider, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
paymasterAndDatastringpaymaster的调用信息Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. activateWalletOp 组装部署钱包的userOp
activateWalletOp(walletLogic, initializer, paymasterAndData, salt, walletFactory, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): UserOperation

入参说明:

字段名类型说明是否必须
walletLogicstring钱包逻辑合约地址Y
initializerstring初始化钱包函数调用编码Y
paymasterAndDatastringpaymaster的调用信息Y
saltstring创建钱包时使用的盐 (控制 create2 生成钱包反事实地址)Y
walletFactorystring钱包工厂合约地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. calculateWalletAddress 计算钱包地址 (create2 反事实地址)
calculateWalletAddress(walletLogic, initializer, salt, walletFactory): string

入参说明:

字段名类型说明是否必须
walletLogicstring钱包逻辑合约地址Y
initializerstring初始化钱包函数调用编码Y
saltstring创建钱包时使用的盐 (控制 create2 生成钱包反事实地址)Y
walletFactorystring钱包工厂合约地址Y

返参说明:

字段名类型说明
-string钱包地址
  1. addOwnerWithThresholdOp 添加钱包owner及更新多签阈值
addOwnerWithThresholdOp(walletAddress, etherProvider, owner, threshold, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
ownerstring设置钱包的 ownerY
thresholdnumber钱包多签阈值Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. changeThresholdOp 更新多签阈值
changeThresholdOp(walletAddress, etherProvider, threshold, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
thresholdnumber钱包多签阈值Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. changeThresholdOp 更新多签阈值
changeThresholdOp(walletAddress, etherProvider, threshold, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
thresholdnumber钱包多签阈值Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. getThreshold 获取钱包的多签阈值
getThreshold(walletAddress, etherProvider): Promise<number>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-number多签阈值
  1. swapOwnerOp 替换某个钱包的持有者
swapOwnerOp(walletAddress, etherProvider, prevOwner, oldOwner, newOwner, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
prevOwnerstring被替换的owner的前置ownerY
oldOwnerstring被替换的ownerY
newOwnerstring新的ownerY
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. removeOwnerOp 移除某个钱包的持有者
removeOwnerOp(walletAddress, etherProvider, prevOwner, owner, threshold, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
prevOwnerstring被移除的owner的前置ownerY
ownerstring被移除的ownerY
thresholdnumber新的多签阈值 (不需要更新,则传入旧值)Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. getOwners 获取钱包的持有者列表
getOwners(walletAddress, etherProvider): Promise<Array<string>>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-Array(string)钱包的持有者列表
  1. isOwner 校验某账户是否为钱包的持有者
isOwner(owner, walletAddress, etherProvider): Promise<boolean>

入参说明:

字段名类型说明是否必须
ownerstring被校验的账户地址Y
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-boolean是否为钱包的持有者, true: 是; false: 不是
  1. startSessionOp 开启免多签session
startSessionOp(walletAddress, etherProvider, sessionUser, duration, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
sessionUserstring钱包session所属者Y
durationnumber钱包session有效时长 (单位: ms)Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. clearSessionOp 关闭免多签session
clearSessionOp(walletAddress, etherProvider, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. enableModuleOp 启用module
enableModuleOp(walletAddress, etherProvider, module, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
modulestringmodule地址Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. disableModuleOp 弃用module
disableModuleOp(walletAddress, etherProvider, prevModule, module, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
prevModulestring被弃用module的前置module地址Y
modulestring被弃用的module地址Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. isEnabledModule 校验某地址是否为有效module
isEnabledModule(module, walletAddress, etherProvider): Promise<boolean>

入参说明:

字段名类型说明是否必须
modulestringmodule地址Y
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-boolean是否为有效module, true: 是; false: 无效
  1. isEnabledModules 校验一组地址是否为有效module
isEnabledModules(modules, walletAddress, etherProvider): Promise<boolean>

入参说明:

字段名类型说明是否必须
modulesstring[]一组module地址Y
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-boolean是否为有效module, true: 是; false: 无效
  1. getModulesPaginated 分页返回module数组
getModulesPaginated(start, pageSize, walletAddress, etherProvider): Promise<any[]>

入参说明:

字段名类型说明是否必须
startstring分页起始的module地址Y
pageSizenumber页宽度Y
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-any[]返回的module列表和下一页开始的module地址 (理论上,第一个元素为module列表,第二个元素为下一页开始的module地址)
  1. lockWalletOp 锁定钱包
lockWalletOp(walletAddress, etherProvider, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. unlockWalletOp 解锁钱包
unlockWalletOp(walletAddress, etherProvider, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. isLocked 校验钱包是否被锁定
isLocked(walletAddress, etherProvider): Promise<boolean>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-boolean钱包是否被锁定, true: 是; false: 没被锁
  1. getLock 获取钱包的锁定时长
getLock(walletAddress, etherProvider): Promise<number>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-number钱包被锁定的过期时长 (单位: ms)
  1. setFallbackHandlerOp 设置钱包的拓展功能处理器
setFallbackHandlerOp(walletAddress, etherProvider, handler, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
handlerstring钱包拓展功能合约地址Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. getEntryPoint 获取钱包的 EntryPoint 地址
getEntryPoint(walletAddress, etherProvider): Promise<string>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

字段名类型说明
-string钱包的 EntryPoint 地址
  1. withdrawDepositOp 提取钱包自身质押到 EtryPoint 中的垫付金额
withdrawDepositOp(walletAddress, etherProvider, withdrawAddress, amount, paymasterAndData, maxFeePerGas, maxPriorityFeePerGas, callGasLimit, verificationGasLimit, preVerificationGas): Promise<UserOperation>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
withdrawAddressstringY
amountnumber钱包拓展功能合约地址Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N

返参说明:

字段名类型说明
-UserOperation组装好的userOp
  1. addDeposit 钱包本身质押垫付款到 EntryPoint
addDeposit(walletAddress, signer, value): Promise<any>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
signerethers.Walletethers.js 的 Wallet 如:ethers.WalletY
valuestring质押的垫付金额Y

返参说明:

  1. getDeposit 查询钱包本身质押垫付款余额
getDeposit(walletAddress, etherProvider): Promise<number>

入参说明:

字段名类型说明是否必须
walletAddressstring钱包代理合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY

返参说明:

|-|number|钱包本身质押垫付款余额|

六. Bundler 对外函数#

  1. 构造函数
new Bundler(entryPoint, etherProvider, bundlerApiURL, timeout?)

入参说明:

字段名类型说明是否必须
entryPointstringentryPoint合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
bundlerApiURLstringbundler的urlY
timeoutApiTimeOut超时时间选项,web3ApiRequestTimeout: web3 api请求超时时间;web3ApiResponseTimeout: web3 api响应超时时间;bundlerApiRequestTimeout: bundler api请求超时时间;bundlerApiResponseTimeout:bundler api响应超时时间N

返参说明:

Bundler

  1. platon_chainId (EIP-4337规范)返回 EIP-155 链 ID
platon_chainId(timeout?): Promise<string>

入参说明:

字段名类型说明是否必须
timeoutnumber超时时间N

返参说明:

字段名类型说明
-stringchain id
  1. platon_estimateUserOperationGas (EIP-4337规范)估计 UserOperation 的气体值
platon_estimateUserOperationGas(userOp, timeout?): Promise<EstimateUserOpGas>

入参说明:

字段名类型说明是否必须
userOpUserOperation用户操作Y
timeoutnumber超时时间N

返参说明:

字段名类型说明
-EstimateUserOpGas预估gas结果
  1. platon_getUserOperationByHash (EIP-4337规范)根据 eth_sendUserOperation 返回的哈希值(userOpHash)返回一个UserOperation
platon_getUserOperationByHash(userOpHash, timeout?): Promise<null | UserOperationReceipt>

入参说明:

字段名类型说明是否必须
userOpHashstringuserOp的HashY
timeoutnumber超时时间N

返参说明:

字段名类型说明
-UserOperationReceiptEIP-4337 规范定义返回信息
  1. platon_getUserOperationReceipt (EIP-4337规范)根据 eth_sendUserOperation 返回的哈希值(userOpHash)返回一个 UserOperation 收据
platon_getUserOperationReceipt(userOpHash, timeout?): Promise<null | UserOperationReceipt>

入参说明:

字段名类型说明是否必须
userOpHashstringuserOp的HashY
timeoutnumber超时时间N

返参说明:

字段名类型说明
-UserOperationReceiptEIP-4337 规范定义返回信息
  1. platon_sendUserOperation (EIP-4337规范)向bundler的User Operation 池提交一个User Operation 对象
platon_sendUserOperation(userOp, timeout?): Promise<string>

入参说明:

字段名类型说明是否必须
userOpUserOperationuserOp信息Y
timeoutnumber超时时间N

返参说明:

字段名类型说明
-stringEIP-4337 规范userOpHash
  1. platon_supportedEntryPoints (EIP-4337规范)返回bundler支持的entryPoint合约地址数组
platon_supportedEntryPoints(timeout?): Promise<string[]>

入参说明:

字段名类型说明是否必须
timeoutnumber超时时间N

返参说明:

字段名类型说明
-string[]entryPoint合约地址数组
  1. sendUserOperation 向bundler的User Operation 池提交一个User Operation 对象 (并追加监听)
sendUserOperation(userOp, timeout?, receiptTimeout?, receiptInterval?): EventEmitter

入参说明:

字段名类型说明是否必须
userOpUserOperationuserOp信息Y
timeoutnumber请求bundler超时时间N
receiptTimeoutnumber监听超时时间N
receiptIntervalnumber监听时间间隔N

返参说明:

字段名类型说明
-EventEmitterjs监听器
  1. simulateHandleOp 调用 userOp 的模拟执行
simulateHandleOp(op, target?, targetCallData?): Promise<Result>

入参说明:

字段名类型说明是否必须
opUserOperationuserOp信息Y
targetstringtarget如果非零,则为在userOp模拟后要调用的目标地址。如果调用,则targetSuccess和TargetResult设置为调用的返回值N
targetCallDatastring要传递到目标地址的callDataN

返参说明:

字段名类型说明
-Result执行结果
  1. simulateValidation 调用 userOp 的模拟校验
simulateValidation(op): Promise<Result>

入参说明:

字段名类型说明是否必须
opUserOperationuserOp信息Y

返参说明:

字段名类型说明
-Result执行结果

七. Paymaster 对外函数#

  1. 构造函数
new Paymaster(payMasterAddress, wallet)

入参说明:

字段名类型说明是否必须
payMasterAddressstringpaymaster地址Y
walletethers.Walletethers.js 的 wallet 实例(其实就是 paymaster 的owner)Y

返参说明:

Paymaster

  1. addSupportedToken 增加支持补偿token类别
addSupportedToken(token, priceOracle): Promise<any>

入参说明:

字段名类型说明是否必须
tokenstringtoken地址Y
priceOraclestringtoken的价格预言机地址Y

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. removeSupportedToken 移除支持补偿token类别
removeSupportedToken(token): Promise<any>

入参说明:

字段名类型说明是否必须
tokenstringtoken地址Y

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. paymasterSupportedToken 检出支持补偿token类别
paymasterSupportedToken(tokens): Promise<string[]>

入参说明:

字段名类型说明是否必须
tokensstring[]token地址Y

返参说明:

字段名类型说明
-string[]token地址
  1. entryPoint 获取paymaster所属的 entrypoint 合约地址
entryPoint(): Promise<any>

入参说明:

返参说明:

字段名类型说明
-addressentrypoint 合约地址
  1. addStake 增加质押
addStake(extraUnstakeDelaySec, value): Promise<any>

入参说明:

字段名类型说明是否必须
extraUnstakeDelaySecnumber取消质押延迟秒数Y
valuestring十六进制质押金额,单位为:latY

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. deposit 增加垫付金额
deposit(value): Promise<any>

入参说明:

字段名类型说明是否必须
valuestring十六进制质押金额,单位为:latY

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. unlockStake 解除质押
unlockStake(): Promise<any>

入参说明:

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. withdrawStake 提取质押金额
withdrawStake(withdrawAddress): Promise<any>

入参说明:

字段名类型说明是否必须
withdrawAddressstring用于接收撤销的质押金的账户地址Y

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. withdrawTo 提取垫付金额
withdrawTo(withdrawAddress, amount): Promise<any>

入参说明:

字段名类型说明是否必须
withdrawAddressstring用于接收提取的垫付金的账户地址Y
amountstring被提取的垫付金,单位:latY

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. withdrawToken 提取被补偿的token
withdrawToken(token, to, amount): Promise<any>

入参说明:

字段名类型说明是否必须
tokenstring被提取的补偿金的token地址Y
tostring用于接收提取的补偿金的账户地址Y
amountstring被提取的补偿金Y

返参说明:

字段名类型说明
-transaction receipt交易收据
  1. getDeposit 获取剩余垫付金余额
getDeposit(): Promise<any>

入参说明:

返参说明:

字段名类型说明
-number垫付金余额
  1. getExchangePrice 获取 token 价格信息
getExchangePrice(token, fetchTokenDecimals?): Promise<{ decimals: number ; price: BigNumber ; tokenDecimals: undefined | number  }>

入参说明:

字段名类型说明是否必须
tokenstringtoken地址Y
fetchTokenDecimalsboolean是否获取token最小精度N

返参说明:

字段名类型说明
priceBigNumbertoken价格
decimalsnumbertoken价格小数位
tokenDecimalsnumbertoken的最小精度

八. UserOperation 对外函数#

  1. 构造函数
new UserOperation(sender?, nonce?, initCode?, callData?, callGasLimit?, maxFeePerGas?, maxPriorityFeePerGas?, paymasterAndData?, verificationGasLimit?, preVerificationGas?, signature?)

入参说明:

字段名类型说明是否必须
senderstring进行操作的钱包 (就是钱包合约的地址,但是在第一次部署时是发起者的EOA地址)N
noncenumber钱包中设置的抗重放参数,也用作首次创建钱包的盐N
initCodestring本设计的创建钱包均由定义好的 wallet 模板合约部署 (EIP-1167),故该字段为空值N
callDatastringsender 在主执行调用期间传递给的数据 (具体执行内容 钱包通过用户的请求转成的opcode)N
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)N
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)N
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)N
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行N
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)N
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)N
signaturestring多个Owner的签名,多个Onwer对 userOperation 的签名N

返参说明:

UserOperation

  1. addSupportedToken 序列化 UserOperation
Serialized(): void

入参说明:

返参说明:

  1. callDataCost 计算调用成本
callDataCost(): number

入参说明:

返参说明:

字段名类型说明
-BigNumber调用成本
  1. getStruct 获取序列化后 UserOperation
getStruct(): SerializedUserOperation

入参说明:

返参说明:

字段名类型说明
senderstring进行操作的钱包 (就是钱包合约的地址,但是在第一次部署时是发起者的EOA地址)
noncenumber钱包中设置的抗重放参数,也用作首次创建钱包的盐
initCodestring本设计的创建钱包均由定义好的 wallet 模板合约部署 (EIP-1167),故该字段为空值
callDatastringsender 在主执行调用期间传递给的数据 (具体执行内容 钱包通过用户的请求转成的opcode)
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)
signaturestring多个Owner的签名,多个Onwer对 userOperation 的签名
  1. getUserOpHash 获取 UserOperation Hash
getUserOpHash(entryPointAddress, chainId): string

入参说明:

字段名类型说明是否必须
entryPointAddressstringentrypoint合约地址Y
chainIdnumberchainIdY

返参说明:

字段名类型说明
-stringUSerOperation的Hash值
  1. getUserOpHashFromContract 获取 UserOperation Hash
getUserOpHashFromContract(entryPointAddress, etherProvider, defaultBlock?): Promise<string>

入参说明:

字段名类型说明是否必须
entryPointAddressstringentrypoint合约地址Y
etherProviderethers.providers.BaseProviderethers.js 的 provider 如:ethers.providerY
defaultBlockstringearliest、latest、pending,默认:latestN

返参说明:

字段名类型说明
-stringUSerOperation的Hash值
  1. packUserOp 组装 UserOperation 的 EIP-712 信息
packUserOp(forSignature?): string

入参说明:

字段名类型说明是否必须
forSignatureboolean是否为了求 signature 值时的EIP-712信息,true: 不包含 signature 值; false: 包含 signature 值N

返参说明:

字段名类型说明
-stringUSerOperation的EIP-712信息
  1. signWithSignature 根据签名及签名模式等填充 UserOperation的 signature 字段的值
signWithSignature(signature, signatureMode?, validAfter?, validUntil?): void

入参说明:

字段名类型说明是否必须
signaturestring签名消息Y
signatureModeSignatureMode签名模式,0:owner; 1: guardians; 2: sessionN
validAfternumber签名有效期起始时间N
validUntilnumber签名有效期结束时间N

返参说明:

  1. toJSON 将 UserOperation 转换成Json格式信息
toJSON(): string

入参说明:

返参说明:

字段名类型说明
-stringjson格式的UserOperation信息
  1. toTuple 将 UserOperation 转换成 tuple 格式信息
toTuple(): string

入参说明:

返参说明:

字段名类型说明
-stringtuple格式的UserOperation信息
  1. fromJSON 将 json格式信息转换成 UserOperation
fromJSON(json): UserOperation

入参说明:

字段名类型说明是否必须
jsonstringjson格式的UserOperation信息Y

返参说明:

字段名类型说明
-UserOperationUserOperation信息
  1. fromObject 将 object 格式信息转换成 UserOperation
fromObject(obj): UserOperation

入参说明:

字段名类型说明是否必须
objobjectobject格式的UserOperation信息Y

返参说明:

字段名类型说明
-UserOperationUserOperation信息

九. Callbase 对外函数#

  1. createOp 创建对钱包(executeFromModule)调用的 UserOperation
createOp(        walletAddress: string,        nonce: NumberLike,        paymasterAndData: string,        maxFeePerGas: NumberLike,        maxPriorityFeePerGas: NumberLike,        callGasLimit: NumberLike,        verificationGasLimit: NumberLike,        preVerificationGas: NumberLike,        data: string,    ) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring进行操作的钱包 (就是钱包合约的地址,但是在第一次部署时是发起者的EOA地址)Y
noncenumber钱包中设置的抗重放参数,也用作首次创建钱包的盐Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
datastring调用钱包合约 executeFromModule 的入参 (即:钱包其他函数的调用编码)Y

返参说明:

UserOperation

  1. createOpByBatch 创建对钱包(executeBatchFromModule)调用的 UserOperation
createOpByBatch(        walletAddress: string,        nonce: NumberLike,        paymasterAndData: string,        maxFeePerGas: NumberLike,        maxPriorityFeePerGas: NumberLike,        callGasLimit: NumberLike,        verificationGasLimit: NumberLike,        preVerificationGas: NumberLike,        datas: string[],    ) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring进行操作的钱包 (就是钱包合约的地址,但是在第一次部署时是发起者的EOA地址)Y
noncenumber钱包中设置的抗重放参数,也用作首次创建钱包的盐Y
paymasterAndDatastringpaymaster的合约地址及发送给paymaster的数据,现在paymaster的实现还不明确,如果使用我们自己的paymaster则不需要此值,固定为 0x0就行Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
datasstring[]调用钱包合约 executeBatchFromModule 的入参 (即:钱包其他函数的调用编码)Y

返参说明:

UserOperation

十. ERC20 对外函数#

  1. 构造函数
new ERC20();

入参说明:

返参说明:

ERC20

  1. approve 创建对 ERC20 的 approve 函数调用编码的 UserOperation
approve(walletAddress: string, nonce: NumberLike, paymasterAddress: string,            maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,            verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _spender: string, _value: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_spenderstringapprove 的_spender参数Y
_valuestringapprove 的_value参数Y

返参说明:

UserOperation

  1. transferFrom 创建对 ERC20 的 transferFrom 函数调用编码的 UserOperation
transferFrom(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                 maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                 verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _from: string, _to: string, _value: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_fromstringtransferFrom 的_from参数Y
_tostringtransferFrom 的_to参数Y
_valuestringtransferFrom 的_value参数Y

返参说明:

UserOperation

  1. transfer 创建对 ERC20 的 transfer 函数调用编码的 UserOperation
transfer(walletAddress: string, nonce: NumberLike, paymasterAddress: string,             maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,             verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _to: string, _value: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_tostringtransfer 的_to参数Y
_valuestringtransfer 的_value参数Y

返参说明:

UserOperation

十一. ERC721 对外函数#

  1. 构造函数
new ERC721();

入参说明:

返参说明:

ERC721

  1. approve 创建对 ERC721 的 approve 函数调用编码的 UserOperation
approve(walletAddress: string, nonce: NumberLike, paymasterAddress: string,            maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,            verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _spender: string, _tokenId: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_spenderstringapprove 的_spender参数Y
_tokenIdstringapprove 的_tokenId参数Y

返参说明:

UserOperation

  1. transferFrom 创建对 ERC721 的 transferFrom 函数调用编码的 UserOperation
transferFrom(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                 maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                 verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _from: string, _to: string, _tokenId: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_fromstringtransferFrom 的_from参数Y
_tostringtransferFrom 的_to参数Y
_tokenIdstringtransferFrom 的_tokenId参数Y

返参说明:

UserOperation

  1. transfer 创建对 ERC721 的 transfer 函数调用编码的 UserOperation
transfer(walletAddress: string, nonce: NumberLike, paymasterAddress: string,             maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,             verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _to: string, _tokenId: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_tostringtransfer 的_to参数Y
_tokenIdstringtransfer 的_tokenId参数Y

返参说明:

UserOperation

  1. safeTransferFrom 创建对 ERC721 的 safeTransferFrom 函数调用编码的 UserOperation
safeTransferFrom(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                     maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                     verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _from: string, _to: string, _tokenId: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_fromstringsafeTransferFrom 的_from参数Y
_tostringsafeTransferFrom 的_to参数Y
_tokenIdstringsafeTransferFrom 的_tokenId参数Y

返参说明:

UserOperation

  1. setApprovalForAll 创建对 ERC721 的 setApprovalForAll 函数调用编码的 UserOperation
setApprovalForAll(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                      maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                      verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _operator: string, _approved: boolean) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_operatorstringsetApprovalForAll 的_operator参数Y
_approvedbooleansetApprovalForAll 的_approved参数Y

返参说明:

UserOperation

十二. ERC1155 对外函数#

  1. 构造函数
new ERC1155();

入参说明:

返参说明:

ERC1155

  1. safeTransferFrom 创建对 ERC1155 的 safeTransferFrom 函数调用编码的 UserOperation
safeTransferFrom(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                     maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                     verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _from: string, _to: string, _id: string, _value: string, _data: string)  : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_fromstringsafeTransferFrom 的_from参数Y
_tostringsafeTransferFrom 的_to参数Y
_idstringsafeTransferFrom 的_id参数Y
_valuestringsafeTransferFrom 的_value参数Y
_datastringsafeTransferFrom 的_data参数Y

返参说明:

UserOperation

  1. safeBatchTransferFrom 创建对 ERC1155 的 safeBatchTransferFrom 函数调用编码的 UserOperation
safeBatchTransferFrom(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                          maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                          verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _from: string, _to: string, _ids: string, _values: string, _data: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_fromstringsafeBatchTransferFrom 的_from参数Y
_tostringsafeBatchTransferFrom 的_to参数Y
_idsstringsafeBatchTransferFrom 的_ids参数Y
_valuesstringsafeBatchTransferFrom 的_value参数Y
_datastringsafeBatchTransferFrom 的_data参数Y

返参说明:

UserOperation

  1. setApprovalForAll 创建对 ERC1155 的 setApprovalForAll 函数调用编码的 UserOperation
setApprovalForAll(walletAddress: string, nonce: NumberLike, paymasterAddress: string,                      maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, callGasLimit: NumberLike,                      verificationGasLimit: NumberLike, preVerificationGas: NumberLike, _token: string, _operator: string, _approved: boolean) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
callGasLimitnumber分配主执行调用的gas (本机模拟计算出,执行callData的gas)Y
verificationGasLimitnumber为验证步骤分配的gas (函数validateUserOp()/validatePaymasterUserOp()使用的gas)Y
preVerificationGasnumber为补偿预验证执行和调用数据的 bundler 而支付的gas (额外准备的小部分gas 应对一些常规例如循环等逻辑gas的消耗)Y
_tokenstring操作的ERC20 token地址Y
_operatorstringsetApprovalForAll 的_operator参数Y
_approvedstringsetApprovalForAll 的_approved参数Y

返参说明:

UserOperation

十三. LAT 对外函数#

  1. 构造函数
new LAT();

入参说明:

返参说明:

LAT

  1. transfer 创建对 LAT 的转账调用编码的 UserOperation
transfer(walletAddress: string,        nonce: NumberLike, paymasterAddress: string,        maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, to: string, value: string) : UserOperation

入参说明:

字段名类型说明是否必须
walletAddressstring钱包地址Y
noncenumber钱包 nonceY
paymasterAddressstringpaymaster地址Y
maxFeePerGasnumber每种gas的最高费用,也就是 gas价格(类似于EIP-1559 max_fee_per_gas)Y
maxPriorityFeePerGasnumber每种gas的最高优先权费用,也就是 EIP1559中分配给矿工的费用 (类似于 EIP-1559 max_priority_fee_per_gas)Y
tostringlat接收人账户地址Y
valuestring转账的lat数额Y

返参说明:

UserOperation