This repository has been archived by the owner on Oct 4, 2019. It is now read-only.
ECIP-1044: Formalize IPFS hash into ECNS resolver #94
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Title
ECIP 1044 - Formalize IPFS hash into ECNS(Ethereum Classic Name Service) resolver
Simple Summary
To specify the mapping protocol between resources stored on IPFS and ECNS(Ethereum Classic Name Service).
Abstract
The following standard details the implementation of how to combine the IPFS cryptographic hash unique fingerprint with ecns public resolver. This standard provides a functionality to get and set IPFS online resources to ecns resolver.
We think that this implementation is not only aim to let more developers and communities to provide more use cases, but also leverage the human-readable features to gain more user adoption accessing decentralized resources. We considered the IPFS ecns resolver mapping standard a cornerstone for building future Web3.0 service.
Motivation
To build fully decentralized web service, it’s necessary to have a decentralized file storage system. Here comes the IPFS, for three following advantages :
Those features makes perfect match for integrating into ecns, and these make users can easily access content through ecns, and show up in the normal browser.
Specification
The condition now is that the IPFS file fingerprint using base58 and in the meantime, the Ethereum Classic uses hex in API to encode the binary data. So that need a way to process the condition requires not only we need to transfer from IPFS to Ethereum Classic, but also need to convert it back.
To solve these requirements, we can use binary buffer bridging that gap.
When mapping the IPFS base58 string to ecns resolver, first we convert the Base58 to binary buffer, turn the buffer to hex encrypted format, and save to the contract. Once we want to get the IPFS resources address represented by the specific ecns, we can first find the mapping information stored as hex format before, extract the hex format to binary buffer, and finally turn that to IPFS Base58 address string.
Rationale
To implement the specification, need two methods from ecns public resolver contract, when we want to store IPFS file fingerprint to contract, convert the Base58 string identifier to the hex format and invoke the
setMultihash
method below :Whenever users need to visit the ecns content, we call the
multihash
method to get the IPFS hex data, transfer to the Base58 format, and return the IPFS resources to use.Test Cases
To implement the way to transfer from base58 to hex format and the reverse one, using the ‘multihashes’ library to deal with the problem.
The library link : https://www.npmjs.com/package/multihashes
To implement the method transfer from IPFS(Base58) to hex format :
To implement the method transfer from hex format to IPFS(Base58) :
Implementation
The use case can be implemented as browser extension. Users can easily download the extension, and easily get decentralized resources by just typing the ECNS just like we normally type the DNS to browser the website. Solve the current pain for normal people can not easily visit the total decentralized website.
The workable implementation repository : https://github.com/PortalNetwork/portal-network-browser-extension
Copyright
Copyright and related rights waived via CC0.