BCH贰虚岁,除了上升152%,还交了如何答卷?

原标题:基于比特币现金BCH二层网络能实现区块链2.0以太坊的智能化吗?

本文改自我在去年九月爱西欧一刀切后发的微博头条文章《区块链技术能够脱离代币独自发展吗?》

去年今日(2017年8月1日),比特币现金(BCH)横空出世,当它最开始被提出的时候,没有人知道这个新生的区块链资产是否有价值,是否能够生存下去。然而时隔一年,它以顽强的生命力就不断和比特币争夺市场的领导权和话语权,甚至命名权。

讲师自我介绍:菜根科技技术总监邢有涛

第0章 引言 现在市场上有不计其数的区块链项目,多如牛毛,各个项目都认为自己是最牛逼的,都声称自己能改变世界。区块链1点零,2点零,3点零,现在已经有项目喊自己是区块链5点零了。在这样下去,区块链250点零也很快就要到了。 我们真的需要那么多的区块链吗?这个世界到底需要一个什么样的区块链。 第1章 以太坊的智能合约 以太坊被称为区块2.0,以太坊的成功,带来了区块链恐怖的创新热潮,无数的区块链操作系统项目被发明出来,都称自己是公链。给整个行业带来了公链之争。如果你做一个区块链项目,如果不能实现以太坊的功能,好像就是一种耻辱的落后。比特币就是被太多人称为落后的技术。 比特币作为一个笨协议是一种耻辱的落后吗?完全不是,基于比特币现金的二层网络可以实现所有以太坊的创新,同时可以保持很低的手续费和无限的可扩展性。 以太坊的做法是将合约代码托管到区块链上,并且要求所有的节点执行计算这些代码。托管到区块链上就可以获得合约代码不可修改,所有节点执行也是必然会产生相同的结果,所以使用代码的用户是不需要单独信任一个节点的,他只需要相信这个以太坊网络,就可以获得确定性结果。这就是我们讲的代码无须信任化,就是不需要单独信任某个单一的节点,甚至是可以自己运行一个非挖矿节点来验证。 我们举个例子会更清晰,在以太坊上执行了一整年的eos众筹合约的基本原理是这样的,用户会向eos的合约地址发以太币,用以购买代币,合约每隔23小时会计算一下收到多少以太币,然后使用200万除以收到的以太币总数,就得到一个以太坊可以买到多少个eos,然后合约就可以计算出每个用户购买到多少代币,最后用户可以调用合约来取回他买到的eos代币。 使用以太坊来执行这个合约得到的好处是,合约代码是托管到以太坊区块链上,公开透明,不可篡改,规则是定死了的,对所有人都是公平的。用户只需要相信以太坊这个网络不会出问题,那就可以通过这个合约来购买eos的代币,保证童叟无欺。 而问题是这样的,手续费很高,以太坊可处理的交易数量非常少,平均每秒太约能处理15到30笔。这个问题是非常大的,可以让使用一种攻击手法来获得更便宜的价格。 eos的众筹是同时在一级市场和二级市场展开的。我们称直接通过eos合约来购买代币称为一级市场,通过交易所来买代币,称为二级市场。 eos的合约是每23小时结算一次,在离结算前10分钟,一般一级市场的价格会大大低于二级市场,然后在最后10分钟内,就会有大量的人涌入进一级市场买币,并且在二级市场卖出,通过这样来实现搬砖套利。 而在这10分钟内,如果有人对以太坊全网发起大量的交易,就可以堵塞整个网络,以防止别人往合约地址里转币,从而维持一级市场的低价。这样的事情发生过非常多次。 前一段时间的佛魔3D也被人通过制造了3分钟的拥堵时间,从而拿走了巨额奖金。 你很难想象在一个金融系统上,可以制造一个禁止所有竞争对手,只有你一个人来操作的事情。试想,如果你在一个交易所,可以禁止所有其他用户3分钟参与交易,只有你来交易的后果吗? 以太坊将所有的合约都托管到主链上,并且在主链上执行必然会带来这样的结果。让我们来看看比特币现金是怎么做的。 第2章 比特币现金的解决方案 比特大陆的姜家志他们在比特币现金上搞了一个虫洞项目,海外也有团队搞了Keoken项目,现在又出来一个bitcointoken,使用的原理都差不多。都是基于比特币现金区块链的二层智能合约平台。 基本原理这样的,所有的合约代码以交易的方式托管到比特币现金主链上,存放在op return字段里,但比特币现金主链并不执行合约代码。合约代码托管在比特币现金主链,就获得了代码的不可篡改性。 而代码的执行则交给虫洞的客户端来执行,虫洞客户端会读取比特币现金主链上的代码,然后执行,并反馈给网络结果,并且将执行结果以交易的方式再次写入比特币现金区块。这样执行的结果也获得了不可逆性。 因为以太坊的合约是所有的矿工节点都会执行并且会得出一个相同的结果,而虫洞协议只是BCH矿工节点不执行合约,而是交给其他节点去执行,请问,这两者的安全性是一样的吗? 第3章BCH二层网络的安全性分析 在安全模型性上,虫洞的安全性和以太坊的安全性也是一样的。在以太坊上,安全模型是这样的。比如我们要在以太坊网络执行1 1这个合约,正确的结果就是2。 以太坊的矿工,在挖到一个区块后,就会执行这个合约,他执行的结果必然是2,但他可以作恶,故意骗所有用户是3,用户也是没有办法的。但其他矿工节点,也会去执行这个合约,如果他们执行的结果是2,那就会孤立掉这个作恶的矿工的区块,这个矿工就会损失掉一个区块的奖励和手续费。所以说,这就是所谓的区块链是无须信任的根本原理,是因为我们认为区块链网络上的挖矿节点没有人会冒被孤立区块的风险,去发布一个假的结果。 普通用户不运行完整节点,也没关系,他只需要随机访问网络上的其他完整节点,并索要合约结果,一对比就知道有没有问题了。因为网络是开放的,任何作恶的节点是无法阻止用户去访问其他节点查询对比结果的。 而虫洞的安全模型也是一样的,合约代码和执行结果都被托管到比特现金主链区块上,合约的执行是由虫洞客户端执行,并将执行结果发到BCH主链上。我们先假定虫洞客户端是不作恶的。BCH主链上的矿工有可能作恶吗?这是不可能的,因为BCH主链区块上的矿工不可能冒被孤立区块的风险故意去制造一个和正确结果相冲突(双花掉对的结果交易)的假的执行结果。矿工节点确实可以打包一个假的合约结果,但它无法删除正确的合约结果,那这就不会影响用户的资产。 现在我们假定某一个虫洞客户端会作恶呢?所有的虫洞客户端都可以识别出真的执行结果,并反馈给用户。但如果有一个虫洞客户端要作恶,故意给用户一个假的合约结果,毫无疑问,矿工节点都会打包这个假的合约结果,但这个作恶的客户端无法阻止用户去访问别的客户端的获得正确的结果的,矿工节点也不会拒绝打包这些正确的结果。用户就可以通过更换客户端来获得正确的结果。这和以太坊是一样的,以太坊节点也是可以欺骗连在它上面的轻钱包的,但节点是无法偷钱的,用户只需要将私钥导入到另外一个钱包,就可以获得正确的余额。 有没有可能一个虫洞客户端和矿池合作,来完成诈骗呢?这个类似于矿池节点整合了虫洞客户端。同样不可能,因为其他这个作恶的虫洞客户端发出的错误结果,确实是会,但和上面第一种,矿池节点不敢冒自己区块被孤立的风险去双花掉对的合约结果,只有对的合约结果被其他矿工记录在区块上,用户的资产就可以换一个钱包就可以在链上读取出正确的结果。 最后,有没有可能所有的虫洞节点都来作恶呢?那就是遇到诈骗集团,和设计一个诈骗合约一样的。这和以太坊上的合约也是一样的,以太坊可以设计一个诈骗合约,骗所有人的钱。 第4章 比特币现金的主链 二次网络的架构的优点 比特币现金这种在主链托管代码,但不执行,在二层网络节点上执行的做法,不会对主链造成巨大的压力。这样主链就可以保证非常大的可扩展性。 而且在二次网络本身,各个合约之间是没有关联的,也无须关联,这样二层网络上的合约是可以无限扩展的。 就目前以太坊的架构,我们很难想象,在主链上可以同时运行10万个合约,但使用比特币现金的二层网络架构,那可以运行无数个合约。 第5章 如果我是对的或错的,区块链的未来是什么样子? 如果我们是对的,那以太坊带来的区块链操作系统,让整个世界错误的在这个方向上走了四年多。 以太坊的成功,让区块链世界里几乎所有人都在追求创造各种新奇的区块链操作系统,今年新挤进加密数字货币市值排行版前20的,eos,cardano ada,波场,小蚁Neo,都是区块链操作系统,还有排行更后一点的。 比特币现金提出的二层网络智能合约平台,终于给区块链世界带来的一点新的希望。如果我们是对的,那未来比特币现金将会占据整个加密数字货币市值的大部分份额,大量的区块链业务会迁移到比特处现金网络上来,形成巨大的网络协同效应。 如果如果我是错的呢?我并没有100%的信心说我这套逻辑肯定是对的,因为太多的人不同意我的说法,他们也都是一些牛逼的人,聪明的人,很多人也是本着改变世界的心态来参与,而不是跑来骗钱的。他们这些人甚至有大量的海归,说着流利的英语,博士学位,写的代码都是牛逼的算法,…… 但如果真的是我错了,那区块链的世界应该是这样的:各种链非常多,各条链都会占据部分市场,而在所有这些链的顶端,会存在另外一种特殊的链,跨链的链。闪电网络,中继,侧链,都是拥有跨链的功能,现在最火的跨链的项目包括cosmos,波卡,闪电网络,都是试图在各种链上完成衔接作用,在跨链协议上形成网络效应。 第6章 结束语 我们需要的是一个主链可以无限扩展的笨协议,配上二层网络来实各种的智能终端的区块链。只要比特币现金的主链可以无限扩展,区块可以是32M,64M,128M,……,1G,32G,比特币现金的笨协议加上智能终端必然改变世界。 作者:黄世亮 [...]返回搜狐,查看更多

