本文档是 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);
这些在下面有记录。
useGSN
useGSN (bool)
是否默认发送 meta txs,或者是一个接收 payload 并返回是否使用 meta tx 的函数(默认为 true)。
signKey
signKey (hex string)
可选的私钥,用于签署 meta txs,如果未设置,则使用底层 provider 的 sign
。
approveFunction
approveFunction (function)
用于生成交易的应用程序批准数据的可选函数,并返回一个 bytes
批准数据(例如签名),可以在接收者中检查;接收单个对象作为参数,该对象具有属性 from
、to
、encodedFunctionCall
、txFee
、gasPrice
、gas
、nonce
、relayerAddress
、relayHubAddress
。
fixedGasPrice
fixedGasPrice (integer|string)
在所有 gsn 交易中使用的固定 gas price。
fixedGasLimit
fixedGasLimit (integer|string)
在所有 gsn 交易中使用的固定 gas limit。
minStake
minStake (integer)
过滤掉 stake 低于此值的 relays(可选)
minDelay
minDelay (integer)
过滤掉 unstake delay 低于此值的 relays(可选)
verbose
verbose (bool)
这些与 relayer 选择算法有关:你很可能不需要使用它们。
preferredRelayer
preferredRelayer (object)
尝试使用此 relayer,如果失败,则回退到常规查找算法。 强制选项是 RelayServerAddress
、relayUrl
和 transactionFee
。
示例配置:
preferredRelayer = {
RelayServerAddress: '0x73a652f54d5fd8273f17a28e206d47f5bd1bc06a',
relayUrl: 'http://localhost:8090',
transactionFee: '70',
};
gasPriceFactorPercent
`gasPriceFactorPercent (integer)
gsn 交易中网络 gas price 的百分比增加(默认为 20,请注意,你需要清除 web3 默认的固定 gasprice 才能使此设置生效)。
httpTimeout
httpTimeout (integer)
到 relays 的 HTTP 请求的超时时间(以毫秒为单位)(默认为 10000)。
allowedRelayNonceGap
allowedRelayNonceGap (integer)
(默认为 3)
relayTimeoutGrace
relayTimeoutGrace (integer)
每当 relayer 超时请求时,客户端会降低其评分,并且此惩罚每 relayTimeoutGrace
秒重置一次(默认为 1800,30 分钟)
calculateRelayScore
`calculateRelayScore (function)
给定一个 relayer,必须返回一个数字评分(越高越好)来对其进行排名(默认为使用交易费用和因超时而造成的惩罚,最高为 1000)
relayFilter
relayFilter (function)
给定一个 relayer,必须返回一个布尔值,指示它是否符合条件(默认为使用 minDelay
和 minStake
)
txfee
txfee (integer)
强制使用此交易费用,而不是 relayer 宣传的费用(可能导致超额支付或拒绝,默认为空)
addScoreRandomness
addScoreRandomness (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> |
useGSN
useGSN (bool)
与 useGSN
构造选项相同。
txFee
txFee (integer)
与 txFee
构造选项相同。
approveFunction
approveFunction (function)
与 approveFunction
构造选项相同。
- 原文链接: docs.openzeppelin.com/gs...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!