课程链接:https://www.coursera.org/learn/blockchain-basics/home/week/4
本文是自己听课做的笔记,部分翻译可能有问题,望谅解。
信任基础 Trust Essentials
目录
编程作业 Getting Started with Blockchain Ethereum
区块链基础知识:要点 Blockchain Basics: Key Takeaways
分布式系统 Decentralized Systems
在上一个模块中,我们了解了如何使用公钥加密和哈希来验证交易和区块。
本周学习目标:
1)能够定义区块链中的信任元素,安全性,验证,验证和共识。
2)讨论共识协议,一种添加新块并保护链的算法方法;
3)解释信任和主链的鲁棒性;
4)说明在处理硬分叉和软分叉等特殊情况下的信任。
分散的区块链中的信任涉及到保护、验证、验证和确保交易执行所需的资源可用。
这是通过使用特定协议保护链,验证交易和防篡改块,验证交易资源的可用性以及执行和确认交易来实现的。
信任跟踪 Trust Trail
由以下操作定义:
验证事务;验证相应的资源;收集事务; 执行事务以获取新状态;形成区块, 为达成共识而努力;由挖矿人完成该区块, 每个人都把这个区块添加到他们的链中并确认交易。
步骤一和步骤二是验证事务并检查资源。如模块一所述,在以比特币为例的情况下,类似于在以太坊交易中一样,在验证交易之前,必须检查大约20条标准。语法,交易签名,时间戳,随机数,气体限额和发送方帐户余额在执行前先经过验证。还验证了可用于智能合约执行的 gas 或 gas point 以及其他资源。交易签名和哈希也将得到验证。
第三步是执行交易。计算验证交易的 Markle 树哈希。这是在以太坊中。这是区块头的事务根。所有矿工都执行交易以进行转移或执行智能合约。由事务执行产生的状态用于计算状态的 Merkle 树哈希,即块头的状态根 state root 。还计算块标题的接收根 receipt root。
阅读材料:
Blockchain Based Trust & Authentication For Decentralized Sensor Networks
How the Blockchain will Radically Transform the Economy
测试题:
共识协议 Consensus Protocol
安全链是具有一致状态的单一主链。添加到这个链中的每个有效块都会增加链的信任级别。矿工们都在竞争,都在竞争把他们的区块加到链条上。
如果每个人都想将候选块添加到链中,该怎么办?
每个候选块都由一个竞争的矿工提供。下一个添加到链中的块是什么?
他们能为下一个区块达成一致吗?是否有选择下一个区块的方法或协议?
工作量证明 Proof of Work
工作证明使用哈希。
我们现在将讨论在比特币和以太坊中使用的工作证明。这是从矿工的角度来看的。
1)首先,计算块头元素的哈希值,是一个固定值,和nonce值,是变量。如果 对于比特币其哈希值小于2 par 128,对于以太坊其哈希函数小于难度函数,那么难题就解决了。如果尚未解决,请在更改 nonce 值后重复该过程。
2)如果难题已经解决,则广播能够由其他矿工验证的获胜区块。未成功的矿工节点将新块添加到链的本地副本中,然后继续处理下一个块。获胜者将获得创建区块的奖励。
工作量证明是比特币区块链以及当前版本的以太坊使用的共识协议 Consensus Protocol 。 协议可能相同,这两个区块链中的实现方式不同。 已经提出了许多其他方法,例如权益证明 Proof of Stake,经过时间证明 Proof of Elapsed Time。
阅读材料:
A (Short) Guide to Blockchain Consensus Protocols
Review of blockchain consensus mechanisms
Blockchain Expert Explains One Concept in 5 Levels of Difficulty | WIRED
测试题
鲁棒性 Robustness
鲁棒性是令人满意地处理异常情况的能力。
区块链过程中可能出现的一些异常:
1)如果有多个矿工解决了共识难题,并且该难题在时间上彼此接近,该怎么办?
2)如果多个交易引用相同的数字资产怎么办? 这种情况称为双重支付(双花) double spending 。
针对1),比特币协议允许在下一个周期将此链拆分为两个链,由各自竞争区块领导。下一个区块同时出现在这两条链上的概率非常低。因此,下一个区块创建周期的获胜者将巩固其中一条链,该链将成为可接受的链。在本例中,最新的块被添加到主链中。 其他块中的交易将返回到未确认池。
针对这个非常低概率的异常:链可能会分裂,但如果分裂,比特币协议有方法在一个周期内将其合并为一个单一链。
---->
以太坊会为不止一人,如之前提到过的 Omar or Runner-Up blocks 提供一些小奖励,这种激励模式帮助维护链的安全。新区块将只会被添加到主链,Runner-up blocks将被维持再多6个区块的状态。
在链条里面越深的那个区块,比新加的那个更值得信任。
针对2),双重支付问题,数字货币和其他消耗品有可能是一次性使用的数字资产,可以有意或无意地在交易中重用。就像航空公司在航班上重复预订座位一样。
在像区块链这样的去中心化网络中,没有中介。 我们需要一种策略和一种自动确定性的方式来处理这种情况。
处理比特币交易和双倍支出的政策是允许引用数字资产的第一笔交易,拒绝引用同一数字资产的其余交易。
在以太坊中,帐号 account number 和全局随机数 global nonce 的组合用于解决双重消费问题。每次由帐户启动交易时,都会在交易中包含一个全局随机数。 之后,随机数增加。 交易中随机数上的时间戳记应该唯一且经过验证,以防止重复使用数字资产。
总结,定义良好的异常处理流程可提高对区块链的信任度。
阅读材料
How The Blockchain Is Redefining Trust
测试题
分叉 Forks
2018年是以太坊区块链硬分叉的一年。at the block 4.7 million。
有时,通常必须通过将新软件引导到已经运行的进程来执行较小的进程调整。 这是软分叉 soft fork 。 例如,使用此方法引入了比特币中的scrypt概念。 您可以将其视为解决问题的软件补丁或错误修复。
硬分叉 Hard fork 意味着协议中的重大变化。 例如,最近从 Ethereum Homestead 到 Metropolis Byzantium version 的更改是计划中的硬分叉,并且是在硬分叉之后新兴的两条链不兼容之后的重要说明。
请注意这一点。在Ethereum协议、Ethereum Core和Ethereum Classic split中出现了一个计划外的硬分叉,为解决分散自治组织decentralized autonomous organization (DAO)中的一个关键软件问题。这导致了数百万美元的损失。
让我们来讨论一下发生在2017年10月17日的硬分叉。
以太坊硬分叉是计划中的分叉。 这里有一些关于以太坊的并行处理交易的以太坊改进建议 Ethereum improvement proposals(EIP)。工作证明共识仍然存在,只是每百个区块(权益证明共识协议)用于评估后者。 并将小额奖励从5个以太币减少到3个以太币。 这些只是几个EIP。 您可以查看其他EIP的文档。
总结:
区块链一词中的软分叉和硬分叉分别类似于软件补丁的发布和操作系统的新版本。
分叉是增加区块链框架鲁棒性的机制。 管理完善的分支通过提供管理意外故障和计划的改进的方法,有助于在区块链中建立信誉。
阅读材料
Have Blockchain Forks Shown Hayek to be Right or Wrong?
Split on Forks? Blockchain Leaders Learn Tough Lessons from Bitcoin Scaling
Bitcoin, Blockchain Forks & Lightning
测试题
周测验
![](https://i-blog.csdnimg.cn/blog_migrate/96bc5cc4ca14f5f005d557bc762a2b58.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6d6c211fa1ab4e041a6deb92ec57a78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5dbb7892ce1d45fa9973a69a93c6505d.png)
编程作业 Getting Started with Blockchain Ethereum
注:
按步骤在VM box中打开Ethereum时遇到的问题:call to whvsetuppartition failed: error_success (last=0xc000000d/87) (verr_nem_vm_create_failed).
采取的方法:CMD > bcdedit /set hypervisorlaunchtype off 然后重启计算机。
作业内容在虚拟机里完成相应操作即可。
区块链基础知识:要点 Blockchain Basics: Key Takeaways
算法与技术
椭圆曲线密码学(ECC)系列算法在比特币以及以太坊区块链中用于生成密钥对。
Rivest-Shamir-Adelman(RSA)是除区块链之外的许多应用程序中公私钥的常用实现,因为它需要更高效,更强大的算法。
哈希将任意长度的输入数据值转换并映射到唯一的固定长度值。
以下是哈希函数的两个基本要求。
- 确保不能从哈希值导出哈希的原始项目。
- 确保哈希值唯一地代表哈希的原始项目。
哈希和加密的组合用于保护区块链的各种元素。 私钥-公钥对和哈希是在信任边界之外运行的分散网络中的重要基础概念。
非对称加密技术使用公私钥对对数据进行加密和解密。
信任要点
通过对配对的数据(叶子)进行哈希,然后对结果进行配对和哈希,直到剩下单个哈希,从而构造Merkle树
工作量证明是一种旨在阻止网络攻击的协议,例如分布式拒绝服务攻击(DDoS),其目的是通过发送多个虚假请求来耗尽计算机系统的资源。
定义良好的异常处理流程可提高对区块链的信任度。
分叉是增加了区块链框架鲁棒性的机制。
管理完善的分支通过提供管理意外故障和计划的改进的方法,有助于在区块链中建立信誉。
区块链世界中的软分叉和硬分叉分别类似于软件补丁的发布和操作系统的新版本。
软分叉是其中协议的更新版本向后兼容先前版本的叉子。
硬分叉是协议的更改,与旧版本的客户端不向后兼容。参与者绝对需要升级他们的软件才能识别新块。
Ommer blocks有助于主链的安全,但不被视为特定链高的规范“真相”。