文章
问答
讲堂
百科图谱
线下集训
更多
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
关于合约授权
派盾(PeckShield)为什么可以查到某个合约被哪些地址授权过的信息呢? 我们可以通过哪种方式来实现这个功能?
派盾(PeckShield)为什么可以查到某个合约被哪些地址授权过的信息呢? 我们可以通过哪种方式来实现这个功能?
0 条评论
请先
登录
后评论
默认排序
时间排序
1 个回答
pan
2023-03-01 21:33
可以扫描所有区块中的Event Logs实现。 ERC20合约授权时会触发 `event Approval(address indexed _owner, address indexed _spender, uint256 _value)` 事件,扫描到 `Approval` 事件时将相关用户的授权信息保存到数据库。 转账时会触发 `event Transfer(address indexed _from, address indexed _to, uint256 _value)` 事件,此时调用 ERC20 合约的 `allowance(address _owner, address _spender)` 方法查询最新的授权信息再更新数据库。 从创世区块扫描到最新区块,所有用户的授权信息都会保存到数据库,链上发生转账后会更新最新的授权信息到数据库,这样也就可以在数据库中查询到所有的授权信息了。
请先
登录
后评论
您需要登录后才可以回答问题,
登录
关注
1
关注
收藏
0
收藏,
1503
浏览
linsanity
提出于 2023-03-01 21:07
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: