如何设计公链矿工费
扫描二维码
随时随地手机看文章
使用公链,发送比特币,以及发送以太坊上的代币,都是需要用户支付矿工费的。这和我们使用微信支付,支付宝支付不需要手续费是不一样的(严格来说,微信支付等是向商家收费)。
我们可以从四个视角来分析诸如比特币以太坊等公链的矿工费设计。
1谁付钱?
2付多少?
3谁收钱?
4谁出资源?
5矿工费的设计如何利于构建更完善的网络?
绝大多数公链都是需要用户支付矿工费才能发送交易的。只有极少数的公链使用了零手续费的设计,如EOS。
比特币的矿工费的设计原则是,第一是按用户发送的交易的字节数来计费;第二字节数的单价一般是有一个最低价原则,然后按市场竞争谁出更高价谁获得更快的确认。
比特币的矿工费就是比特币本身。
交易的字节数最低单价,一般是在完整节点钱包里设定的,基本上是1sat/byte。虽然这并不是强制的全网共识规则,但低于完整节点设定的矿工费,更大的可能性会被节点拒绝。
BTC、BCH和BSV,以及绝大多数UTXO制的区块链产品,都采用类似的矿工费设计。基本上最低字节数单价为1sat/byte。BCH和BSV因为使用人数少,用户基本上都是按最低价来支付矿工费,用户之间不会涉及到矿工费竞价排名。BTC使用多,会涉及到竞价排名,现在一般为10sat/byte。
虽然BTC的矿工费设计比BCH等要复杂一点,BTC的隔离见证交易数据分见证数据和基础交易数据,后者的最低字节单价是前者的3倍。但这些细节我们可以不用在意。
在比特币上发token交易,也是要消耗比特币作为矿工费的。如在BTC网络上发omni-usdt,矿工费也是BTC;在BCH网络上发SLP代币,矿工费也是BCH。代币交易的矿工费同样是按字节数来衡量。
比特币的矿工费,最终是被矿工收走了的。矿池打包区块时,会按用户发送交易时添加的矿工费收进coinbase交易。
矿工也是主要的比特币节点运营者,比特币交易需要节点来验证、广播、和存储。所以可以说矿工费是用户支付给矿工,矿工付出交易所需的资源。
以太坊的矿工费设计原则是,第一是按用户发送的交易的计算步骤来计费;第二同样是每一个计算步骤有一个最低单价,然后按市场竞价排名来优先获得更快的确认。
以太坊的矿工费是引入了一个额外的币,叫gas(燃气),gas和以太币是在系统中有固定兑换价格的。
以太坊的交易涉及到很多的合约代码之类的,需要计算执行。gas的设计是综合考虑了交易的计算量、存储和带宽需求。
单纯发送以太币,需要执行的是系统合约,涉及到的gas量是相对更少的。而要在以太坊上发送token,需要额外执行token合约,这就需要支付更多的gas。平均来说,发token的矿工费是发ETH的1.5倍。
但无论是发以太坊,还是发token,以太坊网络都是统一按gas来计算矿工费。而gas值反应的就是交易的计算量、存储和带宽需求。
因为以太坊现在使用量也非常大,需要用户之间竞价排名来优先获得确认。而且以太坊的矿工费设计是先收矿工费,再确认,如果你的矿工费付的不够,有可能得不到确认,但矿工费却被没收了,交易发送失败。这就很让人讨厌。
相对的,比特币交易矿工费,只是反应了存储和带宽,就是按字节数来计算。
以太坊的矿工费也是由矿工收走的,矿工是以太坊节点主要运营者,同样是相当于矿工提前交易所需的计算、带宽和存储资源,换取用户支付的矿工费。
EOS的矿工费设计显现出了BM的设计技巧,有人认为是好,也有人认为不好。
EOS的交易是精确地按交易所需要资源分成了CPU(计算步骤)、Net(带宽)和内存Ram(存储)。CPU、Net和Ram是可以看成是三个币,和EOS有一定的汇率关系。
用户发送交易里,系统会计划交易需要的这三种资源,然后进行计价。
但EOS系统出售这三种资源的方式却是“租赁”。用户先购买EOS,然后分别抵押进三个系统合约,换取这三种资源。其中CPU和Net是稳定价格的,你花了多少EOS抵押,未来你也可以赎回对应的EOS数量,不会少。但Ram是波动价格的,你赎回时可能变多,也可以变少。
因为抵押EOS获得发送交易需要的三种资源,但抵押又可赎回,所以EOS被称为是免矿工费的。这是一种变相的免费的。
同样的在EOS上发送token,因为要执行除系统合约外的额外合约,也是需要更多的资源的,用户就需要抵押更多的EOS来获得使用权。
EOS的矿工费是不支付给超级节点的(矿工),因为这是变相的免费。但超级节点是提供交易所需的资源的。超级节点为什么会提供资源但又不收矿工费呢?因为超级节点可以获得区块奖励。
比特币和以太坊矿工,是同时获得矿工费和区块奖励的双重奖励。
还有一类公链的矿工费设定是固定费用,并且矿工费承担了独特经济学责任。vsys公链的矿工费设定就是固定的。
在vsys公链上发送基础货币vsys,用户需要支付固定的矿工费0.1vsys,发送vsys上的代币(如IPX)需要支付0.3vsys作为矿工费。
vsys上的一切矿工费都是直接销毁。相当于给全网的经济系统设计一个通缩机制,受益者是全网持币人。
vsys提供执行交易的计算、传输和存储资源的是超级节点(矿工)是收不到矿工费的,但有区块奖励。
下面我们来思考矿工费的设计如何优化系统设计。
比特币和以太坊的矿工费最终是被矿池收走的,所以矿池就有动机想方设法捕捉更多的交易,以获得更多的矿工费。矿池是通过在全球部署更的完整节点来捕捉用户的交易。这种设计就有利于用户交易的及时处理,有利于推动矿池去搭建更好的基础硬件网络。
比特币的矿工费设计非常简洁,系统设计也相对简洁。以太坊的矿工费就因为太复杂,出现过多起利用gas对系统发起攻击的事件。
EOS的矿工费设计非常精细,有利于系统设计师展现实力。EOS有两种重大升级就是针对Ram和CPU资源定价问题。变相的“免费”设计,也让EOS系统资源被大量浪费,EOS区块链现在已经超过了600G,非常大了。因为超级节点收不到矿工费,所以失去了像比特币以太坊那样的由矿池构建更好的基础网络的动因。EOS矿工费是太复杂,让用户很难受。
vsys的矿工费设计最简洁,就是固定费用,系统设计相对最简洁了。vsys矿工费的销毁机制,给经济系统设计了一个通缩机制,有利于基础货币的价格坚挺。和EOS一样,因为超级节点收不到矿工费,所以超级节点没有动机去扩展建设更好的硬件基础网络。
vsys的矿工费的设计是固定费用,不考虑网络资源;比特币的矿工费设计更多考虑存储资源;以太坊的矿工费设计向计算资源倾斜;EOS是精细地将资源划分成三种来分别定价。
矿工费的主要设计目的是防止DDOS这样的流量攻击,有了矿工费作为成本,以此防止发往区块链上发大量的攻击交易。
设计的越精细,不考虑代码质量的话,那对交易就越公平,就越能优化资源配置,黑客就越难通过构建特殊的交易来攻击网络。反过来,越粗糙的设计,就可能给黑客留下漏洞,通过构造特殊的交易,花少量的矿工费,却达到极大地浪费系统资源的目的。但另外一方面,设计的越精细,对代码质量要求就越高,而留下bug的可能性就越大。
万事古难全啊。
EOS和vsys因为超级节点收不到矿工费,但因为有区块奖励,所以也存在竞争关系,这一点弥补了超级级缺乏动机去扩展硬件基础网络的动因。如果超级节点不建设更好的网络,可能会失去用户的投票。
矿工费越低,甚至免费,就越容易获得用户的使用。这也是EOS真实TPS最高的原因。
我们使用表格来统计下上面四种公链的矿工费设计