当前位置: 首页 > news >正文

ERC20查询操作--获取ERC20 Token的余额

获取ERC20 Token的余额

https://blog.csdn.net/wypeng2010/article/details/81362562

  • 通过REST查询
curl -X POST --data-binary '{"jsonrpc":"2.0","method":"eth_call","params":[{"from": "0x954d1a58c7abd4ac8ebe05f59191Cf718eb0cB89","to": "0xee8e2882e07f89685430c27e2f77636b08df3c81","data": "0x70a08231000000000000000000000000954d1a58c7abd4ac8ebe05f59191Cf718eb0cB89"},"latest"],"id":1}' -H 'content-type: application/json;' http://127.0.0.1:18545{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000143127b10e822e2cbd2000000"}
  • 在geth console中查询

http://cw.hubwiz.com/card/c/web3.js-1.0/1/2/25/

> 
> eth.call({from:"0x954d1a58c7abd4ac8ebe05f59191Cf718eb0cB89", to:"0xee8e2882e07f89685430c27e2f77636b08df3c81", data:"0x70a08231000000000000000000000000954d1a58c7abd4ac8ebe05f59191Cf718eb0cB89"})
"0x000000000000000000000000000000000000000143127b10e822e2cbd2000000"
> 

关于ERC20 标准的解析

https://www.jianshu.com/p/a5158fbfaeb9

  • //代币名字
    function name() constant returns (string name) //代币简称
    function symbol() constant returns (string symbol)//支持几位小数点后几位, balanceOf返回的值除以此值才是真正的余额
    function decimals() constant returns (uint8 decimals)//发行代币的总量
    function totalSupply() constant returns (uint256 totalSupply)//输入地址,可以获取该地址代币的余额。
    function balanceOf(address _owner) constant returns (uint256 balance)//调用transfer函数将自己的token转账给_to地址,_value为转账个数
    function transfer(address _to, uint256 _value) returns (bool success)//--------------------------------------------
    //批准_spender账户从自己的账户转移_value个token。可以分多次转移。
    function approve(address _spender, uint256 _value) returns (bool success)//与approve搭配使用,approve批准之后,调用transferFrom函数来转移token。
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success)//返回_spender还能提取token的个数。
    function allowance(address _owner, address _spender) constant returns (uint256 remaining)//approve、transferFrom及allowance解释:
    //账户A有1000个ETH,想允许B账户随意调用100个ETH。
    //A账户按照以下形式调用approve函数approve(B,100)。
    //当B账户想用这100个ETH中的10个ETH给C账户时,
    //则调用transferFrom(A, C, 10)。这时调用allowance(A, B)
    //可以查看B账户还能够调用A账户多少个token。
    
  • 常用函数的 hash

18160ddd -> totalSupply()
70a08231 -> balanceOf(address)
dd62ed3e -> allowance(address,address)
a9059cbb -> transfer(address,uint256)
095ea7b3 -> approve(address,uint256)
23b872dd -> transferFrom(address,address,uint256)

自己计算

>>> from ethereum.utils import *
>>> 
>>> sha3('name()').encode('hex')[:4*2]
'06fdde03'
>>> 
>>> sha3('symbol()').encode('hex')[:4*2]
'95d89b41'
>>> 
>>> 
>>> sha3('decimals()').encode('hex')[:4*2]
'313ce567'
>>> 
>>> 
>>> sha3('totalSupply()').encode('hex')[:4*2]
'18160ddd'
>>> 
>>> sha3('balanceOf(address)').encode('hex')[:4*2]
'70a08231'
>>> 
>>> 
>>> sha3('allowance(address,address)').encode('hex')[:4*2]
'dd62ed3e'
>>> 
>>> 
>>> sha3('transfer(address,uint256)').encode('hex')[:4*2]
'a9059cbb'
>>> 
>>> 
>>> sha3('approve(address,uint256)').encode('hex')[:4*2]
'095ea7b3'
>>> 
>>> 
>>> sha3('transferFrom(address,address,uint256)').encode('hex')[:4*2]
'23b872dd'
>>> 
>>> 
  • 获取 symbol
