near protocol - 为合约用户支付交易费用的最佳方式

nearprotocol - best way to pay transaction fees for contract users

我想为一些合同用户支付所有费用(可能永远)。我们的想法是将更多用户纳入 NEAR 生态系统,并为他们提供免费使用我的合约的能力,以便更轻松地入职。

与文档中描述的场景类似的场景:

https://docs.near.org/docs/concepts/gas#what-about-prepaid-gas

我已经阅读并重新阅读了本节几次,但仍然不明白如何实现这一点。

让我们来看看这个伪合约:

impl Pseudo {
  pub fn do_something(&mut self) {
    ... does something valuable ...
  }
}

如果用户使用 near-api-js 从他们自己的帐户调用我的 near-sdk-rs 合约,如何为用户支付 gas 费用?请提供一些示例。目标是让用户拨打电话 pseudo.do_something() 完全免费。

你可以做的是在本地生成一组密钥对,然后使用 this 之类的方法将它们全部作为函数调用访问密钥添加到你的合约中。这将允许拥有密钥对的人签署交易(作为您的合约),并且您可以指定他们可以调用合约本身的哪些方法。

这样做将需要您签署一个 txn 以便将访问密钥添加到您的合同中,但您可以不经常这样做并一次添加数百个(或更多)密钥。然后用户可以导航到您的 dApp,并在后台使用这些访问密钥在您的合约上签署交易(也作为您的合约)。