Post by @jianda • Hey
比特币白皮书全文 **比特币:一种点对点的电子现金系统**
Stats
Actions: 0
Comments: 92
Likes: 22
Mirrors: 4
Quotes: 0
Comments
**5. 网络** 运行这个网络的步骤如下: 1) 新交易给所有节点广播。 2) 每个节点将新交易放到一个区块。 3) 每个节点开始为这个区块寻找相应难度的工作量证明。
接收者一直等待直到交易被添加到一个区块中,并且后面已经追加了z个区块了。他并不知道攻击者的准确进展,但是可以假设诚实区块每个区块花费的时间是平均期望时间,攻击者潜在的进展将服从泊松分布.
工作量证明本质上也是一个IP一票。最长的链代表了大多数人的决定,这个链投入了最大的工作量。
工作量证明还解决了在多数决策法中决定展示的问题。如果大多数是基于一个IP一票,这可能会被可以支配多个IP的人破坏。
为了基于点对点的基础实现一个分布式的时间戳服务器,我们将需要一个工作量证明的系统,这个系统和亚当·.
假设p>q,随着落后区块数量(z)增加,攻击者追上的概率呈指数下降。这个概率情况对攻击者不利,如果他没有幸运的提前向前冲刺,落后越多希望就越渺茫。
贝克的哈希现金类似,而不是报纸或新闻组邮件。这个工作量包含寻找一个哈希值,比如用哈希算法SHA-256,这个哈希值以若干0开头。
4) 当一个节点找到了这个工作量证明,把这个区块广播给所有节点。 5) 如果区块里所有的交易是有效的并且是没有被花费的,节点就会接受这个区块。 6) 节点把这个区块的哈希作为上一个哈希,并开始进行工作以竞争创建下一个区块。
最长的链不仅是见证序列的证明,还证明了它来自最大的CPU算力池。
p=诚实节点发现下一个区块的概率 q=攻击者找到下一个区块的概率 qz =攻击者在落后z个区块的情况下,追上的概率
一个区块头大概80字节。如果我们假设每十分钟产生一个区块,一年就是80字节*6*24*365=4.2兆字节。
2008年出售的电脑典型的配置是2GB内存,根据摩尔定律预测,每年增加1.2G,即使区块头全部放在内存里,存储也不是个问题。
网络本身需要极小化结构。消息被尽力广播,并且节点可以随意离开或重新加入网络,接受最长的工作量证明的链作为它离开这段时间发生事情的证明。
摘要. 一个完全的点对点版本的电子现金将允许一方不通过金融机构直接在线支付给另一方。
平均工作量和开头的0的个数是指数关系,并且验证很简单,只需要执行一次单独的哈希计算。
他们用CPU算力投票,通过在有效区块上工作并延续它来表达对区块的接受,通过不在新区块上工作表示拒绝无效区块。任何需要的规则和激励都可以在这种共识机制下进行。
为了解决双花,我们提出了一个点对点的网络,这个网络使用工作量证明记录一个公共的交易历史,只要诚实节点控制大部分CPU算力,很快使得攻击者无法通过计算来改变交易历史。
不断增加新货币的过程类似于黄金矿工消耗资源来增加黄金的流通。在这里,消耗的事CPU的时间和电费。
如果大多数的CPU算力由诚实节点控制,诚实的链就会增加的很快,超过任何竞争链。
一旦CPU花费算力计算满足了工作量证明的要求,这个区块链就无法修改,除非重新计算。
只要诚实节点控制的CPU的算力大于攻击者节点的算力,这个系统就是安全的。
他本身不能验证交易,但是通过连接到链上的一个地方,他可以看到网络节点已经接受了它,后面的区块进一步确定网络接受了它。
一旦一个币最新的交易被足够多的区块埋没,它之前的花费的交易就可以丢掉来节省空间。为了促成这个而不破坏区块的哈希,用这些交易生成一个默克尔树,仅仅根包含在区块的哈希里。那么旧区块可以通过去除树的一些分支进行压缩。有些内部的哈希就不用保存了。
块广播也能接受消息丢失。如果一个节点没有收到区块,当它收到下一个块时会发现自己少了一个区块,它就会请求来获得少的这个区块。
收款人可以通过验证数字签名来确认链的所有者。
我们的时间戳网络里,是这样实现工作量证明的,就是不断增加区块里的一个临时的数值,直到找到一个值使得区块的哈希值满足开头0的个数的要求。
不错
节点可以离开网络,也可以需要的时候重新加入网络,接受工作量链作为他离开的时候发生了什么的证据。
他们不需要被识别,因为消息不需要路由到任何特定的位置,只需尽力传递就好。
该网络的非结构化简单性使得它很稳健。节点同时工作,很少需要相互协调。
我们为无信任电子交易提出了一个系统。我们从数字签名币的常用框架开始,它对所有者有很强的控制,但是因为不能避免双花,所以还不完整。
为了得到目前攻击者仍能追上的概率,我们将他所取得的每一步进展的泊松密度乘以他可能从那一点赶上的概率。
一旦这个交易发送了,不诚实的发送者开始在一个并行的链上秘密工作,这条链包含他的交易的另一个版本。
接收者创建了一个新的密钥对,签名之前很短的时间把公钥给了发送者。这防止发送者提前准备一条链,持续在上面工作,直到他足够幸运达到了领先的程度,正好执行刚才这条交易。
我们假设发送者是攻击者,他想让接收者暂时相信他已经付款了,然后过了一段时间又换成是支付给自己。这事发生的时候接收者会收到告警,但是发送者希望一切都晚了。
我们现在考虑接收者在收到新的交易的时候,需要等待多长时间才能完全确定交易不能被发送者修改。
我们可以计算他达到盈亏平衡的概率,或者说是攻击链赶上诚实链的概率,
一个攻击者从一个给定的赤字中追上的概率类似于一个赌徒破产问题。假设一个信用无限的赌徒从赤字开始,开始进行潜在次数无数的赌博,试图达到盈亏平衡。
实的链和攻击链的竞争可以说是二项式随机走动。成功事件是诚实链延长一个区块,领先优势加一,失败事件是攻击链延长一个区块,缩小一个差距。
我们想象一个这样的场景,攻击者想用比诚实节点更快的速度产生一个替代链。即使成功了,也不会让系统能任意被修改,比如凭空产生价值或拿走不属于攻击者的钱。
我们想象一个这样的场景,攻击者想用比诚实节点更快的速度产生一个替代链。即使成功了,也不会让系统能任意被修改,比如凭空产生价值或拿走不属于攻击者的钱。
风险是如果表明了某一个密钥的所有者,这种联系将表明其他的交易也属于同一个人。
作为一个附加的防火墙,每次交易都使用一个新的密钥对,防止和一个共同的所有者联系起来。对于多输入交易来说,这个联系无法避免,所有的输入必须表明由同一个人所有。
这类似于证券交易所公布的信息水平,交易时间和个人的交易规模是公开的,但不告诉当事人是谁。
通过打破信息在其他地方的流动性仍然可以保护隐私:通过保持公钥匿名性。公众可以看到一个人给其他人转钱了,但是没有信息可以把交易和某人联系起来。
传统的银传统的银行通过限制向有关方和信任的第三方提供信息来达到一个保护隐私的目的。向公众广播所有交易的必须性将这个方法排除了。行通过限制向有关方和信任的第三方提供信息来达到一个保护隐私的目的。向公众广播所有交易的必须性将这个方法排除了。
应该注意的是,一个交易依赖几个交易,这些交易依赖更多的交易,看起来很分散,但在这里不是一个问题。
正常的会有一个单独从以前交易来的大额输入或多个小额输入组合在一起,最多两个输出:一个用来支付,一个用来找零,有零钱的话会返还给发送者。
虽然可以单独处理币,为转账的每一分都单独交易是很不方便的。为了能是价值分割和组合,交易包含多个输入和多个输出。
频繁接收支付的企业可能仍然想运行他们自己的节点,为了更独立的安全性和更快的验证。