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.
Additionally, to the ERC-2020 standard the token allows cross ledger transfer. This means transferring tokens from one wallet in one blokchain network to another one in a different blockchain network
The contracts and the corresponding build files can be downloaded with:
npm install emoney-token --only=production
The abstract contract EmoneyToken can be used to interact with the token. It consists of the following interfaces:
Please refer to the ERC-20 Token Standard for the exact specification.
An extension to the ERC-20 standard token which allows tokens to be put on hold. This guarantees a future transfer and makes the held tokens unavailable for transfer in the meantime. Holds are similar to escrows in that are firm and lead to final settlement.
Please refer to IHoldable.sol for the exact specification.
The standard implementation of ERC-20 has been changed in order to deduct the held balance from the ERC-20 balance.
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 cannot be transferred.
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 cannot be transferred.
"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)
Please refer to ICrossLedgerLink.sol for the exact specification.
To compile the interfaces and the abstract contract, please execute:
npm install
npm run compile