1. 链一财经首页
  2. 资讯

BTA峰会 | 杨德升:以太坊智能合约DAPP的深层架构

嘉宾介绍:

杨德升,2008年毕业于上海交通大学,2010 年加入开源 SNS 项目 ThinkSNS 任 PHP 核心工程师,负责 ThinkSNS 的开发和维护,同时作为核心工程师为西门子、华为、清华同方等多家大型企业开发内部 SNS 系统。2012 年加入 115 网盘任高级 iOS 工程师,负责 115 网盘 iPhone/iPad 客户端。2013 年作为联合创始人 CTO 加入「周伯通招聘」,2014 年拿到网易公司的 A 轮投资。一人完成最初几版的「周伯通招聘」后端、前端、部署、运维,以及第一版 iOS App。2016 加入 ofo 小黄车,负责整个产品、软件、硬件团队并担任技术副总裁。同时,杨德升也是以太坊智能合约DApp开发者。

以下为演讲实录:

谢谢大家,前面几位嘉宾讲的都是比较前沿的一些科技,我今天分享的议题是深入以太坊dapps架构和开发实战。先简单做个自我介绍,我2008年毕业于上海交通大学自动化系,我做的是偏落地的,有十几业务承载,现在是在区块链这个方向上。今天希望我所分享的大家能有所收获,主要有以下四个。以太坊的重要的概念,然后以太坊我们能做什么不能做什么,能力边界在哪里?以太坊好的选择,方便大家做出选择。如果真的要做一个应用,我们官场的做法有哪些做一个简单的展望。

第一个区块链以太坊的本质。以太坊相对于其他的区块链而言,就是你没有选择,如果只有一个选择,那就是以太坊唯一支持完备的供应链,比特币也是可编程的,它的编程非常大。它有它的BTS包括结构所导致的,以太坊所有都可以完成。下面讲一下智能合约,这里面讲的这几个都是最基本的概念。理解这几个概念,我们能搞清楚以太坊到底是怎么工作?以太坊里面账号系统在所有里面最底层的系统账号设计的合理不合理?做出来做的效果,有两种,一种叫外部控制的账号,大家手头通过包括安全自己掌握,有余额我可以转帐,大家常用的,另外一种是区分合约的账号,区分合约账号和普通的账号很像,有自己的余额,有密钥和公钥,代码完全公开,任何人都可以对智能合约产生交互,我在合约里面做一些验证。

几个词,每种账号类型的顺序结构,抽象来看无论是哪种账号背后都是一个统一的,以太坊的状态,所有账号的综合,以太坊是一个基于GLE的状态机,一个状态不断的变化变质。以太坊虚拟机大家做互联网做技术很好理解,就是虚拟机,是智能合约得以执行的一个运行环境,然后以太坊虚拟机不仅仅是个上箱,没有线上,没法访问文件,而且访问网络限制非常大,EVM是以太坊的一部分,以太坊虚拟机我在执行每一步智能合约代码的时候,执行的结果,都是每一个区块打包重要的一部分,写在定义里面的。智能合约就是代码+数据。现在大家写以太坊智能合约,对用户来说是挺好的语言,参考了很多GS,其重要的一个特点是,智能合约一旦发布是不可以更改的,模拟到现实中是一个合同,一个合同和我的调控一个采访合同,多少钱到什么时候给你多少钱,坏了触发什么样的条款,现实中补充协议,一个智能合约,销毁掉可以弄一个新的。

transaction是以太坊种的一个概念,产生一个交易,交易是一个对象一个顺序结构,它包含哪些东西,从哪落转给谁,我有没有其他额外的信息,费用这些很简单的结构。message是个消息,跟智能合约本身不能访问网络,智能合约是可以非常受限制的,所谓的消息是内部的概念,我们是看不到的,不像教育还有一个结构,这个交易只能有智能合约,智能合约是看得见摸得着的数据包,交易只能有我们肉身来发现。还是刚才那个图,在整个以太坊网络里面,交易只有两种类型,第一种类型,我给张三转了一个以太币,从(英文)到另外一个账户,我发现一个交易,另外一种我可以给一个合约账号发行一个交易,譬如说我参加一个采用应用,我付了,充了以太币,依赖于地方,发一个(英文)是一个虚拟概念,中间会变成(英文),还是一个交易,所以所有的合约方式其实就是这两种。

