區塊鏈學習-開始

我打算整理一下這段時間自學區塊鏈的一些筆記
一開始,學習區塊鏈是從以太坊開始的,這個過程當中看了不少人寫的教程,東學一點西學一點,過程並非十分順利,可是慶幸的是最後仍是摸索出來了不少東西,若是你如今也是剛剛接觸這門技術,可是殊不知道從哪裏入手的話,那就看看我寫的東西吧,應該能幫上些忙

由於我主要的想法就是想要學會怎麼使用它來寫智能合約,因此主要學的是怎麼從頭至尾成功地將本身想實現的東西寫到智能合約上,並部署到區塊鏈中。首先我以最近很火的區塊貓來做爲了本身入門的實例,它的開源代碼你們都能在GitHub上找到
網址是:https://github.com/dapperlabs/cryptokitties-bounty
固然,在這個網址上的代碼truffle的框架格式存儲的,若是你想要在remix-ide等上面運行的話,能夠從這個網址直接複製粘貼便可:
https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code

一開始選擇的是區塊貓cryptokitties,可是後面發現這個遊戲的代碼比較長,我以爲這個加密朋克cryptopunks可能更適合剛入門的人,等到差很少都會了以後,再去看區塊貓cryptokitties效果會更好。(cryptopunks的代碼解釋solidity-cryptoPunks爲實例

固然在正式開始前,我以爲仍是有必要介紹一下一些相關的工具,省得後面用起來,你們不知道是什麼,由於我當時就懵逼了好久.並且要聲明一下下面的內容都是在macOS環境下搭建的。
固然首先要進行環境的安裝——看開始學習前的環境安裝

1. Geth:
Geth是由以太坊基金會提供的官方客戶端軟件,用Go編程語言編寫的,用於部署一個私有鏈,而且配置和使用該私有鏈。詳情能夠看Geth私有鏈配置信息的解釋

2.ganache
ganache與metamask

3. Solidity:
Solidity是用於編寫在以太坊區塊鏈上運行的智能合約的最流行的編程語言。 它是一種高級語言,當編譯轉換爲 EVM 字節碼。 這與 Java 很是類似,其中有諸如 Scala,Groovy,Clojure,JRuby等JVM語言。全部這些編譯都生成在JVM(Java虛擬機)中運行的字節碼。這部分也本身看了文檔作了些筆記,在solidity learning(1)solidity learning(2),可是很亂,我以爲你們仍是要本身去看原文檔。

4.Truffle:
Truffle 和 Embark 是用於開發以太坊 DApps的兩個最經常使用的框架。 它們抽象出在區塊鏈上編譯和部署合同的許多複雜的東西。我本身寫了truffle的簡單使用,可供參考

5. Web3.js:
javascript庫,能夠用來與一個節點進行交互。 因爲它是一個 JavaScript 庫,您可使用它來構建基於Web的dapps。
我使用的版本是web3的版本是0.20.1,筆記是web3js learning,依舊比較亂。如今已經有1.0了,1.0版本的內容與其仍是有些不一樣的,你們要根據本身下載的版本去看相應的文檔,固然,仍是看最新的比較好,後面會再來一個1.0版本的筆記的

7. Remix:
以太坊官方推薦的智能合約開發IDE,適合新手,能夠在瀏覽器中快速部署測試智能合約。
我只給你們介紹我用的,其餘我沒有用過的就不介紹了

就是在網上好多人介紹了不少有關testrpc\guanache\remix-ide等相似代碼部署環境之類的東西,以前就各類很亂,不知道從哪一個下手好,如今我用的最多的是remix-ide,詳情看remix的使用

8.nodejs
這個其實就是在node的環境下運行JavaScript,網上有不少詳細資料,如http://nodejs.cn/api/。
經過使用nodejs的web3模塊來調用區塊鏈的API,還有以前寫的關於部署智能合約的方法有不少,好比使用truffle框架,使用remix-ide等,還有使用nodejs一步步編譯部署的方法——nodejs部署智能合約的方法
若是你想要作一個相似於cryptokitties的網頁來調用本身的智能合約,那麼nodejs是頗有用的,特別要學會裏面的回調——js同步-異步-回調


9.metamask錢包

這個的詳細內容看metamask的使用


10.ERC20/ERC721-165
erc721-165學習

11.而後就能夠去看比較難的cryptokitties代碼了https://github.com/dapperlabs/cryptokitties-bountyjavascript