本文由幣乎(bihu.com)內(nèi)容支持計(jì)劃獎(jiǎng)勵(lì)
目前以太坊官方提供了兩種網(wǎng)絡(luò):線上生產(chǎn)網(wǎng)絡(luò)、測(cè)試網(wǎng)絡(luò)。
以太坊生產(chǎn)網(wǎng)絡(luò)就是真正有價(jià)值的?的以太幣運(yùn)行的網(wǎng)絡(luò)。我們使用的以太幣進(jìn)行轉(zhuǎn)賬、支付都是在生產(chǎn)網(wǎng)絡(luò)上進(jìn)行,每一個(gè)操作都需要消耗實(shí)實(shí)在在的ETH。智能合約也是部署在生產(chǎn)網(wǎng)絡(luò)上,智能合約代碼的執(zhí)行調(diào)用都清晰可查,并且可供所有開發(fā)者調(diào)用。
以太坊的測(cè)試網(wǎng)絡(luò)也是官方提供專供用戶來(lái)開發(fā)、調(diào)試和測(cè)試的。但是測(cè)試網(wǎng)絡(luò)的節(jié)點(diǎn)也是全球化的,現(xiàn)在測(cè)試網(wǎng)絡(luò)的區(qū)塊數(shù)量也很大,執(zhí)行速度較慢,不便于開發(fā)、調(diào)試。
下面我們使用Geth安裝自己的以太坊私有網(wǎng)絡(luò) PrivateNetwork。
Geth安裝可以直接到官網(wǎng)下載對(duì)應(yīng)的版本,進(jìn)行安裝:https://ethereum.github.io/go-ethereum/downloads/?
安裝完成后,需要?jiǎng)?chuàng)建私有網(wǎng)絡(luò)的初始狀態(tài),所有節(jié)點(diǎn)都需要了解并達(dá)成一致。新建一個(gè)Json文件如gen.json,文件內(nèi)容如圖所示:

然后執(zhí)行命令初始化節(jié)點(diǎn)?geth init gen.json,可以看到將節(jié)點(diǎn)數(shù)據(jù)寫入了對(duì)應(yīng)的文件夾中,此時(shí)當(dāng)前目錄下面會(huì)新增出兩個(gè)文件夾geth和keystore
geth中用以保存區(qū)塊鏈的相關(guān)數(shù)據(jù)
keystore中保存的是用戶數(shù)據(jù)

使用命令personal.newAccount("xxx"),創(chuàng)造一個(gè)新的用戶,該用戶的密碼是xxx. 測(cè)試使用可以使用123456便于記憶;
輸入命令?eth.accounts, 我們會(huì)看到剛剛創(chuàng)建的新用戶,可以看到已經(jīng)創(chuàng)建了2個(gè)賬戶

至此,我們已經(jīng)成功搭建了一個(gè)私有的ETH網(wǎng)絡(luò)。
最簡(jiǎn)單的智能合約
pragma solidity 0.4.9;
? ? contract AddDemo {
? ? ? ? function add(uint a) returns (uint b)
? ? ? ? {
? ? ? ? ? ? uint result = a + 1;
? ? ? ? ? ? return result;
? ? ? ? }
? ? }
pragma solidity?中pragma是關(guān)鍵字,0.4.19 表示編譯器的版本,從0.4.9起可以在不在前面使用^
contract是關(guān)鍵字,表示合約,和面向?qū)ο缶幊陶Z(yǔ)言中的類Class很像,可以定義變量和方法。?function add(uint a) returns (uint b)就定義了一個(gè)名為add的方法,輸入?yún)?shù)為uint a,輸出參數(shù)為uint b。
Solidity語(yǔ)言是一種類JS的語(yǔ)言,也有構(gòu)造函數(shù)、繼承、抽象類等概念。