LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 比特币:一种点对点的电子现金系统下

比特币:一种点对点的电子现金系统下

2020-02-15 韭菜币圈 来源:火星财经

5. 网络

运行该网络的步骤如下:

1. 新的交易向全网进行广播。

2. 每一个节点都将收到的交易信息纳入一个区块中。

3.每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明。

4.当一个节点找到了一个工作量证明,它就向全网进行广播。

5.当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同 该区块的有效性。

6.其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造 新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。

节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广 播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他 们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。 该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一 条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。 所谓“新的交易要广播”,实际上不需要抵达全部的节点。只要交易信息能够抵达足够多 的节点,那么他们将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以 提出自己下载该区块的请求。

6. 激励 我们约定如此:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者 拥有的新的电子货币。这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币 的情况下,提供了一种将电子货币分配到流通领域的一种方法。这种将一定数量新货币持续增 添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时, CPU的时间和电力消耗就是消耗的资源。另外一个激励的来源则是交易费(transaction fees)。

如果某笔交易的输出值小于输入值, 那么差额就是交易费,该交易费将被增加到该区块的激励中。只要既定数量的电子货币已经进 入流通,那么激励机制就可以逐渐转换为完全依靠交易费,那么本货币系统就能够免于通货膨 胀。 激励系统也有助于鼓励节点保持诚实。如果有一个贪婪的攻击者能够调集比所有诚实节点 加起来还要多的CPU计算力,那么他就面临一个选择:要么将其用于诚实工作产生新的电子 货币,或者将其用于进行二次支付攻击。那么他就会发现,按照规则行事、诚实工作是更有利 可图的。因为该等规则使得他能够拥有更多的电子货币,而不是破坏这个系统使得其自身财富 的有效性受损。

7. 回收硬盘空间 如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据,以 回收硬盘空间。为了同时确保不损害区块的随机散列值,交易信息被随机散列时,被构建成一 种 Merkle 树(Merkle tree)7的形态,使得只有根(root)被纳入了区块的随机散列值。通过将该 树(tree)的分支拔除(stubbing)的方法,老区块就能被压缩。而内部的随机散列值是不必 保存的

不含交易信息的区块头(Block header)大小仅有80字节。如果我们设定区块生成的速率 为每10分钟一个,那么每一年产生的数据位4.2MB。(80 bytes * 6 * 24 * 365 = 4.2MB)。2008 年,PC系统通常的内存容量为2GB,按照摩尔定律的预言,即使将全部的区块头存储于内存 之中都不是问题。

8. 简化的支付确认(Simplified Payment Verification) 在不运行完整网络节点的情况下,也能够对支付进行检验。一个用户需要保留最长的工作 量证明链条的区块头的拷贝,它可以不断向网络发起询问,直到它确信自己拥有最长的链条, 并能够通过 merkle 的分支通向它被加上时间戳并纳入区块的那次交易。节点想要自行检验该 交易的有效性原本是不可能的,但通过追溯到链条的某个位置,它就能看到某个节点曾经接受 过它,并且于其后追加的区块也进一步证明全网曾经接受了它。

当此情形,只要诚实的节点控制了网络,检验机制就是可靠的。但是,当全网被一个计算 力占优的攻击者攻击时,将变得较为脆弱。因为网络节点能够自行确认交易的有效性,只要攻 击者能够持续地保持计算力优势,简化的机制会被攻击者焊接的(fabricated)交易欺骗。那 么一个可行的策略就是,只要他们发现了一个无效的区块,就立刻发出警报,收到警报的用户 将立刻开始下载被警告有问题的区块或交易的完整信息,以便对信息的不一致进行判定。对于 日常会发生大量收付的商业机构,可能仍会希望运行他们自己的完整节点,以保持较大的独立 完全性和检验的快速性。

9. 价值的组合与分割(Combining and Splitting Value) 虽然可以单个单个地对电子货币进行处理,但是对于每一枚电子货币单独发起一次交易将是一种笨拙的办法。为了使得价值易于组合与分割,交易被设计为可以纳入多个输入和输出。 一般而言是某次价值较大的前次交易构成的单一输入,或者由某几个价值较小的前次交易共同 构成的并行输入,但是输出最多只有两个:一个用于支付,另一个用于找零(如有)。 需要指出的是,虽然一笔交易依赖于之前的多笔交易、这些交易又各自依赖于多笔交易, 但是这并不存在任何问题。因为这个工作机制并不需要展开检验之前发生的所有交易历史。

10.隐私(Privacy)

