加密钱包怎么知道我一个以太坊账户地址有多个以太坊相关的币种呢

2022-09-20 11:17:22 +08:00
 Liuwilliam1

求教大佬们一个问题: 我在狐狸上面创建了一个以太坊账户,我就有一个账户地址,我收藏了一些关于支持 erc20 协议的代币,但是我只有一个账户地址怎么能够区分出来这个地址有多少种代币呢,比如 eth 或者其他的,我用 web3.eth.getBalance("0x537ab5ce1370..")查询,也只能查询到有多少个 eth ,而不能查询到其他币种,如果我要发行币的话,怎么能查询到这个这个账户地址拥有的所发行币的数量呢

1571 次点击
所在节点    区块链
8 条回复
huoshanhui
2022-09-20 11:23:04 +08:00
1. 只有 Token 合约才知道某个钱包有多少这个 Token 余额。
2. 如果你想知道怎么查出来,目前比较全的有 zerio 和 debank 。
3. 原理上是要自行维护数据然后存下来,这样才能做到查某个地址得到各种 Token 余额。
Liuwilliam1
2022-09-20 12:43:28 +08:00
@huoshanhui 您的意思是,如果是以太坊钱包的话,需要不断更新 例如支持 erc20 协议的代币对吧;还有一个问题是,im 钱包和狐狸都知道我的这个账户下面的多个 erc20 代币的余额,意思是钱包只要知道代币的合约地址就能挨个查询到这个人所有的 erc20 代币对吧,即如果要转账的话就必须得知道该代币的合约地址,查询余额也是同理
huoshanhui
2022-09-20 13:49:33 +08:00
@Liuwilliam1 #2

Q: 即如果要转账的话就必须得知道该代币的合约地址,查询余额也是同理
A: 对的。以太坊的设计里,Token 的数据是跟着合约走的。
cxh116
2022-09-20 14:27:31 +08:00
调用合约的 balanceOf 方法应该是一种成本比较高的方法.
合约调用 transfer 方法时,会产生事件 Transfer, 监听日志里的 Transfer 事件感觉成本低一点.但对一般的人来说成本太高了,建一个全节点,估计一个月几百美刀,服务器配置要求高.

https://ethereum.org/zh/developers/docs/standards/tokens/erc-20/
keepeye
2022-09-20 14:42:15 +08:00
每个币都是一个 ERC20 标准的合约,知道合约地址就可以调用合约方法查询你在这个合约内的余额
那么问题就是怎么知道你有多少种币(合约),小狐狸需要手动添加合约(导入代币)才能显示在列表里,所以它是不能自动发现历史有哪些币种的,但是可能通过交易事件发现新的币种。
imtoken ,猜测可能 app 官方有同步节点,遍历每个区块中的每一笔交易记录了,找出钱包地址和合约地址的映射关系,给 app 提供了查询接口吧。
Liuwilliam1
2022-09-20 18:53:48 +08:00
@huoshanhui 学习了,感谢大佬!
Liuwilliam1
2022-09-20 18:55:55 +08:00
@cxh116 这确实是很好的方法,谢谢大佬!
Liuwilliam1
2022-09-20 18:58:08 +08:00
@keepeye 很有可能是这样的,感谢大佬!学习了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881507

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX