Skip to content
E

Etoken

Project ID: 342

eToken Protocol Documentation

EToken is a set of smart contracts, built using Ethereum cryptocurrency network and Solidity programming language by Ambisafe.

It has a rich set of features and is designed for financial institutions to issue assets on top of Ethereum network.

Some of its the most important features are:

  1. Multi-layer transaction routing (like IBAN, but ICAP)
  2. 2FA via Ethereum contract
  3. Account recovery service for lost keys
  4. Allowances
  5. Automatic Ethereum network fee refunds
  6. Integrated exchange with Ether currency
  7. Ability to set transaction fees
  8. Blockchain explorer
  9. Compliance with ERC20 standard

EToken stores information about all released assets. It's possible to issue new assets, increase/decrease supply of previously issued assets. It allows to make transfers, transfers to ICAP, allowances, via token proxy contracts only. Users call proxy contract to do transfers / allowances which are in the end forwarded to EToke and needed actions happen (like transferring funds between holder, changing allowances). When the operation finished, EToken emits required events on EToken Events history contract and Proxy side. Events history contract is accepting calls only from EToken contract.

Issuing an asset on the EToken platform requires an explicit permission by Ambisafe. In order to provide such permission, and Admin entity (which is mediated through an Ambi2 permissions management contract) needs to approve particular asset issuance.

Proxy contract implements ERC20 interface and acts as a gateway to a single EToken asset. Proxy adds etokenSymbol and caller(sender) when forwarding requests to EToken. Every request that is made by caller first sent to the specific asset implementation contract, which then calls back to be forwarded onto EToken.

Calls flow: 
 Caller ->
              Proxy.func(...) ->
              Asset._performFunc(..., Caller.address) ->
              Proxy._forwardFunc(..., Caller.address) ->
              Platform.proxyFunc(..., symbol, Caller.address)
 
Generic call flow: 
 Caller ->
              Proxy.unknownFunc(...) ->
              Asset._performGeneric(..., Caller.address) ->
              Asset.unknownFunc(...)

ICAP is a cryptocurrency equivalent of IBAN standard. It allows financial institutions to appoint unique global account numbers to their customers without giving away control over the funds. Let’s say your website is an exchange and it needs to receive deposits on behalf of your customers. In this case you need some easy solution to identify each recipient inside the system, ideally without routing funds through temporary addresses. The ICAP address assigned to each user helps here. ICAP address generation: First of all we register the ICAP organization name in cryptocurrency network for you. Then you create the unique ID for each user and ask user to direct deposits to the ICAP address that was assigned to him.There could be multiple organizations for a currency, each having a unique company name and client ID namespace. For example: the ICAP currency name is ‘EXM’, ICAP company name is ‘COMP’, user ID is ‘ID0002120’. The ICAP address would contain EXMCOMPID0002120.

ICAP namespace is implemented in a separate contract which is call RegistryICAP, and allows institutions to manage own routes. EToken in turn, talks to the Registry in order to resolve ICAP addresses into normal Ethereum addresses.

Guides:

EToken API

EToken Standard Token API

Staging Instance

Production Instance

Server side code examples