C/C++知识点之在EOSIO平台上开发区块链dapp(一、环境搭建)
小标 2019-03-14 来源 : 阅读 1158 评论 0

摘要:本文主要向大家介绍了C/C++知识点之在EOSIO平台上开发区块链dapp(一、环境搭建),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之在EOSIO平台上开发区块链dapp(一、环境搭建),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之在EOSIO平台上开发区块链dapp(一、环境搭建)

在我倾听Bettina Warburg的演讲之后,我对去中心化经济(dApps)的概念着迷。传统的Web应用程序是:


前端→后端→数据库


相比之下,dApp网站是:


前端→智能合约→区块链


例如,当你进入电子银行时,网页将调用后端代码来获取你的个人数据并将其显示在页面上。后端代码在集中式服务器上运行。 


与传统方式不同,dApps在去中心化的P2P网络及区块链(Blockchain)上运行后端代码智能合约(smart contract)。


为什么区块链如此热?


区块链是支撑数字货币比特币的技术,但它具有更广泛的应用,并且正在越来越多的领域实现商业化。它引起了对科技界及其他人的浓厚兴趣,因为它在金融服务,公共部门和其他领域开辟了新的可能性。   ——THOUGHT LEADERSHIP Nov 2017


什么是EOSIO区块链?


EOSIO宣传为dApp的操作系统。它是从头开始构建的,每秒执行数百万次交易(与目前最大的区块链网络相比:以太网每秒只有15次交易),这使其更适合复杂的dapp生态系统和去中心化,货币化的经济。


这个博客涵盖了什么?


在本博客中,我将展示如何设置EOSIO区块链并开发智能合约。这是本系列的第1部分。下面逐步演示了EOSIO安装以及我如何设置钱包,帐户和代币。让我们开始吧。


一个干净的虚拟机


为了避免与现有软件发生冲突,我为这个实验准备了一个干净的虚拟机。我正在使用Linux KVM虚拟化基础架构(KVM比Virtualbox快得多,它只比裸机差2%)。我为VM分配了以下配置:


8 GB RAM,4个vCPU


30 GB磁盘空间


Ubuntu 17.10 desktop


1.下载EOSIO


安装操作系统后,我在终端中执行以下操作:


$ sudo apt install git-core

$ git clone https://github.com/EOSIO/eos --recursive

$ cd eos
$ git submodule update --init --recursive

$ ./eosio_build.sh

$ export PATH=${HOME}/opt/mongodb/bin:$PATH
$ ~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
$ cd ~/eos/build: make test

$ sudo make install


2.启动服务器


此时安装了EOSIO,我输入以下命令来启动服务器:


$ cd ~/eos/build/programs/keosd
$ keosd --http-server-address=localhost:8899


打开一个新的命令行客户端:


$ cd ~/eos/build/programs/nodeos
$ nodeos -e -p eosio --contracts-console --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::wallet_api_plugin


再打开一个新的命令行客户端:


$ alias cleos='~/eos/build/programs/cleos/cleos --wallet-url=//localhost:8899'


3.创建钱包,密钥对,帐户和代币


要在区块链中存储信息,我们需要一个用于标识数据和钱包的帐户来保护用于签署交易的密钥。请参阅此处了解EOSIO帐户和钱包概念概述


我执行了以下操作:


$ cd ~/eos
$ cleos wallet create


将屏幕中的密码记录下来备用。


$ cleos wallet key


将屏幕中private1和public2的密钥对值记录下来备用。


$ cleos wallet key


再来一组private2和public2的密钥对值记录下来备用。


$ cleos wallet import ${private_key_1}
$ cleos wallet import ${private_key_2}
$ cleos wallet keys


通过私钥private1和private2将密钥导入钱包后你应该可以在屏幕中看到钱包中显示2个公钥的值。


$ cleos create account eosio myaccount ${public_key_1} ${public_key_2}


执行上面的命令,你应该发现有错误信息。意思是说你的钱包没有解锁。


$ find ~ -name config.ini
$ nano ~/.local/share/eosio/nodes/config/config.ini


config.ini可能位于其他平台的另一个目录中,在config.ini中看到配置项signature-provider =*******,将该值的私钥导入钱包中:


$ cleos wallet import ${private_key_signature-provider}
$ cleos wallet keys


这时你应该可以在钱包里看到3个公钥。


$ cleos create account eosio myaccount ${public_key_1} ${public_key_2}


账号会被成功建立,我们再来建几个账号。


$ cleos create account eosio user ${public_key_1} ${public_key_2}
$ cleos create account eosio tester ${public_key_1} ${public_key_2}
$ cleos create account eosio eosio.token ${public_key_1} ${public_key_2}


在eosio.token账号上创建合约。


$ cleos set contract eosio.token ~/eos/build/contracts/eosio.token -p eosio.token


将合约推送到区块链:


$ cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' -p eosio.token


做些单一操作测试,创建账号,发代币,转账:


$ cleos create account eosio user ${public_key_1} ${public_key_2}
$ cleos push action eosio.token issue '[ "user", "100.0000 SYS", "memo" ]' -p eosio
$ cleos push action eosio.token transfer '[ "user", "tester", "1.0000 SYS", "m" ]' -p user


建一个exchange账号,并建个exchange合约,合约代码在contracts/下,主要是创建和交易货币的功能:


$ cleos create account eosio exchange ${public_key_1} ${public_key_2}
$ cleos set contract exchange ~/eos/build/contracts/exchange -p exchange


建一个eosio.msig,建一个eosio.msig合约,合约代码在contracts/下,主要是允许多方异步签署单个交易:


$ cleos create account eosio eosio.msig ${public_key_1} ${public_key_2}
$ cleos set contract eosio.msig ~/eos/build/contracts/eosio.msig -p eosio.msig


备份钱包:


$ mkdir backup-my-wallet
$ cp -R ~/eosio-wallet ./backup-my-wallet/


4.试着编写智能合约hello


EOSIO Smart Contract是一个在区块链中执行的C ++程序。 请参阅文档此处了解。


EOSIO在contracts/目录中提供了几个样本合约,我直接用了hello合约hello.cpp:


#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;

class hello : public eosio::contract {
  public:
      using contract::contract;

      /// @abi action
      void hi( account_name user ) {
         print( "Hello, ", name{user} );
      }
};

EOSIO_ABI( hello, (hi) )


进行测试如下:


$ cd ~/eos/contracts/hello
$ eosiocpp -o hello.wast hello.cpp
$ eosiocpp -g hello.abi hello.cpp


创建账号:


$ cleos create account eosio hello.code ${public_key_1} ${public_key_2}


创建合约:


$ cleos set contract hello.code ../hello -p hello.code


推送合约:


$ cleos push action hello.code hi '["user"]' -p user


修改hello.cpp,在print( "Hello, ", name{user} );上面加上一句require_auth(user)。


编译合约,更新合约,推送合约:


$ eosiocpp -o hello.wast hello.cpp
$ cleos set contract hello.code ../hello -p hello.code
$ cleos push action hello.code hi '["tester"]' -p user


应该有个错误信息,我们把推送命令修改一下:


$ cleos push action hello.code hi '["tester"]' -p tester


这回应该没问题了。


$ pkill keosd && pkill nodeos


关掉服务进程。


======================================================================


分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程