公链矿工费那点事儿

[复制链接]
9623 |0
发表于 2019-11-19 10:08:52 | 显示全部楼层 |阅读模式
使用公链,发送BTC,以及发送ETH上的代币,都是需要用户支付矿工费的。这和我们使用微信支付,支付宝支付不需要手续费是不一样的(严格来说,微信支付等是向商家收费)。公链矿工费应该如何设计?

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


公链矿工费那点事儿.jpg

公链矿工费那点事儿.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表