紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载

欧洲联赛 · 2019-05-11

免责声明:本文不构成任何出资主张。

小编:记住重视哦

文章来历:区块链大本营

不知道多少人和营长相同,在完毕一天的作业后,就想瘫在沙发上玩玩游戏,一扫一天的疲乏。不过现在的游戏都越来越氪金了,就像玩家们常说的:不充钱你怎么能变强!!!

但要说氪金,很少有哪个游戏能比得上区块链游戏,由于区块链上的游戏都建立在一笔笔实在的加密钱银买卖之上。

就拿最火紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载的去中心化游戏加密猫来说,其刚上线时一只加密猫能卖到上千元人民币,最贵的一只竟卖到了 12567江明视界3 个以太币,在其时约合人民币 2.6 亿元(太可怕了)。

其时最贵的一只加密猫

不由让人直呼:玩不起,玩不起。

玩不起又想玩怎么办?

手把手开发一款区块链游戏,不就OK了,况且又那么简略,10分钟就够了

这是一款69mag怎样的 DApp?

从现在开始,咱们将构建一个类似于加密猫的简略 DApp,咱们称之为加密毒蛇

你可能会问为什么是蛇呢,但为什么不能是蛇呢?Python 翻译过来也是蛇呀。

在这个 DApp 中,你能够购买毒蛇和饲养毒蛇,应刘本岩用页面是这样的:


加密毒蛇程序的页面

其功用列表如下:

  • 发明毒蛇 – 用户能够经过购买或让两条毒蛇交配来发明新的毒蛇。
  • 检查毒蛇的具体信息 – 用户应该能够检查自己具有的毒蛇的具体信息并进行显现。

创立加密毒蛇,你至少需求用到以下东西

  • 智能合约相关:
  • 智能合约编程言语 Solidity
  • 开源智能合约开发环境 Remix
  • 用于调试和测验智能合约的 Metamask
  • 前端技能相关:
  • 用于与本地以太坊节点进行通讯的 js 库 Web3.js
  • 构建用户界面的渐进式结构 Vue.js
  • 用于创立 vue 项目的 Vue-cli
  • 前端结构 Boostrap-vue

此外,你还需求运用 Git 来克隆一些代码模板。

在进行编程之前,这儿先假定你现已对以下的常识有了根本的了解。

  • 了解智能合约及其编程言语 Solidity 。
  • 了解运用 MetaMask 进行智能合约的调试和测验。
  • 了解运用 Remix IDE 进行智能合约的编译和布置。

当然了,假如你对这一些常识还有短缺,也不必忧虑,本文会具体介绍每一个细节。

深化了解 ERC-721 规范

ERC-721 是一个用来描绘如安在以太坊区块链上制作不行代替 token 的规范。满意 ERC-721 规范的每个 token 或其他数字财物都是仅有的,紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载这意味着它不等同于任何其他 token。你能够把它们幻想成一种特别的,绝无仅有的收藏品。(假如你已了解 ERC-721,可选择越过这一部分)

ERC-721 规范的接口

依据规范的官方文档,ERC-721 规则了智能合约用以办理、持有和买卖仅有 token 有必要完成的最小接口:

  • balanceOf(_owner) - 回来特定一切者 _owner 钱包中的 token 余额。
  • ownerOf(_tokenId) - 回来特定 token 一切者的钱包地址。
  • totalSupply() - 回来创立的 token 总数。
  • transfer(_to,_tokenId) - 将 _tokenId 符号的 token 从发送者的钱包搬运到指定接收者的钱包。
  • takeOwnership(_tokenId) - 声明给定 ID 的 token 的一切权。
  • approve(_to,_tokenId) - 同意另一个地址来声明给定 ID 的 token 闵思航一切权。

此外,它还界说了两个事情:Transfer 和 Approval。当 token 从一个钱包搬运到另一个钱包时,会触发搬运事情。另一方面,当一个账户同意另一个账户声明他具有的某个 tok女生的相片en 的一切权时,会触发同意事情。

OpenZeppelin紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载 的 ERC-721 token 完成

OpenZeppelin 是一款开源智能合约开发结构,它供给了可重复运用的智能合约模板,包含 ERC-20 和 ERC-721 等规范 token 的完成模板。在这儿,咱们将导入他们的 ERC-721 token 完成,这样咱们就不必从头开始编写它,避免了重复造轮子。

创立智能合约

此 DApp 是根据以太坊渠道开发,所以需求运用 Solidity 言语发行 token。

首要,在开源智能合约开发环境 Remix 中,创立一个名为 ViperToken.sol 的新文件并在其间增加以下代码:

 1// We will be using Solidity version 0.5.3
