代付机制
Conflux Core 空间实现了代付机制,来补贴智能合约的使用。 这允许余额为零的新账户调用智能合约,前提是执行操作得到代付(通常由Dapp运营者提供)。 这个机制旨在降低新用户的入门门槛。 为区块链的大规模应用铺平道路。
简介
在区块链世界中,发送交易时支付交易费是非常常见的。 以太坊有燃气费,而Conflux Core Space不仅有燃气费,还有存储抵押费。 通常,这些费用由交易的发送方支付。 然而,很多刚进入区块链世界的 新用户可能不理解这些概念,没有代币来支付这些费用,从而构成进入区块链世界的障碍。 为了解决这种障碍,Conflux Core Space引入了代付机制。
赞助机制允许合约得到赞助。 一旦进行赞助,调用合约时产生的交易费用将由赞助方支付,这意味着用户无需担心或支付这些费用。 赞助方可以是合约的所有者或其他任何人。 想象一下,一个部署在 Core Space 上的 USDT
代币,任何人都可以在无需支付任何费用情况下进行转账 —— 这对于新用户来说非常友好。
交易的 gas 费和存储抵押都可以被赞助,并且它们可以由两个不同的赞助方赞助。 例如,合约的燃气费可以由赞助方A赞助,而存储抵押由赞助方B赞助。
请注意,只有合约可以被赞助;赞助机制不适用于普通账户。 这意味着对于标准的CFX转账交易,燃气费需要由发送方支付。
如何赞助智能合约
要赞助合约,赞助方需要调用 SponsorWhitelistControll 内置合约。 它还会记录智能合约的赞助信息。
燃气费赞助
要赞助合约的燃气费用,您可以调用 SponsorWhitelistControl
的 setSponsorForGas
方法。 此方法有两个参数:
contractAddr
:要赞助的合约地址。upperBound
: 每笔交易中的 gas 赞助上限值, 以 Drip 为单位, 1 CFX = 10^18 Drip。 如果与同一智能合约交互的交易产生的 gas 费用 (按 gasPrice * gasLimit 计算)超过了这一限额,则不能获得赞助。
目前, Conflux Core 网络中的最小的 gas 费用是 1 Gdrip,也就是10^9 Drip。 通常情况下,一笔交易的 gas 开销从数万到数十万不等。 因此,upperBound
通常被设定为 500万 GDrip 左右。 特殊情况下,这个数值可以根据具体需求加以调整。
此外,需要通过交易的 value
字段设置将要被代付的燃气费的总金额。 这意味着在调用此方法时,必须同时进行 CFX 转账。 此外,每笔赞助金额应足以支付至少 1000笔交易
(1000 * upperBound)的gas费用。 比如,如果 upperBound 被设置为 100 万 GDrip,一笔交易的代付金额就需要被设置为至少 1000 * 1 百万 GDrip。
例如,要以 100 万 GDrip 的代付上限和 100 CFX 的总代付金额赞助合约 A ,您需要发起一个调用 setSponsorForGas(A, 10^15)
的交易,并将交易的 value 字段设置为 100 CFX。
这个内置合约还提供了几种方法来查询合约的赞助信息:
getSponsoredGasFeeUpperBound
:查询合约 gas 费的代付上限。getSponsoredBalanceForGas
:查询合约被赞助的 gas 费剩余余额。getSponsorForGas
:查询合约 gas 费的赞助者。
如果在调用 setSponsorForGas
时合约已经有了赞助者,并且新的赞助者与当前赞助者相同,合约的赞助余额将会增加。 如果新的赞助者发生变动,合约的赞助余额将被被替换。 在这种情况下,赞助金额需要大于 currentSponsorBalance + 1000 * upperBound
。 前一个赞助者的赞助余额将被退还,剩余金额将更换为赞助者后的赞助余额。