html通过web3JS 获取当前连接的区块链信息和账号信息

前面 我们讲了 MetaMask和ganache的配置安装 并用 MetaMask管理ganache的启动的虚拟区块链
那么 我们现在也完全可以写一个网页来做这个东西的管理

您可以先查看文章web3.js获取导入做一个导入了 web3的html文件

首先我们可以来试着 获取 自己当前是在哪个区块的
getBlockNumber
当然 你要有本地的区块链 我们还是通过ganache启动起虚拟的环境
然后在网页中编写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src = "./js/web3.min.js"></script>
</head>
<body>
    <script>
        var web3 = new Web3(Web3.givenProvider || "ws://localhost:8545");
        web3.eth.getBlockNumber().then(res =>{
            console.log(res);
        })
    </script>
</body>
</html>

这里 就输出了我们的区块链编号
在这里插入图片描述
如果你是刚起来的环境 自然就是0 如果中间你做过其他操作 可能就会向后退 变成 1 2 3 4 5

我们在运行 ganache 时 会出现一个链id
在这里插入图片描述
web3就可以获取到当前连接的这个链的id
getChainId
我们在网页中编写代码如下

web3.eth.getChainId().then(res =>{
  console.log(res);
})

在这里插入图片描述
这里 就成功将我们的 链id就输出出来了

这里 我们也很确定了 确实是 网页已经连接到了我们本地的区块链

那么 下面我们就来做点有意义的事吧
通过账号 获取用户的ETH数量

你们要自己找方法 可以用文档https://learnblockchain.cn/docs/web3.js/web3-eth.html#getchainid
上面都会有函数演示和说明 但是他这个文档老实说结构做点不是特别清晰 需要耐心去找
在这里插入图片描述
这里 文档跟我们说 需要一个地址 简单说 就是需要账号的公钥
在这里插入图片描述
我们可以这样编写代码

web3.eth.getBalance("0xCA9368CbD09A84457a39E0909Ce9335D15Be81C6").then(res =>{
     console.log(res);
})

0xCA9368CbD09A84457a39E0909Ce9335D15Be81C是我ganache中十个账号中的一个的公钥 这里 你们肯定要自己去 启动的 ganache 环境中去拿一个账号来用
在这里插入图片描述
但是 这东西一输出 我估计大家都麻了 这明显就有问题啊
在这里插入图片描述
其实这个 展示的也没问题 只是一个单位没有转换处理
我不知道 大家对文件单位的转换敏不敏感 这个就差不多 就好比 我们 1024 转 M这个概念是一样的
这里 我们接口返回的单位也是最小的 叫 wei
在这里插入图片描述
其实这个我们直接 除就可以了 但是 我们还是搞正规一点 它有专门的方法

但是先说个题外话 这六个单位 其实你们可以拿名字去查一下 很有纪念意义 他们都是在数学和密码学上很有贡献的人
这个东西的作者还是有心了的
这边很多平台和文档都会说 希望在做计算是 还是 以wei这个单位来处理 只是涉及到展示时才要将他转换成 ether给用户看 方便用户统计处理

我们将代码改成

web3.eth.getBalance("0xCA9368CbD09A84457a39E0909Ce9335D15Be81C6").then(res =>{
  console.log(web3.utils.fromWei(res,"ether"));
})

utils.fromWei 两个参数 第一个 要转换的单位 第二个 要转换成什么点位
运行结果如下
在这里插入图片描述
这样 我们的单位就是之前看到的 1000了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32671.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5.6.1 端口及套接字

5.6.1 端口及套接字 传输层的作用是在通信子网提供服务的基础之上为它的上层也就是应用进程提供端到端的传输服务&#xff0c;通信子网是由用作信息交换的网络节点和通信线路所组成的独立的数据通信系统。它承担着全网的数据传输、转接和加工变换等通信处理工作。如图 通信子网…

stm32f103c8t6移植U8g2

U8g2代码下载&#xff1a; https://github.com/olikraus/u8g2 1&#xff0c;准备一个正常运行的KEIL5 MDK模板 2&#xff0c;下载u8g2的源码和 u8g2的STM32实例模板 源码: https://github.com/olikraus/u8g2 STM32实例模板: https://github.com/nikola-v/u8g2_template_stm32f…

PHP 基础知识

目录 PHP基础 2 PHP代码标记 2 PHP注释 2 PHP语句分隔符 2 PHP变量 3 常量 3 数据类型 4 流程控制 6 文件 7 函数 9 闭包 11 常用系统函数 12 错误处理 13 错误显示设置 15 字符串类型 17 字符串相关函数 19 数组 21 遍历数组 22 数组的相关函数 25 PHP基础 PHP是一种运行在服务…

【Kubernetes资源篇】StatefulSet无状态服务管理入门实战详解

文章目录 一、StatefulSet理论知识1、StatefulSet Pod控制器特性2、什么是有状态服务和无状态服务&#xff1f;3、Deployment和StatefulSet区别 二、案例&#xff1a;StatefulSet资源实战演示1、创建WEB站点并验证StatefulSet特点2、StatefulSet滚动更新 三、总结 一、Stateful…

PSD笔记

在实际应用中&#xff0c;一个信号我们不可能获得无穷长时间段内的点&#xff0c;对于数字信号&#xff0c;只能通过采样的方式获得N个离散的点。上文提到&#xff0c;实际信号基本上是随机信号&#xff0c;由于不可能对所有点进行考察&#xff0c;我们也就不可能获得其精确的功…

Modbus协议学习方法

在刚开始接触modbus协议的时候&#xff0c;很容易被里面的各种功能码搞晕&#xff0c;同时在编写程序的时候也容易搞不清楚每一位数据代表的含义。如果在学习的过程中有实际的发送和接收数据的例子话&#xff0c;那么理解modbus协议就会更容易一些。   下面我将自己借助软件学…

