以太坊day(3)
2021/10/30 23:14:34
本文主要是介绍以太坊day(3),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
以太坊day (4)
- 一、遇见的错误
- 1.1 Error: Invalid JSON RPC response:
- 二、goland上进行合约的开发
- 2.1 需要的源
- 2.2 合约文件
- 2.3 编译合约
- 2.4 部署合约
- 2.5 获取合约实例
- 2.6 与合约进行交互
- 2.7 查看交易详细的应用
- 三、部署到真实的网络
- 3.1 所需的数据
- 3.2 服务商,infura
- 3.3 安装依赖
- 3.4 设置provider
一、遇见的错误
1.1 Error: Invalid JSON RPC response:
- 原因:端口号填错
7545不是8545
web3.setProvider('HTTP://127.0.0.1:7545');
二、goland上进行合约的开发
2.1 需要的源
2.2 合约文件
pragma solidity ^0.4.26; contract hello{ string public name = "jack"; function getName() public view returns (string){ return name; } function steNamt(string myname) public { name = myname; } }
2.3 编译合约
let solc = require('solc') let fs = require('fs') let sourcecode = fs.readFileSync('./contracts/helloname.sol','utf-8') //console.log(sourcecode.toString()) let output = solc.compile(sourcecode, 1) //console.log(output['contracts']) module.exports = output['contracts'][':hello']
2.4 部署合约
let {bytecode, interface} = require("./compile") let Web3 = require("web3") // console.log('bytecode:',bytecode) // console.log('interface:',interface) const account = "0xD5fFa32A808970FAb637AeE4ca70e00888B3e4D8" let web3 = new Web3(); console.log("版本:",web3.version) //1.设置网络 web3.setProvider('HTTP://127.0.0.1:7545'); //console.log(web3.providers) //产看当前的currentProvider //console.log(web3.currentProvider) //2.拼接合约数据 let contract = new web3.eth.Contract(JSON.parse(interface)) //console.log("自己的contract:",contract) web3.eth.defaultAccount = account; //设置默认的账户 console.log(web3.eth.defaultAccount) console.log(contract.defaultBlock) // //3.拼接bytecode contract.deploy({ data:bytecode, arguments: ["success"] }) .send({ from: account, gas: 5721975, gasPrice: '300000000000' }) .then(function(newContractInstance){ //newContractInstance.options.address 得到的是新的合约的地址 console.log(newContractInstance.options.address) // instance with the new contract address });
2.5 获取合约实例
//获取合约实例 let Web3 = require('web3') let web3 = new Web3() let {bytecode, interface} = require('./compile') let contractAddress = require('./deploy') console.log(interface) console.log(contractAddress) //根据api和address得到合约实例 let contracInstance = new web3.eth.Contract(JSON.parse(interface), contractAddress) console.log(contracInstance)
2.6 与合约进行交互
//1.获取合约实例 let contractInstance = require('./instance') const from = '0xC8147B0093339470dA5aaF4DFF643815c4adA893' contractInstance.methods.getName().call().then(result =>{ //1.读取到合约的结果 console.log("得到的结果:",result) //2.设置合约的变量值 contractInstance.methods.setName("currentJack").send({ from:from, value:0}).then(res =>{ console.log(res) //3.得到新的合约的值 contractInstance.methods.getName().call().then(res=>{ console.log("得到修改后的结果", res) }) }) })
2.7 查看交易详细的应用
ganache
进去后点quick start
三、部署到真实的网络
3.1 所需的数据
- 助记词,花费谁的钱
- 服务商,帮助我们连接到真实的网络
infura - npm包,接受两个参数,然后帮我们链接到对应的网络
npm install truffle-hdwallet-provider
3.2 服务商,infura
- 记得选择ropsten
3.3 安装依赖
- npm install truffle-hdwallet-provider
3.4 设置provider
//1.合约的地址 let Web3 = require('web3') let contractAddres = "合约的地址" let {bytecode,interface} = require('./compile') //console.log("得到的interface",interface) let web3 = new Web3() let THP = require('truffle-hdwallet-provider') let terms = '账户的助记词' //2.得到服务商网址 let netip = 'infura创建的项目的url' let provider = new THP(terms, netip) web3.setProvider(provider) //console.log(web3.currentProvider) //3.根据合约地址和api得到合约的实例 let contractInstance = new web3.eth.Contract(JSON.parse(interface),contractAddres) //console.log("合约的实例",contractInstance) module.exports = contractInstance
这篇关于以太坊day(3)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)