在CSDN、柏链道捷(PDJ Education)、HelloEOS、中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Education)CTO、副总裁康烁,作了「如何在EOS上开发智能合约」的精彩演讲。演讲中,康烁从EOS环境的搭建、钱包和账号的创建及管理、智能合约的开发步骤作了详细的讲解,希望对你有所帮助。
康烁简介:
康烁,柏链道捷(PDJ Education)CTO、副总裁、清华阿尔山区块链研究中心高级工程师。曾受邀参加2015LLVM开发者大会,展示了自研的Android模拟器项目。主持开发的开源项目SkyEye在国内外有众多用户,是知名的开源项目之一。主持开发的开源项目Android_S2E项目被华为公司内部使用,目前主要从事区块链底层系统开发工作。
作者 | 康烁
整理 | 科科
以下为康烁在EOS入门及最新技术解读专场沙龙的精彩分享。
我分享的角度可能更多是从一个EOS智能合约的入门者或者开发者的角度去分析我对EOS的初步认识。
在这之前我编译过EOS,然后开发了一些智能合约,包括之前把以太坊的一些智能合约做了移植。对于这里面,我有自己的一些看法。
我主要是做系统软件出身,之前在操作系统、虚拟机、编译器、安全等领域都有一些项目实战,我自己现在主持和维护了两个开源项目:
1、SkyEye。这是一个比较知名的开源虚拟机项目,如果大家在网上用Google和百度搜索这个项目,可以看到用户还是比较多的,包括国内或者国外。
2、Android s2e。这个项目主要做的是符号执行,它可以检测安全漏洞。
大概在去年的时候,以太坊的智能合约被爆出大概有几千个漏洞。其实就是用符号执行的方法,把智能合约的好多漏洞都扫描出来了。而我做的这个项目是可以对Android的整个操作系统做符号分析,并且这个项目在华为内部得到使用。
所以,我对操作系统或者说编译器方面是蛮有经验的。我想先从系统软件从业者的角度,分享一些对EOS的看法。
EOS和以太坊很像,EOS很明确的说明它就是一个区块链的操作系统,BM在博客中也是说过的。
可以这样比喻,EOS就相当于内置激励系统的Windows/Linux/MacOS,这是它的一个定位。包括以太坊也有自己的定位,Vitalik在2014年第一次说以太坊想法的时候,他就很明确的说了,以太坊就是一个全球计算机,这些都是创始人本人提出的一个想法。
EOS环境搭建和启动节点
下面从EOS入门的环境搭建、编译运行一个智能合约、发送一些Aigsen,给大家做一些展示,希望能让非技术人员也有一些收获。
首先下载EOS环境搭建和启动节点。这一步其实还是比较简单的,但是对于非技术人员,最大的障碍就是,现在用EOS,不管是在MacOS还是Linux,基本都是在命令行下操作,这一点和以太坊还是不太一样。因为以太坊有一个浏览器插件,可以用一些图形化的IDE去操作,这样对非技术人员或者前端人员,可能他不太熟悉这个命令行命令的人都是比较友好的。
EOS环境的搭建和节点启动分为以下两步:
第一步:用Git克隆,下载EOS的源代码
使用命令:
git clonehttps://github.com/EOSIO/eos --recursive
下载源代码,时间会比较长,大概1-3小时,另外,下载编译对计算机内存要求最少要有8GB。
下载编译之后,里面有三个应用程序,这三个应用程序也都是命令行的:
1、Cleos;
2、Nodeos;
3、Keosd。
这三个应用程序之间有什么关系呢?我们现在使用的前端,怎么使用EOS呢?
-Cleos,它是一个命令行程序。在前端使用EOS是通过Cleos输入命令,给EOS下达指令。
-Nodeos,其实它就是挖矿客户端。在启动Nodeos之后,它自然就会产生区块。
-Keosd,它是在后端启动。它的目的主要是管理钱包,可以创建私钥。
为什么分成Nodeos和Keosd?
我理解的是,Keosd可以认为是个轻客户端,因为有时候只需要进行钱包操作,不需要挖矿,就可以启动Keosd。
第二步:节点启动
在第一步下载编译都做完之后,就可以启动一个节点开始愉快的挖矿了!下面是启动节点的命令:
cd build/programs/nodeos
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugineosio::chain_api_plugin --plugin eosio::account_history_api_plugin