前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BTA | 杨德升:掌握这些技术点,现在就能做一个Dapp!

BTA | 杨德升:掌握这些技术点,现在就能做一个Dapp!

作者头像
区块链大本营
发布2018-05-10 17:56:05
1.4K0
发布2018-05-10 17:56:05
举报
文章被收录于专栏:区块链大本营区块链大本营

区块链大本营出品

整理 | Aholiab

3月30日~3月31日,由CSDN、火星财经主办,中关村区块链产业联盟、柏链道捷、区块链大本营、TokenSky联合主办的区块链技术及应用峰会(BTA)·中国,在北京喜来登长城饭店盛大举行。

作为时下最热门的行业话题,区块链以其颠覆性的技术理念,正在对各个行业施以影响,吸引了全球技术圈、投资者、创业者的关注。为了深入理解区块链及其背后的技术本质,本次大会邀请了80+区块链技术领导人物、100+区块链投资商业大咖,就区块链的发展趋势进行探讨,让人们有机会全面了解这一全新的生态。

作为本届大会的重要嘉宾之一,以太坊智能合约 DApps「以太红包」作者、原ofo技术副总裁杨德升,在「区块链核心技术峰会」中分享了题为《深入以太坊DApp架构和开发实战》的主题演讲。

杨德升:毕业于上海交通大学,以太坊智能合约 DApps「以太红包」作者,原 ofo 技术副总裁、周伯通招聘联合创始人 CTO、曜辉科技联合创始人 CTO、开源社区 ThinkSNS 核心开发者,拥有一项互联网技术发明专利,在社交产品、互联网技术、高性能架构、区块链技术等方面有丰富的经验。

在演讲中,他以以太坊的核心设计理念、以太坊的能力边界和基础架构为出发,通过对区块链/以太坊的本质、智能合约的工作原理、DApps的架构拆解等话题的展开,对其进行深入解读。并提出,Dapp的应用场景,应该是从纯数字世界,到无人值守的物理设备(CDN、IoT),再到人类社会和现实世界的倒金字塔结构。

以下是杨德升的演讲实录:

前面几位嘉宾分享的都是比较前沿的技术,我之前的工作是比较偏落地、有实际业务承载的项目,现在在区块链方向发展。今天我想跟大家分享四个概念:

  • 以太坊的核心概念、设计理念;
  • 以太坊的能力边界;
  • 以太坊应用的基础架构;
  • 以太坊应用的发展方向。

希望我对以上四点的阐述,能帮助大家做出好的选择,并对DApps落地的常见做法,有简要的掌握。

区块链、以太坊的本质

区域链(Block chain)是一种利用去中心化和去信任方式集体维护一本数据簿的技术方案。该方案让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块,每个数据中都包含了一定时间内的系统全部信息交流的数据,并生成数据指纹用于验证其信息的有效性和链接下一个数据库块。

而以太坊则是一个记录「以太币余额+链上代码+EMV虚拟机状态」的分布式账本,也可以看做一种编程语言,支持完备的公有链。开发者能够基于它建立和发布下一代分布式应用。

智能合约的工作原理

智能合约包含几个基本概念,理解这几个基本概念,我们就能搞清楚以太坊到底是怎么工作的。

账户

以太坊的账号系统分为两种:1)外部拥有账户(EOA),也称为「普通账户」;2)合约账户(Contract Account)。这两种账户与我们所熟知的账户概念有相似之处,却也有很大的区别,更不同与比特币中的UTXO。

普通账户:我们存放以太币的账户,可以随意生成、余额可以转账,与大家熟知的账户概念类似。它拥有以下特性:

  • 拥有以太币余额的balance(以太币存放的地方,与比特币的UTXO模式不同);
  • 用于确定每笔交易只能被处理一次的计数器(nonce);
  • 发送交易(以太币转账、发布合约、调用智能合约);
  • 通过私钥控制;
  • 没有相关的代码。

合约账户:功能与数据的合集,存在于以太坊的特定地址。与普通账户类似,有自己的余额,有私钥和公钥,代码完全公开,人和人都可以对智能合约产生交互,并且在合约中做一些验证。它具有以下特点:

  • 拥有以太币余额;
  • 拥有相关的代码;
  • 通过交易或消息调用的方式触发并由以太坊虚拟机(EVM)解释执行。

当被执行时:

  • 运行在随机复杂度(图灵完备性);
  • 只能操作其拥有的特定储存,例如可以拥有其永久的状态;
  • 可以调用其他合约。

抽象来看,无论是那种账号的背后都是一个统一的以太坊的状态,以太坊也可以被看成是基于交易(Transaction)的状态机,一个一个的状态不断地变化着。

以太坊虚拟机(Ethereum Virtual Machine,EVM)

EVM是以太坊的一部分,是智能合约得以执行的一个运行环境,这一点做互联网技术的应该很好理解。EVM在执行每一步智能合约代码的时候,执行的结果都是每一个区块打包的重要部分,它被写在定义里。

除此之外,EVM也可以理解为一个以太坊的客户端,以及一个完全隔离的沙箱,它不能访问线程、文件系统和外部网络。

智能合约

智能合约就是代码+数据(功能+状态);Solidity(智能合约开发工具)在设计时参考 JavaScript、Python 等高阶语言。此外,如同现实中的合同一样,智能合约一旦发布是不可更改的,例如交易时间、交易金额、违约条款、补充协议等。

