当前位置:   article > 正文

Remix-ide编写智能合约并在geth部署_remix ide

remix ide

一. GETH环境的启动

执行下面命令来创建自己的私有链条

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通道解锁账户。

二、在remix-ide编写合约并部署

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编写合约代码:

  1. // SPDX-License-Identifier: GPL-3.0
  2. pragma solidity >=0.4.16 <0.9.0;
  3. contract SimpleStorage {
  4. uint storedData;
  5. function set(uint x) public {
  6. storedData = x;
  7. }
  8. function get() public view returns (uint) {
  9. return storedData;
  10. }
  11. }

 7、选择部署环境Custom- External HTTP Provider,这在以前被称为Web3 Provider

 8、选择账户, 在remix-ide可以看到刚才创建的账户

9、部署合约,环境和账户选择后点击【deploy】按钮

10、查看部署的合约,在最下面可以看到刚部署成功的合约,点击set和get按钮可以调用合约

三、在geth终端部署合约

1、在remix-ide里拷贝合约部署代码,步骤如下图:

2、在geth终端粘贴上一步复制的代码就可以,但我在最新版本的remix-ide里复制会报错

后面我把网上别的教程里拷贝的合约代码拿来部署又没问题,代码如下:

  1. 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"}]);
  2. var hello = helloContract.new(
  3. {
  4. from: web3.eth.accounts[0],
  5. data: '0x6060604052341561000f57600080fd5b60b68061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063ab3ae255146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b600080600883029050809150509190505600a165627a7a723058203f6d4f506de85c5287b58705788b98694a2b14b17fd6db0c376260b4a0b5a7a00029',
  6. gas: '4700000'
  7. }, function (e, contract){
  8. console.log(e, contract);
  9. if (typeof contract.address !== 'undefined') {
  10. console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
  11. }
  12. })

部署调用截图如下:

原因可能是geth版本的问题,解决方案,将new web3.eth.Contract 这里改成web3.eth.contract , deploy改成new就没有问题了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/419564
推荐阅读
相关标签
  

闽ICP备14008679号