比特币技术分享
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
比特币的解决方案
交易信息应当被公开宣布(publicly announced)。 整个系统内的所有参与者,都有唯一公认的历史交易序列。 收款人需要确保在交易期间绝大多数的节点都认同该交易是首次出 现。
AntShares.com
3
共识机制
工作量证明,可追溯不可篡改,挖矿
AntShares.com
3
其它节点将该区块加入到区块链, 并以此作为当前区块,制造新的 区块以延长该链条。节点始终都 将最长的链条视为正确的链条。
1
中。
2
收录交易
3
当一个节点找到了一个工作量证明,它就 向全网进行广播。当且仅当包含在该区块
4
广播区块
5
如果有两个节点同时广播不同版本的新区块,那么其 他节点在接收到该区块的时间上将存在先后差别。当 此情形,他们将在率先收到的区块基础上进行工作,
点对点支付,去中心化,防止双重支付,交易记录不可更改
AntShares.com
1
比特币解决的问题
点对点支付,去中心化,防止双重支付,交易记录不可更改
数字货币
比特币是一种数字货币,通过网络来支付,相比纸币等传统 货币具有很大的灵活性。
点对点支付
比特币可以像纸币一样进行点对点支付,无需可信的第三方 介入。
既得利益使得算力巨头倾向于维护系统而不是破坏,因其收益均建立在比 特币系统之上,既得利益者断然不会搬石头砸自己脚。甚至很多巨头在达 到一定算力占比后会主动控制算力增长,使得低于某阈值内。
AntShares.com
6
其它特性
比特币所具备的其它有用特性
AntShares.com
6
其它特性
比特币所具备的其它有用特性
AntShares.com
5
攻击与算力竞争
节点可以诚实也可以不诚实
算力巨头
挖矿是一项专业劳动,最后必然会交给最专业的人或团队,因为这样才能 实现资源配置最优,效率最高。看似中心化的背后其实依然是分散的: 1. 2. 矿业公司的背后是无数分散的投资人 矿池背后是无数分散的个体算力
全网算力分布
全网算力的上升对比特币是极其有利的,这是毫无疑问的。但目前大 矿池与矿业巨头使得算力高度集中化,这与中本聪所设想的一CPU一 票(one-CPU-one-vote)的分散局面背道而驰,或许是他未曾预料的。
AntShares.com
6
其它特性
比特币所具备的其它有用特性
价值的组合与分割
• • 为了使得价值易于组合与分割,交易被设计为可 以纳入多个输入和输出。 一般而言是某次价值较大的前次交易构成的单一 输入,或者由某几个价值较小的前次交易共同构 成的并行输入,但是输出通常只有两个:一个用 于支付,另一个用于找零。 虽然一笔交易依赖于之前的多笔交易、这些交易 又各自依赖于多笔交易,但这个工作机制并不需 要展开检验之前发生的所有交易历史。
要进行一次散列运算即可。
算力巨大
除非重新完成相当的工作量,否则该区块的信
息就不可更改。由于之后的区块是链接在该区
块之后的,所以想要更改该区块中的信息,就 硬件的运算速度在高速增长,且节点参与网络 的程度会有所起伏。如果区块生成的速度过快, 那么系统将自动提高区块的难度,从而保证了
不可更改
还需要重新完成之后所有区块的全部工作量。
共识机制
工作量证明,可追溯不可篡改,挖矿
工作量证明(Proof-of-Work)
1. 将一段时间内的交易放入一个区块中 2. 通过不断改变区块中的随机数,来尝试 碰撞出一个符合要求的区块散列值 3. 一旦找到符合要求的散列值,即认为完 成了一次工作量证明,该区块中的交易 将被记录在账本中 4. 将上一个区块的散列值放入下一个区块 中,形成一个链条(区块链)
701,437,6 05 全网算力庞大
GH/s
1. 2.
3. 4. 5.
节点可以诚实也可以不诚实。对于不诚实节点来说,结局是无奈的— —能且只能加入主干挖矿——即转变为诚实节点。
所有节点均独自挖矿不理会其他节点,并将所得收益放入自己口袋。 一些节点肯定会联合起来一起挖某个分支,试图成为最长的分支或保 持最长分支优势。 一旦出现有少量的节点联合,那么其他节点必然会效仿,否则他们收 益为零的风险会变大。 联合起来的小集团会慢慢合并成大集团,最终,只会存在一个最长的 分支,就是主干分支。 对于不诚实节点来说,结局是无奈的:能且只能加入主干挖矿。
防止双重支付
传统的数字货币难以在没有可信第三方的情况下防止双重支 付。
交易记录不可更改
交易一旦成功,就永远无法撤销或更改,保障收款方的利益。
AntShares.com
2
交易流程
私钥,公钥,散列值,地址
AntShares.com
2
交易流程
私钥,公钥,散列值,地址
比特币账户(地址)的产生
• 通过随机数发生器生成一个256bit的随机数,并使用该随机数作为 账户的私钥。 • 比特币采用椭圆曲线签名算法(ECDSA)来对数据进行签名和验 证,具体使用的是secp256k1曲线。通过ECC乘法可以计算出对 • •
AntShares.com
5
攻击与算力竞争
节点可以诚实也可以不诚实
AntShares.com
5
攻击与算力竞争
节点可以诚实也可以不诚实
对工作量证明的攻击
• 攻击者无法凭空创造价值或者捏造交易,最多是 更改他自己的交易信息,并试图拿回他刚刚付给 别人的钱 如果攻击者算力小于诚实节点算力,那么攻击成 功的概率随区块链的延长而指数化下降 激励系统有助于鼓励节点保持诚实。如果有一个 贪婪的攻击者能够调集比所有诚实节点加起来还 要多的算力,那么他就会发现,诚实工作能够使 他拥有更多的电子货币,而不是破坏这个系统使 得其自身财富的有效性受损。
现的电子现金系统,它使得在线支付能够
直接由一方发起并支付给另外一方,中间 不需要通过任何的金融机构。虽然数字签 名(Digital Signatures)部分解决了这个 问题,但是如果仍然需要第三方的支持才
能防止双重支付(double-spending)的
话,那么这种系统也就失去了存在的价值。
1
比特币解决的问题
•
攻击者的成功概率
通过计算我们可以得出,攻击成功的概率因为区块数的增长而呈现指 数化下降。由于概率是攻击者的敌人,如果他不能幸运且快速地获得 成功,那么他获得成功的机会随着时间的流逝就变得愈发渺茫。
•
AntShares.com
5
攻击与算力竞争
节点可以诚实也可以不诚实
算力竞争
按照规则运作的节点,称为诚实节点,节点可以诚实也可以不诚实。我们 假定:所有节点都是理性的,追求收益最大化;且都是不诚实的,不惜任 何手段获取利益。那么:
交易进行验证。
AntShares.com
2
交易流程
私钥,公钥,散列值,地址
1
签名
发送者对交易进行签名
2
广播
发送者将签名后的交易 广播到比特币网络
3
验证
接收者对交易及签名进行验证
AntShares.com
2
交易流程
私钥,公钥,散列值,地址
有一个问题
双重支付怎么办?
通过数字签名虽然可以证明一笔交易的合法性,但是 仍然无法阻止支付者构造两笔或多笔同时具有合法签 名的交易,把同一笔钱支付多次。
需要补充接收离开期间的工作量证明链条即可。
也就是说,公众难以确信,这些人究竟是谁。
智能合约
比特币可以在一定程度上实现智能合约。此时,接收比特币
的收款地址将是一个合约脚本的散列值,而不是公钥的散列 值;而验证合约地址发出的交易,需要执行合约的脚本内容。
信息载体
比特币的区块链可以承载一部分的外部数据信息。通过构造
回收硬盘空间
• • • 交易信息被随机散列时,被构建成Merkle树。 通过剔除Merkle树的分支来压缩区块。 不含交易信息的区块头大小仅有80字节,每年产 生的数据为4.2MB,足以放入内存。
从区块中剔除古老的交易
如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该 交易之前的数据,以回收硬盘空间。为了同时确保不损害区块的随机 散列值,交易信息被随机散列时,被构建成一种Merkle树(Merkle tree)的形态,使得只有根(root)被纳入了区块的随机散列值运算。
比特币技术分享
PRESENTED BY OfficePLUS
BUSINESS REPORT
AntShares.com
CONTENTS
比特币: 一种点对点的电子现金系统
比特币解决的问题
交易流程 共识机制 网络运行过程 攻击与算力竞争 其它特性
AntShares.com
中本聪提出了一种完全通过点对点技术实
每小时生成区块的数量为某一预设的平均数。
自动调节
完成工作量证明需要消耗大量的电力,因此对 每个区块的第一笔交易进行特殊化处理,该交 易产生一枚由该区块创造者拥有的新的电子货
激励机制
币作为奖励。另外一个激励来源则是交易费。
AntShares.com
3
共识机制
工作量证明,可追溯不可篡改,挖矿
比特币的挖矿奖励 每四年就会减半
5,000nodes
分布式账本的共识机制
比特币是一种分布式账本,由于网络延迟、地域原因、不诚实节点等 问题,每个参与者的视角都不一样。需要一种共识机制来确保所有参 与者都具有统一的账本和相同的交易序列。
AntShares.com
3
共识机制
工作量证明,可追溯不可篡改,挖矿
寻找一个符合难度要求的区块散列值非常困难, 需要不断地进行散列碰撞。而检验一个区块的 散列值是否符合难度要求,则非常容易,只需
•
AntShares.com
6
其它特性
比特币所具备的其它有用特性
还有什么?
灵活性
节点之间的工作大部分是彼此独立的,只需要很少的协同。 节点可以随时离开网络,而想重新加入网络也非常容易,只
隐私性
公众得知的信息仅仅是某个人将一定数量的货币发送给了另 外一个人,但是难以将该交易同某个特定的人联系在一起,
特定的交易输出额、将数字摘要的Hash作地址输入、利用 比特币脚本的OP_RETURN指令等方式,都可以将额外的数 据保存到区块链。此外,新的区块链应用通常都会在交易结 构中预留一个外部数据的字段供用户使用。
AntShares.com
THANK YOU!
感谢聆听
Presented by AntShares
AntShares.com
AntShares.com
2
交易流程
私钥,公钥,散列值,地址
如何防止双重支付
通常的解决方案
• 引入信得过的第三方权威,或者类似于造币厂的机构,来对每一笔 交易进行检验,以防止双重支付。 • • 造币厂获悉所有的交易,并且决定了交易完成的先后顺序。 该解决方案的问题在于,整个货币系统的命运完全依赖于运作造币 厂的公司,因为每一笔交易都要经过该造币厂的确认。 • • •
总结
通过私钥可以推导出一切,是操纵该比特币账户的所有权利,所以 必须妥善保管好私钥,不能泄漏。 公钥的散列值与地址之间通过base58编码来相互转换,所以两者 是等价的。
应的公钥。
• • 对公钥进行两次散列运算,得到公钥的散列值。 公钥散列值加上版本号和校验码后,进行base58编码可得到地址。
• 比特币的发送者使用私钥来对交易进行签名,接收者使用公钥来对
AntShares.com
4
网络运行过程
比特币网络的运行过程
AntShares.com
4
网络运行过程
比特币网络的运行过程
广播交易
新的交易向全网进行广播。只要 交易能够抵达足够多的节点,那 么它们将很快被整合进一个区块
制造区块
作量证明。
每个节点都尝试在自己的临时区
块中找到一个具有足ຫໍສະໝຸດ Baidu难度的工
链接区块
每一个节点都将收到的交易信息 纳入内存中的一个临时区块中。
中的所有交易都是有效的且之前未存在过, 其他节点才认同该区块的有效性。
但也会保留另外一个链条,以防后者变成最长的链条。
该僵局的打破要等到下一个工作量证明被发现,而其 中的一条链条被证实为是较长的一条,那么在另一条 分支链条上工作的节点将转换阵营,开始在较长的链 条上工作。