以太坊構建DApps系列教程(一):應用程序規則和區塊鏈設置

這將是一個如何使用以太坊區塊鏈構建去中心化應用程序DApps的系列教程。

第一篇教程重點介紹應用程序的規則和功能以及設置私有區塊鏈,展示在使用或不使用DAO和應用程序的情況下如何構建自己自定義的以太坊代幣。

我們要構建3件事:

  • 自定義代幣。
  • 使用代幣作爲投票的DAO。
  • 用於與智能合約交互的原型Web UI。

按照本教程中的說明操作後,你將能夠構建自己的自定義以太坊代幣,無論是否包含DAO和應用程序。

我們將要構建什麼?

我們正在建設的項目名爲The Neverending Story(TNS)。完整的項目可以在storydao.bitfalls.com找到。它的完整代碼在GitHub上。

The Nendingnding Story是一個帶有輸入字段(可以是文本和圖像)的Web應用程序,其中安裝了MetaMask的用戶可以根據特定條件發送一段文本或圖像。(圖像每50個段落只出現一次,並且只能是一個URL。)

完整的故事呈現在輸入字段旁邊。故事中存在的條目越多,提交條目的成本就越高。提交條目需要支付費用,列入白名單的並且至少有一個TNS代幣的人可以使用的這個操作。

操作類型:

  • 提交條目:要求發件人至少擁有1個TNS代幣並位於白名單中(見下文)。成本0.0001 ether * number of entries in current chapter。 (參見下面的“章節”部分)。這可以是每50個文本條目只有一次圖像,並且只能是一個URL。否則就是文字。沒有代碼,只有純文本。 在任何一種情況下,文本字段大小限制爲256個字符。
  • 轉讓所有權(僅限所有者):可以將所有權轉移到新地址。
  • 減少費用(僅限所有者):所有者可以在不要求投票的情況下提交較低的費用(參見下面的費用“Free”部分)。
  • 購買TNS代幣:將以太發送到DAO以獲得自動發回一定比例數量的TNS代幣。如果DAO中沒有足夠的TNS代幣,則必須從交易所獲得它們。
  • 檢查代幣餘額:一個只讀操作,用於檢查DAO中有多少個TNS代幣。
  • 白名單:當以太發送到DAO的地址時,會自動調用此函數。它將發件人記錄在白名單數組中以供將來參考,獲得大量TNS的人不能將它們分發到各種帳戶。
  • 結束章節:觸發​​分配以太分紅和重置輸入費用的章節結束流程。
  • 撤回:當利益相關者想要撤回分紅時調用。
  • 所有者提款(僅限所有者):由所有者調用以便提取費用收入。

利益相關者(TNS代幣持有人)將能夠對提案進行投票,任何達到“Yes”比“No”更多的投票提案都將獲得批准。投票數無關緊要;這個比例很重要。根據提案的類型,提案需要在特定時間段內開放投票。

提案類型:

  • 刪除條目:通過投票確認後,目標條目將被刪除。投票時間:48小時。
  • 緊急刪除條目(僅限所有者):只能由所有者觸發。通過投票確認後,目標條目將被刪除。投票時間:12小時。
  • 緊急刪除圖像(僅限所有者):僅適用於圖像條目。只能由所有者觸發。通過投票確認後,目標條目將被刪除。投票時間:4小時。

稍後我們可以使用相同的方法添加其他類型的提案。

所有提案都需要在用戶界面中明確列出,以便人們知道他們需要投票。選民只需要一個TNS代幣即可投票,但他們擁有的代幣越多,他們的投票就越值得。

重要提示:用戶的代幣在投票期間被鎖定。這可以防止TNS大鱷持有者壓倒每一個活躍的投票。選民必須在對他們重要的選票上分配投票權。

Chapters章節

在1000個條目或三個星期的時間之後,任何用戶都可以調用章節的結尾。然後,DAO將向所有TNS持有者分發收集的以太幣,與其餘額成比例。持有人不需要在DAO中列入白名單以獲得以太分紅。他們只需要在分發時保留TNS代幣。

分發是一種拉動機制:持有者需要調用DAO的撤銷功能來獲得他們的以太。它不會被自動調用。退出窗口是72小時。50%的無人認領的gas歸於擁有者,50%進入下一章的分紅。

free費用

每個提交的參賽費的1%將轉給當前所有者。其餘部分放入池中,並在每章結束後分發給所有TNS持有者,與其TNS持有量成比例。

所有者的費用被分爲單獨的餘額,他們可以隨意定期退出。

要進入白名單,用戶必須向DAO發送0.01以太。所有未來的代幣購買價格都要低得多。0.01以太入場費是爲了防止Sybil攻擊。如果用戶在第一次發送時發送的數量超過0.01,則0.01將轉向白名單,剩餘部分將用於計算用戶獲得的TNS數量。所有代幣將一次性發回給用戶。

簡而言之,將這個項目視爲衆包選擇你自己的冒險故事,包括人羣策劃和社區審查。一個故事——DAO(story-DAO)。

bootstrapping:PoA私有區塊鏈

