Minka Wallet
Wallet simplifies the process of building financial solutions by providing developer friendly interface to build programmable money.
Abstract
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.
Wallet
Overview
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:
handle
list of person readable handles for the wallet
signer
list of signers used by the wallet
labels
metadata to describe the wallet
Optional information that could be stored in the Wallet:
bridge
that holds the information necessary to process an external system
keeper
key management system in the cloud used to generate signers
Holding Keeper in the Cloud is a security vulnerability and should be used only for testing and development purposes.
Data structure
Field description
Example object
Details
handle
handle
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:
User-generated string are unique to the Domain. They are usually reserved for the organizations in the form of tags - $org
signer
signer
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
labels
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:
Using Labels to store personal or sensitive information is not recommend. The Labels are visible and can be used for querying across the Domain.
Transfer
Overview
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.
Data structure
Field description
A transfer includes additional internal fields that manage the
To validate a transfer status one can validate the hashes of the underlying actions.
Example object
Last updated