天天看點

Bytom Dapp 開發筆記(一):架構設計

簡介

研究比原鍊已經一年了,用比原鍊做了幾個dapp,而且最近還做了一個基于他們插件錢包的dapp,總結了一些遇到的坑,還有一些技術細節,接下來我會分成三章,從dapp設計架構上,到深入到源碼分析去幫各位介紹一下比原鍊的dapp,還有分析比原官方最近釋出的dapp的架構。

Dapp架構設計

這個是所有工作的基礎,從看完比原鍊源碼使用過比原的錢包後,我們就在思考比原鍊的dapp如何做,應該說是區塊鍊應用應該如何做,我們之前嘗試過用以太坊、比特币、超級賬本去做dapp。先總結一下區塊鍊dapp的痛點:

1)沒辦法保證上鍊前資料的真實性;

2)Tps很低;

3)接入成本高,需要自己搭建節點;

Dapp架構方案

我現在總結了兩個基于比原鍊的dapp架構方案:(如果有新版或者比較好的解決方案歡迎交流)

Dapp肯定離不開複雜的業務,是以肯定會用到比原鍊的智能合約,以下方案都支援智能合約。

一、搭建區塊鍊node

其實就是自己搭建個節點,然後應用直接調用節點提供的接口,完成了區塊鍊的業務内容,比原鍊的源碼整合了錢包功能,搭建也比較友善,幾句代碼就可以搭建完了,但是這樣的業務視乎不大合理,因為這種後端整合比原源碼錢包(以下稱為“pc錢包”)的方式,相當于把所有的賬戶資訊都托管給dapp,其實就是一個集中的官方的錢包,所有的賬戶都歸官方管,這樣會有中心化問題,最後會被懷疑用不用這個區塊鍊是否有必要。

比原鍊自己有一套使用者的子產品,使用者可以使用pc錢包、用戶端錢包、手機錢包等,自己的使用者資訊可以自己備份,交易資訊全部公開全部可以到區塊鍊浏覽器裡面查到。這個方案隻是主要實作了交易上鍊。

ps: 當然其實還是可以變通一下,就是說把PC錢包的所有接口在dapp實作一次,然後結合業務,但是比原的源碼是會不斷更新,還要随着它的版本更新,然後更新自己的應用,顯然不實際。

說一下裡面的坑:

1)賬戶BTM問題,這種方案每個dapp賬戶底層都要綁定一個錢包的使用者,可以展現位址使用者自己充值、直接在dapp裡面充值、完成任務派送這些等,但是初始化賬戶擁有BTM需要有時間過程,正常應用這樣的體驗,早就讓使用者關閉了。

2)UTXO問題,比原鍊是基于utxo未花費輸出交易模型,當自己的UTXO參與的交易沒有确定是無法使用的,但是dapp這裡綁定的使用者,不能保證他有足夠多的UTXO,除非自己轉賬的時候讓他拆分,否則會類似單線程的操作,也是比較慢。

3)使用者無法擷取自己的私鑰,在比原鍊PC錢包,是一套私鑰,派生多個賬号這樣,就是說一個錢包就一套私鑰,這個不能給使用者。這樣又違背了區塊鍊的去中心化的問題。

總的來說,這個方案是單純保證了dapp交易上鍊,但是各方面明顯不足。

二、插件錢包(Byone)方案

這個方案是今年比原鍊推出的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的開發流程。以及遇到的一些坑,還有粘貼源碼。

作者:天才的飯桶

繼續閱讀