很多刚开始做以太坊开发的时候,我的智能合约发布出去到底是在哪里执行,从物理设备的角度而言,所有智能合约,所有以太坊节点,以太坊是不存储最终状态的,一个新鲜的加入进来,然后我把整个以太坊,然后之后的每一笔交易每一笔交易的动作,在我们节点上重新来一遍,过去现在往后的全部是这样,整个以太坊智能合约的状态是一个高的动作,每一个节点全部要执行一遍,智能合约在区块链。gas大家都比较清楚,中介费,燃油费,矿工收起来他要执行,gas有两个目的,最重要的目的。各种耗性能耗存储,所以通过这gas降低行为。gas生产方式一个gasused,这个交易操作消耗多少,另外一个是gas,消耗多少gas固定的,因为它会把我智能合约代码中的所有操作,这个表是从以太坊加了一部分,有一个操作,是固定的,一个乘法操作是消耗我们的gas,我创建一个智能合约,我消耗三万两千个gas这是固定的。还有一个叫gas不会让你选一个gasprice。

这个gas本身最终给矿工,矿工打包教育打包区块的时候,从所有交易的池子里面选最高的。比如说我参加,十秒钟确定等20分钟,最终是由市场决定的出价越高区块打包的速度越快。我应该试多少合适,对开发者来说,开发者我们每一笔交易都要精雕细琢的,我怎么推荐给我的用户,哪一个最合适。它是从创始区块开始到现在,监控每一个区块,所有交易,付出多少gas。两个GV是比较安全的,匹配的时间是一分钟,有一个动态的调整,它会按照平均的值给大家一个推现。gaslimit怎么一步一步消耗的,按照操作,我从发起方发起交易,代码一行一行执行,每直线一行代码,产生一个操作,扣一行gas直到扣完交易完成,还剩下gas怎么办,原封不动返还给发起交易的这个人。我们gaslimit特别低,你gas就没了,所有的这些操作的状态回大最初的状态,对于接收方这个交易没有发生过,中间提供的gas,交易没完成gas还得付这个状态,gaslimit是不是越高,越好,反正会还给我的。整个以太坊的每一个链,有一个链级别的,非常非常高。gaslimit非常高,计算量没有达到,有一种错误类型,错误类型造成(英文),(英文)弹出这种错误把gas全部去掉,在这种情况下最终还给你。刚才讲的智能合约的问题,利用区块链的技术把我经济转帐的部分给打包好。

dapps是一个应用,拿互联网应用,通过互联网信息,从用户的角度来说,首先看到是一个页面,HI的页面。然后,所有代码在基础设施上的完成,阿里云上。在区块链dapps其实是一样的,只是我们底层基础设施变成区块链,硬件变成矿工的节点。再往上面业务层代码变成智能合约。最上面还是你自己本身的业务。我们所谓架构的变化,最上面和最上面两层,没什么好讨论的,按照自己业务做就好了,我们讲的中间这部分,你的应用怎么去连接到区块链的节点上,怎么连到以太链的节点上。有几种做法,借助微信支付宝,我还可以让它继续交易买卖,需要产生交易的时候,把它需要打包微信支付去做账号绑定,绑卡短信验证,交易完成了成功了失败了,给你消息,你根据这个消息做变化。第二种我直接建银行,直接借用户账户的变化,你考虑的比较多了,代码量比较大。这里面讲的也就是我们这两种,第一种叫dapps浏览器,加了一个钱包应用,外挂了一个钱包应用。当应用里面需要支付的时候,弹出去。账号导入操作这一些完成还给我这种算法有非常不好的地方,在场这么多人,人群这么信息有自己钱包的毕竟很少数。我在我的应用里面内置好钱包,充币提币交易,这个工作量比较大,因为相当于在你的代码级别要去做所有的签名,你要去连接以太坊节点的交互,所有都能实现,也有第三方节点,是提供了公开的以太坊节点。

