参加 2018 AI开发者大会,请点击 ↑↑↑
智能合约是链接区块链底层技术与应用的桥梁。
近日,以“区块链核心技术及DApp开发”为主题的CSDN区块链技术沙龙在成都天府软件园灵感咖啡成功举办。
NULS项目发起人张星,围绕什么是智能合约、智能合约的特性与开发环境、智能合约的作用、区块链上的智能合约如何工作以及在底层公链上如何快速开发智能合约及DApp等话题,为开发者们带来了他对智能合约的深度解读。
编辑|传神
以下内容为张星现场分享的部分实录,由区块链大本营整理发布。
大家好,首先我列一下今天要演讲的主题:
1. 什么是智能合约;
2. 智能合约的特性和应用场景;
3. 智能合约的工作原理或者我们开发一个智能合约需要哪些步骤;
4. 介绍如何在NULS上面快速的开发一个智能合约。
对于一些人来说,可能从来没有开发过智能合约,也没有参与过开发,但大家听完本次演讲之后,倒腾两个小时基本上就可以开发自己的合约了,这是一个很有意思、让人兴奋的事情。
什么是智能合约?
对于智能合约,我可能更多的基于我个人的一些理解,大家如果想深入了解的话,还是要多看一些技术性的文章或者资料,智能合约是一种旨在信息化方式传播验证或者执行合同的计算机协议,它可以允许在没有第三方的情况下进行交易,这些交易可以追踪,不可丈量、不可逆转。这是百度上智能合约的解释,但其实读下来并不太好理解。
我自己的理解就是,智能合约其实是一个去中心化系统,在区块链的去中心化(分布式)系统中,每个节点由安装相同的程序进化成安装相同的虚拟机,从而使去中心化系统具有可编程性。
现在做金融或做其他行业的朋友其实对分布式系统也有一些了解,像浦发银行的两地三中心,合肥有一个中心,张江有一个中心,漕河泾那边有一个中心。
人民银行对这种做法比较推崇。它这么做有一个问题,在每次升级的时候,升级什么版本,升级什么内容,都是通过升级制度或者上线手册来规范的。
智能合约能够在去中心化系统上做什么呢?
我们首先来看一看比特币和以太坊,或者说智能合约的整个进化过程是怎么样的。我们知道比特币是一个去中心化的账本,其实很好理解,每个人的手上拿一个账本,有一笔交易,张三转给李四,李四转给王五,大家都记下来,所以每个人手里面的账本拿到的是一样的,这就是一个去中心化的账本。
它所做的事情就是记账,我们可以理解为一个软件系统,很多人手里面拿的都是同一个软件,通过共识和P2P技术,可以让大家的账本一致。
智能合约的作用是什么呢?
假设在场有100个人,我们手里面每个人拿的不再仅仅是一个账本程序,我们拿的是一个虚拟机,虚拟机和程序的区别是虚拟机可以编程。
比特币是一个账本程序,但实际上我需要做其他事情的时候,不是记账,而是需要张三跟李四买卖一个东西、买卖一个电子产权,再比如我想众筹一个公司,其他人想来投资,那投资的过程中,可能别人还要对我的工作进度进行一些检查,或者我个人信息要公开和披露。
这些功能其实是不能加到比特币账本里面去的,因为它是一个程序,而且不能升级(或者说编程空间有限)。那如果大家拿的是一个虚拟机,可以往里面写所有自己想要的程序,这样其实就从一定程度上面解决了去中心化系统的升级问题。
在安全的前提下,增强了区块链的灵活性,这使得区块链能跟很多行业结合在一起的。
为什么要做以太坊呢?
V神早期在比特币社区非常活跃,他对比特币提出了一些改进的意见,他看到了比特币缺少图灵完备性,为什么叫缺少完备性呢?其实比特币在设计的最初,也不完全是一个简单的程序,也有一定的编程空间和灵活性,但是他不是图灵完备的,简单理解就是不能随意的写出去,灵活性不够。
这是比特币的缺点,而我们需要一个更灵活的东西(当然以太坊项目比特币改进的地方不仅仅是增加了智能合约,另外一个比较重要的地方就是用账户模型代替UTXO模型)。
以太坊增加了区块链的灵活性之后出现了大量的DApp,我们先看看统计数据:在以太坊上面的去中心化应用大概是一千个左右,游戏类DApp共计325个,占比高达34%;竞猜类DApp有192个,占比20%;交易市场占4%;其他类DApp占37%。
DApp设计类别在不断扩大,总量也在不断增多,形成了一个较为完善的开发生态圈,累计交易笔数多达 3 亿,累计交易金额超过 59 亿ETH。
以太坊的累计用户已经超过 3587 万人,日均活跃人数多达15.88 万人。智能合约把区块链改造成一个具备可编程的去中心化系统,其上面爆发了很多应用。
再说一下智能合约的特性和应用场景,像对冲合约、程序性抵押等等,其实远远不只这么多,智能合约的应用场景很多,大家以后参与DApp开发后可以充分发挥一下想象力。
对于更多场景而言,区块链技术暂未落地,什么叫落地?我的评判标准是:我们平常生活中手机经常使用的App有很多都是在区块链上面运行的DApp。怎么去落地?需要大量的的IT从业人员来贡献、探索、创新。
在这个领域机会很多,举一个比较经典的以太猫应用,以太猫实际上是一种可以繁殖的虚拟数字资产,在最开始的阶段,每十几分钟会产生一个猫,每只猫的特性,这些特性是通过基因来传递的,基因记录在猫里面的每一个比特位置上。
像这样一个小程序,它的市值能够达到那么高,这种东西我们根本想不到,所以说区块链这个领域机会很多,我们需要更多的开发者来做,每个人都可以创造一些别人想不到的东西。
智能合约的原理
在以太坊里面,我们会给每一个合约一个ID,这个ID跟以太坊账户的合约地址结构一样。每个合约有自己的存储空间,存储了程序和数据,合约调用会运行程序,运行过程中会改变数据。所有数据一起计算Hash值称为合约状态,所有节点运行同一个交易后会得到相同的合约状态,形成共识。
想开发一个游戏或者发一个Token,这个过程是怎么样的?大致过程是这样的:开发合约(写代码),编译,部署等过程。部署完了之后可以查看,合约里有几个方法或者函数可以调用,每个函数的参数是什么类型、有几个参数。
如何在NULS上开发智能合约?
我下面介绍一下NULS智能合约的特点。关于NULS项目,它是一个模块化的、底层多链体系的架构。在未来会出现什么情况呢?我们之前说到以太坊,知道以太坊现在有1000个左右的应用。
我举个例子,1000个DApp在上面跑,其实以太坊的TPS每秒钟最大交易数量小于20,即1000个应用共享20个TPS,直观地讲,如果这样的话我有些疑问,这是什么应用呢?用户活跃度能达到什么水平呢?像以太猫1个程序把整个网络搞堵了,其他999个程序用户活跃度是多少,每天交易量是多少?
这是我们需要改进的一点(这只是其中的一个问题),NULS其实是一个多链体系, 我们认为不同应用的数据就不应该放在一起,TPS也不应该共享,就应该分到不同的链里面去。
NULS其实作为一个模块化,做一个链工厂,让大家在NULS机制上开发一些链,NULS搭建新链很简单:选择的共识算法和参数,设置Token名称、总量和分配方案,设置网络参数之后就实现了一条新的区块链开发。
某一些行业、某一些公司都可以有自己的链,这样就会形成很多条链,不同的公司可以开发不同的链,并不和其他链共享TPS,链与链之间的交互其实是很简单的。比如,我搭建自己的链,在上面跑自己的应用,同时还能够跟其他的链连在一起,像租房的跟送牛奶的可以连在一起一样,我租了一个房子,我还可以每天送蔬菜、送牛奶,这种应用搭在一起实际上是有意义的。
下面,我简单讲讲怎样在NULS上开发一个智能合约。
NULS的开发环境很简单,在IDEA中安装智能合约开发插件,安装IDEA(版本 2017.3+)插件大概需要几分钟的时间,装完之后我们会看到,创建程序的时候,看见有一个项目模板叫Nuls,就已经准备好了。
第二步就是编写合约并打包,NULS是基于Java语言编写的智能合约,并用插件打包编译。
其次,就是如何部署了,NULS可以通过Hex编码或Jar包一键部署。大概一分钟就可以部署完,把程序也跑起来了。
在NULS上面开发智能合约和DApp有什么好处呢?NULS是一个多链的系统,在任何一条链上去开发智能合约,链与链之间是可以通信的,这样你能够访问到的生态系统更多。
什么叫访问到的生态系统更多呢?大家打开支付宝,住酒店、买火车票、买外卖,点进去是不同的系统。在NULS上面开发可以享受NULS平台级别的支持。
未来会是什么样的呢?因为在过去10年左右的时间里,我们把很多东西搬到了互联网上,或者说从现实世界搬到互联网世界。有没有这种趋势:在接下来的5-10年里面,再把现实世界和互联网的那些东西翻到区块链上面去,这个观点其实很多权威人士也提到过。如何把现实世界和互联网世界的东西搬到区块链的世界,这需要无数的的产品经理、程序员甚至是公司一起努力。因为现在区块链还处在比较早的阶段,区块链落地做的非常不够。
NULS结合智能合约区块链3.0技术布局
最后,我给大家分享一下NULS结合智能合约的区块链3.0技术布局:首先,我们通过NULS的链工厂快速定制符合特定商业领域的链;其次,通过模块化的智能合约实现该领域商业应用的实际落地;之后,我们通过跨链技术连接不同领域,以此实现数权世界的全连接,进而实现价值的流通。
最后感谢大家,非常高兴能够来到这里。
--【完】--
标星看大图更爽哟!
最新热文:
Web 2.0 已死,Web 3.0 当立!这一次竟是金融行业被淘汰?
富人越富,穷人越穷,我为什么反对PoS
60天,4位诺奖得主,他们将这样改造区块链
Android 之父裁员 30%:开发者如何避免“被离职”?
有时间BB,不如想想怎么让别人闭嘴吧
冠军揭晓!京东Alpha开发者大赛Pick谁上了C位
企业大咖教你解决Kubernetes的挑战
大力戳↑↑↑ 加入区块链大本营读者⑦号群
(内容转载请联系微信:CSDN_qkldby)
(商务合作请联系微信:fengyan-1101)