This EIP standardizes an interface to make resource requests to smart contracts and to receive HTTP-like responses.
Ethereum is the most-established blockchain for building decentralized applications (referred to as DApp
s). Due to this, the Ethereum DApp ecosystem is very diverse. However, one issue that plagues DApps is the fact that they are not fully decentralized. Specifically, to interface a "decentralized" application, one first needs to access a centralized website containing the DApp's front-end code, presenting a few issues. The following are some risks associated with using centralized websites to interface with decentralized applications:
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
EIPs that propose a name resolution mechanism MAY reference this EIP and MAY recommend that clients support their mechanism. Clients MAY also support regular DNS, as defined in RFC 1034 and RFC 1035.
It is RECOMMENDED to separate the application logic from the front-end logic (the contract implementing the interface defined in Contract Interface).
DApp contracts MUST implement the interface defined in the following file: Contract Interface.
To save gas costs, it is recommended to use the message/external-body
MIME-type, which allows you to point to data that the smart contract might not have access to. For example, the following response would tell a client to fetch the data off of IPFS:
statusCode: 200
body: THIS IS NOT REALLY THE BODY!
headers:
- key: Content-type
value: message/external-body; access-type=URL; URL="ipfs://11148a173fd3e32c0fa78b90fe42d305f202244e2739"
The request
method was chosen to be readonly because all data should be sent to the contract from the parsed DApp. Here are some reasons why:
307 Temporary Redirect
status code.Instead of mimicking a full HTTP request, a highly slimmed version was chosen for the following reasons:
GET
GET
requests.This EIP is backwards compatible with all standards listed in the Name Resolution section.
The normal security considerations of accessing normal URLs apply here, such as potential privacy leakage by following 3XX
redirects.
Copyright and related rights waived via CC0.