典型的例子是myether,它的功能是钱包应用,在里面创建一个账号,创建一个地址,可以发生交易,可以转换它是一个dapps。我个人也是用这个钱包,这个也有金融危机,安全问题,用户是需要输密码的,用户需要把他钱包的密码在网上输入。

第三个把服务器拉进来,前端的应用和区块链产生所有的交互,完全不需要服务器的存在,什么情况下需要服务器,一般有三种第一集成链下的服务,我可能需要排些汇率,汇率通过以太坊可以支撑第三方的服务,把服务结构打包放在上面。索引引擎。第三方速度比较慢,服务器实时的重复链的部分。第三大数据存储,大数据不是大数据分析的大数据,是大块的数据,消耗gas不只是计算量。大家可以想象所有的节点,我存一个100兆的电影,把一大块的数据打包,取一个哈希值。而且当大块数据发生变化,起到去中心化的作用。

通过这两个大家其实是可以做一些自己的应用。truffle要编辑要分发处理中间。ganache个人电脑上区块链的软件,装这个软件可以在你的电脑上快速生成和以太坊主链的节点逻辑是一样的。测试链速度非常慢,有些内部的参数,可以方便的来调试。openzEppelin大部分的和约,有一些公共的,谁先控制我怎么处理我的币,我怎么做各安全的加法,代码可以提供的openzEppelin非常安全是通过审计的。

my Ether wallet是钱包应用,它成为代码非常值得参考,我们特别是做这种跟(英文)做的还不错。parity是和官方的客户端是个智能关系号称更安全。

场景应用方向,展开来讲,分享一个自己的思考,我自己把整个人类社会分为三层,最下面一层是纯数字的世界,不需要有什么武力设备存在,交易金融跨境支付玩游戏,天气的排名,没有一个物理的实体,区块链在这一层表现的很好,应该是解决的还不错,还有一些小问题。

IOT大家做项目比较多的方向,这个还在解决,再往上一层人类社会、现实世界,我租你的房子,我买了辆车,这些我认为还比较远,因为之前好多ICU项目也是关于这一类的。

简单讲一下技术发展趋势,这个就是以太坊的图,上面是矿孔,下面一层是DAPP,左边是以太坊的智能合约,另外两个我认为在半年一年以内,完全可以期待的有三个方向,这三个方向是完全解决的以太坊现在的三种能力,第一个是闪电网络,闪电网络有几种做法以太坊就两点一个太慢,第二个太贵,每笔交易支付gas费用受不了。plasma是比较推崇的,但是还没有上网络。它背后的逻辑叫(英文)的概念,可以做的非常好,另外一个是whisper,是去中心化的,即时通信,以太坊可以做,最后面一个swarm基于(英文),理论上来说可以超大块文件,非常低的价格,在链上,不需要做服务器做存储之类的,这三个是半年以内,我觉得半年到一年。这三个以太坊加上现有的智能和约空间非常大。

我分享主要是这6块。大家都有这个共识,聊的太多了,做的东西太少了,没有什么东西已经落地了看不到,搞点什么支付,我个人认为非常快。

嘉宾问:杨总区块链技术工艺捐款善款应用。

杨德升:印象中是有的。国外的居多,做怎么面向普通人来用的全国应用,包括消息推送,有没有以太坊捐款类可追踪的。我有印象,记不太清。

嘉宾:讲了很多技术干活,在实际应用中发现我们照片,从以太坊的技术时代,什么样的工程师比较适合做以太坊,适合做dapps。

杨德升:做供应链比较难,做供应链出成绩太长时间,以太坊做出框架一套,普通工程师稍微加一个业务能力稍微OK一点,文稿通途就OK了。

本文为火星财经原创稿件,版权归火星财经所有,未经授权不得转载,转载须在文章标题后注明“文章来源:火星财经”,若违规转载,火星财经有权追究法律责任。

根据国家《关于防范代币发行融资风险的公告》,大家应警惕代币发行融资与交易的风险隐患。

本文来自LIANYI转载,不代表链一财经立场,转载请联系原作者。

发表评论

登录后才能评论

联系我们

微信:kkyves

邮件:kefu@lianyi.com

时间:7x24,节假日bu休息

QR code