搭建以太坊开发环境

以太坊(Ethereum)目标是打造成一个运行智能合约的去中心化平台(Platform for Smart Contract),平台上的应用按程序设定运行,不存在停机、审查、欺诈、第三方人为干预的可能。以太坊平台由 Golang、C++、Python 等多种编程语言实现。
当然,为了打造这个平台,以太坊提供了一条公开的区块链,并制定了面向智能合约的一套编程语言。智能合约开发者可以在其上使用官方提供的工具来开发支持以太坊区块链协议的应用(即所谓的 DAPP)。

源码编译

当前以太坊版本是1.6x,下载源码开始搭建环境吧。

1
2
git clone https://github.com/ethereum/go-ethereum.git
make geth

编译geth在./build/bin目录下

solc编译器

1
2
3
4
5
6
7
8
git clone https://github.com/ethereum/solidity.git
git submodule update --init --recursive

./scripts/install_deps.sh

mkdir build
cd build
cmake .. && make

编译solc在./build/solc目录下

启动以太坊

创建查看用户

1
2
geth --datadir data account new
geth --datadir data account list

更新解锁用户

1
geth --datadir data account update

启动

1
geth --datadir data console

自能合约

编写hello world示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
contract mortal {
/* Define variable owner of the type address*/
address owner;

/* this function is executed at initialization and sets the owner of the contract */
function mortal() { owner = msg.sender; }

/* Function to recover the funds on the contract */
function kill() { if (msg.sender == owner) suicide(owner); }
}

contract greeter is mortal {
/* define variable greeting of the type string */
string greeting;

/* this runs when the contract is executed */
function greeter(string _greeting) public {
greeting = _greeting;
}

/* main function */
function greet() constant returns (string) {
return greeting;
}
}

编译

1
2
3
4
5
solc --optimize --combined-json abi,bin,interface helloworld.sol

or

echo "var testOutput=`solc --optimize --combined-json abi,bin,interface helloworld.sol`" > test.js

登录console,解锁用户。使用之前创建用户的密码

1
personal.unlockAccount(address, "password")

未完待续…