日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

以太坊基础开发入门教程,完整入门【转】

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以太坊基础开发入门教程,完整入门【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

翻譯自:https://medium.com/@mattcondon/getting-up-to-speed-on-ethereum-63ed28821bbe

?

從入門到精通,干貨篇。

?

必讀,如果你:

?

  • 是一個專業的程序員

  • 如果你想了解以太坊當前可以做到什么程度,通過什么,如何做到。

?

預備知識:

?

????1. 你需要知道區塊鏈的概念及實現一個無需信任的電子貨幣的運作原理??梢韵瓤纯撮L版(https://www.youtube.com/watch?v=bBC-nXj3Ng4),如果你覺得太長,可以看看短版(https://www.youtube.com/watch?v=l9jOJk30eQs)。但我還是建議,看那個長的視頻。

????2. 如果你是一名軟件工程師,擁有軟件開發的經驗。能知道從系統、架構角度學一個東西,其實能倍增學習效果。

????3. 如果有一周的空閑時間。好了,下面開始就不再是廢話了。

????4. 你需要了解merkle tree(https://en.wikipedia.org/wiki/Merkle_tree)的基本概念,看他是如何做到防止信息篡改,以及信息自校驗的(譯者注:可以看我曾經翻譯的以太坊官方的關于merkle tree的文章,http://me.tryblockchain.org/Ethereum-MerklePatriciaTree.html?)。

?

不用必須讀白皮書,只需要了解一些基本概念。但說實話,如果不讀,不會相信這些概念,從而不能真正明白這些概念,所以讀白皮書也許仍然是最快的方式。

?

我建議你完整的讀一下本文,從一個較高的層面了解一下,然后再挑感興趣的,一一鉆研,也許要花幾天時間哦。

?

你最后會發現,區塊鏈就是建立在樸實無華的基本技術之上,一點也不神奇。雖然最近各種ICO把它炒得非常熱。每個人都是站在巨人的肩膀上,如果你是程序員,你能對這些項目和技術,理解得更深。所以不要因為其它一些糟粕,而失去了一個提升自己的機會。

以太坊

?

以太坊,Ethereum(https://www.ethereum.org/)是一個分布式的計算機,有許多的節點,其中的每一個節點,都會執行字節碼(其實就是智能合約),然后把結果存在區塊鏈上。由于整個網絡是分布式的,且應用就是一個個的狀態組成,存儲了狀態就有了服務;所以它就能永不停機,沒有一個中心化的結點(沒有任何一個節點說了算,去中心化的),任何第三方不能干預。

?

顯然上面這一段話,直接解釋了以太坊是什么。但你可能有非常多的問題??梢韵茸x一下以太坊的白皮書(https://github.com/ethereum/wiki/wiki/White-Paper)。或者看下這個視頻,25分鐘理解以太坊(https://www.youtube.com/watch?v=66SaEDzlmP4)。(譯者注:以太坊入門,確實沒有什么好的辦法,就是看白皮書最好,最快)

智能合約

?

智能合約與平時的代碼其實沒有什么區別,只是運行于一個以太坊這樣的分布式平臺上而已。這個運行的平臺,賦予了這些代碼不可變,確定性,分布式和可自校驗狀態等特點。代碼運行過程中狀態的存儲,是不可變的。每一個人,都可以開一個自己的節點,重放整個區塊鏈,將會獲得同樣的結果(譯者注:能控制所有節點都達到一致狀態,就是所謂的共識)。

?

在以太坊中,每個合約都有一個唯一的地址來標識它自己(由創建者的哈希地址和曾經發送過的交易的數量推算出來)。客戶端可以與這個地址進行交互,可以發送ether,調用函數,查詢當前的狀態等。

?

智能合約,本質上來說就是代碼,以及代碼運行后存儲到區塊鏈上的狀態兩個元素組成。比如,你用來收發ETH的錢包,本質上就是一個智能合約,只是外面套了一個界面。

?

概念非常強大,而我相信你已經看完了。而你在看相關的新聞,經常聽到這個非常有潛力,經常聽到資產/權利管理,分權自治組織(DAO),身份,社交網絡等炫酷。但他本質就是這些。

Gas

?

智能合約,就是一些代碼,運行整個分布式網絡中。由于網絡中的每一個節點都是一個全節點。這樣的好處是容錯性強,壞處是效率低,消耗資源與時間(譯者注:原來只在一個節點執行一次就行,現在所有節點中每一個,都要執行一模一樣的運算)。因為執行計算要花錢,而要執行的運算量與代碼直接相關。所以,每個在網絡運行的底層操作都需要一定量的gas。gas只是一個名字,它代表的是執行所需要花費的成本(譯者注:由于以太坊是圖靈完備的,隨便一個死循環就將導致網絡不可用,所以引入了gas的概念)。整個分布式網絡引入了強制限制,來避免停機問題(https://en.wikipedia.org/wiki/Halting_problem)。因此如果你寫一個死循環,當gas耗盡后,網絡就會拒絕執行接下來的操作,并且回滾你之前的所有操作。

?

gas的價格由市場決定,類似于比特幣的交易費機制。如果你的gas價格高,節點則將優先因為利益問題打包你的交易。

?

一般來說,在Ethereum中計算和存儲東西比在傳統環境中做的更為昂貴,但是,Ethereum為您的代碼提供了上述我們討論過的那些好的屬性,這可能是一樣有價值的。

?

一般來說,在以太坊網上讀取狀態是免費的,只有寫入狀態是收費的。下面這個文章是gas概念的一些深度解析(https://hackernoon.com/ether-purchase-power-df40a38c5a2f)。

分布式APP(?App / Dapp / dapp/ dApp)

?

一個分布式App是指,服務端運行于以太坊網絡上一個或多個智能合約。

?

一個分布式的App不用將所有狀態都存儲在區塊鏈上,或者在鏈上進行所有計算(譯者注:比如圖形渲染),這樣就太花gas了。所以一個分布式App把需要大家共同信任的狀態存在區塊鏈上就好了。許多的分布式應用使用后面提到的技術,如IPFS和Gelem,在鏈下進行分布式存儲和計算。雖然沒在以太坊上,但仍使用的是區塊鏈技術。

?

我不知道誰開始在D上使用這個小小的缺點,是看起來酷,但會影響搜索。 你可以自由使用,但盡量方便別人的搜索。

?

以太坊的github上,有一個dapp-bin的目錄(https://github.com/ethereum/dapp-bin),有一些文檔和示例。使用前,你需要看看文件最近的狀態,因為他們將很可能已經被淘汰。

DApp客戶端

?

大多數的分布式應用都通過一些用戶友好的前端提供服務,因為不是所有人都愿意通過命令行,通過自己手動組裝哈希串和操作指令碼進行交易。

?

一個DApp與傳統的開發中的,客戶端或前端是類似,區別僅在于它們與以太坊的區塊鏈進行交互(也可以同時與其它服務交互)。這些客戶端往往用JS編寫,因為當前還暫時沒有完成全部的向NodeJS的轉換。

?

另外,大多數的Dapp客戶端使用JS的原因,是因為它可以在瀏覽器中運行,因為大家都有瀏覽器,這樣每個人都可以運行了。由于有更多的go語言的開發工具,使用go語言來寫客戶端的也不少。在現在這個激烈的發展期,這意味著,除非你有自己的偏好,否則可能要從go和JS(也許還有,Rust)來選擇一種語言,來與以太坊區塊鏈,以及基于以太坊開發的協議進行交互了。

?

以太坊的一個核心開發者,寫了一篇關于使用Meteor工具來創建Dapp的文章(https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor),這意味著Meteor已經成為Dapp客戶端開發的新標準。這絕對是基于JS建立全棧應用時的一個首選方法。但需要注意的是Meteor只是提供了一個開發工具,與DApp客戶端并不等同,DApp客戶端也完全可以由其它方式開發。(譯者注:還有一些其它的開發工具,如Truffle,也是非常不錯的哦)。

?

因為圍繞Meteor和DApp開發的活躍,有非常多的包在Atmophere(Meteor的包管理工具),它提供了許多常見的操作,如帳戶管理,從區塊鏈中獲得最新的50個區塊等等。

DApp瀏覽器

?

一個DApp瀏覽器,正如它字面所表達的,用來讓DApp客戶端(常常使用JS與以太坊的智能合約進行交互)的使用更加容易。

?

DApp瀏覽器的主要目的是:

?

????1. 提供到一個以太坊節點的連接(或者連接到一個本地節點或者遠程節點),和一個方便的切換不同節點(甚至是不同的網絡)。

????2. 提供一個帳戶(或者一個錢包)來方便用戶與DApp交互。

?

Mist(https://github.com/ethereum/mist)是以太坊官方的DApp瀏覽器。一個漂亮的界面來與以太坊節點交互,與智能合約發、收交易。

?

Status(https://status.im/)是一個手機上可以使用的DApp瀏覽器。

?

MetaMask(https://metamask.io/)是一個Google瀏覽器擴展,把Chrome變成了一個DApp瀏覽器。它的核心特性是注入以太坊提供的js客戶端庫web3,到每一個界面,來讓DApp連接到MetaMask提供的以太坊節點服務。不過這個Chrome擴展,可以允許你管理你的錢包,以及連接到不同的以太坊網絡(譯者注:包括本地的開發網絡)。

?

Parity(https://parity.io/parity.html)是一個以太坊客戶端(也是一個全節點的實現),集成到了Web瀏覽器,并使之成為一個DApp瀏覽器。

以太坊節點

?

與比特幣的節點類似。每個節點都存儲了整個區塊鏈的數據,并重放所有的交易以驗證結果的狀態。你可以通過geth(https://github.com/ethereum/go-ethereum/wiki/geth)來運行一個全節點(官方的節點,go語言),或者parity來運行一個輕節點,它是第三方的,Rust語言寫的。

?

你的節點需要知道從哪個區塊鏈下載數據,以及與哪些節點交互,后面會說明一些常見的網絡。

?

你也許可以運行下所有這些節點客戶端。如果你不想自己運行一個這樣的節點,有第三方的網關服務,比如Infura(https://infura.io/)可以選擇。另外還有專門用于測試和開發的,本地版本的節點,后面會提到。

?

如果你正在開發一個DApp的客戶端,你并不總是需要主動提供連接到以太坊的節點。因為DApp的瀏覽器一般會提供對應的連接(譯者注:話說這樣,那使用這個,還得額外安裝一個DApp瀏覽器呀)。

以太坊代幣

?

現在你應該知道我們可以通過寫智能合約,并將狀態存到區塊鏈上了?那如果,在狀態這塊,我們存的是一個Map類型,鍵是地址,值是整數。然后我們將這些整數值叫做余額,誰的余額呢?它就是我們要說的代幣(譯者注:代幣的數據結構就是這樣簡單,存的就是某個用戶,它當前的余額)。

?

是的,所有你剛才聽到的代幣,只是一些數據,存儲在一個哈希表里,通過api或者所謂的協議,來進行增刪改查。這是一個簡單的基本合約(https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/BasicToken.sol)。

?

你可以看看ethereum的創建一個眾籌合約的官方教程(https://www.ethereum.org/crowdsale)。你將會發現它僅僅是一個合約(Crowdsale)與另一個合約(MyToken)交互,和前面的基本合約類似。并沒有什么神奇的地方。

?

人們使用代幣來做各種各樣的事情,阻攔大家如何使用的只有想像力。代幣常常用來激勵用戶與某個協議進行交互,或者證明對某個資產的所有權,投票權等等。Coinbase的Fred有一個很好的關于代幣,為什么存在,如何使用的文章(https://www.youtube.com/watch?v=rktHO5R8Y9c)。

?

Ethereum的創始人Vitalik最近有一個關于代幣發售模型,也是一篇不錯的文章(http://vitalik.ca/general/2017/06/09/sales.html)。

ERC20代幣與ERC23代幣

?

每個人都開始定義自己與代幣的交互協議,但這些很快顯得陳舊,所以一些人開始集結起來,創建了ERC20代幣接口標準(https://github.com/ethereum/eips/issues/20)。大概意思是說,我們定義這些接口,這樣大家可以相互統一調用,比如轉帳定義為transfer,第一個參數為要轉去的帳戶地址address _to,第二個參數為要發送的ether的uint _value數量。

?

有些人覺得ERC20協議過于復雜了,所以他們提議了ERC197(https://github.com/ethereum/EIPs/issues/179),稍微簡單一點。

?

由于在ERC20中存在的一個小問題,有人提議了一個新的ERC23(https://github.com/ethereum/EIPs/issues/223)。ERC23是向后兼容ERC20的。如果你已經創建了一個代幣合約,可以嘗試來支持ERC23。

?

看起來ERC223和ERC23是相同的概念;ERC的值是223,但是當引用時,作者和所有的其它人誤寫成了ERC23非常多次,它現在也還是這樣引用的。如果一句話說清楚的話,ERC223是規范號,代幣說明時稱為ERC23代幣就好了。

協議代幣與App幣

?

協議代幣為用來激勵對某個協議的使用。比如,REP,Augur的聲譽代幣,用來鼓勵對Augur去中心化預測協議的使用。大多數的以太坊的ERC20/ERC23代幣都是協議代幣,比如Golem的GNT,ICONOMI,BAT等等。

?

App幣則是用來激勵對某個特定DApp或客戶端的使用,而不是因為其使用的協議提供的價值。其中一個例子是Status的SNT代幣,可以用來在應用內獲得價值(比如,進行消息推送,投票權,獲得用戶名等等)。

?

這種范式的轉變是,我們可以開始投資協議代幣而不是應用程序代幣,因為我們可以建立在它們之上(任何人都可以在協議之上構建一個dapp,或為實現該協議的Dapp構建一個Dapp客戶端)。

?

之前,這并不可能,因為加密代幣,以及接下來的協議創新的時代(http://continuations.com/post/148098927445/crypto-tokens-and-the-coming-age-of-protocol),為了實現貨幣化,你自己可以在協議之上創建一個應用,并實現贏利。因為你自己可以實現協議的貨幣化,大家可以在未來更好的協作。

?

你也許可以閱讀一下,關于0xProject的下面這篇文章,關于這兩者區別的詳細說明(https://blog.0xproject.com/the-difference-between-app-coins-and-protocol-tokens-7281a428348c)。

與智能合約交互

?

你與智能合約的交互(也稱做調用函數和讀取狀態)通過連接到某個以太坊節點,并執行操作碼。當前有各種各樣的以太坊客戶端,可以方便進行開發。Geth和parity都提供了控制臺或瀏覽器的方式來更好的與智能合約交互。

?

如果你想要一個程序的庫用來與智能合約交互的接口,也有這樣的客戶端實現。對于JS語言,可以使用web3.js。以于go語言,可以使用在go-ethereum(https://github.com/ethereum/go-ethereum)中的abigen的程序,提供了go包,用來與智能合約交互。

?

如果只是用來測試和開發,可以使用ethereumjs-testrpc(https://github.com/ethereumjs/testrpc)來運行一個本地節點(譯者注:這個節點壓短區塊時間等,可以方便打整的開發與測試)。

?

當你部署了一個智能合約,你實際進行的操作是向地址0x0發送了一個交易,使用當前合約內容作為參數,一個以太坊交易詳解(https://medium.com/@codetractio/inside-an-ethereum-transaction-fa94ffca912f)。

Truffle和Embark

?

一旦你開始寫智能合約,你會重復做大量的操作,比如編譯源碼為字節碼和abi,部署到網絡,測試然后部署合約等等。你也許希望更關注于你想要實現的東西。

?

Truffle和Embark框架,標準化和自動化了這些瑣碎的工作。它們提供了一個好的開發,部署,以及更為重要的,測試智能合約的體驗。

?

你可以查看這個文章(http://truffleframework.com/docs/getting_started)來開啟使用Truffle的旅程。

?

這篇文章,提供了使用Truffle來部署以及與智能合約交互的文章(https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05)。

?

Embark(https://github.com/iurimatias/embark-framework)提供了類似的,幫助開發者組織工程的稍有些不同的工具。

?

當你一開始接觸智能合約這塊時,應該盡量不要使用框架。直到你明白了使用框架能帶來的價值時,才應該開始使用,正如你不應該通過rails new來學習HTML語言一樣。

ETHPM

?

分享是關心,所以ETHPM是一個去中心化的智能合約包管理資源庫(https://www.ethpm.com/registry)。使用ETHPM,你可以關聯或連接到某個著名的合約或庫,減少代碼重復,盡可能理想的為未來的開發提供好的基礎。

?

這里的這個規范(https://github.com/ethereum/EIPs/issues/190),詳細的說明了相關的信息以及背景。Truffle和Embark均可與之集成,并創造一個愉快的開發體驗。

網絡

?

Mainnet-以太坊主網,通常是所有客戶端的默認網絡。

?

Ropsten - 以太坊使用工作量證明的主測試網絡。這個網絡,因為低的計算量,容易遭到DDOS攻擊,分片,或者其它問題。垃圾郵件攻擊后被暫時放棄,最近才恢復使用。(https://github.com/ethereum/ropsten)

?

Kovan-parity客戶端組成的測試網絡,使用授權證明來提升對垃圾郵件攻擊的抗擾度,并且持續4秒的阻塞時間。(https://github.com/kovan-testnet/proposal)

?

Rinkeby-geth客戶端組成的測試網絡,使用集團共識,盡管計算量低,但是對惡意行為者更有彈性。(https://www.rinkeby.io/)

?

你可以自己搭建你自己的測試網絡,也許使用kubernetes(https://github.com/MaximilianMeister/kuberneteth)或者docker-compose(https://capgemini.github.io/blockchain/ethereum-docker-compose/),但也許你將很快就可以不需要花什么時間。

帳戶與錢包

?

一個以太坊帳戶就是一個私鑰和公鑰地址對。它們可以用來存儲ether,創建時不需要花費gas。

?

錢包則是用來管理ether的智能合約(一些代碼)。這里是使用solidity寫的一個錢包,運行于Mist瀏覽器(https://github.com/ethereum/meteor-dapp-wallet/blob/develop/Wallet.sol)。他們可以有許多的特性,比如多用戶簽名,紙?等等。

?

這樣,我們就正確的定義了兩個名詞,前面看到其它人對這兩個術語的困惑,并把所有能存ether的都叫作Wallet。

EVM以及智能合約創建的狀態

?

在每個全節點網絡上運行的智能合約代碼在EVM內執行。這是您的標準虛擬機,執行一些字節碼,除了這個vm與網絡,文件系統,進程等隔離。沒有人想要編寫字節碼,所以我們有一些更高級別的語言編譯為EVM字節碼。

?

Solidity

?

Solidity(https://solidity.readthedocs.io/en/latest/)是第一批的描述智能合約的語言。當前是最流行的語言,因此也有最多的例子,文檔,和教程。你應該學習這個,除非你有要學習其它的理由。

?

你可以使用基于瀏覽器的Remix IDE(https://ethereum.github.io/browser-solidity/)來進行快速驗證。

?

下面是一個Solidity的合約:

?

pragma solidity ^0.4.11;
contract BasicToken {
mapping(address => uint256) balances;
function transfer(address _to, uint256 _value) returns () {
??? balances[msg.sender] = balances[msg.sender] - _value;
??? balances[_to] = balances[_to] + _value;
? }
function balanceOf(address _owner) constant returns (uint256 balance) {
??? return balances[_owner];
? }
}

?

LLL

?

LLL,是一門Lisp風格的底層編程語言,就像語言名稱看到的這樣。雖然以太坊官方并沒有將它作為主要需要支持的語言,但它仍舊持續進行著更新,且與solidity在同一個資源庫(https://github.com/ethereum/solidity)。

?

這是一個使用LLL語言寫的一個ERC20代幣的合約(https://github.com/benjaminion/LLL_erc20/blob/1c659e890e2b30408555b9467a8dfd8988211b3b/erc20.lll)

?

LLL示例如下:

?

(seq
? (def 'node-bytes? 0x00)
? (def 'owner??? 0x20) ; address
? (def 'set-node-owner??? 0x5b0fc9c3) ; setOwner(bytes32,address)
? (def 'get-owner (node)
????? (sload (+ node owner)))

//只是用來示例,不能編譯通過

?

如果你正在學習,也許不是那么的容易習慣LLL語言的寫法。

Serpent

?

Serpent(https://github.com/ethereum/serpent/tree/develop)是一個類Python的高級語言,最終也會被編譯為EVM字節碼。它主要被Augur團隊使用。

?

但最近Zeppelin Solution團隊發現其編譯器有一個嚴重的bug(https://blog.zeppelin.solutions/serpent-compiler-audit-3095d1257929),在這個問題被修復之前都不建議繼續使用。

?

如果你對Augur如何解決這些漏洞感興趣,你可以閱讀Zeppelin Solution的這篇文章(https://blog.zeppelin.solutions/augur-rep-token-critical-vulnerability-disclosure-3d8bdffd79d2)。

?

Serpent的合約看起來如下:

?

def register(key, value):
??? # Key not yet claimed
??? if not self.storage[key]:
??????? self.storage[key] = value
??????? return(1)
??? else:
??????? return(0)? # Key already claimed

def ask(key):
??? return(self.storage[key])

?

其它

?

在各種可用性和發展狀態中還有一堆其他的高級語言,而且無疑將會被開發出來。 為了廣泛采用,語言和編譯器必須經過徹底的審查和測試,這當然需要時間。

智能合約反編譯/Disassembly

?

可以通過prosity(https://github.com/comaeio/porosity)來反編譯以太坊智能合約的字節碼,可以使用evmdis(https://github.com/Arachnid/evmdis)來Disassembly。

智能合約的安全

?

一旦一個智能合約部署到了以太坊的網絡上,它將是永不可變的,且將永久存在。如果你寫了一個bug,你將不能下架這個有問題的版本,你只能在后續的版本中修復。

?

由于許多工程師開發的Ethereum和其他智能合同平臺來自于Web開發,所以這個概念實在是太新,而且是瘋狂的。

?

ConsenSys有一個非常棒的資源叫智能合約的最佳實踐(https://github.com/ConsenSys/smart-contract-best-practices),你應該深入的理解一下。

?

一個Parity的錢包被黑的解釋(https://blog.zeppelin.solutions/on-the-parity-wallet-multisig-hack-405a8c12e8f7)。

?

在你部署你的智能合約的時候,由于你管理的是真正的資金,你應該先開一個賞金計劃(https://blog.zeppelin.solutions/setting-up-a-bug-bounty-smart-contract-with-openzeppelin-a0e56434ad0e),并盡量保證它完整的測試過。

Whisper

?

Whisper(https://github.com/ethereum/go-ethereum/wiki/Whisper-Overview)是一個集成進以太坊的消息系統。它允許DApp發布小量的信息來進行非實時的消息通信。

?

它使用shh協議。

?

盡管它已經有段時間沒有更新了,這是一個使用Whisper協議實現一個聊天客戶端的例子(https://github.com/ethereum/meteor-dapp-whisper-chat-client)。

去中心自動化組織(DAOs)

?

這是一個組織(就像,一群人),其中,使用代碼來保證最終的強制執行,而不是使用傳統的法律文件。這群人使用智能合約來做常見組織做的所有的事情,比如在某件事上進行投票,比如決定是否對什么進行投資等等。

?

副作用是決策,管理,以及對什么進行投資的結果將會不可改變的存儲在區塊鏈上。

?

之前slock.it創建了標準的DAO框架來說明這個理念。在這里(https://github.com/slockit/DAO/)有對DAO概念的總覽,以及如何使用框架來實現一個自己的DAO(譯者注:這個項目由于bug被黑客攻擊了)。

Aragon

?

Aragon(https://aragon.one/)也正在應對挑戰,設計一個根據智能合約邏輯運作的公司,重點是創建一個可以接受投資,處理會計,支付雇員,分配股權,正如我們現在知道的完成每天的公司的業務。他們也實現了漂亮的DApp客戶端來讓他們的協議使用起來更為簡單。

?

查看這里Aragon核心合約(https://github.com/aragon/aragon-core/tree/master/contracts)來更多的理解它是如何做的。

IPFS&FileCoin

?

IPFS(https://ipfs.io/)(星際文件系統)是一個協議,用來分發文件。你可以認為它是一個基于bittorrent和git這樣概念的一個文件系統,文件可以定位,且是不可變的。IPFS以IPLD(http://ipld.io/)數據模型存儲信息,它非常有趣,提供了一些特別的特性,你可以通過下面的說明了解一些。

?

這是一個新的協議,它有一個http的網關和文件系統適配器,這讓你可以通過http,掛載整個互聯網文件系統到你本地的盤/ipfs。IPFS還提供了一個尋址服務IPNS(星際命名空間),它允許可變的狀態(需要注意的是在IPFS里的所有東西都是不可變的)。你甚至可以使用DNS TXT記錄來定位到你的IPNS客戶端,允許你生成用戶友好的鏈接來指向到對應的數據。

?

FileCoin(https://filecoin.io/)是Protocol Lab為創建一個去中心化的基于IPFS的存儲市場的努力結果,也就是向整個網絡提供存儲資源的激勵層。FileCoin的共識協議沒有使用浪費資源的工作量證明,而是使用了Proff of Replication和Proof of SpaceTime來保證每片數據被復制某個特定的拷貝數量且存儲某個特定的時間。

?

你應該讀一下IPFS的白皮書(https://github.com/ipfs/ipfs/blob/master/papers/ipfs-cap2pfs/ipfs-p2p-file-system.pdf),FileCoin的白皮書(https://filecoin.io/filecoin.pdf),以及IPLD的規范(https://github.com/ipld/specs/tree/master/ipld)。

?

由于當前FileCoin還沒有上線,你可以使用當前的IPFS存儲網絡來運行html/css/js,并把作為一個類似orbit-db(https://github.com/orbitdb/orbit-db)的數據庫。

Swarm

?

Swarm是一個去中心化的存儲網絡,集成于以太坊生態系統,作為第一陣營的項目,看看這里關于IPFS與這個項目的比較和優劣(https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM)。但本質上,基本上是一樣的,除了它們有不同的哲學,并在底層使用稍微不同的協議。

項目

Augur

?

Augur(https://augur.net/)是一個去中心化的預測市場,讓大家對于某個現實世界的事件進行對賭。一方面,用戶在某個具體可以發生的事件上投注,一旦結果成真,它們贏得的代幣有真正的價值。為了實現這個,你需要實現一個去中心化的先知協議,來輸入現實世界中的信息,它使用REP協議代幣來進行經濟激勵(http://blog.augur.net/guide-to-augurs-rep/)。

?

你可以看看Augur項目的合約代碼(https://github.com/AugurProject/augur-core),以及了解下Augur Master Plan(https://medium.com/@AugurProject/augur-master-plan-42dda65a3e3d)。

Gnosis

?

Gnosis(https://gnosis.pm/)與Augur有類似的理念,也是一個去中心化的預測市場。這是項目的白皮書(https://gnosis.pm/resources/default/pdf/gnosis_whitepaper.pdf),以及與Augur項目的對比(https://medium.com/@akhounov/hopefully-impartial-comparison-of-gnosis-and-augur-f743d11d6d37)。

Golem

?

Golem(https://golem.network/)是一個分布式的算力市場,以與IPFS一樣的方式構建了一整套的提供算力市場。

?

你可以看看FAQ(https://github.com/golemfactory/golem/wiki/FAQ)來更好的理解。

0xProject

?

0xProject創建了一個交換代幣的協議,以及一個DApp來實現這個協議。開發者可以創建一個基于它們自己的分布式應用創建交易所(技術上叫中繼層),而用戶也不用信任這些app就可完成交易,結算在區塊鏈上完成。0x協議旨在使用離線的第三方來廣播交易和管理訂單(可以創建/更新/刪除訂單,而不用直接向Ethereum發送緩慢/昂貴的交易),但最終會使用Ethereum進行結算。

?

它們實現了場外交易(https://blog.0xproject.com/announcing-0x-otc-5db58dc9ba8),一個DApp使用這個協議來在用戶之間直接交換代幣。你可以在github上查看他們的合約(https://github.com/0xProject/contracts)。

?

你還可以跳過這些酷炫的概念,直接閱讀FAQ(https://0xproject.com/faq)。

Swap

?

ConsenSys的Swap(https://swap.tech/)協議也是非常類似的,但更專注于p2p的直接交易(而不是基于訂單表),這里有一個白皮書,可以看看(https://swap.tech/pdfs/SwapWhitepaper.pdf),這里有一個關于Swap協議的介紹(https://media.consensys.net/introducing-swap-a-protocol-for-decentralized-peer-to-peer-trading-on-the-ethereum-blockchain-d4058f3179cf)。

Bancor

?

代幣的流動性是相對來說在加密幣的生態中是一個非常大的問題。在用戶間的交易需要滿足買方和賣方兩邊的想法。

?

Bancor(https://www.bancor.network/)是一個協議,可以讓你的代幣1)可以根據訂單自動給予價格2)可以通過持有其它的代幣作為抵押器來即時創造流動性。

?

查看這里的白皮書(https://www.bancor.network/static/bancor_protocol_whitepaper_en.pdf)

Makerdao & Dai

?

以太坊區塊鏈管理的代幣價值往往會有巨大的波動。這個特性在現實生活中則非常不好,比如你的目標是用來保值。

?

Maker DAO(https://makerdao.com/)是一個DAO來管理Dai穩定幣(https://github.com/makerdao/docs/blob/master/Dai.md)。Dai現在還不存在,但他們已經發布了一個alpha的版本叫Sai(https://blog.makerdao.com/2017/06/05/introducing-sai/)來展示這門技術。

?

這里是DAI的白皮書(https://github.com/makerdao/docs/blob/master/Dai.md)。

Oraclize

?

如果我們要向智能合約中輸入一些信息,比如紐約今天的天氣,我也許需要實現一個去中心化的先知協議詢問一批人(花費高且慢),但如果寫一個服務以中心化的方式來提供信息,又違背了去中心化應用的理念。

?

Oraclize(http://docs.oraclize.it/#background)嘗試用以下方式來解決問題1)從一個外部數據源向你的智能合約發送數據。2)提供一個證明,數據來自某個數據源,且沒有被修改過。由此如果你信任random.org,你可以使用Oraclize來提供一個隨機數生成合約。

?

他們的集成非常強大; 您可以獲取URL,解析JSON和XPATH,查詢Wolfram Alpha等。

BTCRelay

?

BTCRelay(http://btcrelay.org/)作為比特幣區塊鏈交易的先知機制,這意味著你可以在以太坊上編寫智能合約來響應比特幣區塊鏈上的某個交易,進行觸發后續的操作。比如,你可以讓人通過BTC為你的服務付費,使用BTCRelay在以太坊上校驗付款成功后,繼而在以太坊上提供對應的服務。

Open Zeppelin & zeppelinOS

?

Zeppelin Solutions是一個科技公司,在這個領域內正完成一些偉大,而且專業的事。它們實在做了太多事,太難一一說清了。

?

他們管理了Open Zeppelin(https://openzeppelin.org/),一系列經過審查的,最佳的智能合約實踐,你可以繼承并應用于你自己的DApp中。你可以查看他們的github資源來學習更多(https://github.com/OpenZeppelin/zeppelin-solidity)。你應該讀一下里面的每一個合約。

?

他們堅持代碼復用的理念,然后進一步創建了Zeppelin OS(https://blog.zeppelin.solutions/introducing-zeppelinos-the-operating-system-for-smart-contract-applications-82b042514aa8)。你可以忽略OS,它不是傳統意義上的操作系統的概念。zeppelinOS特性,工具和服務的集合,旨在提供穩固的開發人員體驗,同時最大限度地提高智能合同安全性。

?

zeppelinOS中的其中一部分是“zeppelinOS Kernel”。其實他們不是傳統意義上的核心,而且是一組庫(https://blog.aragon.one/library-driven-development-in-solidity-2bebcaf88736)。它們是通過庫模型實現的可升級的智能合約(https://blog.zeppelin.solutions/proxy-libraries-in-solidity-79fbe4b970fd),可以在出現安全問題時獨立的進行更新。因為你在合約內包含的代碼更少,部署也將花費更少的gas,而開發者也減少了代碼的重復。

?

zeppelinOS還有一些其他整齊的規劃,比如調度程序(智能合約的異步執行,因為默認合同一般不會主動觸發某個行為),市場級的協議和鏈下開發者體驗工具。

ENS - 以太坊的命名服務

?

ENS(https://ens.domains/)是一個去中心化的名稱注冊服務。并有一個描述性的項目名稱。

BAT 基礎注意力代幣 & Brave瀏覽器

?

BAT(https://basicattentiontoken.org/)嘗試去中心化廣告系統,通過監控大家的注意力,并在內容提供商,廣告商和用戶之間分發收益,切掉中間人。

?

Brave和BAT由JS創始人Brendan Eich創建,同時他也是Mozilla的聯合創始人。

uPort

?

uPort(https://www.uport.me/)在解決去中心化的身份識別問題。

district0x

?

district0x(https://district0x.io/)是一個更高層級的去中心化的市場和社區。核心是通過一系列的智能合約來管理用戶發布信息,搜索,過濾信息,在社區內維護信譽,管理支付等等。它可以用來建議如Ethlance(https://ethlance.com/)和NameBazaar(https://namebazaar.io/)這樣的市場。

?

他們有非常棒的視覺設計。

Steem

?

Steem(https://steemit.com/)是區塊鏈上的reddit,它使用協議代幣(STEEM)來激勵這個社交社區的參與度。

?

在這里查看白皮書(https://steem.io/SteemWhitePaper.pdf)。

?

有一些關于Steemit塊鏈如何啟動以及支持組織如何運作的反應(https://medium.com/m/global-identity?redirectUrl=https://decentralize.today/the-ugly-truth-behind-steemit-1a525f5e156)。

參與者與領域內的玩家

ConsenSys

?

ConsenSys(有點像共識Consensus,但作為一個公司名稱;它很聰明,巧妙的把u改成了s,但我一般念為“con-SEn-SIS”,避免讀錯)是一個“風險投資和產品工作室”。他們是一個(其實非常大)傘形組織,它贊助了一大堆項目(https://consensys.net/ventures/spokes/)和核心組件(https://consensys.net/ventures/core-components/)的開發。值得一提的是,它們資助了Truffle,Infura,MetaMask,Gnosis和uPort。

Zeppelin Solutions

?

Zeppelin Solutions(https://zeppelin.solutions/)在上面我們有提到過,他也審查智能合約代碼,提供咨詢服務。他們的博客質量相當高(https://blog.zeppelin.solutions/)。

Protocol Labs

?

Protocol Labs(https://protocol.ai/)是一群讓人印象深刻的人,致力于IPFS,FileCoin,lip2p以及IPLD等其它項目的開發。

區塊鏈資本概況

?

Etienne Brunet(https://medium.com/@etiennebr)有一篇關于代幣,ICO和VC的概況文章(https://medium.com/@etiennebr/my-token-ico-blockchain-capital-markets-landscape-617e6ff1eae1)。

社區

?

你可以加入以太坊的社區(https://medium.com/blockchannel/where-can-i-join-the-ethereum-community-3aa5c795b1e5)。

未來

?

未來展望(https://media.consensys.net/interplanetary-linked-computing-separating-merkle-computing-from-blockchain-computational-courts-1ade201ecf8a)。

?

出處:http://me.tryblockchain.org/getting-up-to-speed-on-ethereum.html

總結

以上是生活随笔為你收集整理的以太坊基础开发入门教程,完整入门【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九热精品在线观看 | 麻豆国产精品 | 在线看视频 | 日日碰狠狠躁久久躁蜜桃 | 成人欧美视频 | 亚洲激情久久 | 日本中文字幕第一页 | avxx| 熟女熟妇伦久久影院毛片一区二区 | 插插插av | 国产午夜电影在线观看 | 91精东传媒理伦片在线观看 | 91麻豆免费视频 | 日韩欧美一二区 | 欧美色哟哟 | 成年人网站免费在线观看 | 日本一区二区在线视频 | 国产免费脚交足视频在线观看 | 日本黄页视频 | 超碰综合 | 日韩精品无码一区二区 | 黄色不卡视频 | 亚洲经典久久 | 岛国成人在线 | 久久好色 | 亚洲成人不卡 | 久久伊| www.国产一区| 538在线精品 | 337p嫩模大胆色肉噜噜噜 | 国产精品免费看 | 欧美日韩一二三 | 成人在线免费视频播放 | 97涩涩网| 91丝袜美腿| 欧美日韩经典 | 特级黄色大片 | 献给魔王伊伏洛基亚吧动漫在线观看 | 亚洲一二区在线 | 亚洲午夜精品一区二区三区 | 国产在线视频91 | 日韩在线二区 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 久久久久黄色片 | 精品一区二区欧美 | 国产日本欧美一区二区 | 欧美1区2区3区 | 欧美精品自拍偷拍 | 91久久精品美女高潮 | 亚洲人成在线观看 | 精品久久久网站 | 久久九九久久九九 | 成人啪啪18免费游戏链接 | 91免费大片 | 国产成人av一区 | 久久久久亚洲av无码专区首jn | 午夜一级在线 | 少妇毛片一区二区三区 | 欧美色图自拍 | 已满18岁免费观看电视连续剧 | 99日韩精品 | 黄色小说在线免费观看 | 久久av网址 | 欧美美女在线观看 | av有码在线观看 | 一个色亚洲| 色婷婷国产精品综合在线观看 | 亚洲欧美日韩精品久久亚洲区 | 爽爽淫人 | 有码一区二区三区 | 涩涩屋视频 | 一区二区三区在线视频观看 | 亚洲国产精品成人综合色在线婷婷 | 国产色99 | 国产群p| 天天天天天操 | 雪白的扔子视频大全在线观看 | 五月天婷婷综合 | 欧美精品亚洲精品日韩精品 | www.黄色 | 91涩涩涩 | 亚洲欧美在线成人 | 欧美理论在线观看 | 免费视频久久久 | 国产探花一区二区 | 又污又黄的视频 | 黄色大全免费看 | 好爽又高潮了毛片 | 欧美日韩一区在线观看 | 伊人精品视频在线观看 | 久久刺激 | 淫僧荡尼巨乳(h)小说 | 日韩精品自拍偷拍 | 秋霞av一区二区三区 | 九九热这里只有 | 中文字幕视频在线播放 | 欧美一区二区三区激情视频 | 亚洲综合自拍 | 一级激情片 |