主页 > imtoken钱包转usdt > 使用 truffle 与以太坊平台交互

使用 truffle 与以太坊平台交互

imtoken钱包转usdt 2023-04-04 07:25:46

今天研究了一个上午truffle和以太坊平台的交互,终于搞定了,所以做个笔记。 备忘(truffle与以太坊私链的交互)

1.首先启动geth客户端,使用如下命令

>./geth --datadir "./chaintest" --networkid 314590 --port 61910 --rpc --rpcapi "web3,eth,net" --rpccorsdomain "*" --rpcport 8200 控制台

将合约部署到私链时需要注意:geth启动节点时,必须有--rpcapi选项,选项的值必须包含“web3”、“eth”、“ “网”。 另外,为了保证启用rpc,还必须有--rpc等一系列参数。

客户端启动后,如果是新客户端,需要为客户端创建1-2个账号,方便测试。 创建新账户的命令如下:

>personal.newAccount("123456"); //其中123456是账​​户密码

如果客户已经有账户,我们解锁账户,这样就可以在私有链上部署智能合约了,因为部署合约时默认是使用第一个账户进行操作,所以我们只需要解锁第一个账户. 解锁命令如下:

>personal.unlockAccount(eth.accounts[0],密码,1000*60*60); //第三个参数是账户被锁多久,我们可以设置的长一些,这里是60分钟

2.启动geth客户端后,我们来构建一个truffle项目。 前提是你的机器上已经安装了truffle。 我在linux上测试过,系统是centos7

>mkdir 松露3

>cd 松露3

>truffle init //这条命令后truffle会自动在truffle3目录下建立一个truffle工程,格式如下

以太坊开发者平台_以太坊最早在哪个平台交易_以太坊 平台

这是编译后的目录结构。 其实刚创建完以太坊 平台,我在这个目录下标出的四个文件

删除contracts目录下除Migrations.sol外的其他两个文件。 当然,您也可以保留它们。 这里我们使用自己编写的智能合约进行测试。 Migrations.sol文件在迁移的时候需要用到,所以保留。 添加Greeter.sol文件。内容如下

pragma solidity ^0.4.11;
contract Greeter
{

以太坊开发者平台_以太坊最早在哪个平台交易_以太坊 平台

address creator; string greeting; function Greeter(string _greeting) public { creator = msg.sender; greeting = _greeting; } function greet() constant returns (string) { return greeting; } function setGreeting(string _newgreeting) { greeting = _newgreeting;

以太坊开发者平台_以太坊最早在哪个平台交易_以太坊 平台

} /********** Standard kill() function to recover funds **********/ function kill() { if (msg.sender == creator) suicide(creator); // kills this contract and sends remaining funds back to creator } }

修改migrations目录下的2_deploy_contracts.js文件如下:

var Greeter = artifacts.require("./Greeter.sol");

以太坊最早在哪个平台交易_以太坊 平台_以太坊开发者平台

module.exports = function(deployer) { deployer.deploy(Greeter); };

修改truffle3下的truffle.js内容如下:

module.exports = {
  rpc: {
    host:"localhost",
    port:8200
  },
  networks: {
    development: {
      host: "localhost",
      port: 8200,
      network_id: 314590 // Match any network id
    }
  }

以太坊开发者平台_以太坊 平台_以太坊最早在哪个平台交易

};

这里rpc-port是geth客户端启动时的端口号,networks-development-network_id是geth客户端启动时的networkid。

设置好后就可以编译了

> 编译

松露编译

编译后会出现如上目录结构

> 部署

松露迁移

执行部署操作后,返回geth客户端进行挖矿操作 miner.start();admin.sleepBlocks(13);miner.stop();

挖矿成功后,智能合约部署在以太坊私链上

然后我们在geth客户端上测试

> var abi = [{"constant": false,"inputs": [],"name": "kill","outputs": [],"payable": false,"type": "function"},{"constant": false,"inputs": [{"name": "_newgreeting","type": "string"}],"name": "setGreeting","outputs": [],"payable": false,"type": "function"},{"constant": true,"inputs": [],"name": "greet","outputs": [{"name": "","type": "string"}],"payable": false,"type": "function"},{"inputs": [{"name": "_greeting","type": "string"}],"payable": false,"type": "constructor"}]
undefined
> 
> 
> var address = "0x231485032a7159202382515d4f90baef00ef9cdb";
undefined

以太坊最早在哪个平台交易_以太坊开发者平台_以太坊 平台

> > var greeter = web3.eth.contract(abi).at(address); undefined > greeter.setGreeting("Hello world!",{from : eth.accounts[0]}); INFO [09-12|16:09:43] Submitted transaction fullhash=0x54dd41fde0b5fa8b362713568ef2eddfea3d9075759376dbc0e6de22106a4d8e recipient=0x231485032a7159202382515d4f90baef00ef9cdb "0x54dd41fde0b5fa8b362713568ef2eddfea3d9075759376dbc0e6de22106a4d8e" > > miner.start();admin.sleepBlocks(13);miner.stop(); > var aaa = greeter.greet(); undefined > console.log(aaa); Hello world! undefined >

部署时遇到的问题以太坊 平台,截图如下:

以太坊最早在哪个平台交易_以太坊 平台_以太坊开发者平台

Exceeds block gas limit 是指超过了区块的最大gas limit,将genesis文件中的gas limit参数改大即可。