簡(jiǎn)介
研究比原鏈已經(jīng)一年了闻鉴,用比原鏈做了幾個(gè)dapp茵乱,而且最近還做了一個(gè)基于他們插件錢包的dapp,總結(jié)了一些遇到的坑孟岛,還有一些技術(shù)細(xì)節(jié)瓶竭,接下來我會(huì)分成三章,從dapp設(shè)計(jì)架構(gòu)上渠羞,到深入到源碼分析去幫各位介紹一下比原鏈的dapp斤贰,還有分析比原官方最近發(fā)布的dapp的架構(gòu)。
Dapp架構(gòu)設(shè)計(jì)
這個(gè)是所有工作的基礎(chǔ)次询,從看完比原鏈源碼使用過比原的錢包后荧恍,我們就在思考比原鏈的dapp如何做,應(yīng)該說是區(qū)塊鏈應(yīng)用應(yīng)該如何做屯吊,我們之前嘗試過用以太坊送巡、比特幣摹菠、超級(jí)賬本去做dapp。先總結(jié)一下區(qū)塊鏈dapp的痛點(diǎn):
1)沒辦法保證上鏈前數(shù)據(jù)的真實(shí)性授艰;
2)Tps很低辨嗽;
3)接入成本高,需要自己搭建節(jié)點(diǎn)淮腾;
Dapp架構(gòu)方案
我現(xiàn)在總結(jié)了兩個(gè)基于比原鏈的dapp架構(gòu)方案:(如果有新版或者比較好的解決方案歡迎交流)
Dapp肯定離不開復(fù)雜的業(yè)務(wù)糟需,所以肯定會(huì)用到比原鏈的智能合約,以下方案都支持智能合約谷朝。
一洲押、搭建區(qū)塊鏈node
其實(shí)就是自己搭建個(gè)節(jié)點(diǎn),然后應(yīng)用直接調(diào)用節(jié)點(diǎn)提供的接口圆凰,完成了區(qū)塊鏈的業(yè)務(wù)內(nèi)容杈帐,比原鏈的源碼整合了錢包功能,搭建也比較方便专钉,幾句代碼就可以搭建完了挑童,但是這樣的業(yè)務(wù)視乎不大合理,因?yàn)檫@種后端整合比原源碼錢包(以下稱為“pc錢包”)的方式跃须,相當(dāng)于把所有的賬戶信息都托管給dapp站叼,其實(shí)就是一個(gè)集中的官方的錢包,所有的賬戶都?xì)w官方管菇民,這樣會(huì)有中心化問題尽楔,最后會(huì)被懷疑用不用這個(gè)區(qū)塊鏈?zhǔn)欠裼斜匾?/p>
比原鏈自己有一套用戶的模塊,用戶可以使用pc錢包第练、客戶端錢包阔馋、手機(jī)錢包等,自己的用戶信息可以自己備份娇掏,交易信息全部公開全部可以到區(qū)塊鏈瀏覽器里面查到呕寝。這個(gè)方案只是主要實(shí)現(xiàn)了交易上鏈。
ps: 當(dāng)然其實(shí)還是可以變通一下婴梧,就是說把PC錢包的所有接口在dapp實(shí)現(xiàn)一次壁涎,然后結(jié)合業(yè)務(wù),但是比原的源碼是會(huì)不斷更新志秃,還要隨著它的版本更新,然后更新自己的應(yīng)用嚼酝,顯然不實(shí)際浮还。
說一下里面的坑:
1)賬戶BTM問題,這種方案每個(gè)dapp賬戶底層都要綁定一個(gè)錢包的用戶闽巩,可以展現(xiàn)地址用戶自己充值钧舌、直接在dapp里面充值担汤、完成任務(wù)派送這些等,但是初始化賬戶擁有BTM需要有時(shí)間過程洼冻,正常應(yīng)用這樣的體驗(yàn)崭歧,早就讓用戶關(guān)閉了。
2)UTXO問題撞牢,比原鏈?zhǔn)腔趗txo未花費(fèi)輸出交易模型率碾,當(dāng)自己的UTXO參與的交易沒有確定是無法使用的,但是dapp這里綁定的用戶屋彪,不能保證他有足夠多的UTXO所宰,除非自己轉(zhuǎn)賬的時(shí)候讓他拆分,否則會(huì)類似單線程的操作畜挥,也是比較慢仔粥。
3)用戶無法獲取自己的私鑰,在比原鏈PC錢包蟹但,是一套私鑰躯泰,派生多個(gè)賬號(hào)這樣,就是說一個(gè)錢包就一套私鑰华糖,這個(gè)不能給用戶麦向。這樣又違背了區(qū)塊鏈的去中心化的問題。
總的來說缅阳,這個(gè)方案是單純保證了dapp交易上鏈磕蛇,但是各方面明顯不足。
二十办、插件錢包(Byone)方案
這個(gè)方案是今年比原鏈推出的dapp新型的解決方案秀撇,有解決到方案一的痛點(diǎn),這個(gè)也是我比較提倡的方案向族,現(xiàn)在比原鏈的智能合約功能已經(jīng)非常強(qiáng)大呵燕,如果做復(fù)雜的dapp,用這個(gè)方式比較好件相。
簡(jiǎn)單來說就基于chrome開發(fā)了一個(gè)插件錢包再扭,安裝完插件,用戶直接可以創(chuàng)建賬戶夜矗,使用賬戶的轉(zhuǎn)賬功能泛范,里面有BTM的轉(zhuǎn)賬功能,賬戶的備份功能....是比較完整的一個(gè)錢包紊撕,這個(gè)錢包最大的作用就是包含了豐富的開發(fā)者api罢荡,可以支持開發(fā)者去實(shí)現(xiàn)智能合約交易。
我們重點(diǎn)說一下這個(gè)結(jié)構(gòu)的技術(shù)原理,如圖
1)Dapp前端区赵,就是前端頁面惭缰,插件錢包是基于chrome的,所以這里代表的就是新的頁面集成了插件錢包(Byone)的api笼才。
2)Byone漱受,就是在chrome應(yīng)用商店里面可以搜索到,點(diǎn)擊安裝就行骡送,當(dāng)前版本是2.0.0昂羡,非常好用。
3)Bufferserver服務(wù)器各谚,官方提供demo里面這模塊屬于緩存服務(wù)器紧憾,其實(shí)這個(gè)應(yīng)該改成Dapp后端,實(shí)際業(yè)務(wù)邏輯還有很多需要后端輔助昌渤,例如排行榜赴穗、非BTM比原資產(chǎn)交易等。(這塊后面重點(diǎn)開一章去說清楚)膀息,現(xiàn)在理解稱為后端就可以般眉。
4)Blockcenter,其實(shí)就是官方提供的服務(wù)潜支,直接提供接口可以觸發(fā)比原鏈的交易功能甸赃,這樣解決了上面的方案,避免需要自己搭建node節(jié)點(diǎn)冗酿,讓dapp開發(fā)者更加容易接入埠对。
總結(jié)
兩套方案里面,方案一個(gè)人認(rèn)為屬于早期的方案裁替,隨著比原鏈的發(fā)展项玛,我們可以適當(dāng)了解有助于我們理解比原鏈的架構(gòu)設(shè)計(jì),而且在方案二里面弱判,也一定要用到PC錢包襟沮,它可以協(xié)助我們開發(fā)者提高開發(fā)效率100倍,沒有夸張昌腰,是100倍开伏。
插件錢包現(xiàn)在還在推廣還有完善當(dāng)中,不過功能已經(jīng)非常成熟了遭商,所以Dapp開發(fā)者趕緊抓緊去使用來開發(fā)屬于自己的dapp吧固灵。
下一章我們重點(diǎn)說一下Dapp的開發(fā)流程。以及遇到的一些坑劫流,還有粘貼源碼巫玻。
作者:天才的飯桶