geth多节点私链,更新后

拥有创世纪文件块后 先进行初始化 
geth --datadir "./你的文件存入地址/" --networkid 556677  init geth.json

networkid 后面是创世纪块里面标注的id

geth.json为创世纪的名字

2.geth --datadir "xtdata" account new 
此命令可以在无需链接console操作台进行账户创建 后续需要输入代码需要牢记

3.编写start.bat 因为启动时需要标记的文件可能为多个,写一个脚本可以省事
以下是我的start.bat的文件 

geth --ethash.cachedir "D:\xt_graduate-paper\code_test" --ethash.dagdir "D:\xt_graduate-paper\code_test\Ethash" --allow-insecure-unlock --unlock=0 --password ./passwd --networkid 556677 --datadir "xtdata" --http --http.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net" --http.corsdomain="*" --http.port=8545 --http.addr="0.0.0.0" --ws --ws.addr "0.0.0.0" --ws.port=8546 --ws.origins "*" --ws.api "admin,debug,web3,eth,txpoo

进行geth私链的硬分叉需要以下步骤: 1. 编写分叉代码:编写一个智能合约,其中包括原始代码以及要执行的新代码。 2. 执行分叉代码:在私链上运行分叉代码,以使节点能够识别新的规则。 3. 更新节点更新参与私链节点,以便它们能够识别新规则并执行新代码。 4. 启动分叉:启动私链以执行硬分叉。 以下是更详细的步骤: 1. 编写分叉代码 首先,你需要编写一个智能合约,其中包括原始代码以及要执行的新代码。在新代码中,你需要指定要执行的新规则。 例如,如果你要创建一个新的代币,你需要指定代币的名称、符号和总量。在这个过程中,你还需要指定新规则的实现方式。 以下是一个创建新代币的示例代码: ``` pragma solidity ^0.4.16; contract MyToken { string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; function MyToken() public { name = "MyToken"; symbol = "MT"; decimals = 18; totalSupply = 1000000 * 10**uint256(decimals); balanceOf[msg.sender] = totalSupply; } event Transfer(address indexed from, address indexed to, uint256 value); function transfer(address _to, uint256 _value) public returns (bool success) { require(balanceOf[msg.sender] >= _value); require(balanceOf[_to] + _value >= balanceOf[_to]); balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(balanceOf[_from] >= _value); require(balanceOf[_to] + _value >= balanceOf[_to]); require(_value <= allowance[_from][msg.sender]); balanceOf[_from] -= _value; balanceOf[_to] += _value; allowance[_from][msg.sender] -= _value; Transfer(_from, _to, _value); return true; } } ``` 在这个示例中,我们创建了一个名为 "MyToken" 的代币,符号为 "MT",小数点为 18,总量为 1000000。 2. 执行分叉代码 接下来,你需要在私链上运行分叉代码,以使节点能够识别新规则。 在这个过程中,你需要将新代码添加到私链中。你可以使用 Remix 或 Truffle 等工具来编译和部署智能合约。 例如,你可以使用以下命令在私链上部署 MyToken 合约: ``` var myToken = web3.eth.contract(abi).new({from:web3.eth.accounts[0], data:bytecode, gas: 3000000}, function(e, contract){ if(!e) { if(!contract.address) { console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined..."); } else { console.log("Contract mined! Address: " + contract.address); console.log(contract); } } }); ``` 执行以上命令后,你应该可以在私链上看到新的代币合约地址。 3. 更新节点 接下来,你需要更新参与私链节点,以便它们能够识别新规则并执行新代码。 在这个过程中,你需要将新代码添加到节点中。你可以使用以下命令将新合约添加到节点中: ``` geth attach ipc:/path/to/geth.ipc var myTokenContract = eth.contract(abi); var myToken = myTokenContract.at("0x123456..."); ``` 在以上命令中,你需要将 abi 和地址替换为你自己的值。 4. 启动分叉 最后,你需要启动私链以执行硬分叉。 你可以使用以下命令启动私链以执行硬分叉: ``` geth -- datadir /path/to/chaindata --networkid 1234 --port 30303 --rpc --rpcport 8545 --rpcaddr 127.0.0.1 --rpcapi "eth,net,web3,personal" --gasprice 0 --nodiscover --maxpeers 0 --unlock 0 --password /path/to/passwordfile.txt --mine --targetgaslimit 4700000 --fork "0x1234567890abcdef" --cache 1024 ``` 在以上命令中,你需要将 datadir、networkid、port、rpcport、rpcaddr、password 和 fork 替换为你自己的值。 这个命令将启动私链并执行硬分叉。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值