1、数字货币转账 几乎所有的 DeFi 协议核心内容均涉及数字货币转账,通过数字货币兑换、锁定、抵押等不同形式的操作来为项目方或者用户带来数字货币收益。 当用户在 DeFi 协议前端执行了需要支出数字货币的操作后,在对应的代币合约中会执行 approve 函数 与 transferFrom 函数,此时打开区块浏览器根据钱包提示的交易 hash (绝对主键,每一笔交易的唯一对应查询 key)、个人钱包地址(对应多个相关地址交易)、交易事件(对应多个相同交易类型)等查找对应交易。 图 10 defi 交易类型查询示例此处要注意,浏览器页签不同,对应查询页面的内容结构也是完全不同的,图 10 中显示的区块链数据为所有涉及 UNI 代币 的交易,所以交易调用函数多种多样。 图 11 以代币为基准的数据查询链接 图 12 以合约地址为基准的查询页面 图 13 以合约地址为基准的数据查询链接2、交易匹配查询 交易 method 根据以太坊虚拟机底层编码,简单来说,交易 method (即函数 selector,对应图 10 当中的不同交易)为函数体的一个加密 hash 的前 4 位,如下所示: 图 14 交易 method 签名方式同一函数在以太坊系浏览器中的结果均是相同的,以 Etherscan 和 OKT 浏览器为例,如下所示: 图 15 swapExactTokensForTokens 函数 method (Etherscan 显示) 图 16 swapExactTokensForTokens 函数 method (OKT 浏览器显示)通过在区块浏览器中查询指定交易可以比对与实际交易操作是否匹配。 交易事件 交易事件用于记录指定函数调用日志,在唯一调用函数中触发一个或多个,用户可以根据事件中记录的内容来查询有限的记录数据是否正确以及与实际交易功能匹配(例如代币流向是否实际转入需要转入的地址等等)。 与交易 method 一样,事件编号(指 topic0,匿名事件 anonymous event 暂不说明)在 EVM (以太坊虚拟机)中也是以声明结构进行加密签名的,可以作为索引进行批量查找: 图 17 事件 topic0 签名方式 图 18 批量查询指定事件 event如上图所示,这种查找方式在现有区块浏览器中只能查找到部分内容,全部数据需要同步对应区块链全节点进行查找。 交易调用数据比对 最为完整的数据对比就是直接比较对应交易中的函数调用数据,文中以开源合约的对比进行讲解,在开源合约中(图 19),区块浏览器自动将调用数据字节码进行对应序列化存储与显示,而在非开源合约中(图 20),调用数据仍以 EVM 字节码 的形式显示,不太适用于初学者进行比对,此处暂不详解。 图 19 调用数据对比(开源合约) (责任编辑:admin) |