行业外的人似乎对区块链去token化最有兴致,因为他们觉得区块链就是区块链,没有必要非得和token挂钩。呵呵,门外汉就是门外汉。我可以很负责任地说,没有token就没有区块链。

比特币现金(BCH)预售时的价格为550美元,由于初期不被看好,诞生首日的价格跌至300美元,如今涨至763美元,一年上涨154%,稳居全世界数字货币市值排行榜第四位。

大家好,近年来,“区块链”技术迅速走红,其去中心化、去信任的机制得到全球市场的认同, 并有望成为下一代“价值互联网”的基础协议。 因此,借这样的机会,首先给大家介绍一下什么是区块链,然后分享当下很流行的以太坊,最后完成一个简单的智能合约,帮助大家对区块链技术有一些初步的了解。

责任编辑:

1.代币(token)到底是什么?

代币(token)是区块链里最重要也是国内业界最迷糊的一个概念。

随着数字货币市场的火爆,很多人都在说“炒币”,你们所炒的数字币就是一个区块链项目的代币。

只是百分之九十的人只知道它就是一个币而不知道其背后代表的技术,有什么前景。

通俗上说,你可以理解token为一家上市公司的股票,不同的token代表不同的项目不同的技术与功能。

其实token不完全等同于数字货币,只是我为了方便小白们理解把标题里的token用数字货币来近似替代。

