Skip to main content
call materialiser 会在 flow 启动前执行用户提供的合约调用,并测量由此产生的代币余额增量,以此来解析输入资源。当你想要花费的金额是由某个外部操作产生时,就使用它 —— 例如「从质押合约 X 领取奖励,然后将领取到的金额存入金库 Y」。 在编译时,该 materialiser 会从发送方的执行代理(execution proxy)针对 target 执行所提供的 calldata,测量输入资源所声明代币余额的变化,并将该增量注入为输入金额。生成的 flow calldata 会在链上执行同样的调用,然后将产生的余额作为 flow 的输入资源来消费。
materialisers.callcore.call core.call op(在 Op 目录中介绍)在其 config 中接受一个 functionSignature 加上带类型的 args,并为你完成调用的 ABI 编码。call materialiser 则是一个独立的构件:它接受预先编码好的 calldata(原始十六进制字符串)和一个 target 地址。调用方需要自行完成调用的 ABI 编码(viemencodeFunctionDataethers.Interface.encodeFunctionData 等)。

示例

将某质押合约上 claimRewards() 的输出作为 flow 输入来消费。在调用之前先对该调用进行一次 ABI 编码: