用EOS.IO区块链开发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=http://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开发入门

EOS教程

本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。

汇智网原创翻译,转载请标明出处。这里是原文

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EOSIO的设计包括: 免费汇率限制交易 低延迟阻止确认(0.5秒) 低开销的拜占庭容错终结 可选的高开销,低延迟BFT终端 由Web Assembly支持的智能合约平台 专为稀疏头灯客户端验证而设计 计划的周期性事务 时间延迟安全 基于角色的权限分级 支持生物识别硬件安全密钥(例如Apple安全飞地) 并行执行上下文自由验证逻辑 区块链间通信 EOSIO允许开发人员编写与需求确定性执行的共识算法兼容的业务逻辑。您的用户群可以使用安全的公钥基础结构与此业务逻辑进行交互,为您的业务带来区块链级别的安全性,责任性和可审计性。业务逻辑根据组织的治理结构轻松更新。 EOSIO旨在在没有任何令牌的环境中运行,系统管理员为用户分配可能无限制的资源配额。或者,智能合约可以通过其他方式分配资源配额,例如令牌销售,市场费用或投票。这使得EOSIO非常适合企业和社区驱动的区块链。 根据您的使用情况,可以将EOSIO配置为使用两种不同的Web装配引擎之一Binaryen和WAVM。单个EOSIO区块链可支持高达1,000 TPS,未来版本的EOSIO将提供简化区块链间通信所需的工具,使您的业务能够水平扩展。 EOSIO是在开放源代码MIT许可下发布的,按“原样”提供,没有任何明示或暗示的担保。EOSIO软件提供的任何安全性部分取决于它的使用,配置和部署方式。EOSIO建立在许多第三方库上,如Binaryen(Apache许可证)和WAVM(BSD 3-clause),它们也是“按现状”提供的,没有任何形式的保证。在不限制前述内容的一般性的情况下,Block.one不作任何陈述或保证EOSIO或任何第三方库将按预期执行或不会出现错误,错误或错误代码。这两种方式都可能以很大或很小的方式失败,这可能会完全或部分地限制功能或危害计算机系统。如果您使用或实施EOSIO,则自行承担风险。在任何情况下都不会阻止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值