交易费用
每个TON用户都应该记住,手续费取决于许多因素。
Gas
所有费用都以Gas计算。这是TON中用作费用的特殊货币。
所有费用都以一定数量的gas来指定和固定,但gas价格本身并不固定。今天的gas价格为:
1 gas = 1000 nanotons = 0,000 001 TON
平均交易成本
简而言之: 今天,每笔交易的成本约为 ~0.005 TON
即使TON价格上涨100倍,交易仍将非常便宜;不到$0.01。此外,如果验证者认为手续费变得昂贵,他们可以降低这个值阅读他们为何感兴趣。
当前的gas数量写在网络配置参数20中。
Gas 变更投票过程
像TON的许多其他参数一样,gas费用是可配置的,可以通过主网上的特殊投票来更改。
更改任何参数都需要获得66%的验证者投票。
Gas 的成本会更高吗?
这是否意味着有一天gas价格可能会上涨1000倍甚至更多?
从技术上讲,是的;但实际上,不会。
验证者从处理交易中获得少量费用,收取更高的手续费将导致交易数量减少,使验证过程变得不那么有利。
如何计算费用?
TON上的费用难以提前计算,因为它们的数量取决于交易运行时间、账户状态、消息内容和大小、区块链网络设置以及无法在交易发送之前计算的其他许多变量。阅读关于计算费用的低层级文章概述。
这就是为什么即使NFT市场通常会额外收取大约1 TON的TON,并在稍后返还(1 - transaction_fee
)。
然而,让我们了解更多关于费用应该如何在TON上发挥作用。
基本费用公式
根据低层级费用概述,TON上的费用按照以下公式计算:
transaction_fee = storage_fees
+ in_fwd_fees
+ computation_fees
+ action_fees
+ out_fwd_fees
交易费用的元素
storage_fees
是您为在区块链上存储智能合约而支付的金额。实际上,您支付的是智能合约在区块链上存储的每一秒钟。- 示例:您的TON钱包也是一个智能合约,每次您接收或发送交易时都会支付存储费用。阅读更多关于如何计算存储费用。
in_fwd_fees
是从区块链外部导入消息的费用。每次您进行交易时,都必须将其传送给将处理它的验证者。- 示例:您使用的每个钱包应用程序(如Tonkeeper)进行的每笔交易都需要首先在验证节点之间分发。
computation_fees
是您为在虚拟机中执行代码而支付的金额。代码越大,必须支付的费用就越多。- 示例:每次您使用钱包(即智能合约)发送交易时,您都会执行钱包合约的代码并为此付费。
action_fees
是智能合约发送外部消息所收取的费用。out_fwd_fees
代表从TON区块链发送消息到外部服务(例如,日志)和外部区块链的费用。- 由于尚未实施,因此目前未使用。因此目前等于0。
存储费
TON验证者从智能合约收取存储费用。
存储费用是在任何交易的存储阶段从智能合约余额中收取的。阅读更多关于阶段以及TVM如何工作的内容在此。
重要的是要记住,在TON上,您既要为智能合约的执行付费,也要为使用的存储付费:
bytes * second
这意味着您必须为拥有TON钱包支付存储费用(即使非常非常小)。
如果您在相当长的时间内(1年)没有使用您的TON钱包,您将不得不支付比平常更大的手续费,因为钱包在发送和接收交易时支付手续费。
公式
您可以使用以下公式大致计算智能合约的存储费用:
storage_fee = (cells_count * cell_price + bits_count * bit_price)
/ 2^16 * time_delta
让我们更仔细地检查每个值:
price
— 存储time_delta
秒的价格cells_count
— 智能合约使用的cell数量bits_count
— 智能合约使用的位数cell_price
— 单个cell的价格bit_price
— 单个位的价格
cell_price
和bit_price
都可以从网络配置参数18中获得。
当前值为:
- 工作链
bit_price_ps:1
cell_price_ps:500 - 主链
mc_bit_price_ps:1000
mc_cell_price_ps:500000
计算器示例
您可以使用此JS脚本计算工作链中1 MB存储1年的存储价格
// 欢迎使用LIVE编辑器! // 随意更改任何变量 function storageFeeCalculator() { const size = 1024 * 1024 * 8 // 1MB的位 const duration = 60 * 60 * 24 * 365 // 1年的秒数 const bit_price_ps = 1 const cell_price_ps = 500 const pricePerSec = size * bit_price_ps + + Math.ceil(size / 1023) * cell_price_ps let fee = (pricePerSec * duration / 2**16 * 10**-9) let mb = (size / 1024 / 1024 / 8).toFixed(2) let days = Math.floor(duration / (3600 * 24)) let str = `Storage Fee: ${fee} TON (${mb} MB for ${days} days)` return str }
常见问题解答
这里是TON访客最常问的问题:
发送 TON 的费用?
发送任何数量的TON的平均费用为0.0055 TON。
发送 Jettons 的费用?
发送任何数量的自定义Jettons的平均费用为0.037 TON。
铸造 NFT 的成本?
铸造一个NFT的平均费用为0.08 TON。
在 TON 上保存数据的成本?
在TON上保存1 MB数据一年的成本为6.01 TON。请注意,您通常不需要在链上存储大量数据。如果您需要去中心化存储,请考虑TON Storage。
如何在 FunC 中计算费用?
参考资料
- "低层级费用概述" — 阅读有关计算佣金的公式。
- 基于@thedailyton文章最初由menschee撰写