网赚论坛

 找回密码
 免费注册
查看: 246|回复: 0
打印 上一主题 下一主题

【一期三团Day6-智华】读《比特币白皮书》

[复制链接]

24

主题

27

帖子

124

积分

Ⅰ级财主

Rank: 1

积分
124
跳转到指定楼层
楼主
发表于 2017-10-21 14:05:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【摘要】
1、比特币网络是一种点对点,能防止双重支付的网络。2、它通过随机散列(hashing)对全部交易加上时间戳(timestamps),将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录(区块链的简要定义)。
3、最长的(工作量证明)链条作为被观察到的事件序列(sequence)的证明,作为在该节点离线期间发生的交易的证明。
——by zh: 这点总结不太确定:最长的链条,应该就是“最长的工作量证明链条”。
4、只要大多数的CPU计算能力都没有打算合作起来对全网进行攻击,那么诚实的节点将会生成最长的、超过攻击者的链条。


一、简介
目前互联网的贸易,几乎都需要借助金融机构作为可资信赖的第三方来处理电子支付信息。中介导致交易成本增加。限制交易额度,缺乏不可逆的支付。
我们非常需要一种电子支付系统:

1、它基于密码学原理而不基于信用,不需要第三方中介的参与的点对点支付从而不需要。
2、杜绝回滚(reverse)支付交易。 而对于想要保护买家的人来说,可以设立对应的第三方担保机制。

在这篇论文,我们(we)将提出一种通过点对点分布式的时间戳服务器来生成依照时间前后排列并加以记录的电子交易证明,从而解决双重支付问题——比特币区块网络设置。
只要诚实的节点所控制的计算能力的总和,大于有合作关系的(cooperating)攻击者的计算能力的总和,该系统就是安全的。

二、交易
定义一枚电子货币:
1、对前一笔交易+下一个拥有者(收款人)的公钥签署一个Hash的数字签名,并附加到这个新的货币末尾。
2、收款人通过对签名进行检验,就能够验证该链条的所有者。

我们需要整个系统内的所有参与者,都有唯一公认的历史交易序列(公开账本)。收款人需要确保在交易期间绝大多数的节点都认同该交易是首次出现。

三、时间戳服务器
本解决方案首先提出一个“时间戳服务器”。
时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样。每一个随后的时间戳都对之前的时间戳的增强。

四、工作量证明
在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作。
比方说SHA-256下,随机散列值以一个或多个0开始。那么随着0的数目的上升, 找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。

工作量机制的构建:
1、我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么N个0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。
2、由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。#未明确#
3、而工作量证明机制的本质则是一CPU一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。
4、攻击问题:
如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。
如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。
我们将在后文证明,设想一个较慢的攻击者试图赶上随后的区块,那么其成功概率将呈指数化递减。

五、(P2P)网络
运行该网络的步骤如下:
1) 新的交易向全网进行广播;
2) 每一个节点都将收到的交易信息纳入一个区块中;
3) 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
4) 当一个节点找到了一个工作量证明,它就向全网进行广播;
5) 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
6) 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。

如果收到的区块不一致:
节点始终都将最长的链条视为正确的链条,并持续工作和延长它。
如果有两个节点同时广播不同版本的新区块,那么其他节点收到区块不一致,此时他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。
该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。

六、激励
1、每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域,CPU的时间和电力消耗就是消耗的资源。
2、交易费:如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。

七、回收硬盘空间
由于交易量的增加,导致区块可能非常大,需要节省硬盘空间。

为了同时确保不损害区块的随机散列值,交易信息被随机散列时,被构建成一种Merkle树(Merkle tree)[7] 的形态,使得只有根(root)被纳入了区块的随机散列值。通过将该树(tree)的分支拔除(stubbing)的方法,老区块就能被压缩。而内部的随机散列值是不必保存的。
——by zh: 区别就是,保存4000个交易VS4000个交易的Hash值。2者都可以验证交易,但是第二个更加节省空间。

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

九、价值的组合和分割
为了使得价值易于组合与分割,交易被设计成可以纳入多个输入和输出,而不是对单个比特币进行处理。

十、隐私使用者可以让每次交易都生成一个新的地址,以确保这些交易不被追溯到一个共同的所有者。
但是由于并行输入的存在,一定程度上的追溯还是不可避免的,此时的风险在于,如果某个人的某一个公钥被确认属于他(比如在网上、聊天软件上公布过该地址),那么就可以追溯出此人的其它很多交易。

十一、计算
设想如下场景:一个攻击者试图比诚实节点产生链条更快地制造替代性区块链。即便它达到了这一目的,但是整个系统也并非就此完全受制于攻击者的独断意志了,比方说凭空创造价值,或者掠夺本不属于攻击者的货币。
这是因为节点将不会接受无效的交易,而诚实的节点永远不会接受一个包含了无效信息的区块。一个攻击者能做的,最多是更改他自己的交易信息,并试图拿回他刚刚付给别人的钱

十二、结论
以上11点的总结…
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2026-7-22 12:14 , Processed in 0.109200 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

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