研究比原鏈已經一年了,用比原鏈作了幾個dapp,並且最近還作了一個基於他們插件錢包的dapp,總結了一些遇到的坑,還有一些技術細節,接下來我會分紅三章,從dapp設計架構上,到深刻到源碼分析去幫各位介紹一下比原鏈的dapp,還有分析比原官方最近發佈的dapp的架構。前端
這個是全部工做的基礎,從看完比原鏈源碼使用過比原的錢包後,咱們就在思考比原鏈的dapp如何作,應該說是區塊鏈應用應該如何作,咱們以前嘗試過用以太坊、比特幣、超級帳本去作dapp。先總結一下區塊鏈dapp的痛點:node
1)沒辦法保證上鍊前數據的真實性;chrome
2)Tps很低;後端
3)接入成本高,須要本身搭建節點;api
我如今總結了兩個基於比原鏈的dapp架構方案:(若是有新版或者比較好的解決方案歡迎交流)瀏覽器
Dapp確定離不開復雜的業務,因此確定會用到比原鏈的智能合約,如下方案都支持智能合約。緩存
其實就是本身搭建個節點,而後應用直接調用節點提供的接口,完成了區塊鏈的業務內容,比原鏈的源碼整合了錢包功能,搭建也比較方便,幾句代碼就能夠搭建完了,可是這樣的業務視乎不大合理,由於這種後端整合比原源碼錢包(如下稱爲「pc錢包」)的方式,至關於把全部的帳戶信息都託管給dapp,其實就是一個集中的官方的錢包,全部的帳戶都歸官方管,這樣會有中心化問題,最後會被懷疑用不用這個區塊鏈是否有必要。服務器
比原鏈本身有一套用戶的模塊,用戶可使用pc錢包、客戶端錢包、手機錢包等,本身的用戶信息能夠本身備份,交易信息所有公開所有能夠到區塊鏈瀏覽器裏面查到。這個方案只是主要實現了交易上鍊。架構
ps: 固然其實仍是能夠變通一下,就是說把PC錢包的全部接口在dapp實現一次,而後結合業務,可是比原的源碼是會不斷更新,還要隨着它的版本更新,而後更新本身的應用,顯然不實際。app
說一下里面的坑:
1)帳戶BTM問題,這種方案每一個dapp帳戶底層都要綁定一個錢包的用戶,能夠展示地址用戶本身充值、直接在dapp裏面充值、完成任務派送這些等,可是初始化帳戶擁有BTM須要有時間過程,正常應用這樣的體驗,早就讓用戶關閉了。
2)UTXO問題,比原鏈是基於utxo未花費輸出交易模型,當本身的UTXO參與的交易沒有肯定是沒法使用的,可是dapp這裏綁定的用戶,不能保證他有足夠多的UTXO,除非本身轉帳的時候讓他拆分,不然會相似單線程的操做,也是比較慢。
3)用戶沒法獲取本身的私鑰,在比原鏈PC錢包,是一套私鑰,派生多個帳號這樣,就是說一個錢包就一套私鑰,這個不能給用戶。這樣又違背了區塊鏈的去中心化的問題。
總的來講,這個方案是單純保證了dapp交易上鍊,可是各方面明顯不足。
這個方案是今年比原鏈推出的dapp新型的解決方案,有解決到方案一的痛點,這個也是我比較提倡的方案,如今比原鏈的智能合約功能已經很是強大,若是作複雜的dapp,用這個方式比較好。
簡單來講就基於chrome開發了一個插件錢包,安裝完插件,用戶直接能夠建立帳戶,使用帳戶的轉帳功能,裏面有BTM的轉帳功能,帳戶的備份功能....是比較完整的一個錢包,這個錢包最大的做用就是包含了豐富的開發者api,能夠支持開發者去實現智能合約交易。
咱們重點說一下這個結構的技術原理,如圖
1)Dapp前端,就是前端頁面,插件錢包是基於chrome的,因此這裏表明的就是新的頁面集成了插件錢包(Byone)的api。
2)Byone,就是在chrome應用商店裏面能夠搜索到,點擊安裝就行,當前版本是2.0.0,很是好用。
3)Bufferserver服務器,官方提供demo裏面這模塊屬於緩存服務器,其實這個應該改爲Dapp後端,實際業務邏輯還有不少須要後端輔助,例如排行榜、非BTM比原資產交易等。(這塊後面重點開一章去說清楚),如今理解稱爲後端就能夠。
4)Blockcenter,其實就是官方提供的服務,直接提供接口能夠觸發比原鏈的交易功能,這樣解決了上面的方案,避免須要本身搭建node節點,讓dapp開發者更加容易接入。
兩套方案裏面,方案一我的認爲屬於早期的方案,隨着比原鏈的發展,咱們能夠適當瞭解有助於咱們理解比原鏈的架構設計,並且在方案二里面,也必定要用到PC錢包,它能夠協助咱們開發者提升開發效率100倍,沒有誇張,是100倍。
插件錢包如今還在推廣還有完善當中,不過功能已經很是成熟了,因此Dapp開發者趕忙抓緊去使用來開發屬於本身的dapp吧。
下一章咱們重點說一下Dapp的開發流程。以及遇到的一些坑,還有粘貼源碼。
做者:天才的飯桶