比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

DAPP:Dapp后端架構 安全性和設計模式

Author:

Time:1900/1/1 0:00:00

去中心化應用程序(DApps)需要特殊的系統設計,以實現高安全性和可靠性。

在本文中,我將以以太坊為主要示例,介紹如何為去中心化應用程序正確設計、實現后端和智能合約的幾個主要原則,盡管其中大部分將適用于Eos、Tron和其他去中心化數據平臺。

文章重點:

如何在不考慮安全性的情況下將私鑰存儲在后端

如何正確設計智能合約以及“去中心化”的內容

分散式和半分散式應用程序架構示例

如何處理網絡負載和故障等底層問題

讓我們開始吧!

盡管如今區塊鏈面臨著許多采用和監管方面的困難,但無論采用哪種算法,無論區塊鏈,哈希圖,速度還是其他任何分布式賬本技術,它都是一種永存的技術。

區塊鏈和其他類似技術帶來的主要價值可以概括如下:它們使人們能夠編寫和運行程序,這些程序實際上在創建后就不能更改,在執行過程中也不能篡改。換句話說,這些程序始終按設計運行,并且任何一方都不能影響其行為。如果我們將它們視為定義如何來回轉移硬幣的程序,則此定義對當今存在的許多加密貨幣均有效。這也解釋了為什么加密貨幣和多種令牌具有真正的價值:它們不能通過定義的“底層程序”憑空產生。

與比特幣相反,以太坊/ EOS / Tron /…平臺實現了一個更復雜的程序層,該層又實現了執行環境,允許任何人在平臺之上編寫自己的去中心化程序。用戶定義的程序始終按設計運行,沒有任何異常,并且平臺保證了其安全性。

這些在分散式網絡上運行的安全且不可更改的程序與傳統的前端和后端技術相結合,今天被稱為分散式應用程序(DApps)。通過其中的一些可以半集中,真正去中心化的應用程序中的大部分活動應該發生在中央的控制之下。

如果有人要求我繪制DApps今天的工作方式,我可能會繪制此圖

Dapper Labs因涉嫌將NFT作為未注冊證券出售而遭起訴:NBA Top Shot開發商Dapper Labs因涉嫌將NFT作為未注冊證券出售而遭到起訴。根據5月12日在紐約最高法院提交的文件,這些指控是基于首席原告Jeeun Friel的“個人了解”。文件聲稱“NBA最佳射門時刻”是證券,因為它們的價值隨著項目的成功而增加。原告稱,Dapper Labs因此應在美國證券交易委員會注冊,但Dapper Labs沒有這樣做。據稱該公司還利用對NBA Top Shot的控制來防止投資者提取資金“長達數月”,以確保資金留在平臺上以“支撐”其價值。Dapper Labs有30天的時間來回應傳票。據悉,NBA Top Shot是一個基于區塊鏈的數字收藏品平臺,允許用戶以NFT的形式購買、出售和交易視頻片段。其需求在2021年激增,Dapper在4月的一輪融資中的估值達75億美元。(coindesk)[2021/5/14 22:04:22]

想象一下我們今天所說的去中心化應用程序,以_YouTube_或_Instagram_之類的任何現有集中式Web資源為例,并想象將您的“加密身份”綁定到Web /移動資源,而不是受密碼保護的集中式帳戶。

這就是電子錢包軟件為您提供的。此身份的私鑰(秘密,您可以代表此身份進行操作)存儲在本地設備上,并且永遠不會在線,因此沒有人可以控制此身份。有了這個身份,你可以在兩個執行不同的操作集中 和(由中央管理機構控制網絡資源)分散(這是從傳統的WWW不同的網絡,目標,其中是消除中央機關)網絡,將網站用作訪問點和/或圖形用戶界面。這種“密碼身份”的全部意義在于,您的操作是通過密碼保護的,沒有人能夠更改您簽名的內容或簽名。

如今,容錯分散網絡(如以太坊,EOS或Tron)的計算和存儲能力受到限制。如果它們是可擴展的,我們可以使用分散的網絡來存儲整個分散的應用程序,包括其圖形用戶界面,數據和業務邏輯。在這種情況下,我們將這些應用程序稱為真正的分散/分布式應用程序。

但是,由于這些網絡目前無法擴展,因此我們結合了不同的方法來為我們的應用程序實現最大的分散級別。我們知道,“傳統”后端沒有任何發展。

