BTC.com手机客户端

比特币协议改进之交易费政策迁移计划

imcoddy 发布在 比特币 52 8758

译者前言:

据比特币核心开发人员 Mike Hearn 透露,比特币协议在今年将会迎来四大改动,其中一项就是转账所需要的交易费(transaction fee)将会浮动。实际上,Gavin Andresen 在几个月前就在一篇笔记中为大家勾画了交易费的变更计划。下面就让我们来看看它的详细情况吧。

 

205412itxhfbg2fktzugmf

网络/矿工收费政策的迁移计划

要想改变交易在网络中传递以及矿工将其保存到区块链中所需的交易费用,是需要花一些心思的。政策不匹配可能会导致用户的交易无法得到确认,这要么是交易无法到达矿工那里(它们没有被传递过去),要么就是交易被矿工直接拒绝了。

我一直在努力简化 0.9 版本的交易费规则。这篇帖子的目的是说明所有使这一转变尽可能顺利执行所需要的细节。

总体的思路是,交易生成部分的代码将会比较保守,从而保证生成与以前版本的规则相一致的交易。 而交易传递和挖矿确认的代码被会变得更加主动,以满足未来可能发生的变化。

0.8.5 版规则

0.8.5 传递规则
基本费用:每 1000 字节 10000 聪(satoshis),交易的大小将向上取整至最接近的 1000 字节(例如 1001 字节的交易需要 20000 聪)。这个值可以通过 minrelaytxfee 参数来进行更改。

如果交易符合下列条件的话:
支付的成本低于收费的基本费用
小于 10000 字节
没有任何一个输出小于0.01 XBT
那么它们将被认为是“免费交易”。他们将会被限速,然后(在合适的时候)传递出去。

这里还有另一个相关的规则:如果交易的输出非常小的话(大概在 5000 聪左右,我们称为“尘土交易”)将被认为是不合标准的从而不会被转发。

0.8.5 纳入规则
所有的传递规则依然适用,因为节点不会去挖掘交易,除非他们将其传递出去(以及接受并纳入自己的内存池里)。

包含着大量免费交易、大小为 27000 字节的块(通过 blockprioritysize 参数可以改变)所具有的优先级大于 57600000 的块(这等于一个 250 个字节的交易其输入为 1XBT,并且超过了一天时间)。

块(默认 blockmaxsize:250000 字节)的其余部分则包含着至少 10000 聪每 1000 字节的交易(可以通过 mintxfee 参数改变)。注意,这里没有对字节数进行取整。

0.8.6 版规则变更提议

0.8.6 传递规则
除去了“所有输出必须大于 100 聪”的规则。(这是为了简化事务创建/处理逻辑。)

0.8.6 纳入规则
将默认的 maxblocksize 增加至 350000 字节。 将高优先级事务的默认空间增加至 30000 字节。(这是为了适应更高的交易量,并用来衡量默认的算力占了多大的比例。)

0.8.6 钱包
超过 1000 字节的交易必须支持交易费。(这是为了给免费交易预留空间。)

0.9 版规则变更提议

优先级计算方式将被修改,使得花费中额外的输入不会降低优先级。(这是为了鼓励清理灰尘交易造成的 UTXO 设置。)

0.9 传递规则
当计算传递所需的最小交易费时,不再四舍五入到下一个 1000 字节。 (这是为了与控矿代码匹配)

新的“拒绝”消息将被实现,告诉其它结点他们的交易由于费用不足而不会被传递下去。(这只是一个临时的解决办法,我们会努力想出一个对 SPV 更友好的解决方案。)

0.9 纳入规则
要求矿工必须设置 mintxfee 和 minblocksize 等参数,如果他们不这样做将被拒绝开采。 (这是为了让交易费/块大小等在评估时决策非中心化。​​)

0.9 钱包
使用新的“聪明费用(smartfee)​​”代码,来确定交易是否具有足够高的优先级将在不久的几个块区块中得到开采。 如果优先级够高,并且旧规则下的优先级也大于旧阈值,则传递时不需要交易费。

如果交易被判定为不应该免费:将按 0.8.6 的传递规则计算最低费用,并与使用新的“聪明费用”代码计算出来的费用比较,选择二者中较大的数值来当作交易费。

0.9 版后期的变更
长远的目标是摆脱计算交易费的相关常数的所有的硬编码,让矿工来决定他们要处理的交易,并让钱包找出矿工以及矿工所处理的内容。

0.9+ 传递规则
剔除 minrelaytxfee 参数,实现一个有优先级,内存有限的内存池。传递过来的交易如果适用的话将马上放入池中,不合适的将被拒绝。(具体实现还有待决定,也许会拒绝那些虽然具有优先级但权值小于当前池中最小权值的交易,并驱逐时间最长的交易以保持池的空余容量。)

0.9+ 钱包
剔除旧规则下的计算代码,只需使用新的交易费估算代码。(因为完整性检查的原因,将拒绝我们的内存池不会传递的交易。)
译者补记:
本文首发于巴比特。
尽管用比特币进行外币兑换的交易费用远小于到银行办理,不过随着比特币的价格不断高涨,交易费也不再是一个小数目。可喜的是相关开发人员早已意识到这一点。
由于挖矿的难度不断提升,后期矿工的主要收益将信赖于交易费用,这也意味着比特币的交易费用不会趋近于零。当然,当交易数量达到一定活跃规模之后,交易的费用也将会达到一个动态平衡的局面。而将交易费用的设置权下放至矿工手上,将会更有利于提升比特币流通性。
原文中有不少变更处的代码链接,对源代码有兴趣的读者请围观原文:)

文中所引用图片为本人修改而成,原图版权归原作者所有。如果这篇文章对您有帮助,请捐献一些比特币,谢谢。

捐助比特币地址:1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5
与君共勉。

译者:imcoddy
原文地址:https://gist.github.com/gavinandresen/7670433

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:52

您需要登录后才可以回复 登录|注册
    非法_登录
    非法_登录 1041 天前

    矿工弱势//@fcicq: 矿池可以拒绝升级 bitcoind, 挖矿速度和 tx 收集速率没有联系.//@彩云比特-walker:0.9.0版强制矿工设置minblocksize终于解决了我对比特币的担心,矿工不会无底限地通过无耻拒绝确认来加快挖矿速度;这一条也与“交易费矿工自定”形成了相互制约,避免矿工任意抬高交易费,非常妙啊!

    +1
    +1
    我要点评

    #号盾,让你的手机变身双卡双待# 活动 第一期什么时候开奖呢?好期待啊~~ 地址:http://t.cn/8FIChAn

    +1
    +1
    我要点评