天天看點

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

什麼是以太坊

以太坊是一個分散的計算機/節點網絡; 網絡中的每個節點執行一些位元組碼(即智能合同)并将結果狀态存儲在區塊鍊中。 由于區塊鍊代表應用程式狀态的屬性,這導緻“應用程式完全按照程式設計運作,沒有任何停機,審查,欺詐或第三方幹擾的可能性”。

以太坊與比特币相似嗎?

好。 有點,但也不是真的。 相似之處在于它們都使用區塊鍊,但這就是它結束的地方。 由于以太坊不僅僅是一種數字貨币,它還提供了一個開發基于區塊鍊的應用程式的平台,這些應用程式包含智能合約,以太坊虛拟機(EVM),并使用其名為ether的貨币用于點對點合同。

什麼是智能合約

智能合約是在區塊鍊上運作的計算機代碼,其中包含一組規則,在該規則下該智能合約的各方同意彼此互動。 如果滿足預定義規則,協定将自動執行。 執行該代碼的平台為這段代碼提供了一些屬性,例如:不變性,确定性操作,分布式和可驗證狀态等。由此代碼管理的狀态存儲在區塊鍊中,不可變,任何人都可以再次檢查目前狀态是正确的,通過重放從鍊開始的所有事務。

EVM - 以太坊虛拟機

EVM(或以太坊虛拟機)是以太坊智能合約位元組碼執行環境。 網絡中的每個節點都運作EVM。 所有節點使用EVM執行所有指向智能合約的事務,是以每個節點都執行相同的計算并存儲相同的值。 此外,EVM確定程式無法通路彼此的狀态,確定通信可以在沒有任何潛在幹擾的情況下建立。

Web3&技術堆棧

衆所周知,在90年代初,網際網路(WWW)徹底改變了資訊。 從那時起,網際網路變得更加成熟和可程式設計,我們看到所謂的Web2的興起,它帶給我們社交媒體和電子商務平台,徹底改變了社互動動,使資訊,商品和服務的生産者和消費者更加接近,并讓我們在全球範圍内享受P2P互動。 但總是有一個中間人:一個平台充當A和B之間不信任或互相信任的可信中介。 盡管這些平台在建立P2P經濟方面做得非常出色,并且擁有更加複雜的内容發現層,但他們也規定了交易的所有規則,而這些平台擁有我們所有的資料。

在這種情況下,區塊鍊似乎是下一代網際網路,分散式網絡或Web3的驅動力,并引發了分散式網絡堆棧。

與建構普通網絡或移動應用程式類似,建立dApp(分散式應用程式)通常需要幾件事情:計算,檔案存儲,外部資料,貨币化和付款,如下所述。

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

Web 3.0抽象堆棧

随着我們向分散式系統的發展,這并不意味着我們将完全擺脫集中式系統。 看起來從用戶端 - 伺服器網際網路向分散網絡的過渡将是漸進的而不是激進的。 随着分散式網絡棧的不斷成熟,轉型似乎正在從集中式轉向部分分散式轉變為完全分散式轉變。

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

從集中式轉移到完全分散式應用

開發一個DApp。 如何通路以太坊。

試圖從開發人員的角度解釋以太坊。

目前用戶端伺服器webapp架構處于非常高的水準

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

目前的用戶端伺服器應用程

Web應用程式托管在托管服務提供商(如AWS,Heroku或任何其他VPS)上。 用戶端與這一個中央應用程式互動。 用戶端可以是浏覽器,小部件,curl指令或其他api消費服務。 當用戶端通過Web浏覽器向伺服器送出請求時,實作的伺服器代碼與CRUD操作的資料庫和/或緩存進行互動并為用戶端提供服務。

這就是以太坊戴普在高層的表現:

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

未來派分散式應用架構

如果觀察每個用戶端(浏覽器)與它自己的應用程式執行個體通信。 沒有所有用戶端連接配接到的中央伺服器。 這意味着,每個想要與dapp(分散式應用程式)互動的人都需要在其計算機/電話上運作的區塊鍊的完整副本等。這意味着,在您使用應用程式之前,您必須下載下傳整個區塊鍊并然後開始使用該應用程式。 這聽起來可能起初很荒謬,但它的優勢在于不依賴于明天可能會消失的單個中央伺服器。

入門

