In the context of the ERC-6860web3:// standard, this ERC extends the ERC-6944 resolve mode: This standard defines a new optional web3-next-chunk HTTP header returned by the request() call, that contains a web3:// URL pointing to the next data chunk of the resource data. Chunks are streamed to the web3:// client, and it loops until the web3-next-chunk header is no longer present.
Motivation
Ethereum RPC endpoints have a gas limit, which can be reached when serving large content. By adding a chunking feature, we add the possibility to serve arbitrary sized content.
Specification
In the ERC-6944 resolve mode, this standard introduces the new optional web3-next-chunk HTTP header, to be returned in the headersKeyValue array of the request() method defined in ERC-6944.
The value of the header is either a complete web3:// URL, or a relative one. The target smart contract must use the ERC-6944 resolve mode.
When processing the result of the initial request() call, the protocol return the HTTP status code, HTTP headers and body right away to the web3:// client. If a web3-next-chunk header is present, it parse the URL. If the URL is invalid, or the target smart contract is not using the ERC-6944 resolve mode, the HTTP data streaming is ended with an error. Otherwise it call the request() method, ignore the returned statusCode, send the body data as the next chunk of data, and if a web3-next-chunk header is again present, loops until no more are present.
Rationale
The use of a header pointing to the next chunk was chosen because it does not require changes to the ERC-6944request() interface, and the use of a web3:// URL in the header add flexibility to the means to provide the next chunk.