We #buidl

A proposed standard for e-money, bank and central bank money issued tokens, with extended functionalities such as holds , clearance, detailed compliance, funding , and payout.

Compliance (EIP-2009)

This EIP proposes a service for decentralized compliance checks for regulated tokens..

Funding orders (EIP-2019)

An extension to the ERC-20 standard token that allows Token wallet owners to request a wallet to be funded, by calling the smart contract and attaching a fund instruction string..

Holds (EIP-1996)

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.

Clearable Transfers (EIP-2018)

This proposal allows a user to order a transfer, which can be checked by a clearing agent off-chain.

Payout Orders (EIP-2021)

An extension to the ERC-20 standard token that allows Token wallet owners to request payout from their wallet, by calling the smart contract and attaching a payout instruction string.

Abstract E-money token standard

interface EMToken /* is ERC-1996, ERC-2009 ERC-2018, ERC-2019, ERC-2021 */ {


    function currency() external view returns (string memory);
    function version() external pure returns (string memory);

    function availableFunds(address account) external view returns (uint256);
    function checkTransferAllowed(address from, address to, uint256 value) external view returns (byte status);
    function checkApproveAllowed(address from, address spender, uint256 value) external view returns (byte status);

    function checkHoldAllowed(address from, address to, address notary, uint256 value) external view returns (byte status);
    function checkAuthorizeHoldOperatorAllowed(address operator, address from) external view returns (byte status);    
    function checkOrderTransferAllowed(address from, address to, uint256 value) external view returns (byte status);
    function checkAuthorizeClearableTransferOperatorAllowed(address operator, address from) external view returns (byte status);

    function checkOrderFundAllowed(address to, address operator, uint256 value) external view returns (byte status);
    function checkAuthorizeFundOperatorAllowed(address operator, address to) external view returns (byte status);

    function checkOrderPayoutAllowed(address from, address operator, uint256 value) external view returns (byte status);
    function checkAuthorizePayoutOperatorAllowed(address operator, address from) external view returns (byte status);
}

E-MONEY TOKEN STANDARD SUPPORTERS

Projects that support the e-money standard