DAPP 開發直通車-如何基於NEL 輕錢包來開發DAPP

以前作了 DAPP 開發直通車,通講了一下開發一個DAPP的過程。html

可是涉及多工種,多步驟。入手仍是很是困難的。git

通過不懈的努力,作了不少鋪墊工做以後,我終於能夠告訴你:github

 

開發DAPP for NEO,從未如此簡單

綠谷鎮樓。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的例子錢包長這樣

 

錢包和DAPP有什麼關係

咱們的錢包定位是例子,也是開發者工具,他只有一個功能,發交易,但作到啥交易都能發。

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 ,給這個地址取得名字是啥。

不寫代碼實現一個DAPP

由於咱們是用json配置DAPP,那是不用寫代碼的。

固然,若是咱們配置的功能沒法知足你的需求,你就須要寫代碼了。

讓咱們開始看起來

這是WHO AM I dapp的全貌

他有三個功能,在紅色區,我摺疊了兩個,一個一個看

title部分

json裏面的title就指定這個DAPP的名字

Consts部分

Consts用來配置一些常量,後面能夠引用,這樣能減小一些直接填值的錯誤

這裏consts.base 實際上是whoami DAPP的 合約ScriptHash

主要是scriptcall 和 scriptparam 須要引用

Funcs部分一

Funcs部分,看起來很複雜,可是他一共就五個部分

Name desc inputs call results

Name 和 desc 對應圖上紅色,不用解釋。

Inputs對應圖上黃色

咱們這裏指定須要輸入一個地址,上面就自動生成了這個UI

Funcs部分二

這裏看起來比較複雜的是Call部分,

Type表示這個dapp操做只須要去查一下存儲區。

查存儲區不須要調用合約

須要兩個參數,腳本hash去const裏面拿,地址從輸入拿。這個(address)有這個,咱們就會把這個string處理成address的scripthash。

還有其餘的Call type,主要有invokescript,測試執行合約,和sendrawtransaction,發佈交易。具體你就能夠看代碼啦。

Funcs部分三

Results 配置輸出,對於getStorage 只能有一個輸出。作過智能合約開發你就知道,getstorage取到的是bytearray,咱們這裏能夠指定類型,會幫你翻譯好。

一個DAPP功能完成了

結果就是經過這樣的配置,這裏就獲得了一個能夠方便的查詢每一個人的名字的小工具,這就是DAPP的意義了。

其餘部分

瞭解了咱們是如何簡單的開發DAPP的,其餘功能,我就簡單說說了

SetName(test) 的 calltype 是invokescript,此時仍是免費操做,適合作一些查詢NEP5餘額啦,查詢NNS地址啦之類的不須要對區塊鏈產生影響的功能

Setname(sendraw) 的calltype 是sendrawtransaction,這是要花gas的(NEO10個gas內的交易免費,基本仍是免費的)

這裏的按鈕變成了兩個,第一個會把交易發出去。

第二個會讓你在交易面板看看你剛纔生成的交易是啥。

咱們這個客戶端,只有一個功能:發交易。

咱們把DAPP定義爲一種方便的幫助用戶發起各類各樣交易的輔助工具。

根據咱們提供的這些功能,你是否是以爲,開發DAPP,也不那麼複雜了呢。

One more thing

還有一個好消息告訴你們,NNS (neo域名服務)TEST版就快放出了。NNS域名服務還會發行代幣。

其實咱們智能合約早就寫了,就是沒有一個合適的地方放DAPP,總不能讓你們都拿着NEOGUI去拼合約吧。萬事俱備,纔敢告訴你。

如今這個未完成的NNS.TEST DAPP其實已經能夠註冊域名啦。

你要是高興的話,根據咱們 nel github docs項目裏的NNS白皮書已經能夠本身完成這套功能啦。

相關文章
相關標籤/搜索