市場智能合約
我是區塊鍊和智能合約技術的新手。
我想了解去中心化市場如何運作的整體流程。假設我們有一個使用智能合約建構的去中心化市場,用於列表創建、託管等。問題:
- 我假設所有列表都儲存在乙太坊區塊鏈上。如果是這樣,這是否意味著任何想要查看列表(客戶端)的人都需要在機器上執行乙太坊客戶端?有沒有辦法不在機器上執行乙太坊客戶端並能夠瀏覽列表?
- 在區塊鏈上建構去中心化市場與 P2P 方法有什麼區別?
一種方法是直接使用區塊鏈。這些市場將產品列表資訊直接放入區塊鏈,允許買家參考區塊鏈並從那裡購買。另一種方法是創建一個節點網路,所有節點都直接相互通信,不引用區塊鏈,類似於 BitTorrent。來源文章
- 使用智能合約實現去中心化市場,是區塊鏈方式還是P2P方式?
- 使用 P2P 方法,這是否意味著您依賴網路來執行節點並保持系統正常執行?或者任何執行乙太坊節點的人都可以做同樣的事情?
- 如果列表數據分散儲存在區塊鏈上,如何實現“搜尋”?我看到 Augur 和 OpenBazzar 有搜尋功能。他們是如何做到這一點的?
- 如果我建構用於與智能合約互動的 API,這是否意味著我的 API 不是去中心化的,因為它將託管在 AWS 或 Azure 等伺服器上?這個 API 會與我們自己託管的節點之一對話嗎?
- Web 客戶端如何與市場互動?Web 客戶端發出 API 請求,然後 API 與我託管的節點上的智能合約互動?
任何幫助是極大的讚賞!
試一試:
- 如果您不是特別對客戶端進行身份驗證而只是想查看數據,那麼您的乙太坊客戶端可能位於網站後端系統上 - 這樣您就可以在本地瀏覽網頁(實際上,您可以對您的網站也是)
- 如果你通過 P2P 協議共享市場數據,很快你就會需要一個交易系統,這樣你就可以在你的節點之間建立一致性(參見 CAP 定理),並就發生的事情/誰有尚未出售的東西達成共識賣了等等。那時你還不如只使用區塊鏈。
- 當今的智能合約需要在其上執行的區塊鏈。大多數區塊鏈在底層使用 P2P 協議。
- P2P 和乙太坊需要網路連接。但是所有這些協議都非常耐輟學/離線。如果您長時間離線,他們將需要一些時間來趕上您,然後您才能再次完全參與。
- 您可以在每次搜尋時解析整個區塊鏈(慢),或者有一些特殊節點的工作是不斷解析鏈並挑選出感興趣的交易(並且可能也進行一些驗證),這些節點可以執行本地搜尋他們削減的交易清單。
- 您的智能合約本身可以被視為一個 API(“這是與我互動的一組規則”)。或者,您可以在其他人的界面之上設計一個 API 層,對其進行擴展,為您提供一些區塊鏈功能,並將其發布給第 3 方以添加到他們的系統中。您的 API 可能會與至少一個區塊鏈節點進行互動(通過智能合約,或通過解析鏈數據)來完成有趣的部分
- 是的,Web 客戶端可以與您或其他人託管的功能的 API 對話,該 API 知道如何與區塊鏈智能合約進行互動。或者他們可以直接進入智能合約(取決於合適的身份系統等)。
你在問“區塊鍊是如何工作的?” 不問“區塊鍊是如何工作的?” 要回答您的問題,需要了解有關乙太坊如何運作的文字課程。很明顯,您沒有花時間了解區塊鍊或網路設計的基礎知識。如果您真的想了解或開發區塊鏈,我強烈建議您在提出任何問題之前習慣閱讀所有文件。這仍然是一項新技術。從白紙和黃紙開始,如果您真的關心這一點,請閱讀他們網站上的所有文件。我只是回答這個問題,因為我正在寫一篇關於創建 100% 基於乙太坊的市場的文章,並且可以複製和粘貼大部分資訊,我會標記為低質量,我不經常這樣做。
你試過什麼?您已經閱讀了哪些資源?你問這個問題的背景是什麼?你想獲得什麼資訊?
我仍然建議閱讀所有官方的乙太坊文件,考慮人們花了多少時間將它們放在一起,並在提出模糊問題之前進行反思。
你的答案,先生/女士/Zer/Zim/非二進制/星體/動物學/或流體性別的人類成員:
- 對於您的問題,請將乙太坊網路視為任何程序的後端軟體(在本例中為 DApp)。這個後端是由節點驅動的乙太坊虛擬機(EVM);他們負責確保通過 EVM 傳遞的數據是有效的,但您不需要使用網路。使用者使用軟體客戶端與 EVM 上的程式碼進行互動,這些軟體客戶端使用 Web3.js 等程式碼庫與區塊鏈“對話”。這就像進行 API 呼叫,但有一些不同之處。查看 MetaMask 作為乙太坊客戶端的一個很好的例子。
- 去中心化市場是 P2P 市場,但 P2P 市場不一定是去中心化市場。不同之處在於,一般 P2P 市場可以使用任何想要完成最終結果的軟體堆棧。只要客戶端軟體可以與軟體的其他實例進行數據通信,並且沒有中間人(對等方直接相互互動),您就擁有了一個 P2P 網路。
去中心化的區塊鏈市場有特定的要求。市場內任何類型的變化(添加產品、接受付款、添加管理員、添加使用者帳戶、價格變化、庫存檢查等)都需要智能合約來處理該過程。智能合約呼叫類似於 API 呼叫,有一個主要區別:為了激勵節點獲取您發送的數據,執行數據密集型計算以驗證它,並將其添加到區塊鏈中,所有合約呼叫都有相關的 gas 費用( ETH 數量)。汽油費越高,節點包含該交易的激勵就越大,因為費用會流向他們。使用者可以更改此汽油費(增加以使其更有利可圖,或者如果時間不受限制,則減少)。通過要求每個行動都花費具有現實價值的資產,
各有利弊。例如,100% 的乙太坊區塊鏈可以使用任何 ERC-20 代幣作為支付方式。由於網路的規模和所使用的共識算法,數據是安全的。如果市場是 Web 應用程序或桌面客戶端,黑客不能簡單地發現乙太坊網路本身的漏洞並製造麻煩。這個好處也是主要缺點,每一個動作都需要付費。如果 ETH 價格昂貴(撰寫本文時為 1200 美元),並且合約密集且需要大量 gas,那麼事情可能會變得昂貴。
例如,現在一個簡單的電話只是告訴 EVM 我授權智能合約在被動收入 DApp 中使用我的資產 $ 12 worth of ETH to accomplish in less than 10 minutes. Once that’s done, I’ll need to make an even more complex call to a contract that allocates my funds, this will likely be close to $ 50 如果我想快速完成。
- 它是區塊鏈,兩者兼而有之。智能合約是 EVM 的程式碼,就像 Java 或 C# 或任何其他語言是任何 P2P 網路的程式碼一樣。區塊鏈本身只不過是一個大型分佈式網路,其目的是執行加密共識算法。根據定義,區塊鍊是 P2P,沒有“幕後”。這是一個由數以萬計互不相識的人組成的網路,分佈在世界各地,所有人都執行相同的軟體以保持相同的網路執行,以便數據可以被編譯並不可逆轉地、公開地和永久地添加到網路。
根據設計,該網路還可以用作其上發生的每筆交易的分類賬。
- P2P 是如此廣泛,它可以通過任何技術堆棧來實現。您不需要節點。你可以擁有一個伺服器,製作一個連接使用者的網路應用程序,然後像普通網站一樣執行它,它仍然是 P2P。您可以使用特定協議創建在特定埠上執行的客戶端,以允許使用者執行 P2P 操作。保持系統執行,無論是乙太坊(節點)還是網路應用程序(網際網路),都取決於它所建構的任何系統。乙太坊只是一個像網際網路一樣的網路,它使用不同的共識方法來驗證數據。
- 區塊鍊是公開的。每當數據被節點驗證時,它就會被添加到塊中。除非您正在執行一個節點並且可以在控制台中輸入查詢,否則您需要一個客戶端應用程序或 UI。節點操作員可以從他們的電腦中獲取原始數據。大多數使用者需要使用可以與區塊鏈互動的程式碼庫設計的網站或程序。**同樣,區塊鏈只是一個網路。**任何類型的搜尋引擎都需要三樣東西:使用者界面中的搜尋功能(如框或過濾器)、原始數據源(如網路後端或區塊鏈)以及連接兩者的程式碼庫(API 或在區塊鏈的情況下,ABI)。
- 智能合約是 API(實際上是 ABI)。它是分散的。人們用來與契約互動的軟體不是。除非您正在執行區塊鏈,否則您永遠不會直接與節點對話。為了在區塊鏈上搜尋數據,它必須在過去的某個時間點被節點驗證過。**當您呼叫智能合約時,它會與整個網路對話。**節點在幕後工作,它們驗證數據。
當然,從技術上講,你可以製定一個協議來找到特定的 ETH 節點,檢查它正在組合的交易以包含在一個塊中,然後查看它。它不僅對你沒有任何好處,因為它甚至可能不是解決區塊的節點,因此它正在努力包含在一個區塊中的所有交易都保持未決或已被另一個節點驗證,但這是一個需要教科書的一章完全理解。
- 它使用程式碼庫,就像所有其他軟體一樣,無需重新發明輪子即可實現目標。Web3.js 是一個通用庫,旨在將區塊鏈中的編譯器程式碼解釋為人類可讀和互動式用途。