一、首先请搞清楚几个概念:
1,EVM是一个隔离的轻量级虚拟机环境,以确保区块链数据的一致性和容错性;
2,智能合约由客户端上传到区块链,在矿工的EVM中执行;
3,以太坊采用账户系统、世界状态,而不是UTXO模型,因此,可以直接访问状态查询和变更,存储空间小,易于编程,但也不支持追溯历史,需要处理好重放攻击。综合来说,各有千秋。
4,主要靠Gas限制来降低不稳定合约和DDoS攻击。
5,未来有计划加入PoS共识机制、分片机制和UTXO模型(之后详细论述)。
二、开发常用IDE
Mist 功能齐全的客户端
Geth 用来接入以太坊网络的常用客户端
Truffle 功能丰富的应用开发框架
Embark 支持集成以太坊和IPFS的DApp开发框架
Remix 在线IDE,内置调试和测试环境
三、建议使用命令行安装客户端(ubuntu16.04)
$sudo apt install software-properties-common
$sudo add-apt-repository -y ppa:ethereum/ethereum
$sudo apt update
$sudo apt install ethereum
四、搭建测试用私有链
1,新建gensis.json文件
{
"config": { "chainId": 23, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },
"nonce":"0x0000000000000023",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x400",
"alloc": {},
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"gasLimit":"0x2fefd8" }
chainId指定区块链ID,不同的ID网络的节点无法互相连接
2,启动区块链
生成创世区块和初始状态
$geth --datadir PATH_TO_DATADIR init PATH_TO_GENSIS.JSON
$geth --identity "YOUR_NAME" --rpc --rpcport "DEFAULT_IS_8545" --datadir PATH_TO_DATADIR --port "DEFAULT_IS_30303" --nodiscover console
–nodiscover用来关闭节点发现限制,防止加入有相同初始配置的陌生节点
3,进入js console界面
创建账号
personal.newAccount()
查询余额
eth.getBalance(myaddress)
启动挖矿
miner.start()
终止挖矿
miner.stop()