truffle + infura + web.js 编写编译,以及在测试网络上部署智能合约

infura 是什么?一开始我接触的是Remix 一个网页的IDE并内置编译器(什么编译器,是solc吗?),然后注册了metamask钱包,注册两个账户并获取以太币。

火狐浏览器插件的Metamask上也可以通过新建账户buy,可以得到两个ether。

https://ethtools.com/ropsten/tools/faucet/ 填入地址和申请的数量(不超过5个)后,metamask账户没有受到ether?

http://faucet.ropsten.be:3001/ 从这里可以每次获取一个ether

https://faucet.metamask.io/ 这里可以获取ether

https://infura.io/dashboard 这里创建新项目后就有API key

编写合约,部署脚本,truffle.js 后编译合约

truffle + ganache,develop是truffle 内置的区块链环境;truffle migrate 命令默认部署将合约部署到truffle.js声明网络上。

ganache 原来称为testRPC,一个以太坊客户端,允许连接到特定网络,并监听特定网络上部署的区块链,petshop实例中ganache就是连接到truffle.js 声明的特定网络。ganache本地模拟一个节点,并本地模拟私有链,ganache将合约部署在私有链上,当前私有链上也就只有本地一个节点,此时ganache的用途只能检测到该链上部署智能合约的行为,因为只有本地一个节点,不能和其他节点交易。当智能合约部署到链上时,ganache会自动挖矿。

pet-shop应用中用浏览器插件metamask 导入本地ganache账户,点击Adopt后将会调用智能合约,ganache检测到这笔交易后挖矿并消耗gas,消耗gas的账户余额可以在metamask和ganache上看到。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Truffle框架是一个用于以太坊智能合约开发的开发环境和工具集,Ganache则是一个用于本地测试以太坊智能合约的工具。下面是使用Truffle框架和Ganache网络进行智能合约部署的具体流程和代码。 1. 安装Truffle框架和Ganache网络 首先需要在本地安装Truffle框架和Ganache网络。可以使用npm命令进行安装: ``` npm install -g truffle npm install -g ganache-cli ``` 2. 创建Truffle项目 使用Truffle框架创建一个新的项目: ``` truffle init ``` 这将会在当前目录下创建一个名为`truffle-config.js`的配置文件和一个名为`contracts`的合约目录。 3. 编写智能合约代码 在`contracts`目录下创建一个名为`MyContract.sol`的智能合约文件,并编写合约代码。例如,创建一个简单的存储合约: ``` pragma solidity ^0.8.0; contract MyContract { uint256 private value; function setValue(uint256 newValue) public { value = newValue; } function getValue() public view returns (uint256) { return value; } } ``` 4. 配置Truffle项目 在`truffle-config.js`文件中配置Truffle项目。首先需要指定要使用的网络,这里使用Ganache网络: ``` module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*" } } }; ``` 5. 编译智能合约 使用Truffle框架编译智能合约: ``` truffle compile ``` 6. 部署智能合约 使用Truffle框架部署智能合约: ``` truffle migrate ``` 这将会将智能合约部署到Ganache网络上。 7. 与智能合约交互 现在可以使用Web3.js或其他以太坊客户端库与智能合约进行交互。以下是一个使用Web3.js与上一步中部署的存储合约进行交互的示例代码: ``` const Web3 = require('web3'); const web3 = new Web3('http://localhost:8545'); const myContract = new web3.eth.Contract([{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}], '0x1234567890123456789012345678901234567890'); myContract.methods.setValue(42).send({from: '0x1234567890123456789012345678901234567890'}) .then(() => myContract.methods.getValue().call()) .then(value => console.log(value)); ``` 这段代码首先创建了一个Web3实例,并连接到Ganache网络。然后创建了一个`myContract`实例,它表示上一步中部署的存储合约。最后使用`myContract`实例调用`setValue`方法将值设置为42,并使用`getValue`方法获取当前值并输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值