Skip to content
An e-money, bank and central bank money issued token based on ERC-20
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build
contracts
.gitignore
LICENSE
README.md
package-lock.json
package.json
truffle-config.js

README.md

E-Money token project

An e-money, bank and central bank money issued token based on ERC-20. With additional functionalities such as holds, clearance and detailed compliance.

This project is the first implementation of electronic money on a Blockchain. The learnings that were made during its creation were used to propose ERC-2020 - The E-Money Token Standard. Currently there are differences between the interfaces used here and the proposed standard. The interfaces of the standard will be adapted in a future release.

Installation

The contracts and the corresponding build files can be downloaded with:

npm install emoney-token --only=production

Interacting with the token

The abstract contract EmoneyToken can be used to interact with the token. It consists of the following interfaces:

ERC-20

Please refer to the ERC-20 Token Standard for the exact specification.

Hold

An extension to the ERC-20 standard token that allows tokens to be put on hold. This guarantees a future transfer and makes the held tokens unavailable for transfer in the mean time. Holds are similar to escrows in that are firm and lead to final settlement.

Please refer to IHoldable.sol for the exact specification.

balanceOf

The standard implementation of ERC-20 has been changed in order to deduct the held balance from the ERC-20 balance.

transfer

The standard implementation of ERC-20 has been changed in order to deduct the held balance from the ERC-20 balance. Any amount that is held can not be transferred.

transferFrom

The standard implementation of ERC-20 has been changed in order to deduct the held balance from the ERC-20 balance. Any amount that is held can not be transferred.

Two Step Transfer (Clearable Transfer)

"In banking and finance, clearing denotes all activities from the time a commitment is made for a transaction until it is settled." [1]

Please refer to ITwoStepTransferableToken.sol for the exact specification.

[1] https://en.wikipedia.org/wiki/Clearing_(finance)

Compiling

To compile the interfaces and the abstract contract, please execute:

npm install
npm run compile
You can’t perform that action at this time.