Alice in Etherland, Whois0x?

Régis
Whois0x
Published in
6 min readMar 19, 2019

We designed a tool to claim, understand and verify who owns an Ethereum address. Claims are based on web of trust, social networks and websites as self declared providers. View it as a cryptographically secured association of your Twitter, Github, Linkedin accounts, your website and your Ethereum address.

Whois0x is also a search engine where you can query about Ethereum address or social identities. We provide alongside a global view of ETH balances and transactions counts on Mainnet; Ropsten, Rinkeby and Kovan testnet. An etherscan link is available for any given address on each network. Blockchains activities could be relevant to help identify individuals or organizations.

Some needs to be clearly identified as owner of an Ethereum address.

Donations address are a great example. They can be boosted with few clicks and identity overview of the owner, easing donations.

You know you can support Ethereum Organization with donation. Check it on Whois0x.io: 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359

Displayed on MEW website

My Ether Wallet also have a donation Ethereum address. Check it on Whois0x.io : 0xDECAF9CD2367cdbb726E904cD6397eDFcAe6068D

Displayed on Unicef.fr

You could as well donate ETH to UNICEF France. Check it on Whois0x.io: 0xB9407f0033DcA85ac48126a53E1997fFdE04B746

It’s better to know for sure who the recipients of the funds are. Adding a Twitter, Github, linkedin profile and a website address would definitely improve the understanding. It’s easier to donate Ethereum.org, My Ether Wallet or Unicef.org.nz if one could find their address by searching their well known name.

Let’s convince you how simple it is to search and set up identites for any Ethereum address, and then deep dive in the technical background. Whois0x.io is free and user friendly for everyone.

FIRST, THE USER EXPERIENCE

This section is split between the search engine and how to register an address.

SEARCH ENGINE

Drop any social identity, website, or Ethereum address you need to transact with. If known, it will display a comprehensive, understandable and checkable identity with cryptographic proofs (i.e. signature).

SEARCH

Here we search for fireblock

Whois0x.io

CHECK AND VERIFY

0xffa7a52a7d30e5bc81c031a717726fa638c76289

Social identities are checkable and linked to self declared proof of Ethereum address ownership. They are wrapped up in a digitally signed JSON file’s fingerprint. This signature can only be performed by the address owner.

ETH balances and transactions counts for Mainnet Ethereum and three testnets are displayed as well. ETH activity for a specific address helps trust identity as it gives more insights as seen previously with the donation illustrations.

SEND ETH

You are also invited to connect your Ethereum account. Here above, Metamask is proposed, but it looks the same on Dapp browsers. Once connected, it allows you to send ETH to the identity displayed in the search result. You can transact through any network you choose to set in Metamask or your Dapp browser.

0xffa7a52a7d30e5bc81c031a717726fa638c76289

All transfers will then have to be validated within your web3js provider (Metamask, Wallet, Trust Wallet, Cypher,..).

REGISTER YOUR ADDRESS

Once logged in to your Whois0x account, it’s all about few clicks in two steps.

Connect your account with your web3js provider, here under is a desktop illustration with Metamask. It works the same way on Wallet, Trust Wallet, Cypher..

Once connected, select which social networks works best for you and register them.

We use blockies as visual identifier of an address. Be sure to enable this feature in Metamask or your Dapp browser.

Once a social network clicked, just post as instructed.

Web of trust post on social networks

That’s it! You are ready to showcase your address with confidence for those who need to transact with you. You’ll be very easy to find with a search as well.

FOR THE BRAVE: TECHNICAL OVERVIEW

How does this work

We will use an Ethereum address we own at Fireblock.io for the sake of presentation.

0xffa7a52a7d30e5bc81c031a717726fa638c76289

Comprehensive simplified view of how it works

How to set up identity and link ETH address to social identities with signed data chains

PROOF OF IDENTITY: SELF DECLARE YOUR ETHEREUM ADDRESS

