在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=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的开发。

原文地址:http://blog.51cto.com/13697184/2172100

时间: 2024-10-09 11:44:27

在EOSIO平台上开发区块链dapp(一)的相关文章

在EOSIO平台上开发区块链dapp(三、webapp)

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约.这部分我将开发一个webapp,允许访问者投票给候选人. 以下是webapp的快速预览: 源代码说明 首先,请参阅下面的概述图: 前端 前端由HTML,CSS和Javascript组成.我使用Semantic-UI作为CSS框架以获得漂亮的外观.JQuery在Javascript中被大量使用以便于开发. 此webapp只有一个页面(主页HTML).主页分为四个部分. 以下是部分的屏幕

数字货币平台开发-区块链加密数字币炒币投资为什么赚钱!

数字货币交易所开发公司www.38tjys.com专业数字货币平台开发-区块链加密技术研发商教你如何投资! 都说高投资高风险,数字货币交易平台的开发就是高风险投资,然而的效率也同样是成正比的.其实数字货币交易平台的风险一般分为:交易风险.信用风险.经济风险以及政策风险,其中交易风险是最普遍存在的也是最能影响投资者利益的. 数字货币交易平台有什么用,你只能看见交易的数据,还是加密的,而交易的数字货币却又是看不见摸不着的,还拿真金白银去购买,有什么用呢? 数字货币是在全世界已被互联网整个拉近成为"地

酒链世界平台开发区块链商城系统模式

酒链世界平台开发区块链商城系统模式,陈会:137.1026.0445(可微可电)酒链世界平台APP开发,酒链世界区块链商城开发,酒链世界分销返利模式开发,酒链世界软件开发定制开发. 首先酒链世界是酒品F2C直购平台.F指的是酒厂厂家,C是消费者.在酒链世界App的内置商城,消费者可以用数字资产"圣酒"兑换酒品,也可以现金购买.厂家收到消费者订单后,直接将酒水从工厂快递邮寄,厂家直销,消除中间环节,保证源头正宗. 再就是酒品广告分发平台. 以往的DSP广告,广告主最困惑之处在于,不知道到

教你数字货币交易平台开发区块链虚拟币交易系统平台服务

教你数字货币交易平台开发区块链虚拟币交易系统平台服务 数字货币系统开发区块链技术是利用块链式数据结构来验证和存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式保证数据传输和访问的安全,利用自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础结构与设计范式.云之梦数字货币系统开发公司,区块链交易系统开发.区块链拥有去中心化.不可篡改.唯一可信任.匿名性的特点,在金融.防伪溯源.版权保护等方面拥有诸多应用.将区块链技术应用在合适的领域,才能发挥出该有的价值.应用场景多元

专门为前端工程师设计 Nodejs+React 实战开发区块链“慕课”Dapp资源教程百度云

资源获取链接:点击这里 第1章 课程导学 对课程整体的知识点,项目进行介绍. 1-1 课程导学 第2章 区块链概念科普 使用村庄的例子介绍区块链是什么,分布式记账的过程和不可篡改性,常见的数字货币都有哪些,以及区块链技术的前景的介绍. 2-1 区块链是什么 2-2 数字货币 2-3 区块链应用场景 第3章 区块链技术概念科普 使用课程辅助工具iblockchain,介绍区块链里的哈希,非对称加密,挖矿,记账,分布式的技术原理. 3-1 哈希 3-2 共识POW,POS和DPOS 3-3 非对称加

Nodejs + React 实战开发区块链慕课Dapp 专门为前端工程师设计

第1章 课程导学对课程整体的知识点,项目进行介绍. 1-1 课程导学 试看第2章 区块链概念科普使用村庄的例子介绍区块链是什么,分布式记账的过程和不可篡改性,常见的数字货币都有哪些,以及区块链技术的前景的介绍. 2-1 区块链是什么 试看 2-2 数字货币 2-3 区块链应用场景第3章 区块链技术概念科普使用课程辅助工具iblockchain,介绍区块链里的哈希,非对称加密,挖矿,记账,分布式的技术原理. 3-1 哈希 3-2 共识POW,POS和DPOS 3-3 非对称加密 3-4 拜占庭将军

2018年数字资产即将爆发数字资产交易系统开发区块链交易平台技术

2018年数字资产即将爆发数字资产交易系统开发区块链交易平台技术2018年数字资产即将爆发数字资产交易区块链交易平台技术,有人说2017年是区块链元年,那么2018年就是区块链爆发之年.所谓爆发,一则体现舆论话题不停,二则体现应用遍地开花,2017虽已过,不过这遍地开花的势头却是不容小觑.2018年,一场轰轰烈烈的"数字资产区块链开发运动"如×××般席卷而来,关于其争议一直没停歇过.展望2018年,既有机遇也有挑战.从国际上看,全球经济复苏态势仍可能延续,主要发达经济体货币政策将进一步

怎么配置电脑才能开发区块链?

区块链爆红以后,越来越多人想要自己开发区块链.那么区块链开发需要怎样的电脑配置?简析开发区块链的环境搭建.由于区块链技术迭代很快,此篇环境搭建仅供参考. 此处介绍的是基于Ubuntu14.04系统上搭建平台的过程,推荐使用Linux和Mac OS X操作系统,Windows不建议使用,因为目前开发区块链还是比较复杂的,Windows容易出现问题导致安装失败. 软件安装时使用ubuntu系统官方的apt源.国内阿里.网易.腾讯.汉全等免费提供的apt源可以加快安装软件的速度,不过安装此篇所介绍的软

Java开发区块链的三大sdk库

如果你想将区块链合并到一个Java项目中,现在我们来看看就是这个细分领域中三个最大的OSS玩家. 好的伙计们,我们都听说过比特币,以太坊或其他加密货币,其中有一些时髦的名字围绕着我们常见的新闻,但我们作为Java开发人员知道如何轻松地与这些区块链技术进行交互吗?以下是可用于利用区块链趋势的前三大Java项目.该列表基于GitHub存储库星级排序.非常感谢评论和意见. BitcoinJ 这个名字很具描述性,你不觉得吗?如果你想知道如何创建比特币钱包并管理节点之间的交易,那么你应该尝试使用Bitco