DAPP 开发直通车-如何基于NEL 轻钱包来开发DAPP
李悔之2015
发表于 2022-12-18 00:24:31
135
0
0
但是涉及多工种,多步骤。入手还是非常困难的。
经过不懈的努力,做了很多铺垫工作之后,我终于可以告诉你:
开发DAPP for NEO,从未如此简单
0 u2 V: b" V6 X
绿谷镇楼。
: v! v/ \ m1 }. a# ?3 \- _
首先请记住NEL的GITHUB首页,这里拥有NEO相关的一大堆开发成果,牛逼我就不吹了,你自己看一看这些项目,你至少可以感受到,我们真的是马不停蹄。% l8 _6 a5 x) \
唯一的问题是文档化程度很低,我们欢迎有兴趣的同志一起来提升建设NEL这个围绕NEO的中国开发者社区。- h A8 @+ Q" W
那么轻钱包在哪里呢?
V* Q/ ?: O4 Q7 E d+ j6 [
找到这个项目,他还有一个兄弟项目+ w( v) |' z1 _! m" ]! u" B
他们分别使用 c# 和 typescript 开发 的轻钱包SDK,提供你开发轻钱包的所需工具。
在仔细观察过蓝鲸涛代码、neonjs等代码后,他们均无法完成我们的目标。8 e% Q, f9 y( s7 \5 X# P7 _- X( h
开发一个开发者使用的轻钱包,于是我们下定决心,绕了很大的弯路,重新建立了这些代码。
目前c#的sdk完成度100%,目前在建设例子阶段。4 Q. N4 R$ }! D
Ts的sdk完成度50%,但仅移植c#代码,风险为零,大家只需要等待。
这是SDK 对不对,那么轻钱包呢?6 X8 X$ J/ V6 ^$ M+ u
轻钱包就是SDK的例子,包含在SDK代码中: n$ e6 U9 E- W5 R0 H" s: f) K
虽然是例子,我们在功能性上面已经能让大部分NEO钱包汗颜,而且还有我们马不停蹄的开发热情,会不断提升开发NEO轻钱包的平均水准。
我想用不了多久,开发NEO轻钱包就会变成一件很困难的事情,因为你开发了半天,还要承担着巨大的压力。别人会说:你看那个钱包还不如一个例子。
C#的例子钱包长这样0 A, o% J7 r* `: @' m
2 Z$ n) n: l, k* c# n
Ts的例子钱包长这样, P, V, X. ~" o+ M. P, D; Y" A" J
钱包和DAPP有什么关系
我们的钱包定位是例子,也是开发者工具,他只有一个功能,发交易,但做到啥交易都能发。" ?- U) C% d4 ?3 T. z( {$ W
Nep5 交易,没问题,ico募资,没问题。
你会说,NEOGUI难道不是啥都能发么?用户咋用?
确实如此,功能强,不代表好用。
DAPP就是为了解决这个不好用的问题产生的。3 T" d6 A0 |2 Y6 ~$ O4 [
那DAPP的最小单位不就正是一个个交易嘛?
于是,我们的钱包有一个DAPP模块,你不需要写代码,只需要配置一下,这个DAPP 是由哪几笔交易构成的,帮助用户填个参数,按个按钮。
交易就发出去了,不就完成了让用户简单使用的功能了嘛。
看DAPP功能在这里
钱包的使用
之前说过钱包的使用,不再赘述。
http://www.cnblogs.com/crazylights/p/8338117.html
" x' U, M& S( B3 z ^' T# { L+ n7 t
做实验之前先load 一个key 进来。这个钱包保护不是很彻底,我知道出了问题是无法阻止你们发出WTF诅咒的,诅咒完,来github提个issue,甚好。或者直接发个pr帮我们修bug,更好。) [. ]( _- n) M" e
) _0 F2 `/ `6 I; a% u3 N
这是个实验钱包,所以只支持导入一个key。你高兴的话研究一下这个钱包的代码,做点改装。- _2 d0 \( l0 a% J% Q! e- b& a
( O8 K. d9 a8 h; c- ~. }
注意这个DAPP区域,我划分出了红黄蓝绿四个区域6 v% w& h6 M/ W0 K+ e8 U. u
黄区5 e- p* D' b+ Z: K
黄区是选择一个DAPP,对我们这个系统来说,一个DAPP就是一个json,这是跨平台的。) y N6 N i6 H; i/ i# @& I
到时候我们的网页版使用同样的json,啥也不改,就跨平台了。5 @& O# C8 J& O% e6 n- Z
自动加载dapp路径下所有的json9 K; x: Z5 x4 a7 ]/ j. I9 E9 \
绿区
绿区是选择一个dapp之后出现的,我们把dapp 分解为一个个的操作' [# `3 B- _- W4 |! ?" o
8 n; v6 L' g" x8 w/ e: a* `
比如Who am I 这个 DAPP 就三个操作,一个是查一个人的名字,输入地址。
一个是设置名字,输入地址和名字,设置名字我区分为 test 交易,和发送交易$ D5 a5 V1 S% T% [$ s# V1 S1 q
绿区里就是操作和输入
蓝区
蓝区就是显示你输入的值而已
3 u1 z* [, r0 i/ K
红区
红区是用来执行操作和显示结果的
Check这个DAPP功能的操作就是从存储区查询,结果就是显示一个string ,给这个地址取得名字是啥。
不写代码实现一个DAPP2 z! D: \& j, [$ ^2 F8 O
因为我们是用json配置DAPP,那是不用写代码的。1 E: G; {2 b2 W$ S7 R9 v4 m
当然,如果我们配置的功能无法满足你的需求,你就需要写代码了。4 U4 Z k7 c, v: e
让我们开始看起来, W; T; v# |7 J1 G5 i1 w+ l( @
这是WHO AM I dapp的全貌. i) C8 a/ R! w
他有三个功能,在红色区,我折叠了两个,一个一个看
title部分
json里面的title就指定这个DAPP的名字
) T d- C9 C! q/ o6 K
Consts部分9 r5 B5 Z1 r0 K0 F1 M
Consts用来配置一些常量,后面可以引用,这样能减少一些直接填值的错误
这里consts.base 其实是whoami DAPP的 合约ScriptHash; L. K/ N; }! B( N
主要是scriptcall 和 scriptparam 需要引用
2 @/ r% |( V/ e: r$ f% L4 R$ U
Funcs部分一
Funcs部分,看起来很复杂,但是他一共就五个部分
Name desc inputs call results
# i" I9 z, a' | Y
Name 和 desc 对应图上红色,不用解释。, s9 Z; M, T2 e" c
Inputs对应图上黄色
' }5 h8 B4 I t+ \
我们这里指定需要输入一个地址,上面就自动生成了这个UI; z) F9 y# s$ i: d% u, o3 z
Funcs部分二 D; E7 [& i2 j5 x+ _$ |
这里看起来比较复杂的是Call部分,8 u* s# a# R; |: h2 r
Type表示这个dapp操作只需要去查一下存储区。% Q: K$ n( V+ u/ g/ e9 @
查存储区不需要调用合约
需要两个参数,脚本hash去const里面拿,地址从输入拿。这个(address)有这个,我们就会把这个string处理成address的scripthash。4 y( o+ r/ S5 c) p2 }
还有其他的Call type,主要有invokescript,测试执行合约,和sendrawtransaction,发布交易。具体你就可以看代码啦。* Y% K4 C. x5 u) S7 ? J$ _
Funcs部分三
Results 配置输出,对于getStorage 只能有一个输出。做过智能合约开发你就知道,getstorage取到的是bytearray,我们这里可以指定类型,会帮你翻译好。8 n/ r3 L* S4 i* c7 |: e$ j
一个DAPP功能完成了0 S- ?& c1 g( l2 E9 W6 F
结果就是通过这样的配置,这里就得到了一个可以方便的查询每个人的名字的小工具,这就是DAPP的意义了。; l. r7 ^' F z' h: s
其他部分
了解了我们是如何简单的开发DAPP的,其他功能,我就简单说说了" F: k0 N2 d+ | `; s0 ~
SetName(test) 的 calltype 是invokescript,此时还是免费操作,适合做一些查询NEP5余额啦,查询NNS地址啦之类的不需要对区块链产生影响的功能
Setname(sendraw) 的calltype 是sendrawtransaction,这是要花gas的(NEO10个gas内的交易免费,基本还是免费的)8 p+ G& a' ~ r, k9 D( {
+ W' z; [; }: q1 o% d! M
这里的按钮变成了两个,第一个会把交易发出去。9 K3 ^2 q/ r% M
第二个会让你在交易面板看看你刚才生成的交易是啥。( C* B; {, F8 R, U1 @' j( ]: p" {3 C( |
( j9 w6 }; Z7 ?' K( u
我们这个客户端,只有一个功能:发交易。+ V3 e# {6 d5 {4 r4 }4 T1 S
我们把DAPP定义为一种方便的帮助用户发起各种各样交易的辅助工具。
根据我们提供的这些功能,你是不是觉得,开发DAPP,也不那么复杂了呢。2 v- X9 ^4 d; i9 }1 T
One more thing
还有一个好消息告诉大家,NNS (neo域名服务)TEST版就快放出了。NNS域名服务还会发行代币。
其实我们智能合约早就写了,就是没有一个合适的地方放DAPP,总不能让大家都拿着NEOGUI去拼合约吧。万事俱备,才敢告诉你。
现在这个未完成的NNS.TEST DAPP其实已经可以注册域名啦。" V: _5 ] g" G' ~
你要是高兴的话,根据我们 nel github docs项目里的NNS白皮书已经可以自己完成这套功能啦。
成为第一个吐槽的人