美文网首页Dapp开发
转载—DAPP实战:从0到1全过程(1)

转载—DAPP实战:从0到1全过程(1)

作者: 03e9c48218c1 | 来源:发表于2018-08-06 22:39 被阅读70次

转载微信订阅号(区块链之录)文章:

DAPP实战:从0到1全过程(1)

大家好!从今天开始,本公众号将推出DAPP开发系列教程,以项目Forever bird(http://47.95.248.105)为例,详细讲解基于以太链的DAPP开发全过程,包括整体架构设计,智能合约编写、调用、发布,以及从前台到后台的整体开发流程。

在开始之前呢,先做一些准备工作,笔者所采用的开发语言和工具如下:

准备工作:

前端:react

后端:go、nodejs

web服务器:nginx

钱包:metamask

智能合约:solidity

智能合约发布工具:truffle/remix

以太坊客户端:testrpc/geth

工具:web3j

数据库:mysql

前后端开发语言可以根据自己的喜好自由选择,对于基础开发环境的搭建本文不再叙述。

Forever bird介绍

Forever bird是笔者已经开发完成的一套用于加密鸟的交易和养成DAPP。下面介绍系统的主要功能和玩法。

环境依赖:需要安装浏览器钱包Metamask插件,请使用pc端浏览器chrome或者firefox访问。

安装matamask(https://metamask.io/)需要访问应用市场,如果不能访问可以访问路径下载metamask包进行离线安装(https://github.com/MetaMask/metamask-extension/releases),如果安装过程有什么疑问请留言。

定义和主要功能

鸟:每只鸟是用户完全拥有且不会消失的区块链鸟,每只鸟具有力量、速度和体重(单位:盎司)三个重要属性。每周都会按照鸟的体重进行排序,前20bird可以参与平台盈利分红。

主要功能如下:

捉鸟 捉鸟,首先调用智能合约生成bird,一个bird对应一个token id,然后把对应的token id绑定到对应用户。因此,该用户就拥有了唯一、独有、永恒的bird。

鸟市 用户拥有bird之后,可以在鸟市进行交易,平台会收取3.5%的交易费,交易之后购买者就可以拥有bird的所有权。

PK 玩家可以选择其他人的bird进行pk,pk会按照bird的力量、速度、体重和随机因子进行计算,胜者可以获取失败者的体重(如何两者级别相差很大,胜者可能不会获取体重),但是胜者和失败者都会增加经验值。

经验增加到一定数值能够提高bird的等级,等级的提高会增加bird的力量、速度和体重。

0~10级:经验值增加50升一级。

11~30级:经验值增加100升一级。

31~80级:经验值增加200升一级。

80级以上:经验值增加300升一级。

每升一级,力量增加3%,速度增加3%。

吃水果 每个bird在一定时间可以吃一个水果,水果分三类:力量型、速度型和经验型。三类水果会对应提高bird的力量、速度和经验。

分红 分红的比重:平台周盈利的30%

排名方式:按照bird体重(盎司),如果盎司相同,按照id升序排序(创建时间越早优先级越高)。

奖励总数:排名前20名

奖励比例:

第一名:奖励金 * 20%

第二名:奖励金 * 15%

第三名:奖励金 * 10%

第4~10名:奖励金 * 5%

第11~20名:奖励金 * 2%

bird首页如下:

用户登录之后会进入“我的”页面,如下图所示:

排行榜会按照体重进行排序:

每周都会对前20的bird进行分红:

以上对forever bird的项目进行了介绍,下面讲一下总体设计架构

bird的架构模型如下:

在这个架构中,基于以太链的智能合约相当于部分功能的业务后台,与传统的service一起完成整体逻辑,下面介绍一下各模块的功能。

智能合约实现语言solidity,智能合约包含存储和逻辑两部分。

存储内容包括用户和bird token的对应关系,bird的详细信息,比如体重、力量等;还有一部分调用event存储的log。

逻辑包括bird基因生成、bird转移、pk、吃水果等改变状态的接口,获取bird基本信息、获取用户bird信息的查询接口。

service service包括go实现的业务后台,对web提供业务接口;以太链所有的交易都必须等待矿工打包确认,因此nodejs实现的定时脚本,用户查询智能合约,同步bird信息。

web展示时如果直接以太链读取交易数据会比较耗时,同时还要做大量的数据处理,因此确认的交易打包的数据会存储于service数据库。本系统nodejs通过web3j来获取合约里已经完成的交易数据,最终把交易数据存到mysql数据库里。

web端 web端要和智能合约、service进行交互,因为智能合约和service相当于两个业务后台,要保证用户数据的正确性和一致性。

首先要有统一的账户认证,本系统统一使用metamask钱包作为账户认证。web端使用浏览器钱包Metamask(生成用户以太链账户,存储用户私钥),使用metamask提供的web3j接口与以太链智能合约交互,后端service要确认用户登录,需要用户使用私钥对信息进行签名,后端对前端传递的信息进行校验,校验通过则可以保证用户的本人操作,关于如何进行签名校验,请参考一下链接:

https://medium.com/metamask/the-new-secure-way-to-sign-data-in-your-browser-6af9dd2a1527

其次要保证数据传输的完整性。为了防止数据传输过程被篡改,调用智能合约的关键接口(会变更状态的业务接口)都加入了签名校验。

最后为了确保智能合约与后台行为一致性,对bird使用了状态控制。bird的状态变迁图如下所示:

在开发阶段,系统使用了testrpc和geth搭建私链。使用testrpc(内存操作)能够快速测试功能,使用geth能模拟真实以太坊环境。发布测试公链使用remix编译发布。

下章将会为大家讲解:智能合约的编写,敬请期待。

相关文章

  • 转载—DAPP实战:从0到1全过程(2)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(2) “本章主要介绍DAPP合约开发基础,sol...

  • 转载—DAPP实战:从0到1全过程(1)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(1) 大家好!从今天开始,本公众号将推出DAPP...

  • 转载—DAPP实战:从0到1全过程(5)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(5) 前面几篇文章着重讲解了下智能合约的基本语法...

  • 转载—DAPP实战:从0到1全过程(8)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(8) 上篇文章为大家讲解了如何在前端通过web3...

  • Ruby从0到1实战

    推荐使用软件:sublime下载地址:http://www.sublimetext.comSublimeText汉...

  • 《见识》复盘02:创业&创新

    一、创业不等于从0到1 1.创新中的从0到1只是完成了万里长征的第1步,真正创新是要走完从0到N的全过程。 2.伟...

  • 从 0 到 1 认识从 0 到 1

    看了太多从 0 到 1 的标题了,总感觉那是在乱用流行的标题,记得这个标题是从阿里开始的,从 0 到 1 的书,活...

  • 从0到0,从0到1。

    昨天和一客户交流,听到这么一句话,我现在的阶段勉强算0到0的阶段,到那个1的阶段还没有看到,或者说并不知道那个1在...

  • 日读《见识》2.11

    1,硅谷的N+1创新法。比从0到1更困难的是走完从0到N的全过程,而这需要足够多的执着和耐心。 山寨是做N-1的事...

  • 从1到0,0到1。

    把经历过的一切事情都归零是件很难可以做到的事情,并不会像计算器那么简单。 有时候想,如果人的大脑能像机器那样多好,...

网友评论

    本文标题:转载—DAPP实战:从0到1全过程(1)

    本文链接:https://www.haomeiwen.com/subject/qjsnvftx.html