Wallet simplifies the process of building financial solutions by providing developer friendly interface to build programmable money.
Wallet represent entities - people, devices or organizations and simplifies the process of building financial solutions.
The main purpose of a Wallet is to add an abstraction layer on top of the Ledger in order to address the problem of poor usability and long time to market of modern transactional systems (Blockchain).
While Ledger uses digitally signed messages (Actions) between addresses (Signers), a Wallet simplifies the interaction by using handles to represent one or more addresses by a phone number, email or nickname. All interactions between Wallets are represented as Transfers.
A Transfer acts as a state machine that simulates payments - asynchronous operations that usually require several actions to complete.
Wallets represent entities - people, devices or organizations that are interacting with the Cloud. At a low level, a Wallet is represented as a JSON object holding the information about the:
- list of person readable handles for the wallet
- list of signers used by the wallet
- metadata to describe the wallet
Optional information that could be stored in the Wallet:
- that holds the information necessary to process an external system
- key management system in the cloud used to generate signers
A JSON Object used to list the people friendly handles that can be used as a reference to a Wallet. Handles are usually a phone number, an email or a person generated nickname.
Each wallet can hold several handles to reference the wallet.
Example for a person wallet that holds two handles:
An array of JSON objects used reference Signers attributed to a Wallet.
For a more detailed description of a Signer - review the Ledger building block:
A Wallet can have many different Signer addresses and a unique address should be used for each transaction. Signer list allows mapping all the related Signers to a specific Wallet.
Example of a Signer object stored in the Wallet:
Labels are a set of user-defined key-value pairs associated with a Wallet. Lables allow adding descriptive meta-data and for the purpose of querying and analytics.
For example, Labels can be used to map information about the person necessary for querying:
A Transfer acts as a state machine that simulates payments - asynchronous operations that usually require several actions to complete. It uses person readable handles to initiate the transactions and map the status of the transfer.
Basic business logic such as fees and whitelisting/blacklisting can be implemented at the Transfer level. The Ledger manages the lower or upper limits for Signers and time constraints on the action level.
Transfer is basically metadata about a specific financial operations composed of one or many Actions. Action inputs are IOUs. An IOU is a digitally signed document that acknowledges a debt and authorizes an action to clear it. Only signed actions are an acknowledgment of a debt; a Transfer does not influence the balance directly in the system.
A transfer includes additional internal fields that manage the
"detail": "for espresso in Croatia"