> 
> eth.call({from:"0x954d1a58c7abd4ac8ebe05f59191Cf718eb0cB89", to:"0xee8e2882e07f89685430c27e2f77636b08df3c81", data:"0x95d89b41"})
"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003424a430000000000000000000000000000000000000000000000000000000000"
  • 获取小数位数

    > eth.call({from:"0x954d1a58c7abd4ac8ebe05f59191Cf718eb0cB89", to:"0xee8e2882e07f89685430c27e2f77636b08df3c81", data:"0x313ce567"})
    "0x0000000000000000000000000000000000000000000000000000000000000012"
    > 

关于字符串的解码

//以下是 python3from eth_utils import to_bytesencoded = to_bytes(hexstr="0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000067374617475730000000000000000000000000000000000000000000000000000")from eth_abi import decode_abidecoded = decode_abi(['string', 'uint256'], encoded)assert decoded == (b'status', 12)
//使用python2实现def my_to_bytes(hexstr='0x234234'):return hexstr.replace('0x', '').decode('hex')def decode_abi_string(data):passdef ceil32(x: int) -> int:return x if x % 32 == 0 else x + 32 - (x % 32)def encode_string(text):b = text.encode('hex')padded_value = b.ljust(ceil32(b), '0') #右补0encode_size = hex(len(b))[2:].replace('L', '').rjust(64, '0')0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000

相关文章:

ERC20查询操作--获取ERC20 Token的余额

获取ERC20 Token的余额 https://blog.csdn.net/wypeng2010/article/details/81362562 通过REST查询 curl -X POST --data-binary {"jsonrpc":"2.0","method":"eth_call","params":[{"from": "0x954d1a58c7a…...

Linux运维:MySQL中间件代理服务器,mycat读写分离应用实验

Mycat适用的场景很丰富,以下是几个典型的应用场景: 1.单纯的读写分离,此时配置最为简单,支持读写分离,主从切换 2.分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片 3.多租户应…...

css文字自适应宽度动态出现省略号...

