以太坊day(4)

2023-11-05

一、遇见的错误

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以太坊day(4) 的相关文章

  • linux两台服务器互相备份文件(sshpass + crontab)

    crontab crontab是linux系统自带的定时调度软件 可用于设置周期性被执行的指令 一般用在每天的非高峰负荷时间段运行作业 可在无需人工干预的情况下运行作业 支持在一周或一月中的不同时段运行 crontab命令允许用户提交 编辑

随机推荐

  • Java 大后端各种架构图汇总

    国产 Star 破 10w 的开源项目 前端包括管理后台 微信小程序 后端支持单体和微服务架构 功能涵盖 RBAC 权限 SaaS 多租户 数据权限 商城 支付 工作流 大屏报表 微信公众号等等功能 Boot 项目地址 https gite
  • c++ uml时序图

    时序图 通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作 时序图和流程图的区别 时序图强调对象之间的交互与时序关系 流程图则是针对一个过程或者活动进行全面而细致的展开 时序图主要描绘多个对象之间的复杂关系 流程图通常描述单一对象
  • Windows11 安装与完全卸载 Anaconda

    文章目录 1 安装 Anaconda 1 1 下载 1 2 安装 1 3 配置环境变量 1 4 检查是否安装成功 2 完全卸载 Anaconda 1 安装 Anaconda 1 1 下载 Anaconda 官网链接 https www an
  • jk触发器改为四进制_异步计数器

    异步计数器 计数器的分类 异步 二进制 十进制 74290 数电 这一节介绍异步二进制计数器 计数器功能 计数器是对输入脉冲个数进行计数的时序电路 计数器除了直接用于计数外 还可以用于实现定时器 分频器 程序控制器 信号发生器等时序电路 是
  • 操作系统实验页面调度(内含可运行C/C++代码)

    更新了 更新了 都支楞起来 一 实验内容及要求 首先 生成一个随机的页面引用串 其中页码的范围为0 9 将这个随机页面引用串应用到每个算法 记录每个算法引起的缺页次数 列出每次页面置换的换出页序号 计算缺页率 系统分配给用户的页面帧的数量可
  • MySQL锁 脑图

    学习MySQL锁 时做的脑图 记个笔记
  • 软件开发过程中的思维方式 -- 如何分析问题

    这是 ZY 第 16 篇原创技术文章 今天这篇文章不谈技术 想聊聊软件开发过程中的一些思维方式 以及如何去深入挖掘问题的核心 如何去看清问题的本质 一 分析问题的重要性 我们在软件开发过程中 往往会遇到很多问题 不管是对需求合理性的探讨 还
  • 百度旋转验证码识别方案

    废话不多说 直接上代码 需要看识别效果的小伙伴可以直接访问这里 https www detayun cn tool verifyCodeHomePage 1679620548194 代码如下 author dengxinyan import
  • vue 实现图片懒加载

    一 懒加载的目的 有些页面可能展示的是大量的图片 如果我们一次性加载所有图片就会浪费性能 影响用户体验 所以我们就会懒加载这些图片 即可视区域之外的图片不加载 随着页面的滚动 图片进入可视区域 则触发图片的加载显示 优点 页面加载速度快 用
  • SSM 框架原理简介及解析

    简介 ssm框架就是标准的MVC模式 标准的SSM框架有四层 分别是dao层 service层 controller层和View层 使用spring实现业务对象管理 使用spring MVC负责请求的转发和视图管理 mybatis作为数据对
  • 2023最新版本Pycharm安装教程【2023.1.3】

    前言 本文方法可以安装使用截止当前2023 1 3最新版本Pycharm 过程非常简单 按照下面的步骤来一分钟即可搞定 1 下载安装 已经安装过的可以跳过该步骤 下载 到官网地址下载正版安装包JetBrains Pycharm官网下载地址
  • android手机相册多张上传,一键批量上传手机照片到QQ相册功能 节省手机流量

    十一双假期刚刚结束 无论回家还是出游 不管是家里的庭院小景还是一路上的美景扑面 你一定会拿起手机不断按下快门 记录每一个美的瞬间 如今长假归来 我们都希望能够马上和好友一起分享假期的美景趣事 可是 手机中照片数量太多 如何才能实现快速又便捷
  • Nuget配置修改-globalPackagesFolder(默认包存放位置)

    环境 nuget windows2010 nuget默认的全局包下载地址一般为 C Users username nuget packages 项目多了之后 nuget下载的包就回慢慢的变多 导致c盘被大量占用 这时候我们想要将nuget的
  • (三-3)机器学习中调参的基本思想+随机森林+实例(共3小节,文章代码即文章中所有的代码)

    通过画学习曲线 或者网格搜索 我们能够探索到调参边缘 代价可能是训练一次模型要跑三天三夜 但是在现实中 高手调参恐怕还是多依赖于经验 而这些经验 来源于 1 非常正确的调参思路和方法 2 对模型评估指 标的理解 3 对数据的感觉和经验 4
  • HEVC 编解码资源

    资料 overview 等 csvt系列详见HHI主页 适合 入门 Encoder Description 适合入门 Recommendation H 265 pdf 2016 12 22 标准文档 适合 提高 解码 High Effici
  • 订单管理系统功能

    订单管理系统的工作流程是首先对客户的订单信息进行接收 然后对订单进行处理 及时掌握交易动态 在有突发状况发生时及时反馈 订单管理系统是物理管理系统中不可缺少的一部分 商淘云跟您分享一般的订单管理系统有哪些功能 1 业务流程管理 包括订单管理
  • 程序员屌丝逆袭之路不是炒股

    最近这一段时间 你身边是不是大多数人都在谈论股票 那就对了 无论走到哪都能听到 今天又绿了 我的股票跌停了 冲上5000点啦 等等之类的话 我还不是一个股民 一直都不是 因为不懂 不敢入市 因为有人跳楼 害怕入市 最主要的原因是 因为手里没
  • 3.30 OrCAD中原理图文件怎么进行DRC检测?

    笔者电子信息专业硕士毕业 获得过多次电子设计大赛 大学生智能车 数学建模国奖 现就职于南京某半导体芯片公司 从事硬件研发 电路设计研究 对于学电子的小伙伴 深知入门的不易 特开次博客交流分享经验 共同互勉 全套资料领取扫描文末二维码 温馨提
  • 如何判断用户是否已关注公众号

    一 微信公众平台配置 1 获取appid appsecret 添加白名单 登录微信公众平台 进入基本配置 开发中需要用到两个参数 appId和appSecret appSecret只展示一次 需保存下来 否则需要重置获取 获取access
  • 以太坊day(4)

    以太坊day 4 一 遇见的错误 1 1 Error Invalid JSON RPC response 二 goland上进行合约的开发 2 1 需要的源 2 2 合约文件 2 3 编译合约 2 4 部署合约 2 5 获取合约实例 2 6