![](https://img.haomeiwen.com/i3341765/509209a9a69fd735.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的项目文件夹。
里面添加两个主要的子文件夹:
-
contracts (合同)
-
tests (测试)
合同文件夹,将会有四个子文件夹:玩家,游戏,市场和绿洲,动手吧!
[图片上传失败...(image-ce3227-1529938709640)]
第2步,创建玩家智能合约
玩家将成为我们的第一个EOS智能合约。
每个玩家拥有:用户名、等级、健康点数、能量点数,代币余额、全部物品库存 和能力。
玩家通过玩游戏挖矿,获得代币。
通过代币,玩家可以从市场购买物品,并将物品添加到他的库存、生命值、能量点数和能力点数中。
在Players文件夹中,创建Players.hpp&Players.cpp文件。
-
Player.hpp头文件,包含由.cpp文件引用的变量,常量和函数。
-
Player.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))
}
先将上面代码,或敲、或复制粘贴到你的文件中吧。
明天继续分析代码、同时调试智能合约。
赶快试一试吧!
网友评论