我們將使用兩個引導程序:第一個程序將專注於在本地運行我們自己真正的以太坊區塊鏈。它將使用PoA作爲共識機制,並且像任何真正的以太坊testnet一樣起作用 。

  • 下載並安裝Virtualbox
  • 下載並安裝Vagrant。如果你不瞭解虛擬機是什麼,請參閱此帖子
  • 從這裏下載Geth。請務必在下載頁面向下滾動並下載“Geth&Tools”,而不僅僅是“Geth”。如果你使用的是macOS,還可以使用Homebrew並使用brew install ethereum進行安裝。
  • Mist可以在這裏下載。一定要下載“Mist”而不是“Ethereum Wallet”。Mist是以太坊“瀏覽器”,它可以打開各種DApps。以太坊錢包“Ethereum Wallet”可以幹同樣的事,但鎖定在錢包模式,所以你不能用它打開其他應用程序。這是爲了防止非技術用戶訪問到惡意DApp。

如果你很好奇,請在這裏瞭解更多關於Mist和Geth的信息 。

我們需要VirtualBoxVagrant,因爲我們將使用這種方法啓動我們的節點並運行兩臺虛擬機,模擬運行以太坊節點的兩臺計算機。

接下來,按照此帖子中的說明設置PoA私有區塊鏈。

你最終將得到兩個運行節點。每個人都將挖掘到自己的地址。記下這些地址。我的是:

Node 1:0x4b61dc81fe382068e459444e8beed1aab9940e3b
Node 2:0x97e01610f1c4f4367c326ed1e9c41896b4378458

bootstrapping:Ganache CLI

我們可以使用的第二個的引導程序,這對於測試我們的合約特別有用,它是Ganache CLI,以前稱爲Testrpc

Ganache是一個基於JavaScript的本地區塊鏈模擬。每次我們運行測試或重新啓動應用程序時,它都會從頭開始重新運行區塊鏈。這有助於我們快速測試邊緣情況,但不適合長期合約的長期測試。

首先,使用npm install -g ganache-cli安裝Ganache

然後,只需運行ganache-cli就可以了。你應該看到與此類似的輸出:

$ ganache-cli
Ganache CLI v6.1.0 (ganache-core: 2.1.0)
(node:40584) ExperimentalWarning: The fs.promises API is experimental

Available Accounts
==================
(0) 0xa0b7139a36ecda5ffda66b9cf97cb9de36e63f2f
(1) 0x1f5546797a0ff7efe42ecafaeebd5c932f1a0143
(2) 0x0eacbad38a642db2204574ad01b2b51c82ff7080
(3) 0x77f40a8add69b0e0806c0c506208e5783b89076d
(4) 0x1ea41547984ecb949c2b2df311bffe0fdeae4632
(5) 0xa1ad154fd5fd11ebe5410c992e5e97b461c516a2
(6) 0x34da52fd90c015a41bcc383ba3d804f7cebbc84e
(7) 0xddd5232788c1f1192d6ac5e82e74ca80945e119e
(8) 0x7ebc838124a676eac57f9b6275cd29b1a1c63d4d
(9) 0x6feed7913319ffb1b01f767960dd843ea7f96181

Private Keys
==================
(0) 62727ad35a288eb34f268cffb1ce620ef3ee80910138aed0e81f24d912fd8a49
(1) a6c76b382c655dcc66dd92428e3e0a0f14b7458162ad8e5cbbbcc64d3362d28c
(2) eef05f81fd995329c80d8875d5cb62b81f8f28c39951665b4b15688dc48b4c47
(3) 5ae06fc34da5d47a64a814ee088f7c6f0d1cae3c63d7ad2d6b71b8128bce1764
(4) 8cc43f28054f90243dea496263bd9a45f33db44ea3956ab8d0e8704e15d0787e
(5) dcf37436237105ea2f5b1be608b6aa1fe6fb7ca80b8b23ce01ff96930a2a3045
(6) f896b6f0ee11ea272c1567ec1950f7ff610df79193cbb7b668ae0ea11f6ec825
(7) 877b5868dca9a2f5c7d9546647171c9825f1b02922442f18dd4e90d108b9e54d
(8) 7f1f3515d71d348a78ae85a755e02df49be4e0b374447b822abe5a6481fe0c58
(9) 20d50b28c8b051406edc6aa61becc3443e430d7d68925a108958f8abecd55ed3

HD Wallet
==================
Mnemonic:      soda tower talk dynamic swim tattoo edit cook pair bid glance beauty
Base HD Path:  m/44'/60'/0'/0/{account_index}

Listening on localhost:8545

Ganache在這裏做的是啓動私有區塊鏈,幾乎沒有挖掘時間,也沒有節點。它會在進入時立即執行交易。它還會生成10個預加載了大量虛擬以太的地址,並產生出私鑰,以便將它們導入各種工具,如MetaMask,MyEtherWallet或之前下載的Mist。

我們將根據我們的需要使用此方法和上述方法的混合,因此請確保同時設置這兩種方法。

注意:最好也可以使用Ganache UI工具,使用可視界面來管理Ganache區塊鏈。

結論

使用本指南通過MetaMask,MyEtherWallet或之前下載的Mist等工具連接到私有區塊鏈(任一版本)。兩個bootstrapping選項在運行時默認運行在localhost:8545。因此連接它們的過程是相同的。

現在我們的應用程序的基本規則和功能已經佈局,我們的私有區塊鏈已經建立,我們可以連接到它,接下來我們將重點放在工具,包和依賴項上。

======================================================================

分享一些以太坊、EOS、比特幣等區塊鏈相關的交互式在線編程實戰教程:

  • java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
  • EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

匯智網原創翻譯,轉載請標明出處。這裏是原文以太坊構建DApps系列教程(一):應用程序規則和區塊鏈設置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章