如何用低代码开发平台快速实现单据打印功能?

每家企业在日常工作中&#xff0c;业务流转时&#xff0c;都经常需要在线打印各种纸质文件&#xff0c;如凭证、采购单、出入库单据、销售合同等&#xff0c;不同企业都有个性化的排版要求&#xff0c;每一次需要在固定文档模板的基础上重新填充业务数据&#xff0c;过程中难免…

目前有哪些比较好用的工单系统?如何选择合适的工单管理系统?

目前有哪些比较好用的工单系统&#xff1f;&#xff1f;推荐一个性价比高的“工单管理系统”&#xff1f;好用免费的工单管理软件系统有哪些&#xff1f; 作为一个工程项目管理人员&#xff0c;是离不开工单系统的。每当遇到工程量大的时期要去管理很多杂乱无章的工单可太难了…

搭建selenoid环境

1、拉取浏览器镜像 docker pull selenoid/vnc:chrome_103.02、拉取selenoid-ui容器镜像 docker pull aerokube/selenoid-ui:1.10.43、拉取selenoid容器镜像 docker pull aerokube/selenoid4、编写配置文件 vi /selenoid/config/browsers.json volumes可以做容器路径映射&…

TP composer 新创建一个vendor2,作为新库下载目录

站点目录新建一个vendor2文件夹&#xff1a; 在里面新建一个 composer.json 文件&#xff1a;(只写一个花括号就行) {} 然后这个vendor2目录里&#xff0c;使用宝塔终端执行&#xff1a; composer require zoujingli/ip2region 这样&#xff0c;vendor2目录里就会再多出 v…

java 设计模式--创建者模式

参考&#xff1a;Java常见设计模式总结 概念 概念理解一&#xff1a;将复杂对象的创建过程分解在不同的方法中&#xff0c;不同的创建过程组装成不同对象。对象的创建与产品本身分离开&#xff0c;使得对象的创建过程更加清晰。例如&#xff1a;旅游套餐售卖场景。 一个套餐大…

flutter Android 自定义输出路径 apk名称

默认 Flutter flutter build apk, 是默认的名字 默认的路径&#xff0c;直接修改输出路径 会造成 打包可以&#xff0c;直接运行 会提示找不到 apk 文件&#xff1b; 这里的解决思路是&#xff1a;打包完成后 拷贝目标路径的 APK 到自定义的路径&#xff0c;这样既可以正常打…

Windows软件架构概念

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来聊聊Windows软件架构的概念。 Shaw和Garlan在他们划时代的著作中以如下方式讨论了软件的体系结构&#xff1a;从第一个程序被划分成模块开始&#xff0c;软件系统就有了体系结构。现在&#xff0c…

分布式系统消息通信技术:MOM与RPC

一、中间件 什么是中间件 中间件&#xff08;Middleware&#xff09;是处于操作系统和应用程序之间的软件&#xff0c;也有人认为它应该属于操作系统中的一部分。人们在使用中间件时&#xff0c;往往是一组中间件集成在一起&#xff0c;构成一个平台&#xff08;包括开发平台…

剑指 Offer 55 - I. 二叉树的深度 / LeetCode 104. 二叉树的最大深度(二叉树后序遍历,回溯传递值)

题目&#xff1a; 链接&#xff1a;剑指 Offer 55 - I. 二叉树的深度&#xff1b;LeetCode 104. 二叉树的最大深度 难度&#xff1a;简单 输入一棵二叉树的根节点&#xff0c;求该树的深度。从根节点到叶节点依次经过的节点&#xff08;含根、叶节点&#xff09;形成树的一条…

【框架源码】Spring源码解析之BeanDefinition加载流程解析

观看本文之前&#xff0c;我们先思考一个问题&#xff0c;Spring是如何描述Bean对象的&#xff1f; Spring是根据BeanDefinition来创建Bean对象&#xff0c;BeanDefinition就是Spring中表示Bean定义。BeanDefinition用来存储Bean的相关信息&#xff0c;主要包括&#xff1a;Be…

智能文档图像处理技术应用与实践

写在前面智能文档处理面临的技术难题智能文档处理的研究领域● 文档图像分析与预处理● 手写板反光擦除● 版面分析与文档还原 写在最后 写在前面 VALSE 2023 无锡视觉与学习青年学者研讨会近期在无锡国际博览中心举办&#xff0c;由江南大学和无锡新吴区联合承办。本次会议旨…

企业级ChatGPT开发的三大核心内幕及案例实战(三)

企业级ChatGPT开发的三大核心内幕及案例实战(三) 2.3 Notion 问答对话AI案例演示及源码分析 Gavin老师:NLP_Matrix_Space 如图2-2所示,我们先看一下Notion 问答对话AI案例的效果。你问一个问题,它会进行回答,然后它会告诉你,信息来源在什么地方,要看具体的信息,可以…

生产者与消费者问题

本篇文章我们使用C探讨一下生产者与消费者问题. 1. 多线程的引入 我们学习了操作系统, 知道了进程和线程的概念, 但是如果不进行代码实战的话, 会很难理解它们. 特别是编程的初学者(比如我), 在了解了进程和线程后通常会感到疑惑: 多线程怎么用? 为啥我平时写代码没有使用到…

TCP协议的相关特性

目录 TCP特点概要 TCP协议段格式 TCP原理 确认应答 超时重传 连接管理(三次握手,四次挥手) 三次握手 四次挥手 流水线传输 滑动窗口 滑动窗口ACK丢失 滑动窗口数据报丢失 流量控制 拥塞控制 延迟应答 停止等待协议 回退N帧协议 面向字节流 缓冲区 粘包问题 TCP异常 &…