DappReview牛鳳軒:流動性挖礦幫助許多協議實現冷啟動:在新一期魚池直播間DeFi專場中,DappReview創始人牛鳳軒認為,流動性挖礦幫助許多協議較好的實現了冷啟動,為真正有使用需求的人提供了流動性。流動性供給方獲得代幣獎勵,需求方獲得更優惠的資產價格。DeFi具有較強的靈活性,一些項目可以提供更好的流動性,也實現了較好的可操作性。DeFi利率一遍情況來看比CeFi要低,許多情況可以實現幾乎零成本的借貸。但DeFi易受網絡交易速度影響,用戶需要比較熟練的操作錢包和去中心化應用,并不斷的去跟進市場,查看抵押資產情況。[2020/8/21]

例如:

我們使用后端來托管分散應用程序的前端。

我們使用后端與任何其他現有技術和服務進行集成。真正的世界一流的應用程序不能生活在孤立的環境中。

我們使用后端存儲和處理足以分散網絡(尤其是區塊鏈)的任何事物。實際上,整個應用程序及其業務邏輯存儲在世界的某個地方,僅不包括區塊鏈部分。更不用說,IPFS和類似的存儲層不能保證文件的可訪問性,因此我們也不能依靠它們而不自己托管文件。換句話說,始終需要專用的運行服務器。

到目前為止,如果不使用可靠的后端,就無法構建安全且部分分散的應用程序,本文的重點是解釋如何正確地做到這一點。

碰巧的是,當今幾乎所有分散式應用程序都是圍繞所謂的令牌構建的,令牌是驅動特定分散式應用程序的定制(或只是簡單克隆)的加密貨幣。令牌僅僅是一種可編程的貨幣或資產,僅此而已。

令牌智能合約決定了用戶如何傳輸令牌,而應用程序智能合約可以擴展令牌智能合約中缺少的所有內容。兩種智能合約都運行在去中心化網絡之上通常,令牌是寫在像以太坊這樣的去中心化平臺之上的“智能合約”。通過擁有一些令牌,您基本上可以在Web資源或移動應用程序上獲得不同的服務,并將該令牌換成其他東西。這里的關鍵點是令牌本身是存在的,并且不受中央機構的控制。

JUST近七天交易額增長8740% 位列金融類DApp增速第一:據DappReview網站最新數據顯示,基于波場的穩定幣借貸平臺JUST近七天交易額增長8740%,位列金融類DApp增速第一。JUST是在波場TRON上運行的第一個DeFi項目,旨在打造基于波場TRON的穩定幣借貸平臺,同時也是數字交易平臺、交易量曾登頂全球Top3的Poloniex LaunchBase首期上線項目。JUST是一個雙代幣系統。第一個代幣USDJ是按1:1的匯率與美元掛鉤的穩定幣,是通過JUST的CDP門戶抵押TRX產生的。第二個代幣JST,可用于支付利息,平臺維護,通過投票參與治理以及JUST平臺上的其他活動。[2020/5/18]

有許多圍繞令牌構建的應用程序示例:從諸如CryptoKitties(ERC721令牌)之類的眾多可收藏游戲到諸如LOOM Network等面向服務的應用程序,甚至是諸如Brave之類的瀏覽器以及諸如DreamTeam(與ERC20兼容的令牌)之類的游戲平臺。開發人員自己確定并決定他們將(或不會)對其應用程序進行多少控制。他們可以在智能合約的基礎上構建整個應用程序的業務邏輯(就像CryptoKitties所做的那樣),或者,他們根本不使用智能合約,將服務器上的所有內容集中在一起。但是,最好的方法是居中。

從技術角度來看,必須有一個將令牌和其他智能合約與Web /移動應用程序連接的橋梁。

在當今的完全去中心化的應用程序中,客戶端直接與智能合約進行交互,此橋被縮小為公共API或Infura之類的節點池的JSON RPC API功能,由于并非每個設備都可以運行并支持其單獨的網絡節點。但是,此API僅提供了一組基本且非常狹窄的功能,這些功能僅允許進行簡單查詢或有效地聚合數據。因此,最終會引入自定義后端,從而使應用程序成為半集中式。

與分散網絡的整個交互可以縮小到一兩個點,具體取決于應用程序的需求:

偵聽網絡事件(例如令牌傳輸)?/讀取網絡狀態。

發布交易(調用狀態更改智能合約功能,如令牌轉移)。

