赞
踩
执行下面命令来创建自己的私有链条
geth --http --http.corsdomain="https://remix.ethereum.org" --http.api web3,eth,debug,personal,net --vmdebug --datadir testNet --dev --rpc.enabledeprecatedpersonal --allow-insecure-unlock console 2>> test.log
--rpc.enabledeprecatedpersonal 参数不加会在解锁的时候报错:
--allow-insecure-unlock参数不加,当执行personal.unlockAccount()或在程序中调用personal_unlockAccount接口时会报下面的错:
可能是出于安全考虑,默认禁止了HTTP通道解锁账户。
1、创建账户,在geth客户端执行下面命令:
personal.newAccount("123456")
2、查看所有账户:
eth.accounts
3、部署前先解锁账户,不然会报错,命令如下 :
personal.unlockAccount(eth.accounts[1],"123456")
报错信息如下:
4、给新账户转账
eth.sendTransaction({from: '0x789b05d6ebaeb38d81070fb7c7a07473fc4dcc9d', to: '0xb2a3646fb56b341b739bfef5b47afabdb0522dad', value: web3.toWei(99, "ether")})
5、查看账户余额
eth.getBalance(eth.accounts[1])
6、在remix-ide编写合约代码:
- // SPDX-License-Identifier: GPL-3.0
- pragma solidity >=0.4.16 <0.9.0;
-
- contract SimpleStorage {
- uint storedData;
-
- function set(uint x) public {
- storedData = x;
- }
-
- function get() public view returns (uint) {
- return storedData;
- }
- }
7、选择部署环境Custom- External HTTP Provider,这在以前被称为Web3 Provider
8、选择账户, 在remix-ide可以看到刚才创建的账户
9、部署合约,环境和账户选择后点击【deploy】按钮
10、查看部署的合约,在最下面可以看到刚部署成功的合约,点击set和get按钮可以调用合约
1、在remix-ide里拷贝合约部署代码,步骤如下图:
2、在geth终端粘贴上一步复制的代码就可以,但我在最新版本的remix-ide里复制会报错
后面我把网上别的教程里拷贝的合约代码拿来部署又没问题,代码如下:
- var helloContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"main","outputs":[{"name":"b","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]);
- var hello = helloContract.new(
- {
- from: web3.eth.accounts[0],
- data: '0x6060604052341561000f57600080fd5b60b68061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063ab3ae255146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b600080600883029050809150509190505600a165627a7a723058203f6d4f506de85c5287b58705788b98694a2b14b17fd6db0c376260b4a0b5a7a00029',
- gas: '4700000'
- }, function (e, contract){
- console.log(e, contract);
- if (typeof contract.address !== 'undefined') {
- console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
- }
- })
部署调用截图如下:
原因可能是geth版本的问题,解决方案,将new web3.eth.Contract 这里改成web3.eth.contract , deploy改成new就没有问题了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。