本文档是 GSN Provider 的 API 参考,GSN Provider 已被弃用,不再开发新功能或解决问题。文档详细介绍了 GSNProvider 的基本选项和高级选项,包括 useGSN、signKey、approveFunction、fixedGasPrice、fixedGasLimit 等,以及交易参数的设置。
GSN Provider 已弃用。 我们不再开发新功能或解决问题。 阅读此处了解更多信息。
GSNProvider 的多个设置可以在创建时设置:
const options = { useGSN: true, fixedGasLimit: 10000 }; // 其中
new GSNProvider("http://localhost:8545", options);
这些在下面有记录。
useGSNuseGSN (bool)
是否默认发送 meta txs,或者是一个接收 payload 并返回是否使用 meta tx 的函数(默认为 true)。
signKeysignKey (hex string)
可选的私钥,用于签署 meta txs,如果未设置,则使用底层 provider 的 sign。
approveFunctionapproveFunction (function)
用于生成交易的应用程序批准数据的可选函数,并返回一个 bytes 批准数据(例如签名),可以在接收者中检查;接收单个对象作为参数,该对象具有属性 from、to、encodedFunctionCall、txFee、gasPrice、gas、nonce、relayerAddress、relayHubAddress。
fixedGasPricefixedGasPrice (integer|string)
在所有 gsn 交易中使用的固定 gas price。
fixedGasLimitfixedGasLimit (integer|string)
在所有 gsn 交易中使用的固定 gas limit。
minStakeminStake (integer)
过滤掉 stake 低于此值的 relays(可选)
minDelayminDelay (integer)
过滤掉 unstake delay 低于此值的 relays(可选)
verboseverbose (bool)
这些与 relayer 选择算法有关:你很可能不需要使用它们。
preferredRelayerpreferredRelayer (object)
尝试使用此 relayer,如果失败,则回退到常规查找算法。 强制选项是 RelayServerAddress、relayUrl 和 transactionFee。
示例配置:
preferredRelayer = {
RelayServerAddress: '0x73a652f54d5fd8273f17a28e206d47f5bd1bc06a',
relayUrl: 'http://localhost:8090',
transactionFee: '70',
};
gasPriceFactorPercent`gasPriceFactorPercent (integer)
gsn 交易中网络 gas price 的百分比增加(默认为 20,请注意,你需要清除 web3 默认的固定 gasprice 才能使此设置生效)。
httpTimeouthttpTimeout (integer)
到 relays 的 HTTP 请求的超时时间(以毫秒为单位)(默认为 10000)。
allowedRelayNonceGapallowedRelayNonceGap (integer)
(默认为 3)
relayTimeoutGracerelayTimeoutGrace (integer)
每当 relayer 超时请求时,客户端会降低其评分,并且此惩罚每 relayTimeoutGrace 秒重置一次(默认为 1800,30 分钟)
calculateRelayScore`calculateRelayScore (function)
给定一个 relayer,必须返回一个数字评分(越高越好)来对其进行排名(默认为使用交易费用和因超时而造成的惩罚,最高为 1000)
relayFilterrelayFilter (function)
给定一个 relayer,必须返回一个布尔值,指示它是否符合条件(默认为使用 minDelay 和 minStake)
txfeetxfee (integer)
强制使用此交易费用,而不是 relayer 宣传的费用(可能导致超额支付或拒绝,默认为空)
addScoreRandomnessaddScoreRandomness (function)
用于在具有相同分数的 relays 之间注入随机性关联断路器(默认为统一的 0..1 随机数)
除了常规交易参数(from、gas 等)之外,GSN provider 还可以接受这些参数,这些参数将覆盖在 provider 创建期间设置的参数。
当使用 Truffle contracts 时,你还必须传递其中一个常规参数。 由于 GSN 交易根据定义不携带 Ether,因此 value 是一个不错的选择:<br>javascript hljs<br>await myTruffleContract.myFunction(paramA, { useGSN: false, value: 0 });<br> |
useGSNuseGSN (bool)
与 useGSN 构造选项相同。
txFeetxFee (integer)
与 txFee 构造选项相同。
approveFunctionapproveFunction (function)
与 approveFunction 构造选项相同。
- 原文链接: docs.openzeppelin.com/gs...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!