交易费用概览
要使用NEO网络,交易需要支付一定的费用。NEO网络具有两种不同的交易类型,即系统费和网络费。所有费用均通过系统的功能代币GAS(NeoGas)进行支付。
类型 | 说明 |
---|---|
网络费 | 支付给验证人用于打包交易的费用 |
系统费 | 操作网络的固定费用 |
网络费
对于大小不超过1024字节的交易,网络费目前是可选的。增加网络费(最低为0.001 GAS)可以提高交易的优先级。目前在NEO网络中每个区块最多只能包含20个低优先级的交易,因此在网络流量大的时候支付更高的网络费用可以使交易更快得到处理。
对于大小超过1024字节的交易需要支付0.001 GAS的基础费用,超过1024字节的部分按每字节0.00001 GAS收取网络费用。大多数基本的NEP-5资产转账交易大小仍然是远低于1024字节的,但是逻辑更复杂或者有大量输入和输出的交易可能会超过这一阈值因此需要支付一定的网络费用。
内存池中交易的优先级取决于每字节支付的费用。网络费由验证人收集并分发到任意的合约地址。
系统费
系统费用是根据交易类型和NEO虚拟机要执行的指令计算得出的固定费用。一般来说,交易对网络资源的需求越大,交易的成本就越高。每笔交易均有10 GAS的免费额度,因此对于大多数用户而言,与网络和智能合约进行交互都是免费的。
系统调用
系统调用 | 费用(GAS) |
---|---|
默认的 | 所有系统调用花费0.001 |
Runtime.CheckWitness |
0.2 |
Blockchain.GetHeader |
0.1 |
Blockchain.GetBlock |
0.2 |
Blockchain.GetTransaction |
0.1 |
Blockchain.GetAccount |
0.1 |
Blockchain.GetValidators |
0.2 |
Blockchain.GetAsset |
0.1 |
Blockchain.GetContract |
0.1 |
Transaction.GetReferences |
0.2 |
Account.SetVotes |
1 |
Validator.Register |
1000 |
Contract.Create |
每个合约花费100 , 使用存储花费400 , 使用动态调用花费500 |
Contract.Migrate |
每个合约花费100 , 使用存储花费400 , 使用动态调用花费500 |
Storage.Get |
0.1 |
Storage.Put |
每千字节花费1 |
Storage.Delete |
0.1 |
指令
指令 | 费用(GAS) |
---|---|
默认的 | 虚拟机中所有的指令都花费0.001 |
OpCode.PUSH16 (or less) |
0 |
OpCode.NOP |
0 |
OpCode.APPCALL |
0.01 |
OpCode.TAILCALL |
0.01 |
OpCode.SHA1 |
0.01 |
OpCode.SHA256 |
0.01 |
OpCode.HASH160 |
0.02 |
OpCode.HASH256 |
0.02 |
OpCode.CHECKSIG |
0.1 |
OpCode.CHECKMULTISIG |
每个签名花费0.1 |
应用的使用费用
在网络中部署的任何应用都可以要求支付使用费用后才能使用智能合约功能。通常是通过NEP-5兼容的功能代币进行支付,不过智能合约也可以收取GAS。