How will Mysterium Identity (Mysterium ID) work within Mysterium Network?

Let’s start with — what is a Mysterium ID?

Valdas Petrulis
Oct 2, 2018 · 5 min read

We have recently introduced Mysterium ID within the Mysterium Network.

This is a technical proof of concept. From a business perspective, we are beginning to test the utility of our token. You are now able to use test MYST to purchase your Mysterium ID for use within our decentralized test network.

Mysterium ID Flow diagram

From our whitepaper:

Mysterium nodes must attach a predefined amount of value (MYST) to successfully invoke the identity registration contract and have the identity registered. The amount of value will be adjusted periodically automatically to reflect the value of MYST in fiat currencies. This forfeiture of value (MYST) has a purpose of making identity something of value. By attaching cost to identity we make it unattractive to abandon. Also, because it is expensive to produce identities in large quantities the system limits exposure to several types of trust exploitation. We see Registered Identities as something to be reused to users’ own benefit. By reusing an identity for payments users will have their payments history and balances made public, and their identities made more predictable and thus trustworthy for service providers.

Any person who has their identity registered on The Mysterium Network can announce VPN services (compatible with the network’s VPN service protocols) along with the payment terms these services will be available at. Other users of the network will be able to find services matching their specific needs (location, price, etc…) and use search results to establish a connection to selected VPN service providers and use the announced services.

How we built Mysterium ID

It starts with a user who uses Mysterium VPN. Mysterium VPN at its core generates an ID (based on Ethereum address) for the user. The User then has the ability to sign messages with his or her ID and prove ownership of this ID.


Mysterium VPN communicates with it’s core via Tequilapi. The application sends HTTP GET request to locally hosted core like this:

GET http://localhost:4050/identities/0x63c9f659017063afbf4b718a4b273d684224b0f0/registration

Core responds with this structure:

PublicKey: Part1, Part2
Signature: R, S, V


Here’s the Golang code of Tequilapi endpoint which proves ownership of ID:

Smart Contract for registering ID

Let’s look at contract function RegisterIdentity written in Solidity:

Function takes 5 parameters as input. It constructs Mysterium ID from first two parameters, verifies Mysterium ID proof from signature and signed message. The signed message, in this case, is the Mysterium ID itself. After signing the message, Function takes the registration fee and adds this ID to the list of Mysterium IDs.

Contract deployed to Ropsten testnet network can be found here.

To check if your Mysterium ID is registered, use isRegistered function:

To check your Mysterium ID manually, go to Etherscan and enter ID to isRegistered field, press Query:

Usability of Mysterium ID

Usability in blockchain is a complex topic, especially given how fragmented this new industry is. The Mysterium Team takes a design-centric approach and is committed to building a product that will gain adoption through ease of use.

Let’s take a look at the identity workflow. The user has to get Ether, then get MYST. He then needs to form a few transactions with specific parameters which come from the Mysterium VPN application. In order to handle many technical details, we have prototyped Mysterium Wallet, which acts as a bridge between the user and blockchain.

Metamask injects web3 interface into web apps. Mysterium Wallet uses Metamask (Chrome plugin) as a provider which brings Ethereum to the browser.

In the first of two transactions, the user will need to approve MYST tokens to be taken by our smart contract as a registration fee.

Mysterium Wallet covers calls to ERC20 approve function with this interface:

From a Javascript perspective, the web3 object is loaded with smart contract ABI, which then lets call approve function with parameters:

In the second transaction, the user will need to register his identity constructed of 5 parameters which will be passed to smart contract. Mysterium Wallet covers call to RegisterIdentity function:

From JavaScript, this call looks like this:

What’s coming next?

We have payment flows such as top up your identity, withdraw from your identity and micro-payments for bandwidth use coming soon. All of this is on the Ropsten test network.

This is why we want to test the usability and economics of the MysteriumVPN and Mysterium Network during our alpha phases. Here we will look at metrics such as speed, cost of transactions, lengths of sessions and satisfaction of users.

We will be testing several releases on Ropsten until we are certain that our product is ready for a Main Net release. Check out our alpha.

Mysterium Network Roadmap


Please be sure to follow and subscribe to the following:

Medium —


Rules & FAQ
Node Testing
Windows VPN Testing
macOS VPN Testing
中文 / Chinese
русский / Russian —
Español / Spanish

Mysterium Network

Decentralized VPN built on blockchain …

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store