区块链技术琢磨
一直以来一个人琢磨了些区块链技术相关基础知识的整理和分享,一个人琢磨有很大的局限性,年前大胆设想聚集了些同学、朋友。大家一块利用闲暇时间琢磨些区块链技术相关内容。接下来所有的关于区块链技术知识的分享,都属于区块链技术琢磨。
有兴趣一块来琢磨的可以添加文末尾我的微信,一块交流学习,参与折腾项目的同学,则希望在不影响工作和学习的前提下,有一定的输出。
原则:
1.不影响正常工作学习,利用空余时间,折腾琢磨一些区块链技术。
2.不作为商用,大家兴趣琢磨,故没有相应报酬,一切以兴趣为主。
3.我们有学生、有专业从事区块链一线开发的工程师、有各类目前没有从事区块链行业但对区块链技术有兴趣的人。
目的是学习,实践。
以太坊白皮书-1
区块链相关的各类项目,一般都从阅读白皮书开始,耐心读一遍白皮书,了解清楚思路,还是十分必要的。(阅读规则:解读会有 注:原文和注:分段)
这里简单对以太坊白皮书作一次阅读,以太坊白皮书由巨蟹、少平翻译。
以太坊-(Ethereum):下一代智能合约和去中心应用平台。
注: 如果把bitcoin作为一个具体的交易应用系统来看待的话,那么ethereum就更类似我们常用的电脑终端的win或者linux操作系统。基于ethereum开发相关实际的应用。
当中本聪在2009年1月启动比特币区块链时,他同时向世界引入了两种未经测试的革命性的新概念。第一种就是比特币(bitcoin),一种去中心化的点对点的网上货币,在没有任何资产担保、内在价值或者中心发行者的情况下维持着价值。到目前为止,比特币已经吸引了大量的公众注意力, 就政治方面而言它是一种没有中央银行的货币并且有着剧烈的价格波动。然而,中本聪的伟大试验还有与比特币同等重要的一部分:基于工作量证明的区块链概念使得人们可以就交易顺序达成共识。作为应用的比特币可以被描述为一个先申请(first-to-file)系统:如果某人有50BTC并且同时向A和B发送这50BTC,只有被首先被确认的交易才会生效。没有固有方法可以决定两笔交易哪一笔先到,这个问题阻碍了去中心化数字货币的发展许多年。中本聪的区块链是第一个可靠的去中心化解决办法。现在,开发者们的注意力开始迅速地转向比特币技术的第二部分,区块链怎样应用于货币以外的领域。
注: bitcoin是区块链技术的第一个应用,先有bitcoin才有被重视的bitcoin底层基础架构-区块链。应该区分数字货币和区块链两个概念。现在以区块链技术为基础设计的数字货币称为加密数字货币。Bitcoin中的基于工作量证明共识机制起源于垃圾邮件过滤。中本聪运用在bitcoin系统中,巧妙实现了去中心化系统中防止双花交易的出现。这种共识机制也理解为保证了区块链系统的安全性,目前公链基本使用都是这种共识机制,但是由于bitcoin的pow机制需要大量的算力支持,故出现了大量的资源的浪费。Bitcoin称为区块链技术的1.0,现在扩展到数字货币之外,实现图灵完备特性,结合智能合约,适用更多的应用场景,称为区块链技术2.0。
常被提及的应用包括使用链上数字资产来代表定制货币和金融工具(彩色币),某种基础物理设备的所有权(智能资产),如域名一样的没有可替代性的资产(域名币)以及如去中心化交易所,金融衍生品,点到点赌博和链上身份和信誉系统等更高级的应用。另一个常被问询的重要领域是“智能合约”- 根据事先任意制订的规则来自动转移数字资产的系统。例如,一个人可能有一个存储合约,形式为“A可以每天最多提现X个币,B每天最多Y个,A和B一起可以随意提取,A可以停掉B的提现权”。这种合约的符合逻辑的扩展就是去中心化自治组织(DAOs)-长期的包含一个组织的资产并把组织的规则编码的智能合约。以太坊的目标就是提供一个带有内置的成熟的图灵完备语言的区块链,用这种语言可以创建合约来编码任意状态转换功能,用户只要简单地用几行代码来实现逻辑,就能够创建以上提及的所有系统以及许多我们还想象不到的的其它系统。
注:区块链技术扩展至更多领域,不单单是加密数字货币,基于ethereum开发相应应用,链接至实际应用场景。智能合约,code is law,通过代码来约束控制整个流程。图灵完备,一切计算都可以通过计算机来实现,对比bitcoin脚本语言,不具备图灵完备,ethereum实现了图灵完备。去中心化的自治公司(DACs),去中心化自治组织(DAOs),ethereum的出现让这两种概念开始重视,为数字化的自治公司或者组织构建基础架构和协议。基于智能合约的系统会包含有互相联系的合约网,然后合约自动执行,实现某些约定自动执行。一个ethereum的DAO实现自治,那么就能实现独立自主的经营,事先约定相应规则,避免了人为的干预,通过运行代码对外提供服务,自动、自治。
目录
·历史
·作为状态转换系统的比特币
·挖矿
·默克尔树
·替代区块链应用
·脚本
·以太坊
·以太坊账户
·消息和交易
·以太坊状态转换功能
·代码执行
·区块链和挖矿
·应用
·令牌系统
·金融衍生品
·身份和信誉系统
·去中心化文件存储
·去中心化自治组织
·进一步的应用
·杂项和关注
·改进版幽灵协议的实施
·费用
·计算和图灵完备
·货币和发行
·挖矿的中心化
·扩展性
·综述:去中心化应用
·结论
·注解和进阶阅读
历史
去中心化的数字货币概念,正如财产登记这样的替代应用一样,早在几十年以前就被提出来了。1980和1990年代的匿名电子现金协议,大部分是以乔姆盲签技术(Chaumian blinding)为基础的。这些电子现金协议提供具有高度隐私性的货币,但是这些协议都没有流行起来,因为它们都依赖于一个中心化的中介机构。1998年,戴伟(Wei Dai)的b-money首次引入了通过解决计算难题和去中心化共识创造货币的思想,但是该建议并未给出如何实现去中心化共识的具体方法。2005年,芬尼(Hal Finney)引入了“可重复使用的工作量证明机制”(reusableproofs of work)概念,它同时使用b-money的思想和Adam Back提出的计算困难的哈希现金(Hashcash)难题来创造密码学货币。但是,这种概念再次迷失于理想化,因为它依赖于可信任的计算作为后端。
注:bitcoin的出现不是突然的,而是之前各种摸索后,中本聪结合了各种成熟技术后产生。作为一种点对点现金支付系统,防止双花是最为关键的一个要素,之前依赖于可信任的计算,bitcoin中使用pow机制解决。
因为货币是一个先申请应用,交易的顺序至关重要,所以去中心化的货币需要找到实现去中心化共识的方法。比特币以前的所有电子货币协议所遇到的主要障碍是,尽管对如何创建安全的拜占庭问题容错(Byzantine-fault-tolerant)多方共识系统的研究已经历时多年,但是上述协议只解决了问题的一半。这些协议假设系统的所有参与者是已知的,并产生如“如果有N方参与到系统中,那么系统可以容忍N/4的恶意参与者”这样形式的安全边界。然而这个假设的问题在于,在匿名的情况下,系统设置的安全边界容易遭受女巫攻击,因为一个攻击者可以在一台服务器或者僵尸网络上创建数以千计的节点,从而单方面确保拥有多数份额。
注:拜占庭问题容错解释:
主节点0开始对请求排序编号,并把请求序号发送到1、2、3节点。
1、2节点互相之间和0主节点之间发送消息。
0、1、2、之间确认0主节点的分配序号,互相确认。
0、1.、2、确认信息回复C。
客户端C判断收到确认是否在f+1内,确认结果。
三个阶段达成共识:Pre-Prepare、Prepare 和 Commit,整个流程如下:
1.从全网节点选举出一个主节点(Leader),新区块由主节点负责生成。
2.每个节点把客户端发来的交易向全网广播,主节点将从网络收集到需放在新区块内的多个交易排序后存入列表,并将该列表向全网广播。
3.每个节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,基于交易结果计算新区块的哈希摘要,并向全网广播。
4.如果一个节点收到的2f(f为可容忍的拜占庭节点数)个其它节点发来的摘要都和自己相等,就向全网广播一条commit消息。
5.如果一个节点收到2f+1条commit消息,即可提交新区块及其交易到本地的区块链和状态数据库。
女巫攻击:在大多数网络中,例如P2P网络,我们都假设每一个节点拥有一个确定的身份。但是,当一个恶意节点声称自己有多个身份的时候,并欺骗信誉系统,使其相信它拥有不成比例的巨大影响力时,他就在发起女巫攻击。如何在网络中识别女巫攻击,对保证系统安全十分重要。
中本聪的创新是引入这样一个理念:将一个非常简单的基于节点的去中心化共识协议与工作量证明机制结合在一起。节点通过工作量证明机制获得参与到系统的权利,每十分钟将交易打包到“区块”中,从而创建出不断增长的区块链。拥有大量算力的节点有更大的影响力,但获得比整个网络更多的算力比创建一百万个节点困难得多。尽管比特币区块链模型非常简陋,但是实践证明它已经足够好用了,在未来五年,它将成为全世界两百个以上的货币和协议的基石。
注:bitcoin十分钟生成区块是一个平均时间。20160区块后根据时间平均值调整难度。
作者微信:
领取专属 10元无门槛券
私享最新 技术干货