精华内容
下载资源
问答
  • 3月23日晚20:00点,【时点对话】邀请到了老白,般若(Prochain)创始人,区块链大数据专家,来进行对话主题:大厦将倾,以太坊路在何方。本次对话,老白以行业多年的经验,为我们分享了其对以太坊和EOS未来发展看法...

    3月23日晚20:00点,【时点对话】邀请到了老白,般若(Prochain)创始人,区块链大数据专家,来进行对话主题:大厦将倾,以太坊路在何方。



    本次对话,老白以行业多年的经验,为我们分享了其对以太坊和EOS未来发展看法。


    以下为对话原文整理





    【时点对话·开场】


    2018年初,Ethereum 似乎要成为币圈不可或缺的主角。借着一波牛市,甚至圈内流出 ETH 的价格会在接下来的几个月问鼎 $5000 的传闻。但是,它却匪夷所思地从$1,300 的顶峰滑落至 $500 的低谷。


    前天,市场稍有回暖,然而 ETH 却跌了 2.7% 。另外值得注意的是,在过去的8天里,ETH价值总计坠落 27%!成了了币圈 TOP 10 榜单中最大 loser!


    短期内比特币并不那么熊的情况下,ETH 不停下跌。显然,用单薄的“熊市”二字解释 ETH 的短期疲软,已经说不通了。大厦将倾,以太坊路在何方?下面有请本期嘉宾-老白!





    【时点对话·第一问】


    时艳强:老白,你2011年开始接触比特币,与李笑来同期。能介绍一下当时比特币市场情况么?是否对比特币持续投入了?般若(Prochain)项目能介绍一下么?


    老白各位【布洛克财经】的朋友,大家好!回答布洛克财经【时点对话】第一问。2011年12月,我开始接触比特币。当时是看到了一篇文章,叫《比特币,史上最危险的货币》,看了这个文章以后就专门去翻了一下(比特币)白皮书,觉得这个技术是非常可行的。那个时候还是比较早期的状态,所以只是尝试性地去购一点币,没有把它当作一个正经的业务来做。因为还有很多的互联网业务在运作,主要精力不在比特币上。当时的市场是这样的,就是大家想买币的话,一般都会去门头沟(Mt.Gox)。那里面最大的问题就是缺乏一个稳定的充值渠道,包括贝宝(Paypal)和信用卡都是不支持的,所以买币的门槛是比较高的。



    2013年,比特币在中国开始上线了。我第一时间注册了账户,但是这时候价格已经涨到了大概七百人民币左右。当时觉得这个价格已经太高了,就没有再进入,因为年初时候价格可能在一百多人民币左右。那段时间也是移动互联网的一个创业高峰期,所以主要精力没有放在比特币这方面,但是隔三差五也会关注一下币市的走势。


    2016年底,发现比特币价格从一千人民币左右开始升到五千人民币左右,与Gartner的技术曲线走势是非常像的。2013年,比特币价格达到了一个高点,八千人民币左右,然后又跌落到一千左右,这个时候就是有点儿像Gartner泡沫期,媒体过度关注了,这时候它就回归到一个正常价格状态。2016年下半年,发现价格开始回升了,就有一点像技术曲线里一个技术开始往成熟的方面去走的这么一个势头。


    所以我们认为比特币不仅仅是一个金融产品,它同时也是一个科技产品,加上Twitter上面关注了一个人,叫Kim Dotcom,他发了一条推特,就重新入市了。




    (大意:比特币涨到一千美金了,而且这只是一个开始)


    2017年6月,国内三大交易所同时开放了以太币的交易,我在这个时候开始正式入场,开始进行以太坊的一些投资。我们首先投入到了一个叫ENS的以太坊域名注册方面的一个业务,同时也开始关注项目众筹这个事情。6月份前后,有几个大的项目,一个叫Basic Attention Token,是海外的一个区块链广告业务;以及Status,就是区块链微信;还有一个叫TENX,就是区块链信用卡的一个项目。我们关注到这些项目会以非常快的速度就达到了众筹的硬顶,而且这些项目上市以后往往就都是涨幅比较好的,所以带动了第一波以太坊的价格上涨。


    同时那段时间参加了北京这边有一个叫dorahacks的一个黑客马拉松活动,与腾讯的同事一起组建了区块链团队,这也是当时唯一做区块链方向的一个团队,这个时候大家就去思考有什么好的区块链方向可以做,我们就回顾了互联网的一个发展路径,最早就纯数字化的业务是比较容易落地的,尤其是这种广告、游戏。而这个广告市场的一个特点就是,它是一个多方角色来共同参与的,包括广告主、流量主、用户三方。那么广告主和流量主之间呢,也是存在信任成本高的问题,正好可以通过这个区块链技术来解决信任成本的问题,所以就考虑用广告切入。



    看这张图的话可以看到现在广告市场存在的一些问题。第一个就是投放精度低,广告主并不知道受众在哪,缺少一个数据手段。第二就是欺诈流量高,在广告的流量方提供的流量里面有60%,甚至80%都是机器人的点击欺诈,对于广告主的资金造成了大量的损失;第三就是数据不透明,广告主也不知道资金投放的投向到底是什么,有哪些用户去点击了;第四就是数据不互通,BAT他之间的数据是不通的,所以导致数据存在孤岛这个现象。


    所以我们就是从广告市场的一个痛点开始切入,正好基于以太坊公链、雷电网络 与 IPFS 分布式存储技术,建立一个基于大数据的精准广告分发系统。广告主通过智能合约建立投放任务,对于触发广告的用户和媒体进行奖励,以 PRA Token 实时结算。ProChain 主要服务于以太坊生态,为即将爆发的去中心化媒体提供一种收入模式,同时为去中心化应用(ĐAPP )提供一套完整的链上推广方案。


    他主要解决的这个问题就是五个,①数据投放过程不透明 ②点击欺诈 ③结算延迟 ④数据孤岛 ⑤用户屏蔽广告。这都是现有广告市场存在的典型痛点。




    【时点对话·第二问】


    时艳强2014年7月至今,以太坊价格从1.89元至高峰时10000元,增长速度令人咂舌。以太坊是什么,为什么称其为区块链2.0?为什么曾经ETH价格火箭式的上升?为什么现在其他主流币价格不断回暖,仅以太坊价格不断探底,什么原因?


    老白回答布洛克财经【时点对话】第二问。2014年,以太坊是开始进行众筹,它其实才是比特币历史上第一大的众筹项目。因为他当时在最早创立阶段是没有ERC20的标准的(也就是TOKEN所采用的技术标准,没有落地刚需),所以它的价格长期是盘在10美金左右,甚至到2017年年初的时候只有80元人民币前后,当时也是关注比较多的。那么当ERC20标准通过之后,大家慢慢可以意识到这个价值了,然后价值价格才开始一直往上走,从一块多钱一直涨到一万块。为什么称它为区块链2.0,就是他本身有一个最大特色就是智能合约,他这种智能合约可以进行一个链上的原生资产的标准化结算


    在以太坊的官网里面可以看到它的典型应用有三个,第一个是创建Token;第二个功能是设置众筹;第三功能是投票与去中心化自治组织。大部分现在的项目方其实主要用到的是第一和第二,后来因为众筹这个东西无法再进行了,现在大部分的项目方还是以创建Token为主。实际上它还有很多的功能,比如投票的功能也是一个非常好的机制,这在后续的项目里其实都完全可以用起来。区块链1.0的数字货币称为Coin,特点是需要通过算力进行挖矿,比如莱特币,狗狗币,他们都是基于比特币源码的一个改进币种。而通过以太坊发行的代币被称为TOKEN,可以跳过挖矿这一步,相当于借用了以太坊的节点,直接分叉出一个币种,从而实现快速建立数字货币的需求


    那在2018年1月下旬之后,币市确实是转入低迷行情,有很多原因。有一个就是以太币价格取决于Token发行后的市场表现,如果破发严重,甚至机构都是亏损,没有人参与,自然价格回归正常水平。



    【时点对话·第三问】


    时艳强:有人说以太坊价格下跌,除了一级市场私募、ICO遇冷之外,更可能是有人在故意操纵,以便抄底建仓。对于利空建仓,您怎么看?V神曾警告:如果再炫富,其退出以太坊。如V神退出,以太坊社区会如何?


    老白回答布洛克财经【时点对话】第三问。不知道是否有人做空以太坊,但以太坊发行Token是它的特色。以太坊除了被项目方应用以外,也被各种骗子盯上,发行空气币圈钱跑路,导致了对市场的不信任,这才是它下跌的一个根本原因。投资者对项目的鉴别能力也在增强,不会随便一个项目都去投资了。 V神是一个理想主义青年,希望维护社区氛围,已经着手优化Token发行机制-DAICO,将项目方的进展列入考核,参加众筹者可以决定是否对项目方释放ETH。如果V神退出以太坊,还有社区会继续维护。



    【时点对话·第四问】


    时艳强:EOS创始人BM称:EOS开发基本结束,将在6月份主网测试。EOS被誉为区块链3.0,为何大家看好EOS?EOS上线成功,会对以太坊产生哪些影响?从Etherscan上调查发现,EOS众筹地址曾转出41万以太坊充值到Bitfinex进行拉盘,是对手在做空以太坊?


    老白回答布洛克财经【时点对话】第四问。EOS有21个区块主节点以及100个备选节点,它的去中心化程度没有以太坊那么高,因为以太坊可能是上万个节点在进行全部共识,但是EOS它牺牲了部分的去中心化,导致它的效率更高,更适合高频低价值的区块数据记录,用户免费的特性尤其适合传统互联网产品上链


    那EOS上线成功的话,对以太坊有什么影响呢?其实以太坊和EOS实际上是完全不同的两个方向,不能说是互相替代,他们是各有应用场景,以太坊潜在的竞争对手,除了EOS外,还有AE、NEO、CARDANO、RCHAIN、ZILLIQA等公链,主要解决公链性能,还有数据库分片以及扩容的问题。


    那么EOS众筹的以太币是怎样使用呢?因为是用于公司支配的,具体怎么操作不是特别清楚。但是从一个技术上面去讲,很多人其实并不知道到6月1号之后,EOS的ERC20的TOKEN是停止交易的。他将最后在以太坊的TOKEN地址上生成一个快照,用于启动EOS公网。因为还有两个月的时间,相信大家反应过来以后,价格会进一步提升,这个才是真正价格提升的一个逻辑。那么现在已经有几十个EOS的项目在筹备,根据这个快照来进行糖果发放,有很多的项目,现在发放比例是超过50%的,所以这个是非常好的一个糖果行情。



    【时点对话·第五问】


    时艳强3月18日,Facebook被爆出超过5000万用户信息被滥用,Facebook股价最高跌幅超过10%,市值蒸发超过600亿美元。区块链作为价值网络,其用于隐私保护是否能够避免类似事件?通过区块链解决用户数据问题的遭遇的瓶颈是什么?


    老白回答布洛克财经【时点对话】第五问。用户数据隐私性是区块链一大特色,多数公链的用户持有私钥,才能操作账户,没有任何中心节点可以掌控用户私钥的使用情况,这和传统的中心化的服务器来保管密钥的这种方式是完全不同的。数据方面也是同样,用户在区块链上的数据,自己可以选择性的去授权给不同的应用,同时获得相应的回报。比如授权给广告主做精准投放,用户可以被推送更高价值的广告,点击的收益会更高。有些数据泄露会流入地下,用于电话营销、恶意诈骗等灰产。


    现阶段,通过区块链技术可以解决用户数据保密的需求,但是当前技术最缺的是去中心化的结构化数据库,这个东西可以保存大量的用户信息,现在大家知道的以太坊、比特币区块无法承载这么多的用户数据,需要更好的公链承载用户数据。



    【时点对话·第六问】


    时艳强:币安被日本金融厅警告的消息不胫而走,数字货币市场相应股价大跌,两者是否有关系?目前币市行情,你对回暖期的预测和对投资者的建议是?


    老白回答布洛克财经【时点对话】第六问。对于币市是否能回暖,我个人的观点是取决于项目能否有效落地,尤其是能否有爆款的去中心化应用,也就是DAPP的出现。在去年我们只看到了以太猫,这一款产品就导致了以太坊的主网络的拥堵,侧面也说明现在以太的一些性能的限制,还不太适合DAPP大规模去开发。包括我们自己ProChain也在思考迁移到EOS来满足更更高的TPS要求,以及用户端免费,这些都是非常好的特性。


    普通投资者,我个人是建议适当囤些主流公链币,以及产品已经落地的区块链项目的Token。区块链项目距离大规模应用还需要几年时间,多关注GITHUB的代码的提交的情况,提交越频繁的,代码质量越高的项目,实际上是应该注意重点关注的。


    行情下跌与币安是否有关系,暂时没有什么逻辑。还是取决于整个市场的信心,不仅是交易所层面的,关键还是项目落地方面。



    【布洛克财经·提问一】


    问题你好,老白。之前听朋友提到过般若项目,我对区块链技术和广告生态结合挺感兴趣。以前我们在百度和58上投放广告,钱消耗的很快,效果不怎么好。我想了解一下,你们这个广告系统现在什么发展阶段,什么时候能落地使用呢?广告能覆盖多少人?----来自【布洛克—北京--225】


    老白回答布洛克财经【时点对话】提问一。这个问题问得非常有意思,区块链广告有两种玩法:一种叫做广告加区块链;一种叫做区块链加广告。那么它们区别是什么呢?第一种方式,广告加区块链就是他自有流量,那本身我就是一个做广告的一个流量主,通过区块链的这种方式来让上下游达成透明,它本质上是一个联盟链的一个机制,这是第一种方式。第二种方式,基于一个成熟的公链上面去搭建一个服务,服务于这条链上的各个业务的一套生态系统,那这叫区块链加广告,像之前所说的Basic Attention Token,包括我们自己都是在做的都是属于区块链加广告这样的一个业务。


    为什么在百度上投放广告,钱消耗的很快?这个是存在刚才说的点击欺诈。一个小广告主放上去的广告,很快就被点击完了,这个问题用区块链怎么解决呢?区块链有个叫做币天销毁的一个机制。当用户持有你的币,并且保留在你的钱包里一定时间,没有操作的时候,它才能够去触发这个智能合约,然后获得Token。并且在获得Token的这个过程中,实际上相当是打了一笔交易,打到一个链上,这时候你的币天就会归零,就像一个气槽一样,会一点一点地积攒,攒够了气你才能去点击广告获得收益,这个时候气又重新归零了,你重新要去积攒,用这种方式来防止所谓的薅羊毛的这种行为,包括机器刷量的行为。


    我们Prochain这套系统是原生链上区块链的一个系统,他们主要广告主服务是原生链上的数字资产,包括TOKEN的项目发行方、包括DAPP的以太坊游戏发行商,他们是主体,他们通过TOKEN的形式来进行投放,用户在点击了他们项目之后获取一定的糖果,以这种形式来完成一个闭环。


    这是传统的链下向链上迁移是有一个逻辑的,那就需要链上的广告系统省去中间的信任成本,用户获取成本要比链下低,这里头产生的套利空间,即使链上流量很小,就是咱们所说的去中心化媒体现在还没有起量,但是它仍然是一个价格很便宜的获取用户的一个渠道。通过这种套利机制,让更多的链下用户选择用链上的方案来做。


    去中心化媒体会在六月份,应该是包括EOS、Filecoin这两个比较大的公链项目,一个是做计算,另外一个是做存储,这两块都会进行挖矿,开始提供这样的去中心化媒体的服务,这个时候链上媒体才能起来,就每个人的电脑都是一个服务器,不需要把数据保存在一公用服务器里,就保存在你自己的电脑里就可以进行浏览,这种就叫去中心化媒体。


    整个链下向链上迁移的过程需要比较长的时间,但是因为存在套利空间,所以会逐步地把链下的用户往链上进行导入。


    我们自己目前的MVP,最小可用化的一个产品模型在年前已经落地了。我去帮项目方来进行一个项目的精准营销,通过投放Token的方式,用户点击这个项目方的信息,了解项目来获取Token的一个形式,这个闭环已经通了,我们这个产品名字叫Prabox,IOS版已经在App Store上线了,安卓版在这个月底也会上线。



    【布洛克财经·提问二】


    问题老白哥好,我刚接触区块链不久,带我炒币的朋友说现在投资IPFS矿机很划算,不知道白老师了解IPFS矿机吗,靠不靠谱呀?----来自【布洛克—上海--053】


    老白回答布洛克财经【时点对话】提问二。IPFS矿机和比特币不一样,它是通过提供存储和带宽。你有一个磁盘阵列,以及你有比较好的网络条件,用这种方式来进行挖矿。那么一般来说,用电信机房或者是有些运营商的资源去做这个事情会比较靠谱,现在所说的华强北这种专卖的矿机可以暂时先不考虑,因为具体怎么用这套系统现在还没有确定,但是这个挖矿是一个好机会



    【布洛克财经·提问三】


    问题老师好,身边一起玩币的同学说EOS今年能涨到500,一直在推荐,老师您能多介绍一些EOS的资料吗,为什么大家都这么看好EOS?----来自【布洛克—北京理工大学--05】


    老白回答布洛克财经【时点对话】提问三。EOS到6月1号之后就会停止交易了,所以过了6月1号它并不是EOS了,它可能是EOS主网的一条新公链上的一个币,这个币还不只是一个,有多条公链,因为EOS并不是一个像以太一样的一条公链,它是一个软件系统,任何人可以基于这个软件系统来搭建自己的公链。但前提是拥有足够量的EOS的Token持有者的同意才可以,所以就是具体每条链的Token它哪一条涨的比较高,这个说不清楚,但是从整个趋势来看的话EOS是比较适合互联网应用开发的,所以相信这里面会诞生更多的去中心化应用,它比以太坊开发的DAPP性能更好一些。


    你可以通过EOS的众筹合约能够看到众筹结束之后,也就是6月1号之后任何人都可以把他的Token进行冻结,这个时候就没法进行转账了。


    来源:布洛克财经

    展开全文
  • 此存储库包含特别感兴趣的以太坊2场景 目前,它包含: 测试向量下载器 未来的计划包括: 使用或起毛引起的错误 基准场景,尤其是那些可能触发退化案例的场景 克隆仓库 克隆和下载官方测试载体 克隆存储库后,您将...
  • 以太坊是什么以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 对这句话不理解的同学,姑且可以理解为以太坊是区块链里的...

    最新内容会更新在主站深入浅出区块链社区
    原文链接:以太坊是什么 - 以太坊开发入门指南

    很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。

    写在前面

    阅读本文前,你应该大概了解区块链是什么,如果你还不了解,建议先阅读区块链技术学习指引

    以太坊是什么

    以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。

    对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们就可以像基于Android Framework一样基于区块链技术写应用。

    在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。
    以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。

    目前围绕以太坊已经形成了一个较为完善的开发生态圈:有社区的支持,有很多开发框架、工具可以选择。

    智能合约

    什么是智能合约

    以太坊上的程序称之为智能合约, 它是代码和数据(状态)的集合。

    智能合约可以理解为在区块链上可以自动执行的(由事件驱动的)、以代码形式编写的合同(特殊的交易)。

    比特币脚本中,我们讲到过比特币的交易是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限,
    而以太坊则更加完备(在计算机科学术语中,称它为是“图灵完备的”),让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。

    智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。
    目前除数字货币之外,真正落地的应用还不多(就像移动平台刚开始出来一样),相信1到3年内,各种杀手级会慢慢出现。

    编程语言:Solidity

    智能合约的默认的编程语言是Solidity,文件扩展名以.sol结尾。
    Solidity是和JavaScript相似的语言,用它来开发合约并编译成以太坊虚拟机字节代码。

    还有长得像Python的智能合约开发语言:Serpent,不过建议大家还是使用Solidity。

    Browser-Solidity是一个浏览器的Solidity IDE, 大家可以点进去看看,以后我们更多文章介绍Solidity这个语言。

    运行环境:EVM

    EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。

    Solidity之于EVM,就像之于跟JVM的关系一样,这样大家就容易理解了。
    以太坊虚拟机是一个隔离的环境,在EVM内部运行的代码不能跟外部有联系。

    而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。

    合约的编译

    以太坊虚拟机上运行的是合约的字节码形式,需要我们在部署之前先对合约进行编译,可以选择Browser-Solidity Web IDE或solc编译器。

    合约的部署

    在以太坊上开发应用时,常常要使用到以太坊客户端(钱包)。平时我们在开发中,一般不接触到客户端或钱包的概念,它是什么呢?

    以太坊客户端(钱包)

    以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能。

    EVM是由以太坊客户端提供的

    Geth是典型的开发以太坊时使用的客户端,基于Go语言开发。 Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。Geth的使用我们之后会有文章介绍,这里大家先有个概念。

    Geth控制台和Chrome浏览器开发者工具里的面的控制台是类似,不过是跑在终端里。
    相对于Geth,Mist则是图形化操作界面的以太坊客户端。

    如何部署

    智能合约的部署是指把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址称为合约账户。

    以太坊中有两类账户:

    • 外部账户
      该类账户被私钥控制(由人控制),没有关联任何代码。
    • 合约账户
      该类账户被它们的合约代码控制且有代码与之关联。

    和比特币使用UTXO的设计不一样,以太坊使用更为简单的账户概念。
    两类账户对于EVM来说是一样的。

    外部账户与合约账户的区别和关系是这样的:一个外部账户可以通过创建和用自己的私钥来对交易进行签名,来发送消息给另一个外部账户或合约账户。
    在两个外部账户之间传送消息是价值转移的过程。但从外部账户到合约账户的消息会激活合约账户的代码,允许它执行各种动作(比如转移代币,写入内部存储,挖出一个新代币,执行一些运算,创建一个新的合约等等)。
    只有当外部账户发出指令时,合同账户才会执行相应的操作。

    合约部署就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上(由实际矿工出块之后,才真正部署成功)。

    运行

    合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。

    Gas

    和云计算相似,占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)同样需要付出相应的费用(天下没有免费的午餐对不对!)。
    以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。
    任何特定的合约所需的运行合约的Gas数量是固定的,由合约的复杂度决定。
    而Gas价格由运行合约的人在提交运行合约请求的时候规定,以确定他愿意为这次交易愿意付出的费用:Gas价格(用以太币计价) * Gas数量。

    Gas的目的是限制执行交易所需的工作量,同时为执行支付费用。当EVM执行交易时,Gas将按照特定规则被逐渐消耗,无论执行到什么位置,一旦Gas被耗尽,将会触发异常。当前调用帧所做的所有状态修改都将被回滚, 如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。

    如果没有这个限制,就会有人写出无法停止(如:死循环)的合约来阻塞网络。

    因此实际上(把前面的内容串起来),我们需要一个有以太币余额的外部账户,来发起一个交易(普通交易或部署、运行一个合约),运行时,矿工收取相应的工作量费用。

    测试网络:私有链

    有些着急的同学要问了,我没有以太币,要怎么进行智能合约的开发?
    答案是创建自己的以太币私有测试网络,通常也称为私有链,我们可以用它来作为一个测试环境来开发、调试和测试智能合约。
    通过上面提到的Geth很容易就可以创建一个属于自己的测试网络,以太币想挖多少挖多少,也免去了同步正式网络的整个区块链数据。

    另一个创建测试网络的方法是使用testrpc,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更方便快捷。而且testrpc可以在启动时帮我们创建一堆存有资金的测试账户。
    进行合约开发是,可以在testrpc中测试通过后,再部署到Geth中去。

    Dapp:去中心化的应用程序

    以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App)。如果我们把区块链理解为一个不可篡改的数据库,智能合约理解为和数据库打交道的程序,那就很容易理解Dapp了,一个Dapp不单单有智能合约,比如还需要有一个友好的用户界面和其他的东西。

    Truffle

    Truffle是Dapp开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程。

    总结

    我们现在来总结一下,以太坊是平台,它让我们方便的使用区块链技术开发去中心化的应用,在这个应用中,使用Solidity来编写和区块链交互的智能合约,合约编写好后之后,我们需要用以太坊客户端用一个有余额的账户去部署及运行合约(使用Truffle框架可以更好的帮助我们做这些事情了)。为了开发方便,我们可以用Geth或testrpc来搭建一个测试网络。

    注:本文中为了方便大家理解,对一些概念做了类比,有些严格来不是准确,不过我也认为对于初学者,也没有必要把每一个概念掌握的很细致和准确,学习是一个逐步深入的过程,很多时候我们会发现,过一段后,我们会对同一个东西有不一样的理解。

    本文完,这些概念你都明白了么?

    深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客

    展开全文
  • 【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景 2)议题: 通过本次技术分析,可以了解以太坊的ERC定义及知名ERC协议标准,如同质化通证系列ERC20以及ERC223协议; 非同质化系列ERC721以及 ERC875,ERC...

    1,活动基本信息

    1)题目:
    【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景

    2)议题:
    通过本次技术分析,可以了解以太坊的ERC定义及知名ERC协议标准,如同质化通证系列ERC20以及ERC223协议; 非同质化系列ERC721以及 ERC875,ERC1155协议;STO标准半同质化系列ERC1400系列协议。

    议题纲要:

    1. ERC的定义及标准列表
    2. 同质化通证ERC20系列 - ERC20、ERC223
    3. 非同质化通证ERC721系列 - ERC721,ERC875,ERC1155
    4. 证券类通证ERC1400系列

    3)嘉宾:

    王登辉,创业股平台 CTO,尖晶投资技术赋能中心副总经理, HiBlock技术社群上海合伙人,电子科技大学硕士毕业, 10年华为/中兴 产品.研发经验,深耕区块链应用。

    4)活动定位
    区块链技术工坊系列活动,由HiBlock,兄弟区块链,,创业股平台联合主办,HPB芯链战略支持的,聚焦于深度分享区块链知识,实现小会技术交友。区块链技术工坊坚持4F原则
    Frency - 每周三晚上一次;
    Focus - 聚焦区块链技术分享;
    Fun - 20人以内会前做自我介绍,分享有深度的技术内容,技术交友;
    Feedback - 会后有活动实录和合影照片。

    2. 会议实录

    ERC代表“Etherum Request for Comment",这是Ethereum版的意见征求稿 (RFC),包括一些关于以太坊网络建设的技术指导。
    EIP表示以太坊优化协议(Ethereum Improvement Protocol),是一个进行代码修改并提交到平台加以接受的过程。
    改进方案中包括协议规范和合约标准。 一旦EIP被委员会批准并最终确定,它就成为ERC。

    1)如果开发人员对软件改动有了新的想法,这个想法应该以拉取请求(pull request)的形式呈现出来。在一个拉取请求中,改动能够在提案中轻易完成,同时积极听取社区的反馈。在这里,它属于EIP编辑的审查改动范围内。
    2)如果EIP编辑认为这个请求在技术上没有错误的地方,并且符合以太坊的社区价值观,他们会将其作为草稿合并到下一个阶段中。
    3)在合并之后,如Geth和Parity等以太坊各式各样的软件应用才会诞生,并且如果它们能真的运作起来,这个提案最终被看作是“已接受”。
    4) 一旦接受以后,整个平台就会根据这个EIP提供的用以运行以太坊软件的多样代码来进行升级。
    相应的EIP对应有4种状态:
    草稿(Draft) - 处于打开状态,便于考察讨论;
    接受(Accepted) - 即将被接受,例如将包含在下一个硬分叉中;
    定稿(Final)- 在上一个硬分叉中被接受,已定稿;
    延期(Deferred)- 不会马上被接受,但也许在将来的硬分叉版本会考虑。

    1. 同质化通证ERC20系列
    2. 非同质化通证ERC721系列
    3. 证券类通证ERC1410系列
      网址:https://github.com/ethereum/EIPs

    1)ERC20概要
    状态:
    定稿(Final)
    提交记录:
    https://github.com/ethereum/EIPs/issues/20
    标准说明:
    https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
    推荐样例:
    https://github.com/OpenZeppelin/openzeppelin-solidity/tree/master/contracts/token/ERC20

    2)ERC-20标准核心函数:

    • totalSupply():
      返回代币供给总量
    • balanceOf(address _owner):
      返回_owner的帐户余额
    • transfer(address _to,uint256 _value):
      并将数量为_value的代币转入地址_to并触发transfer事件
    • transferFrom(address _from,address _to,uint256_value):
      将地址_from中的_value数量的代币转入地址_to ,并触发transfer事件
    • approve(address _spender,uint256 _value):
      允许_spender提取限额_value的代币
    • allowance(address _owner,address _spender):
      返回_spender可从_owner提款的代币数量上限

    1)概要
    状态:
    草稿(Draft)
    提交记录:
    https://github.com/ethereum/EIPs/issues/223
    标准说明:
    https://github.com/Dexaran/ERC223-token-standard
    推荐样例:
    https://github.com/Dexaran/ERC223-token-standard/tree/Recommended

    2)ERC223核心函数

    • transfer(address _to, uint _value):
      会区分代币是发往外部账户地址还是发往智能合约地址。
    • transfer(address _to, uint _value, bytes _data):
      会区分代币是发往外部账户地址还是发往智能合约地址,还可以传送数据。
      2、如果_to(接收方合约)中没有实现tokenFallback函数,则事务必须失败,并且不会发生通证的传输。
      3、如果_to是外部拥有的地址,则必须发送事务,而不尝试在_to中执行tokenFallback。
      4、_data可以附加到这个通证(token)交易中,它将永远保持在块状(需要更多的gas)。 _data可以是空的。

    ERC721官方简要解释是Non-Fungible Tokens,简写为NFTs,多翻译为非同质代币。
    ERC721 是由谜恋猫CryptoKitties背后的公司Axiom Zen的技术总监Dieter Shirley 在2017年9月提出。
    目前谜恋猫已有20万ETH地址参与玩过。
    那怎么理解非同质代币呢?
    非同质代表独一无二,谜恋猫为例,每只猫都被赋予拥有基因,是独一无二的(一只猫就是一个NFTs),猫之间是不能置换的。这种独特性使得某些稀有猫具有收藏价值,也因此受到追捧。
    ERC20代币是可置换的,且可细分为N份(1 = 10 * 0.1), 而ERC721的Token最小的单位为1,无法再分割。
    如果同一个集合的两个物品具有不同的特征,这两个物品是非同质的,而同质是某个部分或数量可以被另一个同等部分或数量所代替。
    非同质性其实广泛存在于我们的生活中,如图书馆的每一本,宠物商店的每一只宠物,歌手所演唱的歌曲,花店里不同的花等等,因此ERC721合约必定有广泛的应用场景。通过这样一个标准,也可建立跨功能的NFTs管理和销售平台(就像有支持ERC20的交易所和钱包一样),使生态更加强大。

    (1)ERC721概要
    状态:
    定稿(Final)
    提交记录:
    https://github.com/ethereum/EIPs/issues/721
    标准说明:
    https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
    推荐样例:
    1)https://www.cryptokitties.co/
    2)https://github.com/OpenZeppelin/openzeppelin-solidity/tree/master/contracts/token/ERC721

    (2)ERC721函数接口

    • balanceOf(address _owner):
      返回由_owner 持有的NFTs的数量。
    • ownerOf(uint256 _tokenId):
      返回tokenId代币持有者的地址。
    • exists(uint256 _tokenId):
      tokenId代币是否存在,返回BOOL值;
    • approve(address _to, uint256 _tokenId):
      授予地址_to具有_tokenId的控制权,方法成功后需触发Approval 事件。
    • getApproved(uint256 _tokenId):
      获得_tokenId授权的地址;
    • setApprovalForAll(address _operator, bool _approved):
      授予地址_operator具有所有NFTs的控制权,成功后需触发ApprovalForAll事件。
    • isApprovedForAll(address _owner, address _operator):
      用来查询授权。
    • transferFrom(address _from, address _to, uint256 _tokenId)
      不建议使用本函数,建议使用safeTransferFrom函数。
    • safeTransferFrom(address _from, address _to, uint256 _tokenId):
      把_tokenId代币从_from账户安全转移到_to账户,安全是指如果目标地址为合约地址,则执行onERC721Received进行资产转移,否则的话交易会回滚;如果目标地址为外部账号地址,则正常转移。
    • ERC721Metadata(可选接口)
      ERC721Metadata接口用于提供合约的元数据:name , symbol 及 URI
      URI表示NFT所对应的资源,例如
      https://opensea-creatures-api.herokuapp.com/api/openseatest/3
      tokenURI(): 返回_tokenId所对应的外部资源文件的URI。
      外部资源文件需要包含名字、描述、图片, 输入URI可返回,其格式的要求如下页。
    • ERC721Metadata – 外部资源JSON

    如何创建自己的ERC721非同质化资产生物商店?

    如何装饰ERC721非同质化资产

    ERC875协议是由AlphaWallet团队提出的,他们希望基于ERC875协议族,能够实现人、事、物、权token化。
    另一种协议ERC721也能实现token的不可置换性,但其存在需要交易双方支付gas费用、无法简单实现原子化交易等一些不易于用户使用的问题。

    **首个落地应用:**体育票务或许与张中南在票务业务的经历有关,AlphaWallet选择从ERC875和钱包切入的第一个use case就是俄罗斯世界杯门票。目前 AlphaWallet 已与盛开体育达成合作。今年的俄罗斯世界杯,二者联合引入区块链技术以测试新的票务解决方案,将盛开体育世界杯票库内的部分门票转化为以太坊上的ERC875的token。由于这些token具有不可置换性,用户通过AlphaWallet钱包的动态二维码,以及线下的现场扫描,即可获得世界杯门票。考虑到进一步安全的问题,AlphaWallet钱包显示的动态二维码,每隔10s就会变一次。

    ERC875概要
    状态:
    还处于pull request下(issue)
    提交记录:
    https://github.com/ethereum/EIPs/issues/875
    标准说明:
    推荐样例:
    https://github.com/alpha-wallet/ERC875-Example

    (2) ERC875核心函数

    • function transfer(address _to, uint256[] _tokens) public;
      通过包含通证索引的数组参数,把一组独一无二的通证转移给一个账户地址。相比ERC721一次只能转账一个通证,ERC875更显友好,它可以一次批量转账一组通证。这样既便利又能节约大量的GAS消耗。

    • function trade(uint256 expiryTimeStamp, uint256[] tokenIndices, uint8 v, bytes32 r, bytes32 s) public payable
      该函数允许用户出售一组非同质通证而不需要支付GAS费,只需要购买者支付。这是通过签署包含要销售的代币数量,合同地址,到期时间戳,价格和包含ERC规范名称和链ID的前缀的证明来实现的。然后,买方可以通过附加适当的以太币(ether)来满足交易,从而在一次交易中支付交易。这种设计也更有效,因为它允许订单在离线前完成,而不是在智能合约中创建订单并更新订单。到期时间戳保护卖方免受使用旧订单的人的影响。这为点对点(p2p)原子交换(atomic swap)打开了大门,但对于这个标准应该是可选的,因为有些可能没有用它。需要在消息中添加一些保护,例如编码链ID,合同地址和ERC规范名称,以防止重放和欺骗人们签署允许交易的消息。

    恩金(Enjin)花了大半年的时间一直在完善ERC-1155这个通证协议,毫不夸张地说,该标准是现有以太坊上最适用于游戏资产的通证标准,将主流游戏中道具涉及到的一切操作经过高度抽象之后,基本通过ERC-1155进行了实现。
    “多重宇宙的道具”,也就是可以跨游戏使用的游戏资产,他可以是角色,可以是武器,也可以是各类物品。

    ?行业内最先支持ERC-1155标准
    ?可以创建不限数量支持游戏藏品的钱包
    ⏩对游戏藏品的显示速度进行了最大程度的优化
    ?游戏内道具的交易记录(发送/接收/铸造)
    ?浏览其他人钱包里游戏道具
    ?原生支持ERC-721&ERC-1155协议
    ?针对War of Crypto 提供ERC-1155的支持
    ?针对Gods Unchained 提供ERC-721的支持
    ?针对CryptoKitties 提供ERC-721的支持

    ERC1155概要
    状态:
    草稿(Draft)
    提交记录:
    https://github.com/ethereum/EIPs/issues/1155
    标准说明:
    https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md
    推荐样例:
    https://enjincoin.io/
    (2)ERC1155核心函数

    • 1) mint(string _name, uint256 _totalSupply, string _uri, uint8 _decimals, string _symbol)
      增发同质化通证
    • 2)approve(address _spender, uint256 _id, uint256 _currentValue, uint256 _value)
      授权给_spender账户一定额度的编号为 _id的同质化通证,_currentValue为当前已授权额度;
    • 3)transferFrom(address _from, address _to, uint256 _id, uint256 _value)
      拥有者从 _from地址给 _to地址转账授权范围内的一定额度的一类同质化通证;
    • 4)balanceOf(uint256 _id, address _owner)
      拥有者_owner的 _id同质化通证的余额;
    • 5)allowance(uint256 _id, address _owner, address _spender)
      拥有者 _owner给消费者_spender在当前查询账户授权(approve)的额度;
    • 6)batchApprove(address _spender, uint256[] _ids, uint256[] _currentValues, uint256[] _values)批量授权给_spender[]一组账户一定额度_values[]的编号为_ids[]的同质化通证,_currentValue[]为当前已授权额度,这几个数组的长度要严格对齐;
    • 7)batchTransferFrom(address _from, address _to, uint256[] _ids, uint256[] _values)
      拥有者从 _from地址给 _to地址转账授权范围内的一定额度_values[]的各类编号为_ids[]的各类同质化通证;
    • 8) -batchTransfer(address _to, uint256[] _ids, uint256[] _values)
      批量给目标账号_to转账各类编号为_ids[]的各类数额分别是_values[]的各类同质化通证;
    • 9)multicastTransfer(address[] _to, uint256[] _ids, uint256[] _values)
      当前账号批量给目标地址组合_to[]分别转移额度为_values[]的各类编号为_ids[]的同质化通证。


    1,合法合规性
    STO 最大优势就是主动接受监管,在有关部门的监督管理下合法合规运作。与信息不对称、权责不对称的 ICO 相比,监管机构将更容易对 STO 交易进行穿透式
    监管;再结合区块链公开透明、不可篡改等优点,监管机构更容易实施反洗钱、投资者准入、交易合约设计审核等等监管措施。STO 对投资者的保障更加完善,也有可能会降低监管的难度,增加了项目发展的稳定性和可预期性。
    2, 为有价值的项目提供快捷融资渠道, 扁平化PE/VC剪刀差空间。
    这意味着未来谁的资产/项目更具有财富效应,全球资本就会涌向哪里。未来跨境资本流动会更加剧烈,对于创富能力强的国家和组织,是大的利好。
    3, crypto的出现导致全球第一次从技术上出现了全球统一市场。
    过去,除非各国监管共同努力,才能导致金融市场互联互通,现在由于crypto市场的出现,除非监管拼命努力,才能导致这个全球互联互通的市场断开。

    标准制定了 Token 持有人的余额分离成多个分片(tranche)的能力。tranche 是一种以债务为基础的投资结构。这些证券将具有不同期限的,投资风险或高或低的 tranche 组合成一个整体,以达到降低投资者的风险,提供长期投资的目的。例如,你可能有一笔贷款转付证券,其中包括5到30年期的高风险和低风险的转付证券,基于 ERC1400 标准的 Token 将支持这种投资方式。


    (1)ERC1410概要
    状态:
    草稿(Draft)
    提交记录:
    1)ERC 1410: Partially Fungible Token Standard:
    https://github.com/ethereum/EIPs/issues/1410
    2)ERC 1400: Security Token Standard #1411
    https://github.com/ethereum/EIPs/issues/1411
    推荐样例:
    https://blog.neufund.org/good-protocols-how-to-properly-standardize-security-tokens-95ff83c81c4a

    (2)ERC1410核心函数

    • function sendByTranche(…)
      表示上述接口表示从调用者的指定tranche转指定金额到目的账户。
    • function operatorSendByTranche(…)
      ERC1410基于 ERC777继承了交易员(operator)的相关概念,允许某个交易员代表某个账户持有者基于tranche进行转账。
    • function authorizeOperatorByTranche
      消息发送者授权给某个交易员某个特定tranche的操作权。每次被调用,必须emit AuthorizedOperatorByTranche event。

    文章链接

    【以太坊通证标准】ERC20系列,ERC721系列,ERC1400系列 https://www.jianshu.com/p/fc4dbe1fbf2c
    第十九课 代币锁仓后逐步释放的ERC20智能合约实践 https://www.jianshu.com/p/db7cb9431ecc

    第十七课 【ERC721实践】迷恋猫从玩耍到开发 https://www.jianshu.com/p/684490db252c
    第三十三课 如何创建自己的ERC721非同质化资产生物商店? https://www.jianshu.com/p/57d58b1cd53a
    第三十四课 采用TRUFFLE框架如何创建自己的ERC721非同质化资产生物商店? https://www.jianshu.com/p/e1c7191b5f70
    第三十五课 如何配置Metadata以便装饰你的ERC721非同质化资产? https://www.jianshu.com/p/d5710a41a388

    第十八课 【ERC875】Hiblock黑客马拉松门票从定制到编码实现 https://www.jianshu.com/p/ddaa0d3643ce

    【ERC1155实践】ENJ铸造第一个有价值背书的游戏资产-WOC https://www.jianshu.com/p/2d67a0f0d199
    第二十课 【ERC1155实践】欧阳询书法复制品从确权设计到买卖测试 https://www.jianshu.com/p/159bb16001a7
    【ERC1155实践】区块链游戏的平行宇宙和为此而生的Enjin钱包 https://www.jianshu.com/p/d558acbc8f65

    【ERC1400标准】支持证券增发,交易,相关法律文件存储的证券类同质化通证 https://www.jianshu.com/p/1e300a73eeef
    第三十一课 ERC1410标准从分析到代码实现 https://www.jianshu.com/p/7588bcdda28c
    【区块链实践】STO技术标准(ST-20,SRC20,R-TOKEN,DS Protocol,ERC1400,ERC1410) https://www.jianshu.com/p/db0ccdeb81ad


    本次实录纪要由辉哥(王登辉,尖晶资本副总,HiBlock上海合伙人)整理记录,转发务必注明出处及本段信息。

    现场活动照片:

    坐席嘉宾介绍:嘉定蓝天经济城代表嘉宾,承诺区块链企业注册落地嘉定,享受2年免租,3年税收减半政策。这是对创业者的最大福利,本次享受VIP专席待遇。

    3. 下期活动宣传

    1)题目:
    【区块链技术工坊35期】区块链上的稳定币理论和技术实现

    2)议题:
    过去一年里,稳定币成为了区块链的最热门话题之一。USDT 的独占鳌头,去中心化稳定币 Dai 的一枝独秀以及各种引入监管稳定币的出现让稳定币的市场好不热闹。最近摩根大通银行推出的 JPM coin再次引爆了区块链行业。错综复杂的市场下,对于用户而言,要去了解每一种稳定币的模式、甄别优劣和选择合适的稳定币却不是一件简单的事情。甚至对很多资深的区块链从业者,理解稳定币也并不容易。

    “稳定币会是区块链的第三次落地应用吗?”“稳定币该怎么设计才能保持稳定?”“稳定币会取代法币吗?”“稳定币的商业模式和风险是什么?”“央行数字货币是何物”。请报名者带好笔记本电脑,且看MakerDAO 中国区负责人潘超的技术观点和从业经验的分享。

    议题纲要:

    1. 稳定币出现的背景和原因。
    2. 稳定币的已有模式和经济学原理。
    3. 稳定币的技术实现和难点
    4. 央行数字货币的原理与设计

    3)嘉宾:

    潘超, MakerDAO 的货币政策研究员,同时担任中国区的负责人和 Maker 基金会理事。潘超的主要研究领域包括货币银行理论、区块链上的稳定币实现和机器学习在经济学中的应用,著有《稳定货币:区块链的第三次落地应用》课程。

    4)时间/地点:
    2019-03-13(周三晚上) 18:30 / 上海徐汇区龙华中路596号A座

    5)活动报名海报
    请微信扫描二维码报名参与,有门禁密码私送,空降无法参加。

    展开全文
  • 以太坊框架梳理

    千次阅读 多人点赞 2020-01-16 14:26:48
    一、整体框架 1、以太坊介绍 以太坊是一个开放的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH...以太坊使用场景 支付系统:用于去中心数字货币交易,价值互换 去中心化应用:黄金和...

    一、整体框架

    1、以太坊介绍

    以太坊是一个开放的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供以太虚拟机(Ethereum Virtual Machine)来处理去中心化合约应用。

    以太虚拟机

    以太坊虚拟机(EVM):可以执行复杂算法的编码的,具备图灵完备的基于栈的虚拟机。

    以太坊使用场景

    支付系统:用于去中心数字货币交易,价值互换

    去中心化应用:黄金和股票的数字化应用、金融衍生品应用、数字认证、追踪溯源、游戏等

    以太坊特点

    智能合约(smart contract):存储在区块链上的程序,由各节点运行,需要运行程序的人支付手续费给节点的矿工或权益人。

    代币(tokens):智能合约可以创造代币供分布式应用程序使用。分布式应用程序的代币化让用户、投资者以及管理者的利益一致。代币也可以用来进行首次代币发行。

    叔块(uncle block):将因为速度较慢而未及时被收入母链的较短区块链并入,以提升交易量。

    账户系统和世界状态:以太坊不采用UTXO,容易支持更复杂的逻辑

    状态通道(state channels):原理类似比特币的闪雷网络,可提升交易速度、降低区块链的负担,并提高可扩展性。尚未实现,开发团队包括雷电网络(Raiden Network)和移动性网络(Liquidity Network)。

    以太坊缺点

    性能有待提升:虽然以太坊相比比特币而言,性能有了大幅提升,比特币目前每秒能处理7笔交易,以太坊目前每秒能够处理大概25笔交易,目前以太坊上还没有出现支持过亿用户的DAPP,一旦出现大规模交易就会造成网络拥堵。

    业内其他方案对比

    方案数据模型共识算法智能合约性能
    比特币基于交易PoW基于栈的非图灵完备合约7笔/秒
    以太坊基于账号Pow/ Pos/ PBFT(fisco版本)EVM(Solidity)主链18笔/秒
    Fabric基于账户PBFTChainCode(Go/Java)理论最高1万
    EOS基于账号BFT-DPoSWASM理论上百万级,目前主链最高3996

    2、以太坊核心架构

    层级架构

    在这里插入图片描述
    如图所示:以太坊核心架构从上层到底层主要包括:
    顶层应用:Solidty智能合约语言、去中心化应用DPP、普通支付交易
    API接口服务:提供Http、TCp相关的接口RPC框架服务
    分布式账本:包括交易、区块、区块校验工具、回执、状态数据、交易池相关信息。
    以太坊虚拟机(EVM):智能合约的核心执行层
    共识:金联盟fisco以PBFT为主,以太坊公链为POW算法,以太坊测试网也有POS的共识算法
    网络服务:点对点节点发现及链接服务,区块链同步服务
    底层服务:数据库(leavelDB等)、密码学(椭圆曲线算法等)、基础算法(MPT/布隆/RLP等)

    生命周期架构

    在这里插入图片描述
    如图所示以太坊集群下的生命周期模型,其中主要分为八个阶段。
    1、建立链接:在以太坊节点启动或者节点链接数过小或者接受到其他节点链接时,节点需要通过P2P网络机制与其他节点建立链接。P2P网络的建立涉及到基于Kad通信协议的节点发现机制、TCP连接建立以及session模型建立。
    2、同步交易/区块:当一个节点启动并与附件节点建立链接之后,会进行区块数据的同步:节点在区块链长度落后全网的时候,会通过全网节点进行同步构建best链。同时区块同步还涉及到主动同步及交易同步。当区块导入成功,成为最长区块链后,会将最新的区块信息在全网进度主动同步,以使保持全网的状态一致;节点收到客户端的交易时,会对最新交易进行相互同步
    3、以太坊节点接收client发送的交易:以太坊节点接收来自DAPP应用、支付交易的客户端请求。以太坊通过防双花等基础校验加入到交易池中TxPool,进行交易排队,等待交易被同步或打包出块。
    4、区块链打包交易:以太坊节点根据不同共识算法的逻辑打包交易出块,如PBFT根据出块节点算法轮到某个节点出块、PoW根据节点为最长链时打包出块。打包出块中会根据一定是打包算法,将交易池中的N笔交易打包进未确定区块。这里的区块并未加入的区块链中,也不包括交易执行完成的hash信息。未确定区块打包完成,即进行交易执行及共识阶段。
    5、交易执行:新区块中的每一笔交易都会交给以太坊虚拟机(EVM)进行交易执行,这个过程涉及到合约账号的EVM交易执行器的初始化、执行、evm堆栈指令运行 以及运行结果汇总。EVM执行过程中会涉及到状态数据的查询及存储、交易回执的产生;在所有交易执行完成后,会对未确定区块设置交易头信息,包括TransactionReceipt、logbloom 、gasUsed 等内容。 ps:交易执行分布在共识流程中的一个阶段中,和共识阶段并行执行,同时交易执行涉及的点比较多,故这里将交易执行及共识阶段做分开处理
    6、区块共识阶段:以太坊公链中目前采用POW共识算法,设计到节点的工作量证明(Ethash 共识)。在fisco联盟链中,主要采用PBFT的三阶段共识,主要是Prepare阶段、Sign阶段、Commit阶段。共识消息将通过第一步已经建立的P2P网络进行发送。
    7、区块导入阶段:当 待出区块 历经打包完成 以及共识成功后,就会进入导入流程,导入流程主要时将共识完成的区块 落盘,落盘过程中,一方面,将Block 中相关的信息 其中包括 Transaction 列表、TransactionReceipt 列表、LogBloom 列表 、账号状态树 以及对应的查找索引等;另一方面,会处理 链分叉的情况,并构建最长best区块链。
    8、客户端查询:在一次区块出块成功后,客户端会对交易结果,最新区块信息,交易回执,合约数据等信息的查询。
    与此同时,
    这里还设计到几个基础技术:

    • RLP:以太坊序列化算法,在通讯 以及 存储 等核心功能中,均需依赖于 rlp 的解码 以及 编码 的功能。
    • MPT:是一种经过改良的、融合了Merkle tree和前缀树两种树结构优点的数据结构,以太坊中应用于全局状态树、交易树、收据树。
    • LogBloom and Filter:布隆过滤器在以太坊中用于检索交易日志log,方便交易结果的查询以及交易事件通知。
    • 账户模型:以太坊账户模型分为普通账户及合约账户,两类账户地址格式一致存储的数据信息不同
    • 区块及链模型:以太坊区块数据结构包括区块头(Header)、区块体(交易信息);以太坊区块链数据结构包括区块链头信息(HeaderChain)、创世区块信息(genesisBlock)、以及当前最长区块信息、区块缓存信息。
    • 密码学知识:椭圆曲线数字签名算法
    • EVM虚拟机:EVM是一种基于栈的虚拟机(区别于基于寄存器的虚拟机),用于编译、执行智能合约,是一种图灵完备的编译器。

    3、以太坊源码模块

    abiCNS(合约命名服务)模块代码
    eth主入口目录,其中main.cpp包含main函数入口
    libchannelserverAMOP(链上链下通信协议)实现目录
    libdevcore基础通用组件实现目录,如工具类函数、基础数据类型结构定义、IO操作函数、读写锁、内存DB、TrieDB、SHA3实现、RLP编解码实现、Worker模型等等
    libdiskencryption落盘存储加密实现目录
    libethcore区块链核心数据结构目录。如ABI、秘钥管理、区块头、预编译、交易结构等等
    libethereum区块链主框架逻辑目录。如交易池、系统合约、节点管理、块链、块、链参数等等
    libevm虚拟机主目录。如解释器、JIT等等
    libevmcoreOPCODE指令集定义、定价
    libp2p区块链P2P网络主目录。如握手、网络包编解码、会话管理等等
    libpaillier同态加密算法目录
    libpbftsealPBFT共识插件实现目录
    libraftsealRAFT共识插件实现目录
    libstatistics访问频率统计与控制实现目录
    libweb3jsonrpcweb3 RPC实现目录
    sample一键安装与部署
    scripts与安装相关的脚本
    systemproxy系统合约实现目录

    二、基础技术

    1、RLP

    RLP是Recursive Length Prefix的简写。是以太坊中的序列化方法,以太坊的所有对象都会使用RLP方法序列化为字节数组。RLP 在整个区块链技术体系中,承担着基石的作用,在通讯 以及 存储 等核心功能中,均需依赖于 rlp 的解码 以及 编码 的功能。

    RLP几种编码规则:总体可以概括为: 内容 (单字节) , 前缀+内容 (总长<55) , 或 前缀+长度+内容 (总长>55)

    • 规则1:(内容)… [0x00, 0x7f] 范围内的 单个字节 , RLP 编码内容就是字节内容本身。
    • 规则2:(前缀+内容)…0-55字节长度的字符串,RLP编码是 前缀(0x80+len(字符串))+字符串内容
    • 规则3(前缀+长度+内容)… >55字节长度字符串, RLP编码是 前缀(0xb7+len(len(字符串)))+len(字符串)+字符串内容
    • 规则4(前缀+内容). . 列表的总长度(列表的总长度指的是它包含的项的数量加它包含的各项的长度之和)是0-55字节,它的RLP编码是 前缀(0xc0+len(列表总))+列表中各元素项的RLP编码 ,前缀取值范围是 [0xc0, 0xf7] 。
    • 规则5(前缀+长度+内容)…列表的总长度大于55字节,它的RLP编码是 前缀(0xf7+len(len(列表总)))+len(列表总)+列表中各元素项的RLP编码 ,前缀取值范围是 [0xf8, 0xff] 。

    2、MPT

    在这里插入图片描述
    MPT是一种经过改良的、融合了Merkle tree和前缀树两种树结构优点的数据结构,用于以太坊的状态数据的存储。

    MPT的节点类型:

    • 叶字节点(Leaf): 叶字节点包含两个字段, 第一个字段是剩下的Key的半字节编码,而且半字节编码方法的第二个参数为true, 第二个字段是Value
    • 扩展节点(Extention): 扩展节点也包含两个字段, 第一个字段是剩下的Key的可以至少被两个剩下节点共享的部分的半字节编码,第二个字段是n(J,j)
    • 分支节点(Branch): 分支节点包含了17个字段,其前16个项目对应于这些点在其遍历中的键的十六个可能的半字节值中的每一个。第17个字段是存储那些在当前结点结束了的节点

    MPT在以太坊中的应用:

    • 状态树:涉及到以太坊平台账号及合约账号的数据存储。
    • 交易树:每一个区块中的每笔交易内容(from,to,gas,data等等)构建的交易树
    • 收据树:以太坊中的每一笔交易都有对应的收据,收据树的信息是为了方便一些相关账户的查询。

    3、LogBloom and Filter

    以太坊的区块头中包含了一个叫做logsBloom的区域。 这个区域存储了当前区块中所有的收据的日志的布隆过滤器,一共是2048个bit。也就是256个字节。

    而我们的一个交易的收据包含了很多的日志记录。 每个日志记录包含了 合约的地址, 多个Topic。 而在我们的收据中也存在一个布隆过滤器,这个布隆过滤器记录了所有的日志记录的信息。布隆过滤器在以太坊中可以方便交易结果的查询以及交易事件通知。

    布隆过滤器构建过程:

    布隆过滤器(Bloom Filter)的核心实现是一个超大的位数组和几个哈希函数。假设位数组的长度为m,哈希函数的个数为k。
    在这里插入图片描述
    以上图为例,具体的操作流程:假设集合里面有3个元素{x, y, z},哈希函数的个数为3(这里元素个数和哈希函数的数量没有直接关系)。

    1、将位数组进行初始化,将里面每个位都设置位0。
    2、对于集合里面的每一个元素,将元素依次通过3个哈希函数进行映射,每次映射都会产生一个哈希值,这个值对应位数组上面的一个点,然后将位数组对应的位置标记为1。
    3、查询W元素是否存在集合中的时候,同样的方法将W通过哈希映射到位数组上的3个点。如果3个点的其中有一个点不为1,则可以判断该元素一定不存在集合中。反之,如果3个点都为1,则该元素可能存在集合中。
    注意:此处不能判断该元素是否一定存在集合中,可能存在一定的误判率。可以从图中可以看到:假设某个元素通过映射对应下标为4,5,6这3个点。虽然这3个点都为1,但是很明显这3个点是不同元素经过哈希得到的位置,因此这种情况说明元素虽然不在集合中,也可能对应的都是1,这是误判率存在的原因。

    4、账户模型

    以太坊账户模型分为普通账户及合约账户:

    • 外部账户地址:普通用户拥有的公私钥配对的账户,也就是我们常用的存储自己代币的账户地址。
    • 合约账户地址:合约账户地址指智能合约的账户地址。

    在以太坊账户中,我们维护以下几个状态:

    • nonce:外部账户为交易次数,合约账户为创建的合约序号。
    • balance:此地址的以太币余额。
    • storageRoot:账户存储内容组成的默克尔树根的哈希值。
    • codeHash:账户EVM代码的hash值。合约账户即为合约代码的哈希值,外部账户为空字符串的哈希值

    5、区块及链模型

    区块及链模型主要包括区块(block)及区块链(blockchain)。

    区块(block)是Ethereum的核心数据结构之一。所有账户的相关活动,以交易(Transaction)的格式存储,每个Block有一个交易对象的列表;每个交易的执行结果,由一个Receipt对象与其包含的一组Log对象记录;所有交易执行完后生成的Receipt列表,存储在Block中(经过压缩加密)。不同Block之间,通过前向指针ParentHash一个一个串联起来成为一个单向链表。

    区块链(blockchain)管理整个区块单向链表,在一个Ethereum客户端软件(比如钱包)中,只会有一个BlockChain对象存在。同Block/Header的关系类似,BlockChain还有一个成员变量类型是HeaderChain, 用来管理所有Header组成的单向链表。当然,HeaderChain在全局范围内也仅有一个对象,并被BlockChain持有。

    6、椭圆曲线数字签名算法

    以太坊中的数字签名全部采用椭圆曲线数字加密算法(ECDSA), 它的理论基础是椭圆曲线密码学(ECC),而ECC存在的理论基础是点倍积(point multiplication)算式 Q = dP 中的私钥 d (几乎)不可能被破译。ECC相对于基于大质数分解的RSA,在提供相同安全级别的情况下,仅需长度更短的公钥。

    以太坊椭圆曲线数字签名算法使用场景:

    • 一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名;
    • 二是在共识算法的Clique算法实现中,在针对新区块进行授权/封印的Seal()函数里,对新创建区块做了数字签名

    7、EVM虚拟机

    以太坊虚拟机(environment virtual machine,简称EVM),作用是将智能合约代码编译成可在以太坊上执行的机器码,并提供智能合约的运行环境。
    在这里插入图片描述
    EVM的特点:

    • EVM是一种基于栈的虚拟机(区别于基于寄存器的虚拟机),用于编译、执行智能合约
    • EVM是图灵完备的(图灵完备是指:具有无限存储能力的通用物理机器或编程语言,简单来说就是可以解决一切可计算的问题)
    • EVM是一个完全隔离的环境,在运行期间不能访问网络、文件,即使不同合约之间也有有限的访问权限
    • 操作数栈调用深度为1024
    • 机器码长度一个字节,最多可以有256个操作码

    三、核心功能拆解

    1、P2P网络

    以太坊作为一个去中心化的系统,其底层个体相互间的通信显然非常重要,所有数据的同步,各个个体状态的更新,都依赖于整个网络中每个个体相互间的通信机制。以太坊的网络通信基于peer-to-peer(p2p)通信协议,又根据自身传输数据类型(区块,交易,哈希值等),网络节点业务相关性等需求,在各方面做了特别设计。

    在这里插入图片描述

    基于Kad通信协议的节点发现机制
    如今很多P2P网络的实现都采用DHT的方式实现查找,其中Kademlia(简称Kad)算法由于其简单性、灵活性、安全性成为主流的实现方式。
    以太坊Kademlia算法不断的从附近节点发现新的节点,并刷新本地的k桶, Kad算法设计以下几个方面:

    • K桶:Kad的路由表是通过称为K桶的数据构造而成,K桶记录了节点NodeId,distance,endpoint,ip等信息。以太坊K桶按照与target节点距离进行排序,共256个K桶,每个K桶包含16个节点。
    • 以太坊Kad网络中节点间通信基于UDP,主要由PING、PONG、FINDNODE、NEIGHBORS等4种UDP协议包。
    分类描述
    Ping探测一个节点,判断其是否在线
    PongPING命令响应
    FINDNODE向节点查询某个与目标节点ID距离接近的节点
    NEIGHBORSFIND_NODE命令响应,发送与目标节点ID距离接近的K桶中的节点

    建立TCP连接
    以太坊节点会开启一个TCP端口,用于承载业务数据,TCP的建立主要涉及到基于RLPx协议的两阶段握手过程。简单来说是:1.client 端与 server 端建立链接,交换公钥;2.通过共享秘钥加密交换Hello消息

    session模型建立
    在client 端与 server 端完成链接的建立后,会通过节点网络业务相关性建立不同的session模型,比如全节点业务类型、轻节点业务类型,并提供相应的广播等服务。

    2、交易/区块同步

    交易/区块同步同步模式分为:Fast节点、全节点、轻节点。

    • full 模式,从开始到结束,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息。速度最慢,但是能获取到所有的历史数据。
    • fast模式,获取区块的header,获取区块的body,在同步到当前块之前不处理任何事务。下载的数据大小约为50GB(截止2018-02-04)。然后获得一个快照,此后,像full节点一样进行后面的同步操作。这种方法用得最多,目的在不要在意历史数据,将历史数据按照快照的方式,不逐一验证,沿着区块下载最近数据库中的交易,有可能丢失历史数据。此方法可能会对历史数据有部分丢失,但是不影响今后的使用。
    • light模式,仅获取当前状态。验证元素需要向full节点发起相应的请求

    交易/区块同步方式还包括主动同步:

    • 自身节点导入成功一个 best block 时,会将 block 拆解成 block header 以及 block body 进行广播
    • 自身节点导入一笔交易后,也会进行同步

    3、交易流程

    在这里插入图片描述
    一笔交易的执行,主要包括交易接收、防双花、交易入队,然后在节点区块阶段进行交易打包,之后进行交易执行及共识,最后在通过区块队列导入到最长区块链中。
    防双花核心点:交易队列的去重检查、历史区块集的交易去重检查、区块高度范围检查
    交易打包核心点:打包策略、同步交易队列
    交易执行核心点:evm编译器初始化、gas扣减策略、执行流程
    区块导入核心点:区块最长链构建,区块数据存储一致性

    4、共识引擎

    以太坊公链中目前采用POW共识算法,设计到节点的工作量证明(Ethash 共识)。在fisco联盟链中,主要采用PBFT的三阶段共识。

    在这里插入图片描述
    以下为PBFT 的模型总结:

    阶段broadcast msgPBFTPacketTypehandle msg
    第一阶段broadcastPrepareReqPrepareReqPackethandlePrepareMsg
    第二阶段broadcastSignReqSignReqPackethandleSignMsg
    第三阶段broadcastCommitReqCommitReqPackethandleCommitMsg
    异常处理broadcastViewChangeReqViewChangeReqPackethandleViewChangeMsg

    PBFT的三阶段共识:

    • PBFT正常流程的三阶段是指:1. Prepare阶段 2. Sign阶段 3. Commit阶段。
    • PBFT中,由 N个节点组成的的共识网络最多可以容忍 f=(N-1)/3个节点作恶。
    • 在Sign阶段和Commit阶段,只有收到足够的来自其他节点的消息才能进入下一步。这里的足够是指数量达到quorum=N-f

    PBFT三阶段流程是正常情况完成共识的流程。实际环境下可能因为网络传输时延、主节点作恶、EVM执行超时等原因导致共识无法正常完成,上述问题统称为异常。在异常流程中,PBFT会进行视图切换。

    5、客户端RPC信息查询

    以太坊提供http及tcp的RPC方式提供给客户端进行交易发送及数据查询。
    其中客户端可以对区块中的交易结果,最新区块信息,交易回执,合约数据等信息进行查询。
    交易结果查询包括:eth_getTransactionByHash,
    区块信息查询包括:eth_getBlockByHash、eth_getBlockByNumber,
    合约内数据查询包括:eth_call,涉及到 Message call
    交易回执事件注册包括:eth_newFilter

    展开全文
  • 以太坊·电影院场景区块链应用探索 最近一直在思考区块链在各种场景下的落地问题。 下面是电影院场景区块链应用探索,这是我的一个设想,区块链如何在院线场景落地的一些思路。 为此我写一个这样的智能合约,...
  • 以太坊客户端是一种软件应用程序,他实现了以太坊协议规范,并通过点对点网络与其他以太坊客户端通信。如果遵从以太坊的参考规范并采用标准的通信协议,不同的以太坊客户端之间是可以实现交互的。尽管这些客户端是由...
  • 为你的以太坊应用程序设计架构

    万次阅读 2019-04-28 09:42:12
    当你即将开始以太坊开发,并查阅...在本篇文章中,我将提及以太坊应用程序中最经典的一些场景。它们的出现源于这三个部件(客户端、服务器与区块链)间的不同互动。我将论述无服务器应用程序、浏览器插件、私有节点...
  • 如何构建以太坊钱包网络应用 (How to build an Ethereum Wallet web app) 回顾eth-hot-wallet最酷的部分 (A review of the coolest parts of eth-hot-wallet) This article is a technical rev...
  • 以太坊白皮书

    2018-04-10 17:25:08
    以太坊最新白皮书,中本聪的比特币解决了虚拟货币交易的信任问题。但是实际应用中有大量的其他的场景,需要更多地支持,这样以太坊应运而生,用户可以布置更多地其他的应用程序
  • 以太坊开发--geth的使用入门

    万次阅读 热门讨论 2016-12-05 00:24:07
    当然以太坊客户端还有用C++,Ruby,Python,Java等其他多种语言编写的,不同类型的客户端是为了满足不同的需求场景。今天我们主要来介绍geth(发音同guess )的使用。 对于我们开发来说,比较普遍有两种方式打开geth...
  • 3.4 以太坊以太坊架构详解

    千次阅读 2018-11-20 14:11:17
    1.以太坊总体架构  以太坊详细架构  账户设计  外部账户:一般意义上的账户 合约账户:它是一种可编程的账户,合约存在以太坊的区块链上,它是代码和数据的集合。合约受代码控制并由外部所有账户激活 ...
  • 以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一...
  • 以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太坊的整个生态。目前,以太坊是区块链世界里生态建设最好的底层公链。本篇将以通俗易懂的方式介绍以太坊开发中涉及到的相关概念,带领大家轻松...
  • 以太坊的BloomIndexer具体实现了Chain_Indexer,可以认为是Chain_Indexer的派生类。 Chain_Indexer的初始化: func NewChainIndexer(chainDb, indexDb ethdb.Database, backend ChainIndexerBackend, section,...
  • 以太坊是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。就像比特币一样,以太坊不受任何人控制,也不归任何人所有——它是一个开放源代码项目,由全球范围内的很多人...
  • 以太坊源码分析

    2021-05-16 18:39:32
    目前,全世界有成千上万名开发者正在以太坊上构建应用程序、发明新的应用程序,其中有许多现在已经可以使用: 加密货币钱包:让你可以使用 ETH 或其他数字资产进行低成本的即时支付 金融应用程序:让你可以借贷、...
  • 摘要Ethereum-Wallet以太坊钱包,简介在windows及linux(ubuntu)的不同系统下的使用方法。 Ethereum-Wallet是使用较多的以太坊钱包,简介不同系统下使用方法。 windows下运行Ethereum-Wallet 已安装geth...
  • 文章目录一、什么是以太坊黄皮书二、以太坊黄皮书1. 引言2. 区块链范式参考 一、什么是以太坊黄皮书 以太坊白皮书 2014 年初,由以太坊创始人 Vitalik Buterin ( V 神)发表,从技术方面来看,白皮书只是描述了一种...
  • 0、前传 比特币(《精通比特币》笔记) 区块链-以太坊技术详解与实战下载 V神(Vitalik Buterin),区块链名人—以太坊(Eth)创始人简介 ... 区块链应用场景 2、以太坊架构和组成 以太坊整体框架 ...
  • 以太坊源码分析-以太坊启动

    万次阅读 2018-01-25 11:30:40
    以太坊源码分析-开篇13年时第一次知道比特币的存在,那时仅仅是跟风炒币而已,没有具体去了解相关的技术细节。前不久无意中有人提到「比特币在没有大维护的情况下完美运行8年了」,瞬间惊呆了,于是乎开始了解区块链...
  • 以太坊分析之 以太坊介绍

    千次阅读 2018-05-21 18:04:14
    以太坊介绍 以太坊(Ethereum)是一个建立在区块链技术之上,去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 区块链2.0 区块链是一个分布式账本,一种通过去中心化、去...
  • 很多同学已经跃跃欲试...以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 对这句话不理解的同学,姑且可以理解为以太坊是区...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,575
精华内容 4,230
热门标签
关键字:

以太坊应用场景