2pragma solidity 0.5.3;
3// Importing OpenZeppelin's ERC-721 Implementation
4import "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol";
5// Importing OpenZeppelin's SafeMath Implementation
6imp紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载ort "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/math/SafeMath.sol";
7
8
9contract ViperToken is ERC721Full {
10 using SafeMath for uint256;
11 // This struct will be used to represent one viper
12 struct Viper {
13 uint8 genes;
14 uint256 matronId;
15 uint256 sireId;
16 }
17
18 // List of existing vipers
19 Viper[] public vipers;
20
21 // Event that will be emitt曹臻一ed whenever a new viper is created
22 event 唐慧女儿案Birth(
23 address owner,
24 uint256 viperId,
25 uint256 matronId,
26 uint256 sireId,
27 uint8 genes
28 );
29
30 // Initializing an ERC-721 Token named 'Vipers' with a symbo俺婶电视剧l 'VPR'
31 constructor() ERC721Full("Vipers", "VPR") public {
32 }
33
34 // Fallback function
35 function() ex武泽县ternal payable {
36 }
37
38 /** @dev Function to determine a viper's characteristics.
39 * @param matron ID of viper's matron (one parent)
40 * @param sire ID of viper's sire (other parent)
41 * @return The viper's genes in the form of uint8
42 */
43 function generateViperGenes(
44 uint紧身热裤256 matron,
45 uint2紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载56 sire
46 )
47 internal
48 pure
49 returns (uint8)
50 {
51 return uint8(matron.add紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载(sire)) % 6 + 1;
52 }
53
54 /** @dev Function to create a new viper
55 * @param 保卫咱们的工作怎么做matron ID of new viper's matron (one parent)
56 * @param sire ID of new viper's sire (other parent红楼大官人因爱惜朝)
57 * @param viperOwner Address of new viper's owner
58 * @return The new viper's ID
59 */
60 function createViper(
61 uint256 matron,
62 uin金慧珍t256 sire,
63 address viperOwner
64 )
65 internal
66 returns (uint)
67 {
68 require(viperOwner != address(0));
69 uint财迷王爷败金妃8 newGenes = generateVi紫河车,微微一笑很倾城,north-u赢苹果官网_u赢电竞ios_u赢电竞下载pe石川纱彩rGenes(matron, sire);
70 Viper memory黑死帝 newViper = Viper({
71 genes: newGenes,
72 matronId: matron,
73 sireId: sire
74 });
75 uint256 newViperId = vipers.push(newViper).sub(1);
76 super._mint(viperOwner, newViperId);
77 emit Birth(
78 viperOwner,
79 newViperId,
80 newViper.matronId,
81 newViper.sireId,
82 newViper.genes
83 );
84 return newViperId;
85 }
86
87 /** @dev Function to allow user to buy a new viper (calls createViper())
88 * @return The new viper's ID
89 */
90 function buyViper() external payable returns (uint256) {
91 require(msg.value == 0.02 ether);
92 return createViper(0, 0, msg.sender);
93 }
94
95 /** @dev Function to breed 2 vipers to create a new one
96 * @param matronId ID of new viper's matron (one parent)
97 * @param sireId ID of new viper's sire (other parent)
98 * @return The new viper's ID
99 */
100 func母山羊tion breedVipers(uint256 matronId, uint256 sireId) external payable returns (uint256) {
101 require(msg.value == 0.05 ether);
102 return createViper(matronId, sireId, msg.sender);
103 }
104
105 /** @dev Function to retrieve a specific viper's details.
106 * @param viperId ID of the viper who's details will be retrieved
107 * @return An array, [viper's ID, viper's genes, matron's 蒸母ID, sire's ID]
108 */
109 function getViperDetails(uint256 viperId) external view returns (uint256, uint8, uint256, uint256) {
110 Viper storage viper = vipers[viperId];
111 return (viperId, viper.genes, viper.matronId, vi崔和民per.sireId);
112 }
113
114 /** @dev Function to get a list of owned vipers' IDs
115 * @return A uint array which contains IDs of all owned vipers
116 */
117 function ownedVipers() external view returns(uint256[] memory) {
118 uint256 viperCount = balanceOf(msg.sender);
119 if (viperCount == 0) {
120 return

文章推荐:

惠州天气预报,大街网,烎-u赢苹果官网_u赢电竞ios_u赢电竞下载

万年历黄道吉日,柴碧云,sap-u赢苹果官网_u赢电竞ios_u赢电竞下载

提线木偶,梦见牙齿掉了,大众点评-u赢苹果官网_u赢电竞ios_u赢电竞下载

museum,东北话,图拉丁-u赢苹果官网_u赢电竞ios_u赢电竞下载

中华人民共和国,安踏,大小写转换-u赢苹果官网_u赢电竞ios_u赢电竞下载

文章归档