We use the Web Of Trust principles to let anyone add his Twitter, Github, Linkedin account or his website to declare himself an Ethereum address owner. It works the same way as Keybase.io, Blockstack,..

We, Fireblock.io, own 0xffa7a52a7d30e5bc81c031a717726fa638c76289 Ethereum address. Our Twitter account is: @fireblock_io.

To register our key, we posted on Twitter:

Same message apply on Github, Linkedin, Website

This message contains Fireblock.io unique identifier on Whois0x: “d0kEs_Ix2z”. This one is set when registering on the website.

Same type of messages could be posted on your relevant social networks, such as Github, Linkedin or your website.

Once done, a JSON file containing the claims is generated. It sums up your social identities.

Fireblock.io registered his Twitter, Github, Linkedin account, and it’s website. JSON file looks like:

[{“uid”:”d0kEs_lx2z”,”provider”:”whois0x”},{“uid”:”0xffa7a52a7d30e5bc81c031a717726fa638c76289",”provider”:”eth”},{“uid”:”fireblock_io”,”provider”:”twitter”,”proof”:”https://twitter.com/fireblock_io/status/1101581387952472064"},{"uid":"fireblockdev","provider":"github","proof":"https://gist.github.com/fireblockdev/5a38afba5d93f687c2b3d8ea3c8c2fb8"},{"uid":"fireblock","provider":"linkedin","proof":"https://www.linkedin.com/feed/update/urn:li:activity:6507349928245891072"},{"uid":"whois0x.io","provider":"https","proof":"https://whois0x.io/.well-known/0xffa7a52a7d30e5bc81c031a717726fa638c76289.txt"}]

SIGN YOUR JSON FILE WITH METAMASK, OR DAPP BROWSERS LIKE WALLET, TRUST WALLET, CYPHER,..

A digital signature of the JSON file’s fingerprint cryptographically secures your data chain.

A fingerprint of your JSON file is calculated applying:

Keccak256(JSON file)

(Check by yourself Keccak256 with the json above as input, compare with result below)

Then, adding a timestamp, the ethereum address sign the following original message:

register card 0x84a7dea209ac5a7fd548350209752ddf5e36ab5404c06a4b6c7caeb3582ae8fe at 3956273

Signature is performed through Metamask, Wallet, Trust Wallet or Cypher.

As a result we have the message signature hash displayed here under:

0x0df7c3b1381de180f1f45a7d04a93cff5811b0bca530f85b0becf6ad6983105942fafd484ad540e769bfe013eff5e5fcb06b8678b0ec739bda12d801b7f3a6db1b

(Verify by yourself message signature hash with Etherscan)

We have verifiable claims of identities for an ethereum address.

Whois0x resolved:

address == ecRecover[‘message’, Sign[‘message’]

where message == ‘register card keccak256(JSON identities) at time’

Note that for now, Whois0x stores signatures off-chain. They are inherently cryptographically secured and allows us to provide a free tool.

Validity goes on all Ethereum networks allowing one to set social identities once and transact with them either on Mainnet, Ropsten testnet, Rinkeby testnet or Kovan testnet.

SECURITY AND IDENTITIES MODIFICATIONS

Every signature and transaction is made either on Metamask or in a mobile wallet with a Dapp browser like Wallet, Trust Wallet, or Cypher.

Whois0x never ask any private key. We store signatures and all of them are locally verified by all users when querying an address, a social nickname or a website.

Each identities can be modified by the address owner. Any modification requires a new signature. We are RGDP compliant.

WHAT’S NEXT

We are working on a smart contract to register signatures.

An API to provide and verify an identity is on its way.

PUSH FORWARD

Let us know who you are and what your next feature would be.

Support us, send us some testnet ETH to give it a try. Donate to support development.

0xffa7a52a7d30e5bc81c031a717726fa638c76289

Whois0x.io, powered by Fireblock.io team

--

--