EIP-3668: CCIP Read: Secure offchain data retrieval
CCIP:Cross-Chain Interoperability Protocol
作者信息: nick.eth(Lead developer of ENS & Ethereum Foundation alum)
https://ethereum-magicians.org/t/durin-secure-offchain-data-retrieval/6728
动机:通过定制化的协议来实现链外(跨链)数据检索/存储(基于链上数据最小化存储原则)

典型用例:在非ETH主网上使用ENS解析服务
系统角色:
┌──────┐ ┌────────┐ ┌─────────────┐
│Client│ │Contract│ │Gateway @ url│
└──┬───┘ └───┬────┘ └──────┬──────┘
│ │ │
│ somefunc(...) │ │
├─────────────────────────────────────────────────►│ │
│ │ │
│ revert OffchainData(sender, urls, callData, │ │
│ callbackFunction, extraData) │ │
│◄─────────────────────────────────────────────────┤ │
│ │ │
│ HTTP request (sender, callData) │ │
├──────────────────────────────────────────────────┼────────────►│
│ │ │
│ Response (result) │ │
│◄─────────────────────────────────────────────────┼─────────────┤
│ │ │
│ callbackFunction(result, extraData) │ │
├─────────────────────────────────────────────────►│ │
│ │ │
│ answer │ │
│◄─────────────────────────────────────────────────┤ │
│ │ │
上面时序图看着复杂但是逻辑其实很简答: ‘客户端’调用‘链上合约’,合约抛出指定的‘结构化‘错误(revert error),客户端通过解析这个错误可以获取到‘网关’的链接方式以及校验网关输出内容的链上合约函数地址。
举一个跨链使用ENS的场景(想象中):