传统的造币厂模型为交易的参与者提供了一定程度的隐私保护,因为试图向可信任的第三 方索取交易信息是严格受限的。但是如果将交易信息向全网进行广播,就意味着这样的方法失 效了。但是隐私依然可以得到保护:将公钥保持为匿名。公众得知的信息仅仅是有某个人将一 定数量的货币发所给了另外一个人,但是难以将该交易同某个特定的人联系在一起,也就是说, 公众难以确信,这些人究竟是谁。

这同股票交易所发布的信息是类似的,每一手股票买卖发生 的时间、交易量是记录在案且可供查询的,但是交易双方的身份信息却不予透露。 作为额外的预防措施,使用者可以让每次交易都生成一个新的地址,以确保这些交易不被 追溯到一个共同的所有者。不过由于存在并行输入,一定程度上的追溯还是不可避免的,因为 并行输入暗示这些货币都属于同一个所有者。此时的风险在于,如果某个人的某一个公钥被确 认属于他,那么就可以追溯出此人的其它很多交易。

11.计算 设想如下场景:一个攻击者试图比诚实节点产生链条更快地制造替代性区块链。即便它达 到了这一目的,但是整个系统也并非就此完全受制于攻击者的独断意志了,比方说凭空创造价 值,或者掠夺本不属于攻击者的货币。这是因为节点将不会接受无效的交易,而诚实的节点永 远不会接受一个包含了无效信息的区块。一个攻击者能做的,最多是更改他自己的交易信息, 并试图拿回他刚刚付给别人的钱。 诚实链条和攻击者链条之间的竞赛,可以用二叉树随机漫步(Binomial Random Walk)来描 述。成功事件定义为诚实链条延长了一个区块,使其领先性+1,而失败事件则是攻击者的链条被延长了一个区块,使得差距-1。

攻击者成功填补某一既定差距的可能性,可以近似地看做赌徒破产问题(Gambler’s Ruin problem)。假定一个赌徒拥有无限的透支信用,然后开始进行潜在次数为无穷的赌博,试图 填补上自己的亏空。那么我们可以计算他填补上亏空的概率,也就是该攻击者赶上诚实链条, 如下所示8:

? = 诚实节点制造出下一个节点的概率

? = 攻击者制造出下一个节点的概率

?? = 攻击者最终消弭了z个区块的落后差距

qz = 1 if p ≤ q (qp)z if p > ?

假定 p>q,那么攻击成功的概率就因为区块数的增长而呈现指数化下降。由于概率是攻击 者的敌人,如果他不能幸运且快速地获得成功,那么他获得成功的机会随着时间的流逝就变得 愈发渺茫。那么我们考虑一个收款人需要等待多长时间,才能足够确信付款人已经难以更改交 易了。我们假设付款人是一个支付攻击者,希望让收款人在一段时间内相信他已经付过款了, 然后立即将支付的款项重新支付给自己。虽然收款人届时会发现这一点,但为时已晚。

收款人生成了新的一对密钥组合,然后只预留一个较短的时间将公钥发送给付款人。这将 可以防止以下情况:付款人预先准备好一个区块链然后持续地对此区块进行运算,直到运气让 他的区块链超越了诚实链条,方才立即执行支付。当此情形,只要交易一旦发出,攻击者就开 始秘密地准备一条包含了该交易替代版本的平行链条。

然后收款人将等待交易出现在首个区块中,然后在等到z个区块链接其后。此时,他仍然 不能确切知道攻击者已经进展了多少个区块,但是假设诚实区块将耗费平均预期时间以产生一 个区块,那么攻击者的潜在进展就是一个泊松分布,分布的期望值为:

λ = z qp

12.结论 我们在此提出了一种不需要信用中介的电子支付系统。我们首先讨论了通常的电子货币的 电子签名原理,虽然这种系统为所有权提供了强有力的控制,但是不足以防止双重支付。为了 解决这个问题,我们提出了一种采用工作量证明机制的点对点网络来记录交易的公开信息,只 要诚实的节点能够控制绝大多数的CPU计算能力,就能使得攻击者事实上难以改变交易记录。 该网络的强健之处在于它结构上的简洁性。节点之间的工作大部分是彼此独立的,只需要很少 的协同。每个节点都不需要明确自己的身份,由于交易信息的流动路径并无任何要求,所以只 需要尽其最大努力传播即可。节点可以随时离开网络,而想重新加入网络也非常容易,因为只 需要补充接收离开期间的工作量证明链条即可。节点通过自己的CPU计算力进行投票,表决 他们对有效区块的确认,他们不断延长有效的区块链来表达自己的确认,并拒绝在无效的区块 之后延长区块以表示拒绝。本框架包含了一个P2P电子货币系统所需要的全部规则和激励措施。

—-

编译者/作者:韭菜币圈

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

知识
LOADING...
LOADING...