我們需要的基本工具 -

節點包管理器(npm) - NPM是Node.js包或子產品的包管理器。

TestRPC - TestRPC是一個基于Node.js的Ethereum用戶端,用于測試和開發。 它在本地運作100%,模拟完整的以太坊用戶端,但速度要快得多,非常适合測試和開發。

松露 - 松露是以太坊的開發環境,測試架構和資産管道。 基本上,它可以幫助您将合同部署到區塊鍊中,為新的合同交換舊合同(稱為遷移),并将您的前端連接配接到已部署的合同

MetaMask - MetaMask是一個以太坊輕用戶端和Chrome擴充程式,可讓使用者與區塊鍊進行互動,而無需下載下傳整個區塊鍊。 換句話說,它允許您在普通的Chrome浏覽器中與dApp進行互動

首先,我們需要安裝我們的工具。 讓我們先安裝npm,如果你沒有。 這裡是如何安裝它的說明。

一旦安裝了npm,我們就可以使用它來安裝testrpc,這是一個模仿真實以太坊節點的Node.js以太坊用戶端。

接下來我們需要安裝松露

和最後一個MetaMask Chrome插件,你可以在這裡找到。

啟動TestRPC

這将啟動用戶端并生成10個賬戶供您使用,每個賬戶有100個ETH。 你應該看到這樣的東西:

第一個清單是每個帳戶的公開位址,第二個清單是與每個帳戶關聯的私人密鑰。

安裝Metamask

現在讓我們設定MetaMask來使用我們的TestRPC作為它的網絡。 打開MetaMask并按照初始設定步驟操作。

一旦設定了MetaMask,請選擇左上角的網絡菜單。 然後選擇“Localhost 8545”作為您的網絡,如下所示。

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

接下來,通過轉到☰ - >導入帳戶,然後在啟動TestRPC時從終端中列印出的清單中複制一個私鑰來添加幾個帳戶到MetaMask。 在我的情況下,它是 - 3e1a4466eadbb368835c5d57126c73ddc251dc490dd68c412d8c0ad76ee13789。

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1
【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1
【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

如上所示,我們可以看到賬戶(作為運作testrpc之後在終端中顯示的第一個賬戶)。

我們的環境現在已經建立,我們準備好建立和部署我們的dApp。 首先建立一個新的項目目錄,并使用內建的Webpack初始化預設的Truffle dApp。 我打算打電話給我的EthereumDapp項目,但你可以随心所欲地打電話給你。

初始化松露

部署合同并運作dApp

要将您的合同部署到TestRPC,請運作以下指令:

遷移完成後,我們可以運作我們的dApp

打開http:// localhost:8080 / 在浏覽器中

您應該看到您的dApp正在運作并準備好使用! 如果您将目前的MetaMask賬戶切換到由TestRPC生成的第一個賬戶并重新整理頁面,您應該看到您的餘額為10,000 META。 您可以使用dApp界面将META發送到其他帳戶。

要在本地檢查事務,我們可以安裝etherparty explorer

安裝etherparty

因為我們已經安裝了nodejs和npm,是以隻需要安裝git。 以下是安裝它的步驟。 一旦安裝了git,打開一個終端并鍵入以下内容

這會将etherparty資料總管克隆到本地目錄資料總管。 轉到這個目錄

現在讓我們開始探索

導航到http:// localhost:8000 /。 你會看到下面的東西。

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

現在讓我們将一些Metacoin(10 Metacoin)從testrpc賬戶轉移到metamask賬戶,并在explorer中驗證事務,如下所示。 一旦我們轉移了10個Metacoins,我們可以在Etherparty Block Explorer(塊#6)中檢查交易,

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1
【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

我們也可以檢查帳戶的餘額,如下所示(帳戶2有9990 META,帳戶1有10個META)

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1
【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

要确認交易,請檢查在終端上運作testrpc和在Etherparty塊浏覽器上散列的交易。

【譯】Getting Started With Ethereum and Building Basic Dapp — Part 1

在第2部分中 ,我建立了一個簡單的公證智能合約,并展示了如何使用帶有Test RPC和Truffle的web3js庫和TestRPC部署它。

https://medium.com/@itsromiljain/getting-started-with-ethereum-and-building-basic-dapp-ebb681fb3748

繼續閱讀