代币对应的英文应该是token coin,或者trade token,常简略为token。不过反过来token就不仅仅是代币,但它并没有准确的唯一的中文名称,于是常被错误或者无奈地翻译成了代币,或者更糟糕:“令牌”。token是个概念很大的单词。

我在之前的文章里写过对于EOS的token,可以理解“通证”,意味着你被赋予了一起建设EOS社区的权力。

比特币现金(BCH)发展过程中究竟历经了哪些波折,又是怎样一步步走到了今天呢?接下来,巴比特就带大家做一个回顾和梳理。

本次分享将包括以下三部分:

2.区块链技术能不能脱离代币独自存在?

前段时间看到篇新闻报道,题目为“禁止比特币交易不代表不发展区块链技术”因此引发出了两个问题。

1. 比特币和区块链到底有什么联系

首先必须要知道一点,在中本聪的白皮书里,根本没有区块链(blockchain/block chain)这个词,只有chain。

一句话,比特币带来了区块链技术,但比特币为代表的区块链1.0只是区块链技术的一个应用,且是目前为止最成功的应用。解决了数字货币支付和价值流。

但区块链应用远不止,比如区块链2.0的代表以太坊,将区块链技术应用在智能合约上,利用计算机代码,设定好条件等,就能不需要人工干预自动直接执行合约上的协议,而且任何人都不能更改这个合约,相比依靠第三方如介绍人,中介机构执行合约,区块链技术带来的智能合约更加公开透明。

因为它不属于任何人任何公司,只知道执行合约上的代码,且代码不能被更改。

接下来就是区块链3.0的展望,目前还没有成熟的应用代表,初衷就是利用区块链技术去中心化,在房产,遗嘱,政府医疗,保险等方面开展应用。

2.区块链能不能脱离代币独自存在

None,没有token就没有区块链。先举个通俗易懂的例子表明token在公有链里的作用

沃尔玛之类的超市中有免费存包柜,可以让大家免费、方便地存储物品。但因为完全免费,总是有无聊的人可能把超市的存包柜全占了。

而收费则会导致他想搞的破坏越大他自己的成本越高,因此收费机制可以简单有效防范存包柜被无聊或者居心叵测的家伙滥用。

因此作为没有中心机构去维护网络的区块链必须要有token,必须收费,否则就整个网络就瘫痪了。

如果比特币转账不需要收取手续费(token),那么就有作恶的人去发出无数个小额交易把比特币网络弄瘫痪。

以太坊的token-ETH在以太坊系统里的作用:

以太坊的设计中有GAS机制,也就是说你在以太坊上发行程序运行一个智能合约需要消耗token。 这大大增加了在以太坊这条公有链上的发行成本以及安全性。

如果没有token来增加作恶成本,黑客以及别有用心的人就可以写一个可以无限循环的代码在以太坊系统中运行,导致以太坊系统的瘫痪。

 同时在整个系统中代币可以作为维护系统正常运行的矿工们的奖励,拥有好的奖励机制能不能促进优秀团队的开发动力? 而代币的出现就能很好的解决这些问题。

总之,区块链项目里面所使用的token,尽管通常被翻译为代币,其实它通常涵盖了以上多种甚至全部功用。

通过以上我举的例子可以体现token的两个功能,一,增加作恶成本,保障网络的安全;二,作为奖励激励矿工或节点去运行和维护区块链网络。

因此可以设想,如果脱离了token的区块链会变得多么地脆弱和不可靠。

更多干货请搜索:“区块链学长说”公众号

历史之辩:谁才是真正的比特币?

区块链入门

纵观比特币现金(BCH)的发展路线,从始至终都是围绕着“如何成为最好的货币”。

以太坊介绍

从扩容之争开始

以太坊开发

“扩容之争”是一个始终伴随比特币发展,并横亘其中的话题。争执两派既有共识,又有异议。他们一致认为比特币原有的1MB 容量限制意味着:网络阻塞,从而降低了交易确认速度,由此产生高额手续费,最终不利于用户体验。而他们的异议在于不同的解决方案。一个方法是是增大区块容量,另一个则是被称为隔离见证的技术改造方法。

a. 构建测试网络

2017年,比特币迎来第二个大的爆发期,价格一度突破6000美元。长达三年之久的扩容之争随之彻底进入了白热化阶段,core开发组和大区块支持者的矛盾已经到了难以调和的地步。

b. 编写合约

在这个大背景下,在中间派代表人物Barry Silbert四处奔走呼吁,扩容之争的各派支持者走到了一起,联合签署了纽约共识,但是core开发组拒绝派代表参加。

一、区块链入门

随后,纽约共识计划部署隔离验证、取消区块大小1M限制,支持2M区块。然而由于最初签署者鱼池的临时退出,使得纽约共识困难重重,名存实亡,更多的大区块支持者投向了比特币现金(BCH)的怀抱。

简单来说,区块链是比特币的底层技术。谈到区块链,就不得不先说一下比特币。对于“比特币(Bitcoin)”这个词,有三层含义。首先,比特币特指一种加密数字货币,是最早也是目前规模最大的加密数字货币。 其次,比特币协议可以被看成一种基于区块链的“价值传输协议”,该协议可以用来描述数字资产是如何在区块链上转移的。最后,比特币系统指底层的共有区块链技术平台,包含去中心化的公开总帐、比特币钱包等软件和系统。

比特币分叉前夕出击

加密数字货币

2017年7月22日,比特币现金(BCH)被提出,为了赶在比特币隔离验证之前复制账本,仅仅一周后的8月1日,比特币现金(BCH)就开启了硬分叉,第一个区块在区块高度478559上被挖出,这也标志着比特币现金(BCH)的诞生。

比特币(Bitcoin)是一种全球通用的加密电子货币(Crypto-Currency),完全交由用户们自治的交易工具。比特币的概念由中本聪(Satoshi Nakamoto)在2008年11月发表的论文《Bitcoin:A Peer-to-Peer Electronic Cash System》中首次提出。与数字货币不同,比特币完全是去中心化的,不依靠特定机构来发行,而是依据特定算法,通过大量的计算产生。比特币系统使用整个P2P网络中众多节点构成的分布式数据库对所有的事务进行确认并记录,并使用密码学的设计来确保货币流通各个环节安全性。

