emoney-token
v1.28.7
Published
The E-Money Standard Token aims to enable the issuance of regulated electronic money on blockchain networks, and its practical usage in real financial applications.
Downloads
5
Maintainers
Readme
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.
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
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 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.
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 cannot 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 cannot 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)
Cross Ledger Transfer
Please refer to ICrossLedgerLink.sol for the exact specification.
Compiling
To compile the interfaces and the abstract contract, please execute:
npm install
npm run compile