動態 | 本月初以來僅43款DApp新增用戶超過1000:據RatingDapp和RatingToken大數據監測顯示,ETH、EOS和Tron三個公鏈基礎平臺上共有43款DApp本月新增用戶超過1000,其中新增用戶排名前三的DApp分別為Lore Free(50517)、Fishing Master(33646)和TRON Hi-Lo(33577)。從活躍用戶指標看,月活躍用戶排前三的DApp分別為HASH BABY(92738)、Fishing Master(71460)和TRON Hi-Lo(71113)。[2019/4/15]

這兩個方面的實現都非常棘手,特別是如果我們要構建一個安全可靠的后端解決方案時。以下是我們要分解的要點:

首先,在以太坊中,事件檢索不是開箱即用的。由于多種原因:網絡節點在提取大量事件時可能會失敗,事件可能會由于網絡派生而消失或發生更改等。我們必須構建一個抽象層,以同步網絡中的事件并確保其可靠傳遞。

與交易發布相同,我們必須抽象以太坊的低端內容,例如隨機數計數器和天然氣估算值,以及交易重新發布,以提供可靠且穩定的界面。此外,事務發布意味著使用私鑰,這需要高級后端安全性。

安全。我們將認真對待它,并面對無法保證私鑰在后端永遠不會受到損害的問題。幸運的是,有一種設計去中心化應用程序的方法,甚至不需要高度保護后端帳戶。

在我們的實踐中,所有這些使我們為以太坊創建了一個強大的后端解決方案,我們將其命名為Ethereum Gateway。它從以太坊的樂趣中抽象出了其他微服務,并提供了一個可靠的API來使用它。

以太坊的后端監控。監控器演示的活動主要與我們的循環計費功能有關(盡管您可以看到每小時都有峰值)。

這部分高度依賴于特定的去中心化應用程序的需求,我們將嘗試在構建這些應用程序的基礎上梳理一些基本的交互模式(D平臺=去中心化平臺=以太坊/ EOS / Tron / Whatever):

聲音 | 道特:dapp能夠對線下實體產業產生應用價值的時候,那就是真正的落地:在針對關于dApp還應該獲得哪些突破發展的問題,銳馳資本創始人道特表示,“真正的落地其實是一個相對問題。對于有dapp應用之前,目前的狀態也算是真正的落地。以現在的狀態作為參考系的話,dapp能夠真正對線下實體產業產生應用價值的時候,那應該就是真正的落地。借用微信大會的“未來城”概念,dapp現在也是一座未來城,亟需更多的建設者,開荒牛們,加入到這個生態中來,這樣量變帶來質變,自然也會帶來更大的改變。”(火星財經)[2019/1/12]

客戶?平臺:完全分散的應用程序。

客戶端(瀏覽器或移動應用程序)在以太坊“錢包”軟件(如Metamask,Trust)或硬件錢包(如Trezor或Ledger)的幫助下,直接與分散平臺進行對話。以這種方式構建DApp的示例包括CryptoKitties,Loom的 Delegated Call,加密錢包本身(Metamask,Trust,Tron Wallet等),分散式加密交易所(如Etherdelta)等。

D平臺?客戶?后端?D平臺:集中式或半集中式應用程序。

客戶端與分散平臺和服務器的交互幾乎沒有共同點。一個很好的例子是當今的任何(集中式)加密貨幣交易所,例如BitFinex或Poloniex:您在交易所交易的貨幣只記錄在傳統數據庫中。您可以通過將資產發送到特定地址(“平臺?客戶端”)來“充值”數據庫余額,然后在應用程序中執行某些操作后(后臺?D平臺)撤回資產,但是,您所做的一切都取決于“應用程序”本身(客戶端?后端)并不意味著您與D平臺直接交互。

另一個示例是Etherscan.io,它使用半集中式方法:您可以在其中執行所有有用的去中心化操作,但是沒有它們的綜合后端,應用程序本身就沒有任何意義(Etherscan持續同步事務,解析數據并存儲它,最終提供全面的API / UI)。

介于兩者之間的內容:靜止,?集中式或半集中式應用程序。

結合以上方法。例如,我們可以有一個應用程序,該應用程序提供各種服務以換取加密,從而使您可以使用加密身份登錄并簽名信息。

