以太坊私有链简易部署过程

一、首先请搞清楚几个概念:
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()

你可能感兴趣的:(区块链)