以前作了 DAPP 开发直通车,通讲了一下开发一个DAPP的过程。html
可是涉及多工种,多步骤。入手仍是很是困难的。git
通过不懈的努力,作了不少铺垫工做以后,我终于能够告诉你:github
绿谷镇楼。typescript
首先请记住NEL的GITHUB首页,这里拥有NEO相关的一大堆开发成果,牛逼我就不吹了,你本身看一看这些项目,你至少能够感觉到,咱们真的是快马加鞭。json
惟一的问题是文档化程度很低,咱们欢迎有兴趣的同志一块儿来提高建设NEL这个围绕NEO的中国开发者社区。c#
找到这个项目,他还有一个兄弟项目app
他们分别使用 c# 和 typescript 开发 的轻钱包SDK,提供你开发轻钱包的所需工具。工具
在仔细观察过蓝鲸涛代码、neonjs等代码后,他们均没法完成咱们的目标。区块链
开发一个开发者使用的轻钱包,因而咱们下定决心,绕了很大的弯路,从新创建了这些代码。测试
目前c#的sdk完成度100%,目前在建设例子阶段。
Ts的sdk完成度50%,但仅移植c#代码,风险为零,你们只须要等待。
这是SDK 对不对,那么轻钱包呢?
轻钱包就是SDK的例子,包含在SDK代码中
虽然是例子,咱们在功能性上面已经能让大部分NEO钱包汗颜,并且还有咱们快马加鞭的开发热情,会不断提高开发NEO轻钱包的平均水准。
我想用不了多久,开发NEO轻钱包就会变成一件很困难的事情,由于你开发了半天,还要承担着巨大的压力。别人会说:你看那个钱包还不如一个例子。
C#的例子钱包长这样
Ts的例子钱包长这样
咱们的钱包定位是例子,也是开发者工具,他只有一个功能,发交易,但作到啥交易都能发。
Nep5 交易,没问题,ico募资,没问题。
你会说,NEOGUI难道不是啥都能发么?用户咋用?
确实如此,功能强,不表明好用。
DAPP就是为了解决这个很差用的问题产生的。
那DAPP的最小单位不就正是一个个交易嘛?
因而,咱们的钱包有一个DAPP模块,你不须要写代码,只须要配置一下,这个DAPP 是由哪几笔交易构成的,帮助用户填个参数,按个按钮。
交易就发出去了,不就完成了让用户简单使用的功能了嘛。
看DAPP功能在这里
以前说过钱包的使用,再也不赘述。
http://www.cnblogs.com/crazylights/p/8338117.html
作实验以前先load 一个key 进来。这个钱包保护不是很完全,我知道出了问题是没法阻止大家发出WTF诅咒的,诅咒完,来github提个issue,甚好。或者直接发个pr帮咱们修bug,更好。
这是个实验钱包,因此只支持导入一个key。你高兴的话研究一下这个钱包的代码,作点改装。
注意这个DAPP区域,我划分出了红黄蓝绿四个区域
黄区是选择一个DAPP,对咱们这个系统来讲,一个DAPP就是一个json,这是跨平台的。
到时候咱们的网页版使用一样的json,啥也不改,就跨平台了。
自动加载dapp路径下全部的json
绿区是选择一个dapp以后出现的,咱们把dapp 分解为一个个的操做
好比Who am I 这个 DAPP 就三个操做,一个是查一我的的名字,输入地址。
一个是设置名字,输入地址和名字,设置名字我区分为 test 交易,和发送交易
绿区里就是操做和输入
蓝区就是显示你输入的值而已
红区是用来执行操做和显示结果的
Check这个DAPP功能的操做就是从存储区查询,结果就是显示一个string ,给这个地址取得名字是啥。
由于咱们是用json配置DAPP,那是不用写代码的。
固然,若是咱们配置的功能没法知足你的需求,你就须要写代码了。
让咱们开始看起来
这是WHO AM I dapp的全貌
他有三个功能,在红色区,我折叠了两个,一个一个看
json里面的title就指定这个DAPP的名字
Consts用来配置一些常量,后面能够引用,这样能减小一些直接填值的错误
这里consts.base 实际上是whoami DAPP的 合约ScriptHash
主要是scriptcall 和 scriptparam 须要引用
Funcs部分,看起来很复杂,可是他一共就五个部分
Name desc inputs call results
Name 和 desc 对应图上红色,不用解释。
Inputs对应图上黄色
咱们这里指定须要输入一个地址,上面就自动生成了这个UI
这里看起来比较复杂的是Call部分,
Type表示这个dapp操做只须要去查一下存储区。
查存储区不须要调用合约
须要两个参数,脚本hash去const里面拿,地址从输入拿。这个(address)有这个,咱们就会把这个string处理成address的scripthash。
还有其余的Call type,主要有invokescript,测试执行合约,和sendrawtransaction,发布交易。具体你就能够看代码啦。
Results 配置输出,对于getStorage 只能有一个输出。作过智能合约开发你就知道,getstorage取到的是bytearray,咱们这里能够指定类型,会帮你翻译好。
结果就是经过这样的配置,这里就获得了一个能够方便的查询每一个人的名字的小工具,这就是DAPP的意义了。
了解了咱们是如何简单的开发DAPP的,其余功能,我就简单说说了
SetName(test) 的 calltype 是invokescript,此时仍是免费操做,适合作一些查询NEP5余额啦,查询NNS地址啦之类的不须要对区块链产生影响的功能
Setname(sendraw) 的calltype 是sendrawtransaction,这是要花gas的(NEO10个gas内的交易免费,基本仍是免费的)
这里的按钮变成了两个,第一个会把交易发出去。
第二个会让你在交易面板看看你刚才生成的交易是啥。
咱们这个客户端,只有一个功能:发交易。
咱们把DAPP定义为一种方便的帮助用户发起各类各样交易的辅助工具。
根据咱们提供的这些功能,你是否是以为,开发DAPP,也不那么复杂了呢。
还有一个好消息告诉你们,NNS (neo域名服务)TEST版就快放出了。NNS域名服务还会发行代币。
其实咱们智能合约早就写了,就是没有一个合适的地方放DAPP,总不能让你们都拿着NEOGUI去拼合约吧。万事俱备,才敢告诉你。
如今这个未完成的NNS.TEST DAPP其实已经能够注册域名啦。
你要是高兴的话,根据咱们 nel github docs项目里的NNS白皮书已经能够本身完成这套功能啦。