希望完全分散的應用程序(客戶端Client平臺)的交互模式不會引起任何問題。依靠Infura或Trongrid等令人贊嘆的服務,您可以簡單地構建根本不需要服務器的應用程序。像幾乎所有的客戶端庫Ethers.js為復仇或特隆的Web為特隆可以連接到這些公共服務和與網絡進行通信。但是,對于更復雜的查詢和任務,您可能仍然需要分配自己的服務器。

其余涉及后端的交互模式使事情變得更加有趣和復雜。為了將所有這些圖景化,讓我們想象一下后端對網絡中的某些事件做出反應的情況。例如,用戶發布了一項配額交易,該交易允許我們向他們收取費用。要收取費用,我們必須針對發出的配額事件發布費用交易:

分散網絡中服務器對用戶操作的反應的示例流程從后端的角度來看,會發生以下情況:

我們通過不斷輪詢網絡來監聽特定的網絡事件。

收到事件后,我們將執行一些業務邏輯,然后決定發布一個事務作為響應。

在發布交易之前,我們要確保將有可能被開采(在以太坊中,成功的交易氣體估計意味著沒有相對于當前網絡狀態的錯誤)。但是,我們不能保證交易將被成功開采。

使用私鑰,我們簽署并發布交易。在以太坊中,我們還必須確定交易的天然氣價格和天然氣限額。

發布交易后,我們會連續輪詢網絡以了解其狀態。

如果花費的時間太長而我們無法獲得交易的狀態,則必須重新發布它或觸發“失敗情況”。交易可能由于各種原因而丟失:網絡擁塞,對等體掉落,網絡負載增加等。在以太坊中,您還可以考慮以不同的(實際)汽油價格重新簽署交易。

在我們最終確定交易事項之后,如果需要,我們可以執行更多的業務邏輯。例如,我們可以通知其他后端服務有關交易已完成的事實。另外,考慮在做出有關交易的最終決定之前等待幾次確認:網絡是分布式的,因此結果可能會在幾秒鐘內發生變化。

如您所見,發生了很多事情!但是,您的應用程序可能不需要其中的某些步驟,具體取決于您要實現的目標。但是,構建強大而穩定的后端需要解決上述所有問題。讓我們分解一下。

在這里,我想強調一些出現大多數問題的要點,即:

偵聽網絡事件并從網絡讀取數據

發布交易以及如何安全地進行交易

在以太坊以及其他去中心化網絡中,智能合約事件(或事件日志,或僅是日志)的概念使鏈外應用程序可以了解區塊鏈中正在發生的事情。這些事件可由智能合約開發人員在智能合約代碼的任何位置創建。

例如,在眾所周知的ERC20令牌標準中,每個令牌轉移都必須記錄Transfer事件,從而使鏈下應用程序知道發生了令牌轉移。通過“監聽”這些事件,我們可以執行任何(重新)操作。例如,當令牌轉移到您的地址時,某些移動加密錢包會向您發送推送/電子郵件通知。

實際上,沒有可靠的解決方案可以開箱即用地監聽網絡事件。不同的庫允許您跟蹤/偵聽事件,但是,在許多情況下,某些事情可能出錯,從而導致事件丟失或未處理。為了避免丟失事件,我們必須構建一個自定義后端,該后端將維護事件同步過程。

根據您的需求,實現方式可能會有所不同。但是在這里給你一個圖片是如何根據微服務架構構建可靠的以太坊事件交付的選項之一:

將以太坊事件可靠地傳遞給所有后端服務這些組件以以下方式工作:

事件同步后端服務不斷輪詢網絡,以嘗試檢索新事件。一旦有一些新事件可用,它將把這些事件發送到消息總線。將事件成功提交到消息總線后,就區塊鏈而言,我們可以保存上一個事件的塊,以便下次從該塊中請求新事件。請記住,一次檢索太多事件可能會導致請求始終失敗,因此您必須限制從網絡請求的事件/塊的數量。

消息總線(例如Rabbit MQ)將事件路由到為每個后端服務分別設置的每個隊列。在事件發布之前,事件同步后端服務指定路由密鑰(例如,智能合約地址+事件主題),而使用者(其他后端服務)創建僅訂閱特定事件的隊列。

結果,每個后端服務僅獲取所需的那些事件。此外,消息總線可確保將所有事件發布到事件總線后再進行傳遞。

當然,您可以使用其他方式代替消息總線:HTTP回調,套接字等。在這種情況下,您需要弄清楚如何確保自己提供回調:管理指數/自定義回調重試,實現自定義監視。

