solui
  • Dapps
  • Getting Started
  • Docs
  • Community

On-chain repository

The solUI Repository is a smart contract which maps Dapp IPFS content hashes to smart contract bytecode hashes. It is located on the Etherum mainnet at:

To interact with the contract use the following Dapp:

The low-level smart contract interface is defined here:

Note: the intention is for improvements to be rolled out to the contract over time as new requirements arise. Thus the contract itself is upgradeable and utilises the Proxy + Eternal storage pattern.

How it works

When a solUI Dapp is published to IPFS its resulting unique identifier is a content-addressable hash. And a Dapp specification itself contains the ABIs and bytecodes of all the contracts interacted with by the Dapp.

This means we can perform a reverse lookup from contract to Dapp!

For any contract address we can fetch its on-chain bytecode, hash the result, and then query the Repository to see if there any Dapps which map to that hash!

For example, if we have a Dapp whose IPFS id is X and the Dapp contains 2 contracts Y and Z, then we would add the following information to the on-chain Repository:

  • X maps to [ keccak256(bytecodeOf(Y)), keccak256(bytecodeOf(Z)) ]
  • keccak256(bytecodeOf(Y)) maps to X
  • keccak256(bytecodeOf(Z)) maps to X

Now any app or service can query the Repository with the a hash (of contract bytecode) to see if there is a Dapp which talks to instances of that contract. And since the Dapp id is an IFPS id we can be confident that its still the exact same code that the Dapp author originally deployed for that contract.

Trusted publishers

Since anyone can publish a Dapp for any contract it would be useful to know who published a given Dapp in case we are only interested in Dapps published by people we trust.

With this in mind the Repository additionally records who publishes a given Dapp (Solidity: msg.sender).

This then allows us to easily query "the latest Dapp for contract X by publisher Y". Additionally we can also query for each and every Dapp by a given publisher.