主页 > imtoken2.0钱包下载 > 下一篇文章 02. 在私有以太坊网络上部署智能合约

下一篇文章 02. 在私有以太坊网络上部署智能合约

imtoken2.0钱包下载 2023-12-16 05:08:18

文章目录 web3.js 常用操作命令下一篇02. 私有以太坊网络部署智能合约

前言

操作系统:MacBook Pro(16 英寸,2019 年)

Geth 版本:1.10.8-稳定

一、为什么要用私链

在以太坊公链上部署智能合约需要以太币发起交易。 通过修改配置,可以在本地搭建一条私有的以太坊链,因为它与公链无关,即不同步公链的庞大数据,不需要花钱购买以太坊,满足智能合约的开发和测试。 需求,开发的智能合约也可以方便的切换部署到以太坊公链上。

2.需要安装的开源工具和语言

brew install go

brew tap ethereum/ethereum
brew install ethereum

brew install solidity

3.建立私有链初始化创世节点,设置数据目录创建创世区块配置文件genesis.json文件

genesis.json 是 Geth 工具用来创建创世块和区块链的配置文件。 genesis.json 不是创世块本身

{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5ddf8f3e",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x00002",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": { },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

通过genesis.json初始化Genesis节点,设置数据目录:

geth init "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/genesis.json" --datadir "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/data2"

/Users/jingbao/IdeaProjects/smart-contract/privateDemo/genesis.json 这是我存放genesis.json的地方,别忘了替换你的地址

使用geth加载

geth --datadir "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/data2" --ws --ws.api "eth,web3,miner,admin,personal,net,txpool" --ws.origins "*" --rpc --rpcapi "eth,web3,miner,admin,personal,net,txpool" --rpcport "8545" --rpccorsdomain "*" --nodiscover --networkid 15 --allow-insecure-unlock --ipcpath ~/Library/Ethereum/geth.ipc

摘要中的一些参数解释如下:

详见官方文档

该命令以服务的形式持续运行。 需要再打开一个命令行窗口搭建私有以太坊节点,输入

geth attach rpc:~/Library/Ethereum/geth.ipc

这是一个交互式的JavaScript执行环境搭建私有以太坊节点,可以在其中执行JavaScript代码,其中>是命令提示符,一些用来操作以太坊的JavaScript对象也在这个环境中搭建,可以直接使用这些对象。 主要包括:

web3.js常用操作命令

web3.js中文文档

获取所有当前账户

> eth.accounts
["0x88d2a3c6575dc35e9014fd13f530dd326b254399", "0xa22be3a54be02c0a57bc23af3295099a0a06e2ab", "0xdd482f7cc5a3ced6a29bed498309f4d0ebad39f4"]

或者

> personal.listAccounts
["0x88d2a3c6575dc35e9014fd13f530dd326b254399", "0xa22be3a54be02c0a57bc23af3295099a0a06e2ab", "0xdd482f7cc5a3ced6a29bed498309f4d0ebad39f4"]

创建账户

personal.newAccount("my pasword")

eth.getBalance(eth.accounts[0])

相当于

eth.getBalance("0x88d2a3c6575dc35e9014fd13f530dd326b254399")

矿业

开始挖矿

miner.start();

停止挖矿

miner.stop();

账户转账

personal.unlockAccount(eth.accounts[0])

输入密码并按回车

amount = web3.toWei(1,"ether")

eth.sendTransaction({from:personal.listAccounts[0],to:personal.listAccounts[1],value:amount})

查看当前待定

txpool.status

或者

eth.getBlock("pending")