|
BLOCKCHAIN SPECIFICATION |
BIX Blockchain |
Notes |
1 |
Permissioned Blockchain |
YES |
Essentially distributed and privately owned by governments, authorities, agencies, associations, banking/non-banking financial institutions, business entities, IoT, universities, colleges, schools and other organizations, BIX Blockchain is enabling its members, employees, students using BIX network
for business, financial, payment,
security, educational, gaming and other
purposes. |
2 |
Public Blockchain |
YES (with privately permitted nodes) |
Any AML/ KYC compliant individual, entity or group, permitted by the board of BIX Blockchain
Network, can set up a server node(s)
and participate in the consensus mechanism by operating servers having in their
possessions and participating in validating transactions process of the network. |
3 |
Publicly available Data Storage |
YES |
|
4 |
Privately available Data Storage |
YES |
|
5 |
Blockchain purpose & architecture |
The
canonical Blockchain is stored
on “consensus
Layer0” servers, where each server has a copy of the
whole Blockchain. Initially BIX Blockchain’s main purpose was using
it as the decentralized database for record storage,
while customers can connect
to any of our Core Servers to login. In case of using BIX (Blockchain Information eXchange) API, they can continuously send requests for insertion of the data into the Blockchain, immediately followed by acknowledgement for each request.
Two main
Layers: Consensus (Layer0) – customized DPoS based; Application (Layer1) with
optional PoW for new tokens As it is displayed in Figure1, customized DPoS (Delegated Proof of Stake) consensus algorithm is operational at “Consensus Layer0” and Decentralized Applications DApps can be created at “Application Layer1”, including PoW green mining, token exchange
facility, multi token wallets, uploading &
managing records in Blockchain, etc. Any functionality desired by the owner
of permitted blockchain can be implemented at Layer1.
|
Figure 1. |
6 |
Capability of issuing New Tokens |
YES (On a fly) |
No programming experience required |
7 |
Types of Tokens with or without
mining |
1. Digitally Signed (DST) Token. -> 2. New Tokens w/o Mining -> 3. New
Coins
with Proof of Work Mining
-> |
The only one digitally
signed token (GBX), that is generated at Consensus Layer0. Set and implemented with “Fixed Capitalization” at the Application Layer1. Set and implemented based on PoW protocol
at the Application Layer1. |
8 |
Blockchain advantages |
Blockchain, in general, is a linear storage of historical information/events that contains a suite of blocks;
once created it cannot be changed. Oldest blocks
can be disregarded, if there
is no need of them, but cannot be changed. It’s impossible adding any content to an accepted historical block. |
The program may keep and maintain members data keys and it can point to the places in the Blockchain, where they are defined and/or redefined. It can keep a pointer
to the last block, where the key was redefined for example. The historical Blockchain blocks are never
changed (they
are recording the whole history of transactions). |
9 |
Consensus Layer 0 |
Layer0 (core) servers areservers responsible for the Blockchain
operation. |
They receive messages to be inserted and stored in BIX canonical version of the Blockchain and are responsible for finding a consensus of accepting new blocks.
When requested, they send the information (like the content
of a given
block) to Layer1 servers. |
10 |
Application Layer 1 |
Application Layer1 provides a GUI for the Blockchain and, based on the data stored inside of the Blockchain at “Consensus Layer0”, allows
implementing any desired
application (Smart
Contract). |
Layer1 servers get requests from users
and submit corresponding messages to Layer0 servers to be inserted
into the Blockchain. These messages belong
to new account
creation, money transfer, new token
creation, etc. They can also request Layer0 servers for the content of any accepted block
and/or the
current state of
internal databases. For example, they
can request current balance of an account,
content of currently mined block for Proof of Work (PoW) mining, etc. |
11 |
Network architecture (types of nodes, etc.) |
Nodes are running on regular computers using
either Linux,
Windows or Mac OSX operating
system(s). |
GUIs are implemented via www (HTML5) protocol.
|
12 |
Programming language for core, tokens and dApps |
The system is primarily implemented in “C”, a highly portable procedural programming language, that is used for system applications, which form a major part of Windows, UNIX, Linux, Android
iOS and OSX (the "Apple OS") operating systems. |
Comparing to C#, Java, Python and other programming languages, programs written in “C” have much better
performances. It might seem to be more difficult to develop
software programs in “C”, but Comparing to C++, “C” is better mainly because of its simplicity. Software program written in “C” usually performs better, works faster and requires
significantly less hardware (machine) resources. Software program written in “C” is usually easier to maintain and extend than software
written in other languages (OOP in particular). A program
in “C” is easier to understand for 3rd
party developers / code reviewers. |
13 |
Hardware and software requirements for running blockchain servers |
The software has very low hardware requirements running on MS-Windows and Linux system without requiring any particular version. The only requirement is the installation of OpenSsl library.
|
The memory (around 100 MB) is generally used only for pending messages, waiting to be inserted into the Blockchain. CPU is mainly spent on verification of signatures of received messages; large elliptic curve verifications may be a bit expensive. |
14 |
Crypto algorithms used for closure blocks, transactions, file encryption |
SHA512 Secp521r1 |
SHA512 is used everywhere, where a hash of data is required. "secp521r1" elliptic curve keys & signatures for signing messages and blocks. |
15 |
Data type and encryption |
Binary data. OpenSsl algorithm called "EVP_aes_256_ctr". |
Blockchain users can insert any binary data into the Blockchain. I.e. they can insert a file unencrypted or encrypted by their own algorithm. In case the user uploads a file
with the basic encryption, we provide as default an OpenSsl algorithm called "EVP_aes_256_ctr" with a user entered symmetric key and a randomly generated initialization vector. |
16 |
Key generation algorithms |
OpenSSL. Transport Layer Security
(TLS) & Secure Sockets
Layer (SSL) protocols. Linux package named "haveged". |
OpenSSL (robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets
Layer (SSL) protocols)
is used to generate keys. Linux package named "haveged" is used to improve entropy of generated keys. This is used for everything related to security, hashes, signing messages, wallets, blocks, keys. |
17 |
Communication between servers |
Node servers are communicating via freely inspired FIX (Financial Information eXchange) based, in-house developed proprietary messaging exchange BIX (Blockchain Information eXchange) protocol
using standard
TCP/IP transport. |
Communicating servers are using standard SSL connections, confirming their identity and protecting their
communication channels. Moreover, for the security reasons, each message server
nodes exchange (within the SSL connection) has an additional
signature, generated with server's private key using elliptic
curve signatures for this purpose. Well documented BIX (Blockchain Information eXchange) protocol allows members to develop
their applications connected to the consensus Layer0 and participate in the network. |
18 |
Consensus of the Main Core |
Enhanced DPoS with additional confirmation rounds. Proprietary customized consensus algorithm used by Layer0
servers, is designed in a way allowing max data flow. Consensus protocol is minimizing the amount
of data exchanged between servers. |
Consensus is based on principals of accepting a block, when it is digitally signed by 2/3 of Layer0 permitted servers. This is the solution, which does not require a particular computation power and prevents forking of the
blockchain as well. Once 2/3 of signatures for block
number “N” are reached, there is no way to collect 2/3 of signatures for a different block for a simple
reason – Layer0 servers will not ever sign 2 different blocks with the same “N” number. There are several rounds. To speed up finding
a consensus, in the first round only 1/2 of servers
is sufficient to pass to the next round. In the final round 2/3 of signatures are required. |
19 |
Forking risk |
There is no actual risk. The only critical moment is between the moment,
when a server
signs a block and the moment when
the block is accepted and
inserted into the Blockchain. |
At the moment, when a server signs a block, it does not accept any other block
than the one he had signed.
In case the
network, for
any reason, accepts
some other block, the server will stay blocked (frozen). However,
this possibility is rather theoretical and still would not cause fork of the Blockchain.
|
20 |
Consensus (Layer0) customized DPoS based |
Layer0 is ensuring storage of the data into the Blockchain
(you can imagine
it as a file system in a computer). |
Except the minor technical details, the main difference compared with the standard
DPoS is that we are collecting signatures from 2/3rd of
servers. Each block must be signed by large majority of participating servers before being inserted into the
Blockchain. It makes the Blockchain particularly safe. An attacker would need to
take full control
of 1/3rd of servers
to fork the Blockchain in comparison to Bitcoin,
where a fork can occur naturally or standard DPoS, where an attacker needs to hack a single
server only. |
21 |
Advantage of customized DPOS mechanism |
The main advantage of BIX consensus algorithm compared to others is the speed of block
being accepted
into the Blockchain. It doesn’t rely ambiguity on participants and instead
requires secure signings of all participants during consensus process. To speed up finding the consensus, in the first round only 1/2 of servers
is sufficient to pass to the next
round. In the final round 2/3 of signatures is required. |
After having briefly evaluated aBFT's DPoS algorithm, it looks very similar to our approach. From what we have seen DPoS BFT is using two rounds to find consensus, while our approach has refined the consensus further into several rounds, we are successively checking more and more requirements in successive rounds. So, if a block
is invalid in the round “x”, then the information necessary for round
“x+1” is not
broadcasted in the network. Another
important point if that there is no necessity checking the *entire*
ledger with each latest block,
because the latest
block included
in Blockchain is containing hash of all previous
blocks, so re-checking of the entire ledger
on each new block is not required. |
22 |
Consensus Layer0 block producers |
In the current version of the software producers hold the whole Blockchain. Layer0 servers are DPoS algorithm based “Block producers. |
The main reason is that before joining
the network each server is checking the consistency of the whole Blockchain. This is done by starting from genesis block (1st block of the Blockchain) and passing through all blocks until the most recent
one. In the current
version of the software the producers hold the whole Blockchain. Future implementation - implementing specific optimization for saving disk space. There
will |
be some special
"quasi-genesis" blocks, which will be generated within regular intervals and will be used by new servers
to "start" their copy of the Blockchain. |
23 |
Block and message
retrieval |
Layer0 is basically something like a special and safe file system in a computer. |
Concerning efficiency of retrieval, blocks are stored in separate files in separate directories. I.e. retrieving block is as efficient as opening a file. To get a particular message from the block one
doesn’t have to traverse the given block and to find the message,
but use a message ID instead |
24 |
Block producers rewards |
All producing servers are getting the same reward. There is no waiting list for block producers and/or any other governance mechanisms- built in. |
We call this process mining; however, it is very different from mining as
known from Bitcoin; there is no need of any hash power or
hash rate,
same as there
is no waste
of CPU power for searching a unique nonce. Blocks are validated by digital signatures since every server is signing blocks by its secret
private key and the block is accepted if it collects signatures from enough servers. Owners
of servers are equally
rewarded every day and their reward does not depend on the number of blocks signed. |
25 |
Layer0 DST token mining |
Each server is rewarded for storing the blockchain, participating in the consensus process
and signing blocks. Proposing a new block to the consensus does
not require any cost. |
Pre-built “mining method” for the Core Servers represents “Digitally Signed (GBX) Token” that is used for
“Safe Storage”
payments. Production Core Servers,
for their participation and actual work in the Blockchain, are regularly compensated by obtaining a certain
number of crypto units (GBX tokens)
at the same time for each mining period. Since the storage space is a critical resource (comparing to the CPU consumption, that is negligible in BIX Blockchain), the GBX mining level of difficulty is constantly increased within the increased usage of the storage
resources. |
26 |
Application (Layer1) with optional
PoW mining for new tokens
|
Layer1 supports
all programs, using Layer0 storing their data. Such applications are designed for different purposes. Example:
Separate from Consensus Layer PoW mining
process does not slow down the Blockchain Network.
|
The owner of the token or his volunteers have to install and run (or create
their own) mining software. Basically, anyone can install mining software and provide PoW mining for any token. If there
is nobody mining for the given token, no transactions of such token can be performed and the token is in fact "frozen". For avoiding such outcome there is a built-in, "low priority, low CPU consumption universal miner" in the blockchain, that insures the consistency of mining process of all PoW tokens.
However, it's usage is limited. |
27 |
PoW protocol at Layer1 (available at the request) |
Means that transactions (sending/receiving money) on such tokens are performed only if some mathematical puzzle (PoW) is resolved. |
Used by token owners looking to have an additional level of security or believe that the mining capability will add an additional
value to their businesses. In case of payment transactions based on those tokens,
they are performed in 3 steps: a. Request for the transaction is inserted into the Blockchain; b. Solution for the mathematical puzzle for the transactions
is found inserted by some miner; c. Blockchain validates such solution before inserting it into the Blockchain and applies the transaction only if both (a. and b.) steps were performed successfully. |
28 |
Identification of the data stored into the blockchain |
Identified by two parameters: "data type" & "data itself” |
"data type" - any string,
similar to file system (like ".exe", ".pdf" or ".doc") "data" itself
- an array
of bytes, which corresponds to content of the file |
29 |
Data exchange |
A request to insert
a data into blockchain is considered as a "message". Each "message" has a “message
ID”. |
Each message is inserted into a particular block. The data can be retrieved from the blockchain by entering the block number
and the message ID. In case if false
message is issued
and insert it into a block, other
servers will not approve such message preventing it from being included
into the blockchain. The latest block included in blockchain contains hash of all previous
blocks, so re-checking of the entire ledger within each new block issued
is not required. |
30 |
Transactions |
For using Tokens and/or receiving/sending transactions users do not need to download and hold the whole Blockchain. |
For sending a transaction user just needs to connect to one of the Layer0
servers and submit |
a transaction. For receiving a transaction user connects to one of Layer0 servers and sends the request for |
|||
a particular block, followed by server responding back by sending the block to the user. |
|
|
|
User can also subscribe for the newly generated blocks and Layer0 servers will continuously send blocks
as they are inserted
into the blockchain. User can use or disregard such retrieved content in any way depending on the necessity factor. |
31 |
Handling impostors |
Each message must be signed by private key of the account
holder and the private key of the server. |
Also, the identity
of servers is checked by usual SSL authentication. The only way how to hack this network
is to take full control over the whole server
and (get its IP address and private keys).
However, due to the requirement of 2/3rd of signatures hackers would need to take full control over 1/3 of all participating servers to be able forking the blockchain. |
32 |
Scalability, performance, security, & encryption Transactional flow rate limit |
We have chosen
SECP521r1 for digital signatures because currently it is by far the safest available option. |
As of now realistic stable transactional flow rate equals to 1,500 messages per second with
the pick of 5,000/ per sec. If there is a need for increasing speed,
a weaker algorithm for signing
less important messages can be used for better
performance. NOTE: efficiency calculation, does not only estimate
the cost of finding
the consensus, but |
evaluates the whole implementation that includes the cost of finding
a consensus, distribution of messages, cost of signing and verifying signatures of each message stored in the block. |
|||
33 |
Transactional file type and size limit |
Currently permitted maximum size of
a single message block is set to 10 MB. Maximum size
configuration depends on settings and can be changed to up to 100 MB. In case of larger
size, more memory capabilities for buffering purposes
will be needed. |
The blockchain can store various types of messages. The size of a single message
is limited by the maximal size of the block to 10MB. The number of messages stored inside a single
block is limited
only by the total size of messages. The total size of messages must be lower than 10MB. In an extreme case of 10MB message
size, each block will contain
one message only.
A typical
use case is secured storage of important files like digitally signed contracts, documents, video files &
etc. Any file types
including raw data files are supported. Capability of storing large files is only one of BIX product
features. |
34 |
Hash rate factor |
There is no blind generation and checking of hashes in the Blockchain consensus and mining
approach. |
Each server just generates
its digital signature based on its secret private key. A block is accepted, when it collects
enough digital signatures
from Layer0 servers/nodes. |
35 |
Peer - to
- peer decentralized token exchange capabilities. |
Pre-built decentralized exchange facility allows participants exchanging issued tokens using “Order Matching System” by placing and executing Limit &
Market orders. |
The Blockchain can be connected to 3rd party
exchanges or other “Liquidity
Sources” providing ECN (Electronic Communication Network) type operation with additional, outside of our Blockchain, tradable instruments provided by 3rd party Liquidity Providers (LPs). |
36 |
Testnet |
|
BIX “Pilot” blockchain is constantly undergoing through the test when running
under high speed constantly performed transactions for few months. The last measured length of the “Testnet” blockchain few months ago was 745664 blocks
and the current disk space usage was 6.2GB. |
37 |
BIX API |
BIX (Blockchain Information eXchange) API core engine is based on freely inspired FIX (Financial Information eXchange) protocol
standards. |
All additional future Applications, including applications developed by 3rd parties can become functional using BIX API. Any authorized application, developed by 3rd parties, can be connected to the blockchain using BIX API. |
38 |
Pre - built AML & KYC management for main Blockchain & New Tokens |
YES |
KYC/AML compliance process can be controlled by central
department or be connected to the 3rd KYC/AML party. In the current version, wallets can hold multiple token accounts and are not related
to a particular token.
Each member account
holds multiple balances in multiple tokens
with a separate
balance for each existing token. |
Visual examples during QA testing of:
Connected Nodes
Disconnected Nodes
Re- connected Nodes