Origin Payload Visualizer
v1.5 - general (cross-chain)// originCalls []v3.Call
// 1. Balance precondition
v3.Call{
To:
TrailsUtilsAddress // 0x000000004f702C8398e158108937814d074cD74b,
Value:
big.NewInt(0),
Data:
abis.ComposeTrailsUtilsRequireMinBalanceSelf(originTokenMinAmount)
GasLimit:
big.NewInt(0),
DelegateCall:
false,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorRevert,
},
// 2. TrailsUtils transfer - skipped (originUsesIntentContext = true)
// 3. Nested execute (wraps originActionCalls via TrailsUtils.hydrateExecute)
v3.Call{
To:
TrailsUtilsAddress // 0x000000004f702C8398e158108937814d074cD74b,
Value:
big.NewInt(0),
Data:
hydrateExecute(calls=[]),
// Step 0 - Approval
v3.Call{
To:
0xa000,
Value:
big.NewInt(0),
Data:
abis.ComposeERC20Approve(0xa000, 0xb000, 1000000000000000000)
GasLimit:
big.NewInt(0),
DelegateCall:
false,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorIgnore,
},
// Step 0 - Tx
v3.Call{
To:
0xc000,
Value:
big.NewInt(0),
Data:
0x12340
GasLimit:
big.NewInt(0),
DelegateCall:
false,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorRevert,
},
GasLimit:
big.NewInt(0),
DelegateCall:
true,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorIgnore,
},
// 4. Refund fallback
v3.Call{
To:
TrailsUtilsAddress // 0x000000004f702C8398e158108937814d074cD74b,
Value:
big.NewInt(0),
Data:
createSweepCall(ownerAddress, [originTokenAddress])
GasLimit:
big.NewInt(0),
DelegateCall:
true,
OnlyFallback:
true,
BehaviorOnError:
v3.BehaviorOnErrorRevert,
},
// 5. Capped fee collection
// maxCollectorFee: 1 wei (pass-1)
v3.Call{
To:
h.feeCollectorAddress // (runtime),
Value:
big.NewInt(1),
Data:
common.FromHex("0x")
GasLimit:
big.NewInt(0),
DelegateCall:
false,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorIgnore,
},
// 6. Native fee sweep to tx.origin - skipped (nativeValueRequired = 0)
// 7. Origin dust sweep
// tokens: 0xa000, originTokenAddress
v3.Call{
To:
TrailsUtilsAddress // 0x000000004f702C8398e158108937814d074cD74b,
Value:
big.NewInt(0),
Data:
createSweepCall(ownerAddress, [0xa000, originTokenAddress])
GasLimit:
big.NewInt(0),
DelegateCall:
true,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorIgnore,
},
// 8. Origin approval clearing
v3.Call{
To:
TrailsUtilsAddress // 0x000000004f702C8398e158108937814d074cD74b,
Value:
big.NewInt(0),
Data:
hydrateExecute(clearApproveCalls)]),
// Step 0 - Clear approval
v3.Call{
To:
0xa000,
Value:
big.NewInt(0),
Data:
abis.ComposeERC20Approve(0xa000, 0xb000, 0)
GasLimit:
big.NewInt(0),
DelegateCall:
false,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorIgnore,
},
GasLimit:
big.NewInt(0),
DelegateCall:
true,
OnlyFallback:
false,
BehaviorOnError:
v3.BehaviorOnErrorIgnore,
},