比特币现金(BCH)的诞生给扩容之争画上了一个句号,但却同时开启了另一场争夺:谁才是真正的比特币?

比特币协议

比特币现金(BCH)和比特币(BTC)是孪生兄弟,比特币现金(BCH)产生之初是以“糖果”的形式分到比特币用户手中的,所以最初的比特币现金(BCH)的用户也是比特币的用户。

共用标准:包括散列算法(Hash)、Merkle树结构、签名方式、事务验证、地址格式等。

说白了,比特币(BTC)和比特币现金(BCH)之争不仅仅是大区块小区块之争,更多的是未来的发展方向之争。

共用结构:包括消息、可变长整数、可变长字符串,网络地址、清单向量(Inventory Vectors)、区块头格式等。

比特币(BTC)部署了隔离见证,更注重扩展性,致力于构建自己的生态。而比特币现金(BCH)删除了隔离见证,直接扩大到最大8MB的区块大小,更加专注于比特币的“货币”属性。但一致的是,他们都并不排斥闪电网络,及部署智能合约的方向。在接下来的时间,他们也分别用各自的行动践行着自己的梦想与理念。

消息类型:包括 version、verack、addr、inv、getdata,getblocks,getheaders,tx,block,headers,getaddr,checkorder,submitorder,reply,ping,alert 这 16 个消息报文的具体定义。

百天后,终于存活下来

事务脚本

比特币现金(BCH)发展的路上并不是一帆风顺的。9月和10月是考验比特币现金(BCH)的两个月。外部的因素是中国对数字货币行业的监管,很多新生币种从那时起就因为监管而消失。内部原因则是比特币现金(BCH)前期的算力难度调整机制,让比特币现金(BCH)的发展受到了严重的阻碍。

比特币系统

对于比特币现金(BCH)的支持者来说,11月13日是一个非常值得纪念的日子,这一天比特币现金(BCH)算是真正存活下来了。

用户:用户通过密钥控制比特币钱包。

最初应用在比特币现金(BCH)网络的DAA保证了该货币的繁荣,但是也产生了疯狂的算力波动。最终,社区选择了来自Bitcoin ABC首席开发者 Amaury Sechet提出的DAA提案,通过硬分叉修复DAA。协议共识的改变意味着出块时间的稳定保持在10分钟左右。

事务:每一笔事务都会被广播到整个比特币网络中,由矿工将其写入新的区块。

很多BCH的支持者认为,BCH和BTC的竞争从此刻,正式开始。

矿工:通过竞争计算生成在每个节点达成共识的区块链。

二次硬分叉,从8M到32M

区块链:是一个分布式的公共权威账簿,包含了比特币网络发生的所有的事务。

2018年初5月15日,比特币现金(BCH)进行第二次硬分叉,将区块大小上限从8M提升到32M,同时恢复9个早期在比特币上被禁用的操作码。除此之外,此举还将交易数据结构中的OP_RETURN数据载体从80字节增加到220字节。

尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。每个比特币节点都是路由、区块链数据库、挖矿、钱包服务的功能集合。一个全节点(Full Node)包括钱包、完整区块链、矿工、网络路由节点四个功能。

这一次硬分叉,不仅仅是延续了比特币现金(BCH)通过扩容达成解决拥堵,降低手续费的目的。更重要的是,它将释放基于BCH的智能合约以及代币化的能力。智能合约并非一定要图灵完备,此番部分OP代码的复活,能增加协议扩展接口,为未来上线智能合约打下基础。

现在我们重新回到区块链的话题上来。

硬分叉升级刚过去不久,比特币现金(BCH)开发团队又开始为2018年11月15日的升级做准备了。7月5日,比特币现金开发团队Bitcoin ABC发布了比特币现金升级时间表,详细说明了下一步的计划。开发人员要在8月15日之前就要完成下一次升级的协议更改。并于10月15日结束测试发布新版本。

什么是区块链?

压力测试正在进行中

区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部事务通过密码学算法计算并记录到一个数据块(block),生成该数据块的hash用于链接下个数据块,系统所有参与节点来共同检验记录是否为真,并且每个区块的内容都由后续子链上的区块来保证其内容不可被篡改。 各个参与节点可以在新区块产生确认及奖励分配上达成共识,从而逐渐形成的一个庞大、去中心化的公开账本。

比特币现金社区有人提出将对BCH进行新一轮的压力测试。此次压力测试则主要是针对比特币现金硬分叉升级之后的32MB的区块上限。

链上的每个区块都可以用来记录货币、股权、债券、数字签名、数字合约,或其它任何数字化内容。在全球网络下,由无数独立的计算机来维护、更新和核查,确保记账结果的公平、公正和公开透明,而无需任何中心化机构的审核和维护。

为了保证此次压力测试的有效性,而不被当成一次攻击,测试团队建立了一个网站,人们可以事先将签名和raw tx上传,当达到压力测试约定的时间点时,所有的tx将按照一定的顺序播出。目前这个网站已经被推出,并将测试时间是定为北京时间2018年9月1日晚20:00。

我们仍然以比特币为例,说明区块链形成过程

未来之光:智能合约赋予的想象力

平均每10分钟由“矿工”竞争而产生一个新的区块,并把这段时间内的多笔事务记录到这个新区块中。单笔事务写入比特币区块链至少需要10分钟。

尽管比特币现金(BCH)的成功与否尚需时间的验证,但其社区开发者的效率和创新能力是值得赞扬的,这一点体现在很多方面。

目前每个区块大小限制为1MB,最多能记录约4000笔的事务。比特币区块链最大写入性能大约只有7笔/秒。

推出智能合约方案

为了防止该区块因为子链太短而被其它节点抛弃,需要等待产生6个新的后续区块,才能最终确认该事务已经被可靠地写入区块链中。确保可靠写入需要约60分钟。

7月19日,BCH智能合约方案正式推出,是一个名为Wormhole(虫洞)的项目。该项目始于今年的5月份,Wormhole cash是基于Bitcoin Cash区块链实现的,在不改变现有BCH共识规则的情况下,使得BCH区块链实现Token的发行、转移和燃烧等基本功能。

每个参与节点都可以保存整个区块链的副本。只要有参与节点存在,区块链数据就不会丢失。

尽管目前来讲,Wormhole还停留在概念层面,但它对标的明显是已经发行Token千余种的以太坊。以太坊已经有了一套较为成熟的发币机制,并且无需成本。Wormhole协议虽说已经有了具体的发币模式,但未来能抢占多大的市场还是个未知数。

那么,在这样去信任的场景下,该由谁完成账本的记录(即新区块的产生)。为了解决这个问题,必须建立一套共识机制,确保价值的唯一性和不可复制性。 目前常见的包括PoW(Proof of Work,工作量证明),PoS(Proof of Stake,权益证明),DPoS(Delegate Proof of Stake,股份授权证明机制)等。

但是不得不说,智能合约对于BCH的意义是巨大的。

PoW

一方面,它会推动BCH的普及和使用。这一点主要得益于Wormhole协议中的基础货币WHC,因为如果在BCH上发行Token,不可避免的就需要使用BCH进行兑换WHC,发的Token规模越大,所使用的BCH就会越多。

比特币区块链主要使用PoW来实现共识。通过使用单向函数挖掘,使得矿工在得到正确的计算结果前,必须经过公开算法的计算,而结果的验证速度非常快。通过验证这个结果,其他矿工就可以确认是执行了一定量的计算工作才得出的。

另一方面,它将加速BCH相关应用研发。凭借自主执行的智能合约,在以太坊上面已经涌现出数百种去中心化应用,现有的BCH应用如果遇上智能合约会不会出现新的惊喜,也是令人期待的一件事。

PoW的优点是:完全去中心化,节点自由进出。

迎来两个代币发行方案

PoS

除此之外,BCH社区又推出了新的代币方案。一个是来自Cryptonize.it开发者提出的Cryptonized Cash(CC)协议,另一个是由Jonald Fyookball,James Cramer,Unwriter,Mark B. Lundeberg,Calin Culianu和Ryan X. Charles六个开发者提出的Simple Ledger Protocol(SLP)。

PoS权益证明,可以看作是PoW的一种升级共识机制,根据每个节点所占代币的比例和时间等比例的降低挖矿难度,从而加快找随机数的速度。当创造一个PoS区块时,矿工需要创建一个币权交易,事务会按设定的比例把一些币发送给矿工。

Cryptonized Cash是采用的我们常说的染色币技术。染色币技术其实早在2013年时就已经在比特币网络亮相。Cryptonized Cash将它使用在比特币现金(BCH)网络中,它100%开源的,不用经过许可就能够立即使用。染色币可以代表代金券,优惠券,代币,山寨币或其他资产等。

PoS权益证明方式在一定程度上缩短达成共识的时间,但是仍然需要挖矿的过程才能达成共识。PoS币的规则会造成富者愈富的问题。PoS币的利息越高,那么该币将会产生的不公平性就会越高。

而关于Simple Ledger Protocol(SLP),该协议的6名开发者已经联名发布了题为《Simple Ledger Protocol:一个基于BCH的代币系统》的论文,详细介绍了这一方案是如何实现的,以及是如何发行Token的。该协议和Wormhole协议一样无需改变BCH的共识,也是利用OP_Return来存储交易中的元数据。

DPoS

整合“石墨烯”技术

DPoS类似于董事会投票,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表可以将其理解为101个超级节点或者矿池,而超级节点彼此的权利是完全相等的。DPoS有点像是美国的议会制度,如果代表不能履行他们的职责(无法生成区块),即被除名,网络会选出新的超级节点来取代他们。

BCH代币化方案Group和Tokeda以及虫洞Wormhole的推出,着实让支持BCH智能合约的开发团队nChain火了一把。而同样作为BCH的开发团队之一,Bitcoin Unlimited(BU)也丝毫不逊色,前不久“预共识(pre-consensus)”机制的提出,改善区块传播时间指日可待。

DPoS可以大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

不仅仅是预共识,为改善区块传播时间,近日,BU再放大招,宣布在其客户端里整合石墨烯区块传播技术。“石墨烯(Graphene)”协议是一种利用布隆过滤器(bloom filter)以及可逆式布鲁姆查找表(IBLT)降低带宽将区块传播到全节点的新方法。据称,石墨烯技术比致密区块(Compact Block)和极瘦区块(Xthin Block)的效率要高出10倍。

公有链、私有链、联盟链

由此可以看出,目前BCH社区讨论非常热烈,竞争非常强烈,这对于BCH的发展无疑是一件好事。

中本聪巧妙地将以下几个成熟的技术和理论组合的一起,并以此为基础构建区块链技术:

基于去中心化的分布式算法而建立起点对点对等(P2P)网络。

基于非对称加密算法。

基于分布式一致性算法,解决了分布式场景下的拜占庭将军问题。

基于博弈论而精心设计的奖励机制,实现了纳什均衡,确保整个系统的安全和稳定运行。

如果同时具有上述四点要素,可以认为这是一种公共区块链技术,简称公有链。如果只具有前三点要素,将其称为私有区块链技术,简称私有链。而联盟链则介于两者之间,可视为联盟成员内的一种私有链。这里主要介绍公有链和私有链。

