OpenbankIT WhitePaper 1.0.1 EN
OpenbankIT WhitePaper 1.0.1 EN
OpenbankIT WhitePaper 1.0.1 EN
http://openbankit.com/
Abstract. Traditional banking technology has multiple problems that prevent its
usage in emerging environment of internet payments. It has high development and
maintenance costs, solutions and APIs are proprietary and cannot be modified by a
bank, security and reliability depends on expensive hardware and software modules.
All these factors lead to high transaction cost, inability to interoperate and complex
maintenance procedures.
OpenbankIT solves this problems by providing an open-source platform for e-money
management that includes all the necessary modules for a bank, based on modern
technology and security practices. Total cost of ownership of the banking platform
therefore can be reduced 10 times compared to traditional technology while
maintaining higher level of security, transparency and speed of transactions.
1 Introduction
OpenbankIT is an open-source banking platform for managing e-money that uses blockchain
technology. We have developed a complete stack of technologies for banking industry, whose
purpose is to eliminate technological barriers between financial institutions. Transparency
and reliability of the platform are guaranteed by crypto technologies.
Important advantages of the platform are transparency, reliability and security of payments,
provided by the cryptographic technologies. The same algorithms are used by banks and
other financial institutions to protect their data. All transactions are signed by their initiators
and processed by multiple independent servers. At the same time, each payment is an atomic
transaction: if someone’s balance is decreased, at the same time someone’s is increased. The
flexibility enables a deployment of various financial services directly on top of the
openbankIT platform.
E-money issuance and distribution are fully controlled by the bank. The distribution process
can be performed through the intermediary financial institutions that receive e-money from
the bank and deliver it to the end users.
One of the features of openbankIT platform is an ability to integrate with other banking
systems, which enables performing an exchange of e-money issued and processed by
different banks and financial institutions. As a result, users can perform interbank payments
as quickly as within an issuing bank.
OpenbankIT platform also supports features like imposition of restrictions on e-money flows
between users, setting limits on accounts balances, setting maximum circulation limits of
e-money for certain account types.
Any transaction conducted by the user or by the bank’s management is timestamped and
irrevocable. This means that one cannot cancel or modify the transaction that was confirmed
in the past. At the same time the full history of the changes of all the balances can be
provided to auditors.
1.2 Benefits
1. Through the use of modern technology and high level of automation, transaction
processing costs in openbankIT are ten times less than traditional banking
technologies.
2. Increased security of a bank ledger (insiders or hackers cannot change the ledger
without knowing users’ keys).
3. Increased transparency of all the transactions (all actions, including fee changes are
transactions).
4. Increased speed of transactions - the clearing process from initiation to full
completion takes 5 seconds.
E-money — units of value, processed by means of electronic devices, which are considered
as a liability of the issuing institution, and are accepted as means of payment.
Account — a set of data about the registered user, his balance etc, which is necessary for
authentication of his actions and for displaying the results of these actions. Stored and
processed by the core of the platform.
Balance — the amount of e-money units that corresponds to a user's account at some time.
Operation — a single action from a limited set of all possible actions of the core that
determines changes of a certain account.
Transaction — a group of sequenced operations that change the state of accounts that can be
atomically approved or rejected by the core (hereinafter the term “transaction” will be used
instead of “operation” in cases where if it identical for the context provided, for example
when transaction consists from one operation).
Recharge Card — a prepaid card with e-money. A special type of account that can receive
only one payment and be used to top up user’s balance. Recharge Cards are used as a tool of
e-money distribution.
Key Pair — a public and a private key as parts of the digital signature scheme. Used by the
core to perform the user authentication and payments processing.
Core — a decentralized network of validator nodes that stores and processes all accounts in
the private blockchain. The core validates all transactions and agrees on the state of all the
accounts according to the consensus protocol.
State of the Core — a set of states of accounts at a certain point of time.
Consensus — an agreement of the set of nodes about the state of the core at a certain point of
time.
Node — a computer, that validates all transactions on the platform, transfers them to other
network nodes and monitors changes of the state of the core. The computer runs a specialized
software.
Gateway Node — a network node, which synchronizes the state of the core with validator
nodes and broadcasts new transactions to the validator nodes in secure network that were
received from parties from the public Internet.
Validator Node — a node, that participates in reaching the agreement on the state of the core
with other validator nodes, using a consensus protocol.
If necessary, the number of roles can be changed. For example, for a payment company such
roles as Fee Agent, Issuer, Administrator, Exchange Agent, Distribution Agent and
Settlement Agent role can be performed by a Master.
All types of roles in the openbankIT platform can be divided into two groups:
● management roles — roles that involved in e-money issuance and accounting
(include Master, Issuer, Administrator, Fee Agent roles);
● non-management roles — e-money users and some agent roles (include User,
Merchant, Distribution Agent, Settlement Agent, Exchange Agent roles).
Master — the main responsible individual/organization. Only one Master is allowed on the
openbankIT platform. Responsible for approval and revocation of the following roles: Fee
Agent, Administrators, Issuers.
Issuer — a Master’s trustee. Responsible for the e-money issuance. Only one Issuer is
allowed by the platform rules.
Fee Agent — an entity which stores all the collected fees. Only one Fee Agent is allowed by
the platform rules. Selected and approved during the openbankIT platform initialization. Fee
Agent can be replaced by the Master.
Merchant — an entity that accepts the e-money in exchange for goods or services. Many
Merchants are allowed to operate simultaneously. A Merchant receives the e-money from the
end users and is able to transfer it only to the Settlement Agent. A Merchant can also perform
full or partial refund of payments received.
User — an entity who is the end user of the e-money. System allows unverified users.
Creation of user account is performed automatically during the first incoming payment. User
can receive payments from Distribution Agent, from another end user, from recharge cards,
from Merchant as a refund transaction.
Figure 3.2 - Hierarchy of openbankIT platform roles
4 Architecture
Backoffice — an interface which implements management tools for different roles like
Administrators, Issuers, and Agents. Features like statistics monitoring and blocking the users
by IP-addresses are accessible here.
Core Banking Connector — provides monitoring and processing transactions in the core
banking system, that are related to operations with e-money, and initiates transactions in the
core banking system, which should be performed as a result of certain events in the
openbankIT platform (such as e-money buying and selling).
Business Logic Service — module that implements a set of rules and restrictions related to
e-money, such as the maximum balance of the wallet, the maximum daily/annual account
turnover and others.
Identity Service — handles requests for registration of Agents, Users, Merchants. Supports
limits impositions.
User Application — web and mobile applications for end users which implements basic
functions - such as displaying the account balance and transaction history, payments, invoice
creation, editing the identification data, recharge cards scanning.
Merchant Application — a module that implements the IPN (Instant Payment Notification),
web and mobile applications, test store and WordPress e-commerce plugin.
Ledger Viewer — a module that provides information about transactions and statistics in an
easy to view format.
Invoice Service — the server that stores account IDs and amounts corresponding to invoice
number. It creates a new invoice data and returns invoice data with special request.
Recharge Cards Service — enables features of recharge cards creation and their usage
monitoring by the Distribution Agent.
Key Server — it is a separate service that is deployed on a remote server. Performs storage
of private keys in a secure way. Can store encrypted private keys of platform members by
their request. This option makes possible to access an account from different devices and to
avoid manual transfer of private keys from device to device. To use the Key Server a user has
to register and to send his private key in a secure way.
Figure 4.1 - Scheme of component relations in the openbankIT
User Application — is an application for end users which enables their interaction with
openbankIT platform. Users can see the current state of their accounts in the application. In
the same way users can create, sign and send transactions to the network. To start using the
application a user has to complete a registration. A key pair – a public key and a private key –
is generated during the registration process.
Invoice Service — is a module which enables convenient receiving and sending of payments.
An invoice is created by the user’s request and stored on the server. Invoice contains the
destination account ID and amount. During the invoice creation process the unique invoice
number is associated. That number is sent to the party who wishes to make a payment. With
this specific invoice number one can fetch the invoice data from the invoice server. Using
invoice data a user can specify a payment destination and send a transaction to the network.
The invoice will be disabled after payment confirmation.
Recharge Cards Service — is a module used for e-money distribution in physical locations.
Recharge cards can be distributed both in physical and electronic forms. With recharge cards
accounts can be refilled.
4.2 Core Structure
Blockchain is stored on every node in the network. By default, they are all controlled by the
issuing bank. Some nodes can only store a copy of blockchain and do not take part in a
transaction confirmation process (consensus protocol). Such nodes can act as gateway nodes
or backup servers. Nodes that act as validators can be located in a safe network segment of
the bank and be available through the gateway nodes.
The main database of the core implements a blockchain structure, where each block is a set of
transactions. Every new block defines a new state of the core according to the previous
block’s state. Integrity of core`s database provided by the blockchain and consensus over it.
Each block is cryptographically linked to the previous block. This feature ensures ability to
validate the database and the history of transactions at any time in the future. The main
database stores all the data passing through the core.
In addition to the main database, there is another database that stores only final state of the
core. It is optimized for fast reading and writing of account data during validation of new
transactions. Thus, each node in the network stores and processes the state of the core using
two databases simultaneously. One is for fast searching and reading of transaction data,
another supports the general history and synchronization with other nodes in the network.
5 Entities Specification
5.1 Keys
Public keys can be published to anyone. Private keys have to be kept in secret. Users can
choose the way of storing their private keys. They can store them locally on their own
computers or on the remote key storage. Also users can manually store keys offline. In case
of keys loss the platform does not accept any other proof of account ownership. In this case
account’s balances become inaccessible and are actually lost.
5.2 Accounts
In the openbankIT platform each user has their own account. Each account necessarily
contains at least one public key — main, and by default any transaction is signed by the main
private key of account.
Also a set of signers can be added to the account by linking an additional public key. Such
signers can participate in common transactions signing by their private keys as well as by
main private key. Any way the set of operations which may be signed by the signers keys can
be limited. Operation of linking a new public key as a new account have to be signed only by
the main key. Revocation of the signer can also be signed only by the main private key.
5.2.3 Account-Initiated Operations
There is a set of specific operations that can be performed different roles. Every operation has
to be signed by its initiating account to be confirmed by the core.
Permitted Operations
Each account on the platform has a list of permitted operations that are defined by the core in
accordance with its role. To perform any operation, the initiator has to create a transaction,
sign it and broadcast to the network. To be confirmed the transaction comes to the validator
nodes. Each validator node checks each operation in transaction for having necessary
permissions in order to be executed according to the type of initiator’s account.
Payment Operation
User’s account balance can be changed only by a payment operation. A transaction
containing this operation reduces the sender's account balance and increases the recipient's
account balance. This change is atomic, and cannot be canceled after confirmation.
Account Creation
In the openbankIT platform the account is created when corresponding data structure is added
to the ledger. The method of creation depends on the type of account. Master’s and Fee
Agent’s accounts are created manually during the process of core initialization. All other
types of accounts are created with confirmation of special transaction.
Account Blocking
The process of account blocking means creation and confirmation of a transaction that
contains the blocking operation for a specific account specified with its ID. Blocking
operation can only be initiated by administrator of the platform. After confirmation of
blocking transaction the core refuse to confirm all transactions that aim to change the state of
a blocked account.
Creation
Recharge card account is created automatically when payment to its ID is confirmed.
Distribution Agent creates a transaction with payment operation to recharge card account ID.
After transaction confirmation the card will have a balance according to the amount of
e-money sent.
Distribution
Recharge cards are sold by a Distribution Agent in digital or physical form.
Usage
Recharge cards are used as a tool of e-money distribution. Users can refill their wallets with
use of recharge cards by creating a payment transaction which has to be signed by card’s
private key.
Termination
The lifecycle of recharge card is terminated when its balance is empty.
5.4 Transactions
Creation
The user creates an empty transaction. The user creates a set of operations and adds them to
the transaction body. The user leads the transaction to a certain protocol format by filling all
other transaction fields.
Signing
In order to create a transaction the user has to add a set of necessary signatures. The set of the
signatures depends on a set of operations initiated. A transaction can be potentially confirmed
only in case of all required signatures are present.
Pushing
Signed transaction can be sent for processing. In general, there is no possibility to cancel a
transaction that was pushed to the network. If transaction is signed by non-management
account it should be broadcasted through the public gateway node. A transaction signed by
management account can be pushed to the network directly.
Distribution
On the next step transaction reaches one of the decentralized network’s node. The node
which receives it first verifies its specific set of operations, its set of necessary signatures and
ability of operations to be performed. In case of successful transaction verification, the node
broadcasts it to all nodes it is connected to. Otherwise the transaction is rejected. All other
nodes that received the new transaction perform the same actions.
Confirmation
After forming a joint candidate validators begin voting on it that ultimately will determine
whether the candidate will be confirmed. During the voting process each validator signs a
joint candidate with its own private key and broadcasts the signature among all network
nodes. A candidate is considered confirmed if it collects the majority of votes. After that the
transaction is included to a block that defines a new state of the core and gets into the entire
history of all transactions - the ledger.
6 Processes
Any confirmed transaction cannot be changed or deleted, even if its initiator can prove that
transaction was unwanted or mistaken. A payment sent to the false account will be confirmed
and it will be impossible to undo this payment. However, in some cases it is possible to
initiate another transaction in order to return the e-money accidentally sent to a wrong
account.
Figure 6.2 - Scheme of transaction processing and updating the main database (blockchain)
7 Security
OpenbankIT platform operates as a centralized e-money management system on top of
decentralized network. In order to provide high level of assurance of payments processing
authenticity, users manage balances and accounts themselves. User performs operations that
are signed with their private key. Similar approach is used in Bitcoin protocol but in our case
emission is controlled by the issuer. All validated transactions are irreversible, therefore one
cannot change or remove any operation in the past. History of changes in the system can be
provided for audit.
7.1.1 Assumptions
1. A user trusts the e-money collateral to the issuing bank.
2. A user trusts transactions processing to the bank only in transparent manner as they
have a proof of execution of all actions.
3. A user trusts that bank provides him with properly working software and a public key
certificate which is used in operations like balance check, transaction history
monitoring, etc.
4. A user does not trust the bank in operations balance management.
5. Banks and users are interested in irrevocability of transaction processing as well as of
account managing.
All these questions are covered in detail in “OpenbankIT Security Whitepaper”.
8 Conclusion
OpenbankIT solves all the needs of banking industry for e-money management – accounting,
internal and interbank e-money processing, management of administrators, fees, users,
merchants etc. by providing an open-source platform built on top of modern technologies and
security practices altogether with necessary modules pack. Total cost of ownership of
banking platform can be reduced up to 10 times compared to traditional technology while
maintaining higher level of security, transparency and speed of transactions.