区块链的10 20 30时代
区块链官方定义:数据以区块来存储,并且通过哈希的方式把一个个区块连接起来,形成了一个区块的链条,称之为区块链。
今天给大家分享关于区块链的前世今生,并附上一点个人对区块链未来发展的观点。
前世:
密码朋克(Cypherpunk)
"密码朋克"是一套加密的电子邮件组,这个组里面的成员有:
维基解密创始人阿桑奇
BT下载的作者布莱姆-科恩
www万维网的发明者蒂姆伯纳斯-李
智能合约概念提出者:尼克萨博
Facebook创始人:肖恩帕克
比特币之父:中本聪
在密码朋克组里面,讨论的话题有数学、加密技术、计算机技术、数字货币等等,尤其是关于数字货币的讨论,给了中本聪很多的灵感和技术的铺垫。
2008年,中本聪发布比特币白皮书
2008年,美国发生次贷危机,进而引发全球性的金融危机,各国法定货币大幅贬值,此时,一个自称中本聪的人或者组织在网络上发表了一篇论文。现在称区块链项目相关论文为白皮书。这篇白皮书描述了一个全新的数字货币系统-比特币。比特币解决了在完全没有中心机构的情况下,总量恒定的货币发行与流通问题。通过比特币系统进行转账,公开透明。可以放心的将比特币转给地球另一端的人。每一笔的转账信息都会被全网记录,比特币白皮书的问世标志着比特币的底层技术-区块链的诞生。
2009年,比特币创世区块诞生
在区块链系统中,第一个区块称之为创世区块,比特币创世区块的诞生也标志着以区块链为底层技术的比特币系统真正的落地。
2010年,10000个比特币买了一个披萨
这标志着比特币真正进入流通领域,行驶货币职能。现在看来,这是世界上最贵的一披萨,现在比特币价格在3w人民币上下,10000个比特币价值3亿人民币。
在随后的几年中,比特币得到比较快速的发展,越来越多的组织机构开始接受比特币支付,并出现了很多类似比特币的竞争品,如莱特币、无限币、夸克币、泽塔币、元宝币、银通币...,这些都是在比特币代码上稍作修改而成,应用领域也是和比特币一样,主要在货币与支付领域。
以上称之为区块链1.0时代。
2013-2014以太坊
2013年年末,以太坊创始人VitalikButerin发布了以太坊初版白皮书,并与2014年正式启动以太坊的创建,以太坊和比特币最大的差别在于引入了对图灵完备智能合约的支持,使人们可以几乎将任何业务逻辑以合约的形式写入区块链,在以太坊之前,你要发行自己的数字货区需要搭建一个独立的区块链网络,现在只需要写一个100多行的智能合约代码并部署到以太坊就好了,以太坊智能合约的出现将区块链带入了2.0时代,极大扩展了人们对以太坊的想象空间。
基于以太坊,人们先后搭建了以太坊众筹、区块链保险、区块链游戏、去中心化交易所等各个方向的应用。
2015年R3成立
R3是一个区块链联盟组织,主要成员都来自于世界各地的大中型银行,这标志着区块链技术引起了传统金融机构的关注与重视。
2018年EOS与其它
2018年,区块链受到的关注越来越高,将区块链应用到社会的更多领域,这个时候人们发现以太坊、比特币等区块链网络的性能实在是太糟糕了。每秒最多能支持数十笔交易,经常发生网络拥挤现象。这个时候EOS,还有其它团队纷纷拿出自己的方案,声称每秒可以支持上千、上万甚至百万笔交易,果真如此的话,将进入区块链3.0时代。
区块链将作为一中重要的基础设施,进入到我们生活的方方面面。
区块链特点
全球进入
全球各国普遍认识到区块链技术潜在的颠覆性应用价值,纷纷从国家战略层面进行关注。各国央行加紧对区块链技术的研究,有些国家甚至推出基于区块链的国家数字货币。
跑步进入
目前各大互联网公司以及金融机构都在加紧区块链行业的布局以及相关产品的研发,facebook成立了区块链部门,国内的bat今年也已经推出了区块链相关产品,京东和阿里将区块链应用到跨境商品的溯源中。
野蛮生长
区块链的发展现在还处于相对比较早期的阶段,行业规范尚未建立,都在按照自己对区块链的理解打造自己的产业及生态。
区块链的应用场景
ICO(数字资产发行)、支付(跨境支付)、交易、结算
股权交易、供应链金融、商业积分
溯源、众筹、医疗证明、存在性证明
共享经济、物联网
匿名交易
技术人员的机会
如何转型做区块链技术?
当前对区块链技术人员有两方面的需求:
(1)区块链底层开发人员
(2)智能合约开发人员
(3)掌握区块链的技术原理
一般来讲,企业在做区块链应用时会选择一个现有的、比较成熟的区块链系统作为研究对象,在此基础上构建自己的区块链底层系统,或者是基于智能合约的去中心化应用,当前比较成熟稳定、被拿来做研究对象的区块链系统主要有两个:超级账本和以太坊
鄙人认为区块链的发展还仅仅只是一个开始,就像互联网的开始,现在主要是对区块链的基础设施的建设,基础设施建设完成,就会有一个井喷的热潮来临,互联网也是在TCPIP协议等各种协议、WWW、互联网等一些基础设施出现,才迅速的传播开来,区块链也一样,所以区块链技术真正的应用起来,估计是在三十年后了。
区块链智能合约入门
WhatisSmartContract:NickSzabointroducedthis conceptin1994anddefinedasmartcontractas“A computerizedtransactionprotocolthatexecutesthetermsofa contract”[5].NickSzabosuggestedtranslatingcontractual clausesintocode,andembeddingthemintopropertythatcan self-enforcethem[6].However,inblockchainsystems,the meaningofsmartcontractshasevolved.Withintheblockchain context,smartcontractsarescriptsrecordedonthe blockchain.(Theycanbethoughtofasroughlyanalogousto recordedproceduresinrelationaldatabasemanagement systems[7].Sincetheyresideonthechain,theyhaveaunique address.Wetriggerasmartcontractbyaddressinga transactiontoit.Itthenexecutesindependentlyand automaticallyinaprescribedmanneroneverynodeinthe network,accordingtothedatathatwasincludedinthe triggeringtransaction[4].
什么是智能合约:NickSzabo在1994年引入了这个概念,并将智能合约定义为“执行合约条款的计算机交易协议”[5]。NickSzabo建议将合同条款翻译成代码,并将它们嵌入到可以自我执行的财产中,[6]。然而,在区块链系统中,智能合约的含义已经发生了变化。在区块链上下文中,智能合约是区块链上记录的脚本。(可以认为它们大致类似于关系数据库管理系统[7]中的记录过程。因为它们位于链上,所以它们有一个唯一的地址。我们通过寻址一个交易来触发智能合约。然后,根据触发事务[4]中包含的数据,在网络中的每个节点上以规定的方式独立、自动地执行。
Blockchainbasedsmartenergytradingplatformusingsmartcontract
DevelopLeaveApplicationusingBlockchainSmartContract
SolidityisaContractOrientedLanguage,usedforwritingsmartcontractswhichcanbedeployedonEVM.Itfollowsanobject-orientedapproachandsupportfeatureslikeinheritance,complexdatatypesamongmany.
solid是一种面向契约的语言,用于编写可部署在EVM上的智能契约。它采用面向对象的方法,并支持继承、复杂数据类型等特性。
Truffleisadevelopmentenvironmentandatestingframe-work.ThishelpsintheautomaticcompilationanddeployingofcontractonBlockchainwithoutmuchproblem.ItalsohelpswhilemakingmigrationinBlockchain.FinallyusingtrufflewedeployedthecontractonaprivateEthereumBlockchain.DeployingthecontractonBlockchainisalsoatransactionandhencerequiredetherwhichcanbeobtainedbysimplydoingminer.start(1)inyourgethconsole.(Note:RememberthedifficultyparameterwetalkedaboutinGenesisfile,thevalueoftheparametershouldbelessorelseitwillbecomeapainforyoutomineether).
Truffle是一个开发环境和测试框架。这有助于在区块链上自动编译和部署contract,没有太多问题。它也有助于在区块链中进行迁移。最后,我们使用truffle将合同部署在私有以太坊区块链上。在区块链上部署契约也是一个事务,因此需要ether,可以通过在geth控制台中执行miner.start(1)来获得。(注意:记住我们在Genesis文件中提到的难度参数,参数的值应该更小,否则你挖掘以太会很痛苦)。
EnergyTradingWebPlatformBasedontheEthereumSmartContractsandBlockchaina.结构区块链的结构实际上是一个按创建时间顺序排列的连接块链(图1)。每个块(除了第一个起源块)都通过哈希码与前一个块连接。
B.哈希码哈希码是每个块的唯一字符串,包含特定数量的字符。它是由特殊的哈希算法生成的,其中最常用的是SHA-256(安全哈希算法256)。当创建一个新块时,将执行一个散列算法,产生一个反映块字段当前状态的字符串。这将确保不允许对块中初始验证和存储的信息进行进一步更改。为了改变已经存储在块中的部分信息,它必须反映在链中的所有后续块中。
C.信息存储 去中心化技术和区块链的特点是信息存储在多个设备(节点)上。这进一步强调了区块链信息在初始验证后不能在实践中更改的说法。为了改变某些块中的信息,它必须在所有节点上同时发生。
D.共识协议 在所有设备的电路中存储当前信息的相同副本,实现了数据验证的规则,并添加了一个新的块共识协议。最广泛使用的共识协议之一是证明工作。在这个协议中,区块链的所有参与者都是平等的,都有相同的机会去验证并向链中添加一个新的块。当一个节点成功地将一个块添加到它的本地复制链上时,它必须通过P2P网络将新块的信息发送给所有其他参与者。这样,所有节点信息的一致性都保持为[1]。
E.优点和缺点区块链技术的主要优点是交易时不再需要第三方保证人,在实践中信息一旦输入就无法更改。主要的缺点是需要大量的存储设备。
V. ETHEREUM EthereumisamodernBlockchainbasedtechnologyfor storinginformationinadecentralizedenvironment.Unlike Bitcoin,Ethereumsupportstwotypesofusers:EOAs (ExternallyOwnedAccounts)andcontractaccounts.Both typesofaccountsareidentifiedbyEthereumaddresses.EOAs areuseraccounts(wallets)thataremanagedbytheoutside worldthroughaprivatekey.Contractaccountsdonothavea privatekey,whichmeansthattheycannotbemanagedbythe outsideworld,butonlybytheprogramcontainedinthem, whichrunsinEVM(EthereumVirtualMachine).
以太坊是一种基于现代区块链的技术,用于在去中心化环境中存储信息。与比特币不同,以太坊支持两种类型的用户:EOAs(外部拥有账户)和合同账户。这两种类型的账户都由以太坊地址标识。EOAs是由外界通过私钥管理的用户帐户(钱包)。合约帐户没有私钥,这意味着它们不能由外部世界管理,而只能由其中包含的程序管理,该程序运行在EVM(以太坊虚拟机)中。
A.智能合约一旦上传,智能合约将无法更改。与传统软件不同,改变它们的唯一方法是重新创建它们。它们具有有限的外部信息,例如来自调用它们的事务的信息,以及存储在最后一个块中的一些信息。它们是用高可靠性的面向对象计算机语言开发的(图2)。
B.以太坊的区块链可以是公共的、财团的或私人的。公共区块链是完全去中心化的,对参与共识协议、交易和获取记录信息没有限制。财团区块链是部分去中心化的,某些节点可以参与共识过程。信息的公开可能是有限的。私人的区块链是集中的,参与必须事先批准[2]。
Thearchitectureoftheplatformconsistsofseveralmainparts-client,serverandblockchain.TheclientpartisauserSPA(Single-pageapplication),whichmakestheconnectionbetweenusersandthesystem.Thefollowingtechnologiesandprogramminglanguageswereusedforitsdevelopment-HTML,CSSandJavaScript.ThestorageofinformationintheplatformisimplementedOn-chainandOff-chainandisdistributedbetweentheserverpartandtheBlockchainpart.InformationdirectlyrelatedtotransactionsisstoredontheBlockchain(On-chain).Anyothersecondaryinformation(consumer,historical,etc.)thatdoesnothaveadirectimpactonthetransactionsthemselvesisstoredOff-chain.TherelationaldatabasePostgreSQLwasusedfortheimplementationoftheOff-chainpart,andfortheBlockchainpart-Ganache.
平台体系结构由客户端、服务器端和区块链几个主要部分组成。客户端部分是一个用户SPA(单页面应用程序),它连接用户和系统。开发过程中使用了以下技术和编程语言:HTML、CSS和JavaScript。平台中信息的存储实现了链上和链下,分布在服务器部分和区块链部分之间。直接与交易相关的信息存储在区块链(链上)上。任何其他对交易本身没有直接影响的二级信息(消费者、历史信息等)都在链外存储。链下部分的实现使用了关系型数据库PostgreSQL,区块链部分则使用了Ganache。
比特币的出现是区块链技术实施第一阶段的开始,它只与数字货币相关。第一代区块链建立了这些系统的许多核心功能,这些功能一直保留到今天——区块链网络中的高可扩展性、互操作性、可持续性、安全性、成本效益和治理。第二代区块链始于以太网区块链上智能合同的出现[1,2]。智能合同消除了外部强制执行法律协议的需要。它们是运行在区块链顶端的可自我执行的程序代码,用于管理复杂的业务逻辑。但是区块链的主要问题是扩展和事务处理时间。现在有第三代区块链。新的区块链应用程序(私有和公共)正在各个业务领域不断涌现。智能合同可以在不同的区块链平台上开发和部署,如Ethereum、HyperledgerFabric[3]、Smart、Waves[5]、NXT[6]等。每个平台都提供了开发智能合同的特定功能。
Part1:区块链相关概念
【哈希值】哈希值又叫“数字指纹”,无论多大的数据,经过一番计算后,都可以得到一个固定长度(例如256比特)的哈希值;数据的内容不同,哈希值必然不同,就像人和人不会有相同的指纹。
【区块链】一系列数据块(即区块)连接而成的链条,连接的方式是:其中第N+1个区块中,包含第N个区块的哈希值。而且这样的数据块的链条,同时被分布广泛、数量巨大的服务器节点所存储和维护,每个服务器节点都拥有一份区块链的完整拷贝(即区块链数据的存储是高度冗余的)。
【去中心化(服务器)系统】数量巨大的服务器节点彼此平等,靠某种事先达成的协议来保证大家拥有数据是完全相同的拷贝,它们就构成了一个去中心化系统。而在一个中心化系统中,某个中心节点拥有更高的权力,它负责更新数据,所有其它节点从它那里获得更新后的数据。
【哈希碰撞】计算哈希值的过程是不可逆的,预先给定一个值,如果请你构造出一段数据,希望它的哈希值正好是这个给定值,那么就算你拿最强大的计算机算到天荒地老,也构造不出来。哪怕退一步,只要求你构造一段数据让它的哈希值小于给定值,都需要算很久很久。而且这个构造过程没有任何巧妙的算法可以利用,只能傻傻地去尝试所有可能的数据。这是一个“瞎猫撞到死耗子”的过程,因此被叫做哈希碰撞。
【工作量证明】区块链上的区块,除了包含上一个区块的哈希值(数字指纹)之外,还至少要包括一串无意义的数字,它被称为nonce。改变nonce的值,就可以改变本区块的哈希值。服务器节点尝试不同nonce的值,碰撞出一个足够小的哈希值,这个过程被称为工作量证明。哈希值有多小,就证明你大致尝试过多少个不同nonce。
【共识协议】维护同一个区块链的服务器数量众多,要维护数据的一致性,它们就必须在“谁来决定下一个区块内容”这一问题上达成共识。目前所广泛采用的共识协议是,谁先给自己的区块找到足够小的哈希值来完成工作量证明,谁的区块就是下一个区块。
【孤块】由于服务器的数量太多了,彼此通讯的延迟有大有小,有时候会产生区块链的分叉,比如说甲、乙两台服务器几乎同时找到了工作量证明,那么会导致有的服务器把甲的区块追加到自己所存储的区块链上,其它则追加乙的。这个时候,区块链就出现了甲乙两个分支,在两个分支上都有服务器在持续追加块。为了解决这个问题,共识协议约定,以最长的链为准,即经过一段时间之后,如果在甲分支上追加了的区块的数量大于乙分支,就以甲为准,这个时候乙分支上的块,就成为了孤块,不被系统所承认。
【51%攻击】“以最长链为准”,其合理性在于,最长链上累计的哈希碰撞的工作量最大,相当于服务器之间用哈希碰撞的算力来进行投票,投票选出的链,必然是最长链。只要系统中作恶的坏节点的算力不超过50%,它们就无法累积出最长链。但反过来讲,如果有51%的节点都是坏节点,它们联合起来,能任意决定区块中的内容,破坏整个系统,这就是51%攻击。
【确认数】某一笔交易被加入区块链的某个区块中,称为得到了一次确认。这个区块之后,区块链每被追加一个区块,就增加了一次确认。确认的数量越多,这笔交易所在的块成为孤块的可能性就越低。
Part2:数字货币(特别是比特币)相关概念
【非对称加密】用户生成一对公私密钥,用公钥加密的数据,只能用私钥才能解密;用私钥加密的数据,用公钥才能解密。用户把自己的公钥公之于众,想给他发送秘密信息的人,只需用公钥把信息加密,就不怕信息传递过程中被窃听。私钥必须严格保护起来,不得泄漏。
【数字签名】我希望对外发布一个文件,怎样避免这个文件在传输中被篡改?只需把文件的哈希值用私钥加密,和文件一起对外发布即可。接受者用公钥解密,得到了正确的哈希值,就证明文件的确是我所发布的,因为,一、文件一旦改变,哈希值就会变;二、天下只有我拥有私钥。这个被私钥加密的哈希值,称为数字签名。
【比特币】与区块链一同诞生的现金记账系统,区块链的第一个应用。它的区块中的内容,简单但不准确地说,就是一些这样的记录:“我是公钥为X的账户,我把我拥有的Y个比特币,转给公钥为Z的账户”,以及用X对应的私钥为这条记录加上的数字签名。中本聪于2008年发明比特币,2009年完成比特币的开源代码,2010年后逐渐销声匿迹。很多人怀疑中本聪是某个匿名团体的笔名。
【钱包】数字货币让人真正拥有了财富,只要你保存好私钥,任何暴力机关都无法剥夺你拥有的币。但是,一旦丢失了私钥,你就丢失了这个私钥所对应的所有币,而且无法找回。钱包就是帮助你保存私钥的工具,它可以是软件app,也可以是专门的硬件设备。当你需要给其它人支付数字货币时,钱包帮助你生成支付的记录、对应的数字签名,它还帮你把这些信息广播给负责维护区块链的节点们,请他们把这笔交易记录在区块中。
【挖矿】挖矿是一种发行数字货币的机制,也是对维护区块链的节点们的奖励机制。节点们需要接受用户发送来的交易记录,验证其数字签名,验证用户是否真的有他所声称的币,然后把很多的交易记录打包成一个区块,最后还得进行哈希碰撞以获得工作量证明。它们为系统付出了很多劳动,应该得到奖励。以比特币为例,它开始运作时,每当节点为系统追加一个新的区块(或者说“挖”出了一个新的块),节点就会“凭空”获得50个比特币的奖励,这些币是新发行的或者说新“印刷”出来的。之后,每过大约三年半,奖励就会减半,最终在100多年后会减到0。整个过程中,总共将发行2100个比特币。挖出新块、得到奖励的过程,被形象地称为挖矿。
【矿池和矿工】挖到新区块的关键在于能不能以很高的并行度来进行哈希碰撞,于是有些服务器节点把哈希碰撞的工作“外包”给专门的矿工,自己只负责“接受交易、验证交易、打包交易”这三项任务,这样的服务器就是矿池。矿工专门负责哈希碰撞,一旦矿池挖到了新块,不论这个块究竟是哪个矿工找到工作量证明的,一律和所有的合作矿工按算力大小成比例地分享新块的收益。
【矿场】个人矿工用电脑、手机等设备来进行哈希碰撞,效率很差。为了利用规模效益提升效率,在一些电力廉价的地区,有人投资兴建起了专门的矿场,利用专门定制的硬件设备来进行哈希碰撞,并且聘请专门的工程师来管理众多的设备。
Part3:区块链2.0相关概念
比特币以及和它类似的数字货币被称为区块链1.0,以太坊等支持智能合约的数字货币则是区块链2.0,最后介绍一下和区块链2.0相关的概念。
【智能合约】智能合约类似于数据库中的trigger(触发器),即特定事件出现的时候,自动执行的代码块。通俗地讲,它使得“钱自己会动”。比如说:老公账目上的钱如果超过一定限额,多出来的钱就会流到老婆账目上;公司的员工向某慈善组织捐一定数目的钱,公司会自动捐同样数额的钱。
【Token】这个词很难翻译,有人把它翻译成“代币”,感觉不是很全面,所以还是保留英文原文。它是某种资源、资产、股份在区块链上的表示。笼统地讲一下它的具体实现方法:资源、资产、股份的拥有者,使用自己的密钥为一些数据片段加上签名,这些数据片段就变成了Token,借助智能合约,Token可以被拆分成很多份,分配给很多个账户,以及在账户之间流动。
【ICO(InitialCoinOffering)】一家公司准备新创一种区块链来改变世界,但它没有钱,于是就号召大家给它捐助数字货币如比特币,以太币。同时承诺说,这些捐助的币,将会按比例折换成这个新创链上的数字代币送给大家,等有朝一日这个新链真的改变世界了,新创链上的币将暴涨,大家一起发财。
【IFO(InitialForkOffering)】和ICO很类似,但不是新创一个链,而是说:我们是某个数字货币社区里的用户,我们觉得它不好,现在要分叉这个币、分裂它的社区了!我们分叉很辛苦,因此分叉后的链上,会凭空给我们记录一大笔数字货币的收益。请大家支持我们,支持的方式就是拿比特币,以太币这些硬通货来交换我们手头凭空多出来的收益。
【IMO(InitialMinerOffering)】和ICO很类似,但不是号召大家来换这个新链上的代币,而是号召大家来买这个新链上专用的矿机。大家用矿机挖代币,等代币暴涨,大家就发财了。
【去中心化自治组织】简称DAO(DecentralizedAutonomousOrganization)。试想,如果在一个组织中,货币、资源、资产、股份都变成了区块链上的Token,被链上的智能合约所管理,那么这个组织就可以不依赖于任何中心化的管理机构来运转。这个区块链的底层源代码即为这个组织的法律,冰冷的机器严格无误地执行法律和合约,实现彻底的法制。
区块链2.0的颠覆不仅仅是“钱自己会动”这么简单,而是:实现了资源、资产、股份在比特世界的确权之后,让它们也“自己会动”了。区块链底层技术保证了Token所有权的唯一,满足了利己的人类对“私有权”深入骨髓的渴望。
前一段时间,以太坊上的“加密猫(CryptoKitties)”应用,推出才不到一周时间,人们在那上面养猫就已经花了相当于1000多万人民币的以太币了。这个应用同普通的虚拟宠物App有什么本质的区别吗?就在于里面每一只猫都是唯一的而且产权确定的,不能复制,只能买卖。
什么是区块链技术
比特币与区块链可以互换使用,但它们是两种不同的事物。由于比特币是区块链技术的早期应用,人们无意间开始使用比特币来指代区块链,因而造成了这种误用。但除比特币外,区块链技术还有很多应用。
比特币是一种在没有任何中心化控制的情况下运营的数字货币。最初创建比特币的目的在于在线进行金融交易,但现在已被视为可转换为任何其他全球货币(如美元或欧元)的数字资产。公有比特币区块链网络将创建和管理中心分类账。
比特币网络公有分类账记录所有比特币交易,而世界各地的众多服务器则保存此分类账的副本。这些服务器就像银行。只是每个银行仅了解其客户兑换的资金,而比特币服务器则了解世界上的每一笔比特币交易。
任何拥有闲置计算机的人员均可搭建一台此类服务器,称为节点。这就像是开设您自己的比特币银行,而不是银行账户。
比特币挖矿在公有比特币网络上,成员通过求解加密方程来创建新区块,以挖掘加密货币。该系统将向该网络公开广播每一笔新交易,并在各节点间共享这一信息。每十分钟左右,挖矿者会将这些交易收集到一个新区块中,再将这些新区块永久添加到区块链中,该区块链就像比特币的最终账簿。
由于软件进程的复杂性,因此挖矿需要大量计算资源,并且需要很长时间。作为交换,挖矿者可以赚取少量加密货币。挖矿者相当于记录交易并收取交易费用的现代职员。
该网络上的所有参与者都将使用区块链加密技术,就谁拥有哪些比特币达成共识。