公有链是指全世界任何人都可读取的、任何人都能发送事务且能获得有效确认的、任何人都能参与共识过程的区块链。共识过程决定哪个区块可被添加到区块链中和明确当前状态。作为中心化或者准中心化信任的替代物,公有链的安全由加密数字经济维护。加密数字经济采取工作量证明机制或权益证明机制等方式,将经济奖励和加密数字验证结合了起来,并遵循着一般原则:每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。这些区块链通常被认为是完全去中心化的。

私有链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。

私有链相比于公有链的优点:

事务的效率更高:比特币区块链目前每秒可完成7笔事务,而私有链目前最高可以到每秒10万笔,并且还有提高的空间。显然后者更适应现实世界金融事务的需求。

事务可以回滚:这点对于中心化机构也很重要,在某些情况下,某些事务会因为错误或法律的问题而被要求修改、撤销。

事务费用更低:目前公有链的事务费用是每笔0.10美元,而且随着时间流逝币值趋于增长,导致事务费用也在增长。而私有链的事务费用将会降低一到两个数量级。

仍然是基于分布式网络,保留了分布式记账系统的优点。

提供了更好的隐私保护:公有区块链因为其透明共享总账本的设计,本身不提供隐私保护功能。而私有链可以对读取权限进行限制,从而提供更好的隐私保护。

验证者是公开透明的,不存在一些矿工出于共谋原因而致的51%攻击风险。

节点可以很好地连接:节点互相可以很好地连接,故障可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成事务。

私有链的缺点:

违背了区块链去中心化的本质,重新引入了若干“信任节点”;

其参与者需要经过审核和验证,从而严格限制了其规模,其安全性容易受到威胁。因此,私有区块链更适合为传统机构所用。

公有链的优点:

保护用户:免受开发者的影响——在公共区块链中的用户更多、更广泛,程序开发者无权干涉

用户的使用方式。反过来说,区块链可以保护使用这些程序的用户。

网络规模效应——公共区块链是开放的,因此有可能被许多外界用户使用和产生一定的网络效应。而在公有链上运行的应用越多,节点越多,那么该区块链条也会越可信。

因此使用公有链,还是私有链,完全根据需求而定。

区块链的演进

区块链1.0:可编程的数字货币

比特币的发明人Satoshi Nakamoto在其2008.11年发表的论文《BitCoin:A Peer-to-Peer Electronic Cash System》中指出:“区块链是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。”

区块链 1.0 的主要应用领域为“加密数字货币”,包括货币的发行机制、分配机制、币值调节机制等。

比特币可视为区块链的首个在金融支付领域中的应用。比特币所产生和使用的区块链,是最早也是目前应用最广泛的公有区块链。

区块链2.0:可编程的智能合约

在2015年10月召开的“2015首届全球区块链峰会”上,以太坊的创始人Vitalik Buterin发表了题为《Visions, Part 1: The Value of Blockchain Technology》主题演讲,并重新定义了区块链:“一个区块链就是一个任何人都可以上传程序并使其自己执行的神奇电脑,每个程序的当前和所有过去状态都是公共可见的,强大的密码经济学保证程序能够按照该区块链协议所定义的方式持续执行。”

区块链成为一种“信任的机器”,通过自我限制和安全加密,确保机器能安全可信地自动执行预设的逻辑。

区块链2.0的主要应用领域为智能合约。智能合约能够令各方自动执行操作,结果由软件验证,而非人类扮演中介。

典型应用:

股权、债权合约

证券与金融合约

互助保险合约

权利登记、转让

博彩

防伪

物联网

区块链3.0:可编程的社会治理

区块链3.0目前没有严格的定义,总的来说有两大类应用:

超越货币、经济、市场的公正性应用。

超越货币、经济、市场的效率和协作。

区块链3.0的主要应用领域为社会治理:

公证、见证

司法仲裁

投票

健康管理

人工智能

去中心化自治组织

身份认证

二、区块链2.0:以太坊Ethereum

Ethereum以太坊是运行在区块链技术上的开放平台,使开发人员能够建立和发布下一代分布式应用DApp。

Ethereum可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易、众筹、公司管理、合约、知识产权、硬件集成的智能资产。

区块链2.0重要的是智能合约、智能资产,而智能合约领域最有影响力的开发平台就是以太坊。

应用场景实例

自行车的所有者会将一个Slock(智能锁)安装到他们的自行车上,并且在以太坊区块链上给自行车注册一个智能合约(一段程序代码)。接下来,任何人都可以向该智能合约发起一个发送一定数量数字货币的请求,合约在接到这个请求之后,会自动将这笔数字货币转发给自行车的所有者,这样发送者可以获得2个小时的使用权。

基本概念

挖矿

挖矿这个词源于对加密货币与黄金的类比。黄金或贵金属很稀有,电子代币也是,增加总量的唯一方法就是挖矿;同时,挖矿也是通过在区块链中创建、验证、发行和传播区块的方法来保护网络的。

挖以太币 = 保护网络 = 验证计算

以太坊,与所有的区块链技术一样,使用激励驱动的安全模式。共识基于选择具有最高总难度的区块。矿工创建区块,其他人检测有效性。

外部账户 vs合约账户

外部账户(EOA)

存储以太币余额

发送transaction(以太币交易或触发合约代码)

私钥控制

没有代码

合约账户

存储以太币余额

相关代码

执行代码(被其他合约的transaction或消息触发)

执行任意复杂的操作;操作自己的永久存储

以太坊区块链上的所有行为都是由外部账户通过transaction触发的。每当合约账户接收到transaction,就按照输入参数的指示执行。合约代码是由参与到网络的每个节点上的以太坊虚拟机执行。

代码执行的唯一语境是区块链上区块的位置和所有可见的数据。区块链的区块代表时间单位,区块链本身是时间维度,代表在链上区块制定的离散时间点上状态的整个历史。

所有以太币余额和价值都以wei为单位:1 ether = 1e18 wei

事务(transaction)

transaction在以太坊里指被签名的数据包,数据包存储着从外部账户发送到区块链上另一账户的消息。