前言 在列表排行榜中通常会出现的一个需求:从左到右依次是名次、头像、昵称、徽标、分数。徽标可能会有多个或者没有徽标,徽标长度是动态的,昵称如果过长要随着有无徽标进行动态截断出现省略号。如下图布局所示(花里胡哨的底色是…...

边缘计算盒子_B100_Jetson Nano (aarch64)开发环境搭建

目录 一、刷机步骤1、搭建刷机环境2、进入刷机模式3、开始刷机 二、系统迁移到TF卡 或者 U盘1、迁移脚本2、提前插入U盘或者TF卡3、 开始迁移 三、搭建miniconda 环境1、下载安装 四、jetpack开发套件环境1、版本查看2、apt 更换国内源3、安装Jetson-stats管理工具 一、刷机步骤…...

【Superset】dashboard 自定义URL

URL设置 在发布仪表盘(dashboard)后,可以通过修改看板属性中的SLUG等,生成url 举例: http://localhost:8090/superset/dashboard/test/ 参数设置 以下 URL 参数可用于修改仪表板的呈现方式:此处参考了官…...

【Linux网络】IP协议{初识/报头/分片/网段划分/子网掩码/私网公网IP/认识网络世界/路由表}

文章目录 1.入门了解2.认识报头3.认识网段4.路由跳转相关指令路由 该文诸多理解参考文章:好文! 1.入门了解 用户需求:将我的数据可靠的跨网络从A主机送到B主机 传输层TCP:由各种方法(流量控制/超时重传/滑动窗口/拥塞…...

香蕉派BPI-Wifi6迷你路由器公开发售

Banana Pi BPI-Wifi6 Mini 公开发售。 Banana Pi BPI-Wifi6 Mini 开源路由器采用Triductor TR6560 TR5220 wifi SOC设计,是一款迷你尺寸的wifi6路由器解决方案。内置高性能双核ARM Cortec A9处理器用于WIFI报文转发或智能业务处理,内置高性能LSW和硬件N…...

WPF-控件样式设置

1、控件样式设置 1.1、内嵌式为相同控件设置样式 <Window.Resources><Style TargetType"Button"><Setter Property"Background" Value"Yellow"></Setter><Setter Property"Width" Value"60"&g…...

C++20中的指定初始化器(designated initializers)

指定初始化器(designated initializers, 指定初始值设定项)语法如下&#xff1a;C风格指定初始化器语法&#xff0c;初始化数据成员的一种便捷方式 T object { .des1 arg1, .des2 { arg2 } ... }; T object { .des1 arg1, .des2 { arg2 } ... }; 说明&#xff1a; 1.每个指…...

QT跨平台开发(windows、mac)中.pro文件设置

方法一&#xff1a; 在配置前面加上平台标识符的前缀 # windows win32:INCLUDEPATH F:/Dev/ffmpeg-4.3.2/include win32:LIBS -LF:/Dev/ffmpeg-4.3.2/lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswscale \-lswresample# mac macx:INCLUD…...

wifi中的stream parser

在Wi-Fi系统中&#xff0c;流解析器&#xff08;Stream Parser&#xff09;的主要功能是将传输的数据流&#xff08;bit stream&#xff09;按照物理层&#xff08;PHY&#xff09;和媒体访问控制层&#xff08;MAC&#xff09;协议的要求进行分解和处理。这一步骤对于确保数据…...

GitHub网页打开慢的解决办法

有时候看资料絮叨github网页打不开&#xff0c;经百度后&#xff0c;发下下面的方法有效。 1&#xff09;获取github官网ip 我们首先要获取github官网的ip地址&#xff0c;方法就是打开cmd&#xff0c;然后ping 找到github的地址&#xff1a;20.205.243.166 2&#xff09;配…...

前端vue 实现取色板 的选择

大概就是这样的 一般的web端框架 都有自带的 的 比如 ant-design t-design 等 前端框架 都是带有这个的 如果遇到没有的我们可以自己尝试开发一下 简单 的 肯定比不上人家的 但是能用 能看 说的过去 我直接上代码了 其实这个取色板 就是一个input type 是color 的input …...

[leetcode]partition-list 分隔链表

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:ListNode* partition(ListNode* head, int x) {ListNode *smlDummy new ListNode(0), *bigDummy new ListNode(0);ListNode *sml smlDummy, *big bigDummy;while (head ! nullptr) {if (head->val &l…...

Apache功能配置:访问控制、日志分割; 部署AWStats日志分析工具

目录 保持连接 访问控制 只允许指定ip访问 拒绝指定主机其他正常访问 用户授权 日志格式 日志分割 操作步骤 使用第三方工具cronolog分割日志 AWStats日志分析 操作步骤 访问AwStats分析系统 保持连接 Apache通过设置配置文件httpd-default.conf中相关的连接保持参…...

开源可视化Flutter图表库:Graphic

Graphic&#xff1a;用Graphic绘制数据的无限可能- 精选真开源&#xff0c;释放新价值。 概览 Graphic&#xff0c;这个基于Flutter的图表库&#xff0c;以其源自《The Grammar of Graphics》的灵感&#xff0c;为数据可视化提供了一种全新的方法。它不仅仅是一个工具&#xf…...

Linux搭建Socks5网络代理服务器,Centos 8 系统

一、目的用途 用于网络代理转发请求&#xff0c;隐藏真实的请求ip地址&#xff0c;或者用于绕过网络限制的目标服务器&#xff0c;将自己的访问请求到代理服务器&#xff0c;通过网络代理服务器将请求转发到目标服务器 二、安装Socks5前的准备 1、从官网下载ss5安装包&#xf…...

mysql 导出导入 数据库

导出 MySQL 数据库可以通过多种方法实现&#xff0c;最常见的方法是使用 mysqldump 工具。以下是一些常用的导出 MySQL 数据库的方法&#xff1a; 使用 mysqldump 工具 mysqldump 是一个命令行工具&#xff0c;用于导出 MySQL 数据库的结构和数据。以下是基本的导出命令&…...

linux_进程概念——理解冯诺依曼体系结构

前言&#xff1a; 本篇内容是为了让友友们较好地理解进程的概念&#xff0c; 而在真正了解进行概念之前&#xff0c; 要先了解一下冯诺依曼体系结构。 所以博主会先对冯诺伊曼体系结构进行解释&#xff0c; 然后再讲解进程的概念。 ps&#xff1a; 本篇内容适合了解一些linux指…...

Linux笔记之使用系统调用sendfile高速拷贝文件

Linux笔记之使用系统调用sendfile高速拷贝文件 code review! 文章目录 Linux笔记之使用系统调用sendfile高速拷贝文件sendfile 性能优势sendfile 系统调用优点&#xff1a;缺点&#xff1a; cp 命令优点&#xff1a;缺点&#xff1a; 实际测试&#xff1a;拷贝5.8个G的文件&a…...

Spigot服务器搭建后,别忘了做这5件事:优化、备份、插件与安全基础设置

Spigot服务器搭建后必做的5项关键优化与安全设置 当你第一次看到Spigot服务器成功启动时&#xff0c;那种成就感确实令人兴奋。但很快你会发现&#xff0c;一个能运行的基础服务器和真正稳定、高效、安全的游戏环境之间&#xff0c;还有不小的距离。很多新手服主在这个阶段容易…...

智能视觉自动化革命:Midscene如何让AI成为你的界面操作员

智能视觉自动化革命&#xff1a;Midscene如何让AI成为你的界面操作员 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否曾幻想过用自然语言就能控制浏览器、手机应用甚至桌面软件&#x…...

如何用3种方法让Fira Code字体提升你的编码效率?

如何用3种方法让Fira Code字体提升你的编码效率&#xff1f; 【免费下载链接】FiraCode Free monospaced font with programming ligatures 项目地址: https://gitcode.com/GitHub_Trending/fi/FiraCode 还在为代码中的箭头符号显示不清晰而烦恼&#xff1f;是否经常需要…...

基于SpringBoot的租车系统毕设实战:从需求建模到高可用部署

最近在辅导学弟学妹做毕业设计&#xff0c;发现很多“基于SpringBoot的租车系统”项目&#xff0c;虽然功能列表很长&#xff0c;但仔细一看&#xff0c;架构松散&#xff0c;业务逻辑像面条代码&#xff0c;更别提应对真实场景下的并发问题了。今天&#xff0c;我就结合自己做…...

华为光猫配置解密工具全解析:从加密破解到网络运维实战指南

华为光猫配置解密工具全解析&#xff1a;从加密破解到网络运维实战指南 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/hu/HuaWei-Optical-Network-Terminal-Decoder 在网络运维工作中&#xff0c;光猫设备的配置…...

基于人工电场搜索智能优化算法的水库发电和供水优化调度

基于人工电场搜索智能优化算法的水库发电和供水优化调度&#xff1b; 代码为MATLAB编写&#xff0c;可直接运行&#xff1b; 含有实例数据&#xff0c;点击即可运行&#xff0c;替换成自己数据点击即可出结果&#xff0c;如图。在水库管理中&#xff0c;实现发电和供水的优化调…...

League Toolkit:重新定义英雄联盟游戏体验的智能辅助工具

League Toolkit&#xff1a;重新定义英雄联盟游戏体验的智能辅助工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 价值定位&am…...

Typora式优雅写作体验:基于PyTorch模型的智能Markdown内容助手

Typora式优雅写作体验&#xff1a;基于PyTorch模型的智能Markdown内容助手 1. 重新定义写作工具 想象一下这样的场景&#xff1a;你正在用Markdown写一篇技术文档&#xff0c;刚敲下几个关键词&#xff0c;编辑器就自动补全了整个段落&#xff1b;当你纠结某个表达是否恰当时…...

突破性3D建模技术:Wonder3D如何通过单张图像实现高质量三维重建

突破性3D建模技术&#xff1a;Wonder3D如何通过单张图像实现高质量三维重建 【免费下载链接】Wonder3D Single Image to 3D using Cross-Domain Diffusion 项目地址: https://gitcode.com/gh_mirrors/wo/Wonder3D 在数字内容创作领域&#xff0c;从二维图像到三维模型的…...

MiniCPM-o-4.5-nvidia-FlagOS与ChatGPT对比评测:代码生成与逻辑推理

MiniCPM-o-4.5-nvidia-FlagOS与ChatGPT对比评测&#xff1a;代码生成与逻辑推理 最近在开发者圈子里&#xff0c;关于开源大模型和闭源大模型谁更强的讨论一直没停过。特别是涉及到代码生成和逻辑推理这种硬核任务&#xff0c;大家心里都有一杆秤。今天&#xff0c;我们就拿一…...