不过智能合同可以被销毁,再做一个新的。

交易和消息(Transactions & Messages)

交易(Transactions):通俗来讲,就是一个账户向另一个账户发送一笔被签名的消息数据包的过程,区块链会记录并存储相应的数据。包括:是谁发给谁、金额、有无其他额外消息等。交易需要花手续费。

智能合约是看得见摸得着的数据包,而交易只能用我们的肉身来发现。在整个以太坊网络里,交易只有两种类型:一种是通过普通账户发起一个对普通账户的交易;另一个是通过普通账户发起一个一个对合约账户的交易。

消息:所谓的「消息」是一个内部的概念,是一个永不串行且只在以太坊执行环境中存在的虚拟对象,我们是看不到的。不像交易还有一个结构,消息只能由合约发送到其他合约。

Gas

大家对于Gas应该不陌生,也就是我们常说的中介费/燃油费。由于每个网络中的全节点都会进行相同的计算并储存相同的值。由于合约执行会在所有节点中被多次重复,而且任何人都可以发布执行合约,这使得合约执行的消耗非常昂贵,所以为防止以太坊网络发生蓄意攻击或滥用的现象,以太坊协议规定交易或合约调用的每个运算步骤都需要收费。

Gas还涉及到三个概念——gasUsed、gasPrice、gasLimit。

  • gasUsed为该交易消耗的总Gas数量;
  • gasPrice为该交易中单位Gas的价格(用以太币计算),用户可以自行设置的gasPrice的价格,由于网络拥堵等多种情况,此价格会动态变化;
  • gasLimit是交易发起者愿意为本笔交易支付的最大Gas个数。

它们的关系为:Gas = gasUsed * gasPrice

由于Gas最终是给旷工,旷工打包交易区块的时候,从所有交易的池子里选择最高的,打包速度由市场来决定,出价越高打包的速度越快。

对于开发者来说,每一笔交易都需要精雕细琢:我该给多少Gas合适?我该怎么推荐给我的用户?哪个gasPrice最合适?大家可以通过 ETH Gas Station 网站(https://ethgasstation.info/)查看市场状况。

这里也交代一下Gas的消耗过程。按照操作,我们从发起方发起交易,代码一行一行执行,每执行一行代码或产生一个操作就扣一行Gas,直到交易完成。那剩下的Gas怎么办?答案是会原封不动返还给发起交易的人。

Dapps架构揭秘

Dapps是一个应用,与一般的互联网应用对比可以看出。互联网应用用户首先看到UI页面,往下是接口层,而所有代码在基础设施上完成,例如数据库、阿里云等。

区块链的Dapps也类似,只是基础设施变成了区块链,硬件变成了矿工的节点,再往上,业务层代码变成了智能合约,最上面是你自己本身的业务。

最上层没什么要讨论的,按照自己的业务去做就好了,我们主要讲讲中间这部分,也就是你的应用如何连接到区块链的节点上。有以下3种做法。

  1. 借助 DApps 浏览器(浏览器 + 外挂钱包),类比于互联网中借助微信支付、支付宝。
  2. 在自己的应用中内置钱包,类比于直连银行。
  3. 把服务器拉进来。需要服务器的情况往往有3种:

1)集成第三方服务;

2)作为缓存引擎;

3)存储大块数据存储。

说到这里,大家其实就可以动手做一些自己的应用了,推荐大家使用以下的工具:

  • Truffle:目前最流行的以太坊开发框架,用JavaScript编写,支持智能合约的编译、部署和测试;
  • Ganache:个人电脑上使用的区块链软件,它和以太坊主链的节点逻辑一致;
  • OpenZeppelin:一种构建安全智能合约的开源架构,遵循MIT许可,通过它可以构建大部分的合约;
  • MyEtherWallet:钱包应用,它的代码非常值得参考。

Dapps的场景与应用方向

我个人把整个人类社会分为三层:最下面一层是纯数字的世界,不需要有什么物理设备的存在——交易金融、跨境支付、玩游戏、天气等场景,都没有一个物理的实体存在。区块链在这一层表现的很好,尽管还存在一些小问题。

再往上是「无人值守的物理设备」,这一层里包含大家所熟知的IoT。最上面一层是人类社会,也是现实世界——租房、买车、衣食住行等场景。虽然之前很多ICO项目是关于这一类的,但我认为区块链往这里渗透还有很长的路要走。

区块链的技术发展趋势

参照以太坊的架构图,未来一年可以期待的方向有三个。

第一个是闪电网络。闪联网络有几种做法,而以太坊就做了两点,一个太慢,一个太贵,每笔交易支付Gas的费用的受不了。第二个是Whisper,是指去中心化的即时通信。第三个是Swarm,基于IPFS,理论上来说可以传送大块文件,价格非常低,在链上也不需要做服务器存储。

这三个方向加上现有的智能合约,未来的空间会非常大。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 区块链大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云区块链服务平台 TBaaS
腾讯云区块链服务平台(Tencent Blockchain as a Service,简称TBaaS)致力于打造全球领先的企业级区块链技术平台,帮助客户、开发者及合作伙伴轻松创建和管理可托管、可扩展的区块链网络,助力产业协同发展。TBaaS 支持长安链·ChainMaker、Hyperledger Fabric等区块链底层平台,简化部署、运维及开发流程,实现业务快速上链,提升链上治理效率。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档