transaction包括:

消息接收人

签名:用于确认发送方身份和发送消息的意图

VALUE:发送方向接收方转移wei的数量

可选数据域,包括发送合约的消息

STARTGAS:代表transaction执行允许采取的运算步骤的最大数量

GASPRICE:代表发送方愿意支付的gas费用

消息(message)

合约可以发送消息给其他的合约。消息是虚拟对象,不能被序列化,只能存在于以太坊的执行环境下。可以被想象成函数调用。

消息包括:

消息发送方

消息接收方

VALUE:发送方向接收方转移wei的数量

可选数据域:发送到合约的实际数据

STARTGAS:限制消息可以触发的代码执行的gas最大值

本质上,消息就像transaction,只不过消息是由合约而不是由外在因素创造的。

GAS

当消息或transaction触发合约执行时,每个指令在每个网络节点都被执行。这是需要代价的:每个执行的操作都有特定的成本,以一定量的gas单元表现。

Gas是transaction发送方需要为每个以太坊区块链上发生的操作所支付的执行费用。Gas名字的灵感来自一个观点:这笔费用就像加密燃料,驱使智能合约的运行。Gas从执行代码的矿工处购买以太币。

Gas和以太币被故意分开,因为Gas单位与自然成本的运算类似,而以太币的价格是根据市场而波动的。

Gas价格实际上由矿工决定,矿工可以拒绝以低于最低限度的gas价格进行transaction。

以太坊客户端会自用使用以太币购买gas,数量是指定的transaction最大支出。

在每个合约执行或每个transaction的运算步骤,以太坊协议都要收费,以防止以太坊网络上发生蓄意攻击或滥用。

每个transaction都必须包含gas限额和愿意支付的gas花费。如果transaction产生的、用于运算步骤的gas总量,包括原始消息和可能引发的子消息,少于或等于gas限额,那么transaction就会进行;如果总量超过限额,那么所有变化都会复原,但是transaction仍然有效,矿工可以收集花费,多余的gas会以以太币的形式偿还给发送方。

估算transaction成本:

transaction花费的以太币总量基于两个因素:

gasUsed是transaction消费的gas总量

gasPrice是gas单元的价格(换算成以太币)

总成本 = gasUsed * gasPrice

gasUsed

以太坊虚拟机上的每个操作都会被指派消费的gas数量。gasUsed是所有执行的操作所需的gas总额。有个电子表格可以看到背后的一些统计。

gasPrice

用户建构并签署transaction,每个用户可以说明自己想要的gasPrice,可以是零。然而Frontier发布的以太坊客户端默认gasPrice是0.05e12 wei。由于矿工会使收入最优化,如果大部分transaction都以0.05e12 wei的gasPrice提交,就很难说服矿工接受价格更低或为0的transaction。

示例transaction成本

我们来做一个只添加2个数字的合约。EVM OPCODE ADD消费3gas。

大概的成本,以默认gas价格计算 (2016年1月)是:

3 * 0.05e12 = 1.5e11 wei

这是个简化的计算,忽略了一些成本。

EVM

EVM:在底层,以太坊基于区块链技术,实现了数据的去中心化、分布式存储和信息交换的信任问题。同时,以太坊实现了一个叫Ethereum Virtual Machine(EVM)的运行时环境,类似JVM,它的主要工作是执行智能合约(该概念下面会介绍)的位元组码。

接口:

  1. Javascript Console:以太坊客户端会启动一个相互的console,提供javascript运行环境,可以使用javascript API与节点交互。

  2. JSON-RPC server:节点可以启动json-rpc服务器,从而暴露JSON-RPC API

3.命令行:geth

结合以上概念,归纳Ethereum工作流程:

以太坊的基础单元是账户,跟踪每个账户的状态,所有以太坊区块链上的状态转换都是账户之间价值和信息的转移。

外有账户是由人类用户掌控,因为人类用户能够控制私钥,进而控制外有账户。而合约账户则是由内部代码管控。智能合约指的是合约账户中的代码:事务被发送给该账户时所运行的程序。用户可以通过在区块链中部署代码来创建新的合约。

只有外有账户发出事务时,合约账户才会执行相应的操作,合约账户不可能自发地执行。因为以太坊要求节点能够与运算结果保持一致,这就要求保证严格确定执行。

以太坊用户必须向网络支付少量事务费用。这可以使以太坊区块链免受无关紧要或恶意的运算任务干扰,比如分布式拒绝服务(DDoS)攻击或无限循环。事务的发送者必须在激活的合约账户的每一步付款,包括运算和数据存储。费用通过以太坊Gas结算,以太币的形式支付。

事务费用由节点收集,矿工是以太坊网络中收集、传播、确认和执行事务的节点。矿工们将事务分组:以太坊区块链中账户状态的更新被分成的组存储在区块中(Block),矿工们会互相竞争,以使各自的区块(Block)可以添加到区块链的下一个节点上。矿工们每挖到一个成功的区块就会得到以太币奖励,这就为矿工带来了经济激励,促使矿工为以太坊网络贡献硬件和电力。

矿工们通过解决复杂数学问题的任务以便成功地挖到区块(Block)。这被称为工作量证明(PoW)。一个运算问题,如果在算法上解决,比验证解决方法需要更多数量级的资源,那么它就是工作证明的最好选择。为防止比特币网络中已经发生的专用硬件(例如特定用途集成电路)造成的中心化现象,以太坊选择了难以存储的运算问题。这就使以太坊的工作量证明具有抗特定用途集成电路性,和比特币这种由专门硬件控制挖矿的区块链相比,能够带来更加去中心化的安全分布。

三、以太坊开发

搭建本地测试网络

为了搭建本地测试网络,需要完成三件工作:

构建geth客户端

构建solidity编译器

运行geth客户端

以下就分别开始介绍。

