Act·two-phase async

Long-running HTTP

Polling + JQ extract

Long-poll workflows with built-in JQ extraction. Minutes to hours.

0x0000000000000000000000000000000000000805Explorer

Interactive form — coming next session

Two-phase async UI in progress. The precompile itself is 0x0000000000000000000000000000000000000805 and live on testnet — use the canonical Solidity / viem code below to integrate from your own contract.

ABI summary

(
  HTTPCallRequest initial,    // same as 0x0801
  uint256 pollingInterval,
  uint256 maxBlocks,
  string jqStatusPath,        // poll until this matches
  string jqResultPath,        // extract from response
  string jqErrorPath,
  ...35 fields total
)
→ delivers (uint16 status, bytes body, string error)

Callback pattern

Two-phase precompiles deliver results via AsyncDelivery at 0x5A16214fF555848411544b005f7Ac063742f39F6 calling your contract’s callback. Always verify msg.sender == ASYNC_DELIVERY to prevent injection.

function onLongRunningResult(bytes32 jobId, bytes calldata result) external {
    require(msg.sender == ASYNC_DELIVERY, "unauth");
    // ... decode result based on this precompile's response ABI
}
Read the spectwo-phase · long-http