為了將事務發布到分散網絡,我們必須執行幾個步驟:

準備交易。與交易數據一起,此步驟意味著請求網絡狀態,以查明此交易是否有效并且是否將要開采(以太坊中的gas估計)和交易的序號(以太坊中的nonce)。一些庫試圖在后臺進行此操作,但是,這些步驟很重要。

簽署交易。此步驟暗示私鑰的使用。最有可能的是,您將在此處嵌入自定義私鑰組裝解決方案。

發布和重新發布事務。這里的關鍵點之一是,您已發布的交易始終有機會從分散的網絡中丟失或丟失。例如,在以太坊中,如果網絡的天然氣價格突然上漲,則已發布的交易可能會被丟棄。在這種情況下,您必須重新發布事務。此外,您可能希望重新發布具有其他參數的交易(至少在汽油價格較高的情況下),以便盡快進行交易。因此,如果替換交易之前未進行預簽名(使用不同的參數),則重新發布該交易可能意味著對其重新簽名。

以上有關以太坊交易發布的要點可視化通過使用上述方法,您可以最終構建類似于以下序列圖中所示內容的內容。

在這個特定的序列圖上,我將演示(大體上!)區塊鏈循環計費的工作原理:

用戶執行智能合約中的功能,該功能最終允許后端執行成功的費用交易。

負責特定任務的后端服務偵聽收費限額事件并發布收費交易。

一旦挖掘到收費交易,負責特定任務的后端服務就會從以太坊網絡接收事件,并執行一些邏輯(包括設置下一個收費日期)。

區塊鏈循環計費工作原理的一般序列圖,展示了后端服務與以太坊網絡之間的交互后端安全和智能合約。

事務發布始終涉及使用私鑰。您可能想知道是否可以保護私鑰安全。有許多的、復雜的策略和不同類型的軟件這樣可以非常安全地將私鑰存儲在后端。一些私鑰存儲解決方案使用地理分布的數據庫,而另一些甚至建議使用特殊的硬件。但是,在任何情況下,半集中式應用程序最容易受到攻擊的地方是私鑰被組裝并用于簽署交易的地方(或者在使用特殊硬件的情況下,觸發交易簽署過程的地點)。因此,從理論上講,沒有100%可靠的解決方案可以使防彈保護免受損害存儲的私鑰。

Tags:DAPPAPPDAP以太坊區塊鏈dapp開發合法嗎數字人幣appDaps Coin以太坊幣今日價格行情非小號

芝麻開門交易所
DOT:波卡平行鏈競拍將至 DOT/KSM持有者必須關注四個方面

隨著Rococo V1測試網接入平行鏈數量增加,平行鏈運行逐步穩定,波卡平行鏈競拍的腳步也越來越近.

1900/1/1 0:00:00
GAS:以太坊2.0到來之前 DeFi用戶可以降低Gas費的四種方式

DeFi的火爆給以太坊網絡帶來了巨大壓力,以太坊上托管著大多數Dapp。隨著DeFi活動的增加,用戶不得不向礦工支付越來越高的交易Gas費。這對于使用去中心化應用程序的普通用戶來說是不經濟的.

1900/1/1 0:00:00
加密貨幣:加密貨幣項目價值判斷及行騙套路

加密貨幣起伏巨大,既有數千倍的巨額漲幅,也有跌幅達到99%的“歸零幣”。即使在牛市,虧錢的人也大有人在。因此哪些加密貨幣值得投資,是所有投資者共同關心的問題,在投資時也需要做到心中有數.

1900/1/1 0:00:00
區塊鏈:晚間必讀5篇 | 波卡平行鏈競拍將至 必須關注四個方面

1.何時才能發揮整公鏈系統實用價值?一條真正具有價值的公鏈,除了可以用來發幣之外,還應當有去中心化應用和智能合約存在.

1900/1/1 0:00:00
ETH:為什么通用AMM模型不適用于期權交易定價?

1. 期權定價取決于各種因素(如到期時間和隱含波動率等),在大多數情況下,它們往往為零(指未行權或行權價不合條件).

1900/1/1 0:00:00
數字貨幣:美聯儲主席鮑威爾重申將維持寬松貨幣政策 講話后美股下行 國債收益率上升

美國聯邦儲備委員會主席鮑威爾(Jerome Powell)在今日對美國經濟前景改善及其對勞動力市場,債券收益率和央行政策的影響作出公開講話.

1900/1/1 0:00:00
ads