Ethereum客户端类似于Java虚拟机,按照黄皮书执行;项目早期,在不同的操作系统中就有多个可以彼此协作的客户端实现:go-ethereum、cpp-ethereum、pyethapp、ruby-ethereum等等。

进入Homestead阶段后,Go客户端(geth)占据了主导地位,因此我们也采用go-ethereum完成测试网络的搭建。

1. 首先在选择的目录下clone客户端代码go-ethereum

2. 构建geth前需要安装额外库:

mac系统:

建议使用gvm管理go的版本:参见-https://github.com/moovweb/gvm

ubuntu系统:

参见-https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

3. 最后,就可以使用以下命令编译geth了:

编译成功生成build/bin/geth

现在进入构建solidity编译器(源码安装)的流程:

1. 首先在选择的目录下clone solidity的编译器代码

2. 安装依赖

3. 最后,就可以使用以下命令编译solc了

geth和solc编译完成后,重新回到go-ethereum代码根目录

1. 创建初始区块:

初始区块是区块链的起始:第一个区块,区块0,唯一没有指向前面区块的一个区块。除非与其他节点具有相同的初始区块,协议确保了这些节点不会和该区块链一致。这样就可以创建任意的私有测试网络区块链。

2. 启动geth:

下面介绍上述命令中的主要参数:

1. --nodiscover:使用这个命令可以确保你的节点不会被非手动添加你的人发现。否则,你的节点可能被陌生人的区块链无意添加,如果他和你有相同的初始文件和网络ID。

  1. --rpc:可以激活你节点上的RPC接口。它在geth中通常被默认激活。

3. --rpcapi:这个命令可以决定允许什么API通过RPC进入。在默认情况下,geth可以在RPC激活web3界面。

  1. --rpcport:改变RPC上的开放端口。

  2. --rpccorsdomain “*”:可以指示什么URL能连接到你的节点来执行RPC定制端任务。

  3. --datadir “test/chain”:私有链数据所储存在的数据目录

  4. --identity:为节点设置一个身份,使之更容易在端点列表中被辨认出来。

  5. --solc:制定solc编译器

智能合约

编写智能合约的高级语言有:solidity、serpent、LLL、Mutan。

Solidity类似于Javascript,也是目前最流行的。

Serpent类似于Python。

LLL是类似于汇编的底层语言。

Mutan是C-like的编程语言,不过已经被废弃了。

我们以multiply为例开始第一个Solidity的智能合约。

第一步:创建一个EOA用户并设置密码

第二步:查看新用户的余额,并且开始挖矿

第三步:新建一个命令窗口,并连接到正在挖矿的窗口

第四步:确认用户余额有所增加

第五步:编译

合约代码如下:

contract test {

function multiply(uint a) returns(uint d) {

return a * 7;

}

}

首先将合约test赋值变量source,然后使用solidity编译器进行编译,将返回结果赋值给contract。

下面简要描述一下contract的字段:

code: 编译的以太坊虚拟机字节代码

info: 从编译器输出的额外元数据

source:源代码

language: 合约语言(Solidity、Serpent、LLL)

languageVersion:合约语言版本

compilerVersion:编译器版本号

abiDefinition:应用的二进制接口定义

第六步:部署合约

确保有解锁的账户和资金,部署完成后,在区块链上就会创建一个合约。这一步骤是需要支付执行的。一旦transaction成功进入区块,账户余额会根据以太坊虚拟机的gas规则被扣减。

第七步:与合约交互

与合约交互典型做法是使用eth.contract()功能的抽象层,它会返回javascript对象。描述合约可用功能的标准方法是ABI定义。

当sendTransaction被调用时,功能调用通过发送transaction来执行。需要花费以太币发送,记录会永久记录在区块链上。这种方式返回的是transaction散列。

当call被调用时,功能在以太坊虚拟机本地执行。用这种方式进行的调用不会记录在区块链上,因此不会改变合约内部状态。这种调用方式被称为恒定功能调用,不花费以太币。

最后,有兴趣的朋友,也可以尝试testrpc和truffle,更加方便。

声明:文中关于“Ethereum Homestead 0.1 documentation”来自ethereum社区。如想了解更多,可通过ethereum社区官网进一步学习。

Q&A

Q1:一次交易都要在以太坊的所有节点的EVM上执行一遍吗?

A1:是的。区块链其实是比较昂贵的,它的目的不是为了提升效率。在Ethereum Homestead里是这样描述的:Each and every full node in the network does the same calculations and stores the same values. Clearly Ethereum is not about optimising efficiency of computation. Its parallel processing is redundantly parallel.

Q2:哪些公司用以太坊做开发基础?

A2:国内的金丘股份,万向区块链实验室,众安保险,蚂蚁金服。

Q3:智能合约的代码量最大是1M吗?也就是一个区块的大小?

A3:1M是比特币的区块限制。

Q4:以太坊同步一次要多久?

A4:比特币区块链的大小约为84.9GB,现在以太坊的区块链还比较小,第一次同步的时候,持续的十个小时左右,于网络速率有关。

Q5:如果由于网络中断,导致出现两条链,当网络恢复后,如何合并这两条链?

A5:不会合并的。最终还是拼的算力。

(接上一问)

Q6:这样不是会导致很多分叉吗?

A6:短时间是可能存在分叉的,但最终不会有分叉存在,例如比特币”为了防止该区块因为子链太短而被其它节点抛弃,那么还得等产生6个新的后续区块,才能最终确认该transaction已经被可靠地写入区块链中。即,确保可靠写入,需要约60分钟。 ”版本升级时,是有可能存在分叉问题的,因为有些矿工不愿意升级。

Q7:如果智能合约太大,无法在一个区块中写入,以太坊如何操作?

A7:因为合约之间可以通过消息调用,所以可以把代码拆开,分别deploy。当然前提是真得有这么大的合约。

本文由betway必威登录平台发布于互联网医疗,转载请注明出处:BCH贰虚岁,除了上升152%,还交了如何答卷?

Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。