区块链研究EOS技术爱好者爱莉莎学区块链投资系列

如何开发“头号玩家”智能合约?(上)【 一起开发EOS DAPP

2018-06-25  本文已影响54人  竹三七
eos_2 2 copy.png

第一个EOS DAPP做什么呢?

Google一圈,发现了一个非常有趣的教程。

THE ULTIMATE END-TO-END EOS DAPP DEVELOPMENT TUTORIAL – PART 1

https://infinitexlabs.com/eos-development-tutorial-part-1/

这个教程在 Infinite X Labs(无线X实验室)的博客上发布。Infinite X Labs是一家英国的区块链整套方案供应商,网站博客上的很多内容,值得学习。

不过这个教程,目前还没写完,如果后面作者断更,爱莉莎就接着写,希望不要狗尾续貂啊!鸭梨山大!

来来,看看爱莉莎学习总结内容:

1. 代码说明

EOSIO智能合约,必须通过帐户运行。

账户将交传输易或推送到区块链网络。

2. 知识储备

前面,我们已经学习了:

今天开始,我们开发一个游戏DAPP吧。

3. 游戏故事

游戏的故事,基于今年3月上映的《头号玩家》。酷吧。

2045年,遭遇能源危机的现实世界,处于崩溃边缘。人们都沉溺在VR(虚拟现实)游戏——“绿洲”的虚幻世界里,寻求慰藉。绿洲,逼真的虚拟世界,在这里,人们可以逃避现实,成为任何人、做任何事情。然而,“绿洲”的创始人临终突然宣布:将游戏里的亿万身家,全部留给最先找到隐藏彩蛋的玩家。于是,一场最大规模的寻宝冒险,就此展开 。

OK,现在,我们要将区块链技术,集成到绿洲游戏里,让区块链的不可篡改性为游戏的公平公正保驾护航。

这个小型的DApp,每个玩家都可以玩游戏挖矿,从中获得代币。并且,玩家可以用代币去游戏市场上购买物品,比如:能量、健康、等级等等。

首先,我们需要创建一个Oasis(绿洲)智能合约。

4. 开发条件

✓ 需要有C / C ++技术背景,因为我们用C/C++编写EOS智能合约

✓一个集成开发环境,比如: Visual Studio, 或者 CLion。 爱莉莎使用 Visual Studio Code

✓创建一个本地EOS测试网络节点

5. 准备工作

步骤1 - 启动节点

$nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --contracts-console

步骤2 - 创建一个绿洲钱包,用来存储密钥

#1.创建名为“绿洲”的新钱包

$cleos wallet create -n oasis

#2.生成两对密钥(使用该命令两次)

$cleos create key

$cleos create key

#3.将生成的私钥导入钱包(因为我们这次不是使用default钱包,所以需要在最后指定钱包名)

#{private_key_1} - 是OwnerKey

#{private_key_2} -是ActiveKey

$cleos wallet import {private_key_1} -n oasis

$cleos wallet import {private_key_2} -n oasis

#4.将“eosio”帐户的私钥添加到钱包中

eosio账户的私钥在 ~/Library/Application Support/eosio/nodeos/config 中:

signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

$cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 -n oasis

一定要记得,将生成的所有公钥-私钥对,和钱包密码,都复制保存到文件中,不用手抄,测试用的,安啦!

第3步 - 创建一个帐户

EOSIO的智能合约,必须在帐户上运行。

因此,账户需要将交易传输或推送到区块链网络。将帐户命名为“anorak”。

#使用公钥创建帐户

$cleos create account eosio anorak {public_OwnerKey} {public_ActiveKey}

6. 开发代码——冰山先露一角

项目'绿洲'正式启动。

第1步,创建一个名为Oasis的项目文件夹。

里面添加两个主要的子文件夹:

合同文件夹,将会有四个子文件夹:玩家,游戏,市场和绿洲,动手吧!

[图片上传失败...(image-ce3227-1529938709640)]

第2步,创建玩家智能合约

玩家将成为我们的第一个EOS智能合约。

每个玩家拥有:用户名、等级、健康点数、能量点数,代币余额、全部物品库存 和能力。

玩家通过玩游戏挖矿,获得代币。

通过代币,玩家可以从市场购买物品,并将物品添加到他的库存、生命值、能量点数和能力点数中。

在Players文件夹中,创建Players.hpp&Players.cpp文件。

看看EOS合约的基本结构:


Players.hpp

include <eosiolib / eosio.hpp>

include <eosiolib / print.hpp>

include <string>



Players.cpp

include "Players.hpp"

namespace Oasis {

using namespace eosio;

using std::string;

class Players : public contract {

using contract::contract;

public:

Players(account_name self):contract(self) {}

//@abi action

void add(const account_name account, string& username, uint64_t level) {

}

//@abi action

void update(const account_name account) {

}

//@abi action

void getplayer(const account_name account) {

}

private:

//@abi table player i64

struct player {

uint64_t account_name;

string username;

uint64_t level;

uint64_t health_points = 1000;

uint64_t energy_points = 1000;

uint64_t primary_key() const { return account_name; }

EOSLIB_SERIALIZE(player, (account_name)(username)(level)(health_points)(energy_points))

};

typedef multi_index<N(player), player> playerIndex;

};

EOSIO_ABI(Players, (add)(update)(getplayer))

}


先将上面代码,或敲、或复制粘贴到你的文件中吧。

明天继续分析代码、同时调试智能合约。

赶快试一试吧!

上一篇下一篇

猜你喜欢

热点阅读