Dapp开发教程一 Asch Dapp Hello World
1 基本流程
Asch有三种net,localnet,testnet,mainnet,后两种是发布到线上的,可通过公网访问。 第一种localnet是运行在本地的、只有一个节点的私链,主要是为了方便本地测试和开发。 Dapp的开发同样要涉及到这三种网络,即
- 第一步,在localnet开发、本地测试
- 第二步,在testnet测试
- 第三步,正式发布到mainnet
2 启动localnet
每个开发者都可以在本地启动自己的localnet,需要先下载asch源码。
git clone https://github.com/sqfasd/asch
下载后就可以参照该项目的README进行后面的安装、运行操作。
3 安装asch-cli
npm instal -g asch-cli
注意这一步不要用淘宝的cnpm, 有bug
4 在本地创建一个应用
首先要进入你的asch源码目录,并确保localnet启动
cd <asch source code dir>
node app.js
然后使用asch-cli的dapps子命令创建应用
asch-cli dapps -a
接下来,我们要回答一系列的问题,以生成应用的创世区块
? Enter secret of your testnet account *******************************************************************************
# 这里需要输入一个创世账户,可以是任意一个普通的asch主密码(12个单词组成的那个)
? Enter second secret of your testnet account if you have
# 创世账户是否设置了二级密码,默认是没有的,我们直接输入回车即可
? Enter DApp name Hello Dapp
# Dapp的名字,我们输入的是Hello Dapp
? Enter DApp description Hello world demo for asch dapp
# Dapp的描述,可以为空
? Enter DApp tags hello,asch,dapp
# Dapp的tags,为了将来更好的检索,可以为空
? Choose DApp category
1) Common
2) Business
3) Social
4) Education
5) Entertainment
6) News
(Move up and down to reveal more choices)
Answer:
# Dapp的类型,可以任意选择你的dapp所属的业务范围或领域,输入列表中的数字即可
? Enter DApp link https://github.com/sqfasd/asch-hello/archive/master.zip
# 输入Dapp源码的压缩包,必须以zip结尾,安装的时候需要通过这个链接进行下载
? Enter DApp icon url https://www.asch.com/logo.png
# Dapp图标的url
? Do you want publish a inbuilt asset in this dapp? No
# 是否需要在dapp中内置一个资产,我们暂时不需要这个选项,输入No即可
? Enter public keys of dapp forgers - hex array, use ',' for separator 8065a105c785a08757727fded3a06f8f312e73ad40f1f3502e0232ea42e67efd
# 输入dapp的初始受托人公钥列表,用逗号分隔,以后dapp的受托人是可以动态添加的,所以我们只需要输入创世账户的一个密钥即可
Creating DApp genesis block
Fetching Asch Dapps SDK
Saving genesis block
Saving dapp meta information
Registering dapp in localnet
Done (DApp id is 6299140990391157236)
# 接下来程序就会自动在localnet上注册这个应用了,在这个示例中,我们的应用id为6299140990391157236
5 目录结构
我们可以查看dapps下面新增了一个目录,目录名就是新创建的dapp的id
ls -1 dapps/<dapp id>
blockchain.json # dapp数据库描述
config.json # dapp的配置文件,主要是种子节点的列表,与主链配置类似,开发者也可以添加其他自定义配置
dapp.json # dapp的元信息,包括名称、描述、源码包等,这个文件可以用来在不同的网络再次注册时使用
genesis.json # 创世块,命令行自动生成的,你也可以自己写程序生成,那样就可以更灵活的分配创世账户的资产
index.js # dapp的入口文件
init.js # 各模块的初始化代码在此
LICENSE # 源码许可描述
modules # 主要代码在这里
modules.full.json # 需要加载的模块配置,如果需要新增模块,可以在这里配置
modules.genesis.json # (模块配置的简化版,暂时不需要)
node_modules #
package.json #
public # 前端目录
routes.json # http路由配置,如果要新增接口,需要修改这个配置文件
开发者如果觉得复杂,不需要详细追究,先大概了解即可。 与开发者最相关的文件主要在modules/contracts/目录下 我们看到这个目录已经存在4个内置的合约类型
ls -1 dapps/<dapp id>/modules/contracts/
delegates.js # 受托人注册合约
insidetransfer.js # 链内转账合约
outsidetransfer.js # XAS充值合约
withdrawaltransfer.js # XAS提现合约
开发者需要做的就是创建新的合约,用来表达你的业务逻辑,仅此而已。其他不相关的代码都不需要了解。
6 配置dapp创世密钥
我们需要在config.json的dapp的字段配置上我们之前在创世块中使用的主密码和对应的dapp id。
将来发布到正式网络中时,也需要有一台节点配置这个密钥,仅需一台
"params": {
"6299140990391157236": [
"someone manual strong movie roof episode eight spatial brown soldier soup motor"
]
}
7 访问前端
好,现在我们来放松一下,打开dapp的前端链接,体验一下侧链的基本功能。 可以在钱包ui的已安装应用列表中找到dapp入口 或者直接访问dapp的urllocalhost:4096/dapps/<dapp id>
在这个hello world项目中,我们可以进行充值、链内转账和提现操作。 目前的充值暂时只能通过命令进行操作(后面会做到主钱包中),其他功能都可以直接在这个界面上操作
asch-cli dapps -d
? Enter secret *******************************************************************************
? Enter amount 100
? DApp Id 6299140990391157236
? Enter secondary secret (if defined)
? Host and port localhost:4096
null { success: true, transactionId: '10589988261732949004' }
10589988261732949004
充值和提现操作都是30秒刷新一次,我们稍等片刻,就可以看到界面上的余额刷新了。
Dapp开发教程一 Asch Dapp Hello World的更多相关文章
- vs2015 dx15开发教程一
- FFmpeg开发教程一、FFmpeg 版 Hello world
本系列根据项目ffmpeg-libav-tutorial翻译而来 Chapter 0 - 万物之源 -- hello world 然而,本节的程序并不会在终端打印"Hello world&q ...
- 基于以太坊开发的类似58同城的DApp开发与应用案例
今天,Origin开发团队很高兴地宣布在以太坊Rinkeby测试网络上推出Origin Protocol Demo DApp ! 在这个DApp中,你可以在不同垂直行业的solidarity econ ...
- 以太仿DApp开发环境搭建
在网上找了些以太仿的资料,是node.js写的,之前也了解过node.js,正好也可以用上.本篇主要学习以太仿DApp开发环境搭建. 一.安装 DApp 开发环境 1.1安装 Node.js 首先下载 ...
- DAPP 开发直通车-如何基于NEL 轻钱包来开发DAPP
之前做了 DAPP 开发直通车,通讲了一下开发一个DAPP的过程. 但是涉及多工种,多步骤.入手还是非常困难的. 经过不懈的努力,做了很多铺垫工作之后,我终于可以告诉你: 开发DAPP f ...
- NEO区块链-DAPP开发直通车-第零篇
什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称. NEL将为开发DAPP提供全面的服务 ...
- EOS Dapp开发(1)-基于Docker的开发环境搭建
随着EOS主网的上线,相信基于EOS的Dapp开发会越来越多,查阅了很多资料相关的开发资料都不是很多,只能自己摸索,按照网上仅有的几篇教程,先git clonehttps://github.com/E ...
- 《区块链DAPP开发入门、代码实现、场景应用》笔记5——区块链福利彩票的设计
笔者一直强调,一定要利用区块链的特点来解决行业存在的问题,并且该问题最好用区块链解决或者说只能用区块链解决.彩票行业就是个例子. 在讲解代码之前,首先讲解一下业务设计,如图6.15所示. 图6.15 ...
- 《区块链DAPP开发入门、代码实现、场景应用》笔记4——Ethereum Wallet中部署合约
账号创建完成之后,账号余额是0,但是部署合约是需要消耗GAS的,因此需要获取一定的以太币才能够继续本次实现.在测试网中获取以太币可以通过挖矿的方式,在开发菜单中可以选择打开挖矿模式,但是这需要将Syn ...
随机推荐
- Django小技巧——使用package管理app
在一个学习视频上看见的小技巧,遂记录下来. 1. 如下图所示,项目中有多个app,本技巧要解决的问题是集中管理这多个app,将其放入一个package下集中管理,改善项目的视图环境 2. 建立一个pa ...
- 410 for 循环 运算 改变循环的控制流 死循环 遍历数组 定义方法 有名函数匿名函数 定义函数的方法取值 date math 局部变量 函数 局部与全局变量 次幂/随机数/取绝对值/向上取整/平方根
for(1.表达式1;2.表达式2;3.表达式3){ 4.循环体语句; } 先执行1 ,在执行2, 表达式, 如果2结果为false,退出循环 如果2是true 执行4 在执行3 执行2 举例打印1- ...
- springBoot启动的时候动态选择装载某些bean
最近有这样一个场景,我们使用了elasticjob lite框架,希望某些job在指定服务器不启动.让spring动态的来装载所需要的job及相关bean 这个时候可以使用@Conditional家族 ...
- 微信小程序【获取验证码】倒计时效果
最近开始接触微信小程序,会记录一些相关的小功能——例如这次是点击[获取验证码]按钮出现的倒计时效果. 原文: http://blog.csdn.net/Wu_shuxuan/article/detai ...
- Max Area of Island
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- .Net IOC框架入门之三 Autofac
一.简介 Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个 目的 1.依赖注入的目的是为了解耦. 2.不依赖于具体类,而依赖抽象类或者接口,这叫依赖倒置. 3.控制反转即 ...
- Mysql索引机制(B+Tree)
1,索引谁实现的: 索引是搜索引擎去实现的,在建立表的时候都会指定,搜索引擎是一种插拔式的,根据自己的选择去决定使用哪一个. 2,索引的定义: 索引是为了加速对表中数据行的检索而创建的一种分散存储的( ...
- [转] 从零构建 vue2 + vue-router + vuex 开发环境到入门,实现基本的登录退出功能
这是一个创建于 738 天前的主题,其中的信息可能已经有所发展或是发生改变. 前言 vue2 正式版已经发布将近一个月了, 国庆过后就用在了公司的两个正式项目上, 还有一个项目下个月也会采用 vue2 ...
- php获取两个时间戳之间相隔多少天多少小时多少分多少秒
/** * 返回两个时间的相距时间,*年*月*日*时*分*秒 * @param int $one_time 时间一 * @param int $two_time 时间二 * @param int $r ...
- Linux环境搭建 | 手把手教你如何安装CentOS7虚拟机
centos 下载地址: 可以去官网下载最新版本:https://www.centos.org/download/ 以下针对各个版本的ISO镜像文件,进行一一说明: CentOS-7.0-x86_64 ...