Market capitalization and 2018 rebrand. Cryptocurrencies and double-spending
In December of 2017, the price of RaiBlocks XRB (rebranded to Nano as of January 31, 2018) has skyrocketed from under USD$1 to USD$30 by January 1, 2018. By the end of January, the price fell to about USD$15 and the capitalization of Nano has been about 2 billion USD.
In short, Nano/Raiblocks wants to become everything Bitcoin wasn’t able to accomplish. It wants to be a fast, free, and easy to use cryptocurrency that people can use to pay for anything they want.
Reasons for rebranding from RaiBlocks to Nano
The team behind Nano/Raiblocks decided to rebrand their project despite the impressive growth of the price of the token and growing name recognition. The reason for rebranding was that many people didn’t know how to pronounce the word “RaiBlocks” and why the parts of the word (“rai” and “blocks” were there). Many of the members of the community weren’t sure if “Rai” was pronounced as “rye” or as “ray.”
The word “nano” is much easier to pronounce and the team behind RaiBlocks felt that it described the project much better. The new main website of the project is Nano.org. As of February of 2018, the developers behind the project plan to eventually update all the software and information and replace the name “RaiBlocks” with “Nano” everywhere. The change did not have any impact on the performance of XRB as a currency, the wallets, and the network.
The need for XRB Nano/RaiBlocks
Colin LeMahieu published the first XRB Nano/RaiBlocks whitepaper in December of 2014.
The developers of RaiBlocks were observing the growth of Bitcoin and correctly realized that moving forward the Bitcoin network would have problems gaining mass-adoption. The reasons for the problems are poor scalability (Bitcoin network can process between 3 to 7 transactions per second), long wait time for transaction confirmations (an hour or more) and power inefficiency because of how mining works on the Bitcoin network.
Problems with transactional capacity of the Bitcoin network. The issue of double-spending
Fundamentally, all the issues around Bitcoin are about the Bitcoin network having one decentralized ledger, also known as the Bitcoin blockchain, that records all the transactions that occur on the network.
The Bitcoin network aims to create a block of the blockchain every 10 minutes. Blocks on the Bitcoin blockchain are 1 megabyte in size, which in practical terms means that the Bitcoin network can only process between 3 and 7 transactions per second. If Bitcoin were to gain mass adoption and people all over the world were to start using it for payments, recording all of the global transactions onto one ledger in a way that allows people to engage in transactions quickly, easy, and efficiently, would simply not be possible.
Another problem with the Bitcoin network is latency or the time it takes for a transaction to go through. On the Bitcoin network, all transactions are final and irreversible. In the white paper that introduced Bitcoin, Satoshi Nakamoto, the creator of Bitcoin, argued that reversibility of transactions is one of the main reasons why the costs of transactions performed using traditional financial institutions is so high.
One of the biggest novelties of Bitcoin is that it solved the issue of peer-to-peer trust. Today, two people or organizations that do not know each other and do not trust each other can use Bitcoin, Ethereum, XRB Nano/RaiBlocks or one of many other cryptocurrencies without a need to use a third-party such a bank to facilitate the transaction.
The Bitcoin blockchain exists so that it would be impossible to modify past transactions on the network or somehow scam the participants of current and future peer-to-peer transactions.
In literature and scientific studies, the problem that Satoshi Nakamoto and the Bitcoin network were able to solve is also known as “the problem of double-spending.”
This article will introduce you to the issue of double spending, the way it works on the Bitcoin network and the explanation of why and how XRB Nano/RaiBlocks solves the issue more effectively than Bitcoin.
The problem of double-spending in simple language
When you deal with physical money in paper bill or coins, be it United States dollars, Euros, Canadian dollars or any other currency in the world, there’s only a finite number of the bills or the coins. When you give someone a bill that you have, that bill is gone.
With electronic money, including regular currencies and cryptocurrencies, the issue is much more complex because there needs to be a system that would prevent a random party from creating electronic money on its own and then claiming that the money was in the system before. Bitcoin has solved this issue with introducing mining and adding coins into circulation by giving them out as rewards to miners. Another issue, which is the actual issue of double-spending, is when a party has electronic funds and then tries to send these funds to multiple parties at the same time. In real life, this would be simple to person A trying to give a bill to person B, and at the same time person C and maybe a few more people.
The issue of recording transactions in the proper order
One of the central issues for most financial systems is the creation of transaction records in the correct order.
The following example illustrates why the order is so important. Let’s assume that a user A gets 10 coins, sends 20, receives 15. If the events occur in the order described and user A started with zero, then after receiving 10 coins and sending 20, the user will have a negative balance of 10 coins. If not resolved, this could be an issue for any cryptocurrency. If a user could have an account with a negative balance and the system is anonymous, users would have an incentive to create accounts, deplete them and get them into the state of debt as much as possible and then simply abandon them.
On the Bitcoin network, the ledger of the network records all the transactions as they occur. This fact leads to a lot of consequences and enormous costs.
Blockchain structure: Bitcoin vs XRB Nano/Raiblocks
A transaction on the Bitcoin network is a transfer of ownership of the Bitcoin network currency from one user of the network to a different user with making a record about the transaction on the Bitcoin network.
For example, if you have 0.3 bitcoins in your wallet and you send 0.2 bitcoins to a friend, you are transferring the first to those 0.2 bitcoins and will have 0.1 bitcoins remaining in your wallet.
Depending on the busyness of the network, you may also need to pay a fee to Bitcoin network miners to include your transaction into the bitcoin blockchain. Essentially, what you are paying for is for miners to verify that you have funds that you claim to have and to include your transaction onto the Bitcoin blockchain, which is the only blockchain that the Bitcoin network has, which is one of the biggest differences between Bitcoin and XRB Nano/RaiBlocks because XRB Nano/RaiBlocks has a separate blockchain for every user on the network.
You can see the chart that shows transaction fees on the Bitcoin network for three month up to the moment when you are reading this article by visiting https://bitinfocharts.com/comparison/bitcoin-transactionfees.html#3m
Obviously, an ideal digital currency would have no fees whatsoever. No fees is one of the advantages of XRB Nano/RaiBlocks over Bitcoin. With XRB, there are never any fees.
XRB Nano/RaiBlocks solves the issue of fees with having each user being responsible for his or her own blockchain.
The structure in which each account is associated with a separate blockchain is known as block-lattice. The blockchains on the XRB Nano/RaiBlocks network are essentially equal to the history of the accounts. Only the owner of the account can update the account, which allows the users of the XRB Nano/RaiBlocks network to update accounts immediately, without having to wait for the network to process their transactions. Because the accounts exist independently, the XRB Nano/RaiBlocks protocol is very lightweight and hardware requirements are minimal.
The idea from the block-lattice structure on the XRB Nano/RaiBlocks network comes from the field of electronic circuits, more specifically arbiter circuits. An arbiter is a device that makes decisions about the allocation of shared resources. With electronics, these resources are typically the memory of a computer or processing power. With XRB Nano/RaiBlocks network, the main resource is the tokens of the network.
The main idea of the creators of the XRB Nano/RaiBlocks network was that in the world around us there already exist devices and mechanisms that can fairly decide on how to give access to resources.
For example, an important form of an arbiter device is a device that decides which source gets access to a CPU or memory in a computer with multiple CPUs. One of the main goals of such a device is to decide on access and prioritize requests when the number of requests is large, at the same time not allowing for a scenario in which several requests get access at the same time, which is very similar to the issue of double-spending with cryptocurrencies.
An example of an arbiter device in real life is a police officer or a traffic light at a busy street intersection.
The founders of XRB Nano/RaiBlocks applied the principles behind those devices to the XRB Nano/RaiBlocks network.
Fees and coin circulation on XRB vs Bitcoin
On the Bitcoin network, users do not have to include a fee. However, miners also do not have to include any transactions into the bitcoin blockchain blocks that they mine. For creating a block on the Bitcoin blockchain, miners get a reward. Therefore, even if a block that a miner on the Bitcoin network creates has all transactions with zero fees, the miner would still get a reward from the network for created the block.
When Satoshi Nakamoto created the Bitcoin network in 2009, the reward for mining the first 210,000 blocks of the bitcoin network was 50 bitcoins per block.
In the beginning of February of 2018, the Bitcoin network had a little over half-a-million blocks. You can see how many blocks the network has created by the time you are reading this article by visiting https://blockchain.info/ The top number in the “height” column, right under the word “height” would be the number of the last Bitcoin block as you are reading this. If you click on that number, you will see the detailed information about the block, including how many transactions it includes, how much users paid in fees to send the transactions, who mined the block, and all the information about the transactions, including receiving addresses and amounts.
After being equal to 50 bitcoins for the first 210,000 blocks on the Bitcoin blockchain, the reward split by half and became 25 bitcoins per block for the next 210,000 blocks. This means that the network was adding many more coins to circulation in the beginning of its existence than it is now or that it will ever add in the future. In fact, as of the beginning of February of 2018, the total number of bitcoins in circulation was over 16.5 million coins out of 21 million bitcoins that the network will create during its existence. This means over 80% of bitcoins that will ever be in circulation have already been mined. The reward kept splitting in half and will keep splitting every next 210,000 blocks. The next split is estimated to happen in June of 2020. You can see the countdown clock to the next halving of the reward, the total number of bitcoins in circulation as you are reading this article, the total number of bitcoins left to mine and many other interesting facts and stats by visiting www.BitcoinBlockHalf.com
When the Bitcoin network started to become extremely popular in 2017, the transactions were appearing on the network faster than miners could include them in the blocks. Miners get 100% of the fees that users can choose to include with their transactions. As the demand for including transactions into the bitcoin blockchain from the users of the network outgrew the supply of how quickly the miners could include the transactions, the miners started choosing the transactions that included a fee. For users, this meant that if they wanted for their transaction to go through quickly, they now needed to include a fee. This led to fees on the Bitcoin network increasing very significantly. For example, on March 1, 2017, the average transaction fee on the Bitcoin network was USD$0.875. On December 1, the average fee was a little over $6. You can see a chart with average transaction fees on the Bitcoin network since its inception in 2009, here: https://bitinfocharts.com/comparison/bitcoin-transactionfees.html
Transactions on the XRB Nano/Raiblocks network
Because on the XRB Nano/Raiblocks network, each user has a blockchain, XRB Nano/Raiblocks can have users that transact with each other independently and the entire network doesn’t have to process their transactions. The users do not need to coordinate with each other how and when they send the funds and there is no central copy on the network that needs to synchronize itself when the new transactions occur. Additionally, there is no central authority on the XRB Nano/Raiblocks platform that restricts the financial transactions between the users of the platform.
Here’s why and how this works: In the example above, where user A received 10 coins, sent 20, received 15, the sequence doesn’t really matter because the user has received 25 coins and has sent 20.
This means that to solve the issue of debt and negative balance, all that is required is to arrange the transactions in a different way. In the following sequence the amounts are the same as in the example above, the transactions are the same, and the starting and final balances are the same, yet the ordering is different, and so the problem doesn’t exist: user A has a balance of 0, gets 10 coins (the balance is now +10), gets 15 coins (the balance is now +25) sends 20 (the balance is now +5).
On the XRB Nano/RaiBlocks network, there is no mining. The developers of the network have created the full supply of coins and distributed them in October of 2017. The total supply was 133,248,290 XRB.
Neither websites nor miners can add new XRB to the circulation. Some websites offer to pay users for using their computers to mine XRB. Typically, such websites are in reality mining Monero, which is much easier to mine compared to Bitcoin or Ether, and can, indeed, be mined using a personal computer. Such websites mine Monero, then convert Monero to XRB on an exchange and then pay out dividends to their members in XRB.
As of the beginning of 2018, ticker XRB (capital XRB) represents 1 million xrb (lower-case xrb) or 1Mxrb. 1Mxrb equals to 10^30 raw. Raw is the smallest unit of the XRB Nano currency, similarly to how Satoshi is the smallest unit of bitcoin. 1 xrb = 10^24 raw.
Transaction inputs and outputs on the Bitcoin blockchain
The Bitcoin network verifies the transactions that occur on the network by using one blockchain. The blockchain is decentralized and a lot of copies of the blockchain exist, but information about the transactions still goes into one decentralized database.
For the Bitcoin network to start processing a transaction (which is the same as to say “for the network to deem a transaction to be valid”), the transaction needs to have at least one input. An input is a reference to a previous transaction on the network or, more specifically, to an output from that transaction. An output is the amount of money that is or has been sent. In simple language, this means that if you want to give someone, say, 5 bitcoins, the network digitally verifies that you had someone give you in the past an amount that was equal to or larger than 5 bitcoins or several amounts that add up to 5 bitcoins or more. To the Bitcoin network, this means that you can actually send the money because you do have it. Just like in this example, every transaction on the Bitcoin network can have multiple inputs and outputs, which means that the money you have could have come from several transactions and you may want to send the money to not one, but several wallets. On top of that, every input in a Bitcoin transaction must include a digital signature, which is generated in the connection with the private key of the wallet associated with the address that is initiating the transaction.
If a Bitcoin transaction has multiple inputs, it means that the funds that are being sent come from multiple addresses. It is important to note that while a transaction on the Bitcoin network does contain a reference to an input address, Bitcoin addresses are not wallets and they do not store any funds nor do they carry balances. Only wallets have funds in them and can carry balances. You can also use an address only to receive funds. You do not send anyone funds “from” an address because the concept of “from address” does not exist with Bitcoin.
A practical example that illustrates the importance of these differences is a user believing that their address has, say, 4 bitcoins, sending 1 bitcoin to someone and thinking that the address still has three bitcoins (because they had four and sent one).
In reality, when the Bitcoin network takes an output from a previous transaction (which in this case is 4 bitcoins) and uses it as an input, it must spend the output entirely. When the value of an output is higher than the value of an input, just like it is in this case, the network generates a new address and sends the unspent funds to this new address. The new address is also known as a change address. If the user doesn’t have a backup for the change address and something happens to unspent funds, they will be lost forever.
The way the Bitcoin network works may seem strange at first, but in reality what happens when you send funds on the network is very similar to what happens when you buy something in real life and pay with a paper bill. Let’s say that you are buying a $2 ice cream bar and you have a $10 bill. When paying, you will not simply tear one-fifth of the bill and give it to the cashier. You will give the entire bill and will get $8 in change, most likely a $5 and three $1 bills.
If this were a bitcoin transaction, in terms of inputs and outputs it would look in the following way: one input of $10 bill. Outputs, six outputs total: $1 bill to the store, $1 bill to the store (these two outputs equal to $2, the price of the ice cream), $5 bill to you, $1 bill to you, $1 bill to you, $1 bill to you. Obviously, if you are lucky enough to wander into a store that can give change with $2 bills, then the number of outputs will be different. If a store is out of paper bills and only has coins, the number of outputs will be different, too.
What happens with Bitcoin, using the example above, is that the network actually destroys the $10 bill, creates new bills that equal to $10, and makes a record of what happened. Because the Bitcoin network can do it with any amounts, it is actually very practical and convenient. Imagine if you had $10, needed to pay $1 and could instantly turn $10 into two bills, $1 and $9, anytime you wanted. This is exactly what the Bitcoin network does with change addresses, inputs and outputs during the transactions that occur on the network.
Transactions on the XRB Nano/RaiBlocks network
As stated before, on the XRB Nano/RaiBlocks network, each user has its own blockchain. The blockchain for a user also arranges transactions independently.
For example, consider these two sequences of transactions: In sequence 1, user A receives 5 coins and sends 5 coins. In sequence 2, user A receives 5 coins and user B sends 5 coins.
What is important to notice here is that, first, there is no need for the entire network to know about all the transactions that happen between users in the way the notifications and confirmations occur on the Bitcoin blockchain.
Second, the order of transactions does matter in sequence 1 (user A receives 5 coins and sends 5 coins) because there is a possibility of the account of user A having a negative balance. If user A has a zero balance, he can’t send 5 coins before receiving 5 coins. However, in the transaction sequence 2, the order doesn’t even matter because the inputs and outputs deal with balances in different accounts.
The XRB Nano/Raiblocks network is able to protect itself from the issue of double-spending and other attacks by using proof-of-stake algorithm instead of proof-of-work. In addition to proof-of-stake, it also uses proof-of-work, but does so differently from Bitcoin.
Latency of the Bitcoin network and capacity of XRB.
A confirmation of a transaction on the Bitcoin network happens when a block on the network has information about the transaction. When a miner includes the transaction in a block, it is said that the transaction “has been mined at a depth of one block” or has been confirmed once. Each subsequent block of the Bitcoin blockchain is connected to the previous block via a system of hashes. A hash is a string of data that is typically much shorter than the original data. For example, a cryptography algorithm could take a set of data (1, 1, 1, 1, 1, 3, 4, 6345, 2, 2) and the hash for it would be w1a. With Bitcoin, sets of data are transactions and all the information associated with transactions. The idea is the same as in the example above: a large set of data returns a much shorter hash, making it easy for several parties to compare if they have the same data because they do not actually need to look at the data. All they need is to compare the hashes.
To protect its security, the Bitcoin network uses cryptography algorithm called SHA-256. The algorithm returns one hash for one set of data, meaning that for a set of data, its hash is always the same. For example, block #507601 of the Bitcoin blockchain has information about 1982 transactions. The hash for the block is 0000000000000000001aece64bcb0aef8be0cd03f0ffa5eed4e3e33776e0b7e3. The block also contains the hash of the previous block, which is 0000000000000000000040c1eddbf10646a0fad8baac43a9617bbff6de218775. You can see the information for the block #507601 on the Bitcoin blockchain explorer here: https://blockchain.info/block/0000000000000000001aece64bcb0aef8be0cd03f0ffa5eed4e3e33776e0b7e3
To protect the network against double-spending, the transactions on the Bitcoin network require a certain number of confirmations.
For example, for a transaction from block #507601, the block #507601 serves as a confirmation. After the network added block #507602, the transaction had two confirmations. After the addition of the block #507603, three confirmations and so on.
There are several types of Bitcoin wallet clients. Some would show the status of a transaction as “unconfirmed” until the transaction reaches 6 confirmations. Others would show “n/unconfirmed,” where n is the number of current confirmations. Businesses and exchanges can set their own rules as to how many confirmations they require for a transaction to be valid from their perspective.
There is nothing special about the number six in the “six blocks” requirement. Originally, Satoshi Nakamoto chose it so that the risk of attack is less than 0.1%. In reality, an attacker wouldn’t even get close to this number.
When the Bitcoin network adds new coins by giving them as rewards to the miners, the miner that receives the coins can’t spend them for the next one hundred blocks. Some older clients would not allow for new coin spending for 120 blocks after the network adds the coins to the system.
The biggest problem with this approach to transaction confirmations is that the Bitcoin network creates a block of the network every ten minutes or so. This means that six confirmations on average take an hour or even longer. This is not something that would be acceptable for use of a cryptocurrency for daily needs on a daily basis. Most people are used for immediate transactions, be it when they pay with cash or plastic.
When you, for example, are buying some milk and break from a local grocery store, you would never use a currency that requires you to wait for an hour or longer for a confirmation that the transaction is valid. This would be a complete deal breaker.
The XRB Nano/RaiBlocks network works much faster than the Bitcoin network because the network doesn’t have one blockchain. Each member of the XRB Nano/RaiBlocks network has a separate blockchain that records all the transactions for the account.
All members of the XRB Nano/RaiBlocks network are required to complete a short proof-of-work process when engaging in any kind of transaction on the network. The process takes up to a few seconds. During the process, the users are adding blocks to their own blockchains. Because the process is fast and there are many independent blockchains on the XRB Nano/RaiBlocks network, the network can process thousands transactions per second vs Bitcoin’s 3 to 7 transactions per second.
If a user on the XRB Nano/RaiBlocks network wants to send a large amount that came to an account through a series of smaller transactions, it groups them into one for efficiency reasons, which is yet another difference between XRB Nano/Raiblocks and Bitcoin.
Proof-of-work and proof-of-stake on XRB network
With Bitcoin, proof-of-work is the only way to create blocks on the network, thus validating transactions. With proof-of-work algorithm, a miner on the Bitcoin network and a user on XRB Nano/RaiBlocks network need to create a hash that corresponds to certain requirements.
On the Bitcoin network, these requirements are determined by a parameter that is called “difficulty.” The more miners the Bitcoin network has, the higher the difficulty and the harder it is to create a block on the network.
In practical terms, difficulty means that the hash for a block needs to have a certain number of zeros in the beginning of the hash. For example, the hash for the block #507607 on the Bitcoin blockchain network was 00000000000000000043ba88d872b99da792e747c9af3fe3751eb408bc5ed999.
Because a set of data can only have one hash, miners add a number to the set of data to come up with the winning hash. Otherwise, if they were to use the same data (the information about the transactions), they all would get the same hash.
The number that the miners add to the set of data is called nonce, which is short for “number used once.” For example, the nonce for block #507607 was 704286262. Once the miners come up with a nonce and a winning hash, both the nonce and the winning hash become a part of the Bitcoin blockchain.
All miners and users know what algorithm the network uses to create hashes (the algorithm is called SHA-256), so they can easily check the validity of the data.
In essence, proof-of-work means that miners are playing a lottery by picking nonce numbers to create a winning hash. The hash then serves as a tamper-proof stamp that protects the data on the Bitcoin network. The system works and the miners keep playing the lottery because the system is honest, transparent and the chances to win are realistic.
In most lotteries available to the public, such as Megamillions and others, the chances of winning are not realistic at all. People look at five numbers and a jackpot that they need to guess and think that the probability of winning is somewhere around five or six (the number of numbers they need to guess) multiplied by the options, which makes it somewhere between 1 in 500 and 1 in 1000 or so.
In reality, the potential probabilities are very different because they deal not with just numbers, but with ways to choose a subset of numbers from a larger subset. For example, the number of ways to choose a set of five numbers from the set of numbers 1 through 59 is 5,006,386. The probability of winning a powerball combination is one in 175 million. This chance is smaller than the chance of dying from an asteroid attack (1 in 74 million) or becoming a movie star (1 in 1.5 mllion).
The problem with probabilities such as 1 in 175 million is that they are impossible for the human mind to visualize. The highest number of objects of the same class that most people have seen in their lives would probably be a football stadium that contains between 50,000 and 100,000 people, but not 175 million.
If you were to play a lottery in which chances are, indeed, realistic, say, 1 in 100, you would need to play 100 times to win on average. 100 is not such a big number and if you were sure that there was no rigging, you’d keep playing and keep winning. This is exactly what happens with miners on the Bitcoin network. They keep coming up with nonces and creating hashes because they win mining rewards in bitcoins for adding blocks to the blockchain.
If an attacker were to change even one digit in the information about just one of the transactions in a block of the blockchain, the block would have a completely different hash and all members of the network would be able to see that there’s something wrong with the block.
The benefit of proof-of-work approach is that it works. It has been working since the inception of the Bitcoin blockchain in 2009 and has proven itself. The disadvantages of the proof-of-work are that it requires miners to burn a lot of electricity and stores all information in just one blockchain.
In the proof-of-stake algorithm that the XRB Nano/RaiBlocks network uses to resolve the issue of conflicting transactions, participants vote on the decisions such as validity of transactions based on their stake in the system.
One of the problems that all cryptocurrencies have to deal with is a so-called Sybil attack, in which an attacker creates multiple accounts and tries to overload the system. On the XRB Nano/Raiblocks network, the voting about adding transactions to blockchains takes into consideration the amount of funds in the accounts. If an attacker were to create a ton of empty accounts, he or she would not get any extra votes because the accounts are empty.
In addition to proof-of-stake, XRB Nano/RaiBlocks network also uses Proof-of-work. It uses proof-of-stake to resolve the issue of conflicting transactions and proof-of-work to protect the network from spam.
This is the main difference between proof-of-work algorithm on Bitcoin vs proof-of-work on XRB Nano/RaiBlocks. With Bitcoin, it is the main tool of protecting the integrity of the network. With XRB Nano/RaiBlocks, it is a spam-protection tool, which is why the difficulty of proof-of-work on the XRB Nano/RaiBlocks network is negligible compared to Bitcoin’s proof-of-work.
Nodes on XRB network. Components of the XRB currency.
Grouping multiple transactions into one also allows the network to have smaller and more effective nodes. Because the nodes can double-check the validity of the transactions occurring on the network by checking the total amount of funds in the accounts, all the nodes do not need to retain a copy of the entire blockchain. All the nodes really need is to have a record of the latest blocks of the accounts. This allows the nodes to maintain the network while discarding the historical data.
To further prevent the possibility of abuse on the network, XRB Nano/Raiblocks has two types of incoming transactions, settled and unsettled. Settled transactions are the ones that have been accepted by the blockchain of the receiving account. Unsettled ones are the ones that have not yet been added to the receiver’s blockchain.
Components of the XRB Nano/RaiBlocks network
Just like with Bitcoin, for users to engage in transactions on the XRB Nano/RaiBlocks network, they need both a public key and a private key.
The public key on the XRB Nano/RaiBlocks network is also called “an account” or “an address.” When data is signed by a private-key portion, the network knows that the owner of the private key has approved the transaction. One user on the network can have many accounts, or addresses, but an account on the network can only have one public address.
Each account on the XRB Nano/RaiBlocks network has a balance associated with it. The entire XRB Nano/RaiBlocks has been initiated with the genesis balance that can’t change at any point in the future. This balance has been divided during the distribution stage and will keep dividing and re-distributing in the future. As such, the total of all balances in all XRB Nano/RaiBlocks accounts will never be greater than the original balance. This is one of the ways how the networks verifies that it is functioning properly.
Because on the XRB Nano/RaiBlocks users have their individual blockchains, the words “block” and “transaction” on the XRB Nano/RaiBlocks network mean the same thing. A block on the XRB Nano/RaiBlocks network contains one transaction. Block 0 for each account is the open transaction for the account.
Sending funds on the XRB Nano/RaiBlocks network requires two transactions. The first one is a send transaction that deducts a balance from the sending account. The second one is a transaction that adds a balance to the receiving account. The receiver does not have to be online when a sending account initiates the first transaction in a pair.
The introduction of two transactions per one transfer of funds accomplishes several purposes. First, it orders the incoming funds into an account. Second, by keeping the data about transfers on blockchains related to the transfers it minimized the data footprint. Finally, it divides settled transactions from the transactions still in process.
To send funds on the XRB Nano/Raiblocks network, a user needs an address, which is the same as an account. The account needs to have an existing open block, which is the same as to say that the account needs to have a balance.
In the blocks of an account’s blockchain, the “previous” field has a hash of the previous block of the blockchain of the account, which guarantees the succession of the blocks on the blockchain and tracks the available funds for all accounts. The user will put the address to which he or she is sending the funds into the “destination” field.
It is impossible to change a send block once it is confirmed. During sending, the network immediately updates the balance of the sending account by subtracting the send amount.
While the transaction may have a pending status before the receiver accepts it, pending transactions are the same as spent for the senders in the sense that the funds are gone from the sender’s account and the sender can’t reverse a transaction.
To complete the process of sending funds, the receiver needs to create a block on his or her account’s blockchain. The block has a “source” field that would consist of a hash for the send transaction. This is how the XRB Nano/Raiblocks blockchain links the sending and receiving accounts and transactions. Once the blockchain creates the block, the network updates the balance of the account.
The ledger on the XRB Nano/RaiBlocks network is a set of all accounts on the network, each of which has its own blockchain. A node on the XRB Nano/RaiBlocks network may either contain a copy of the entire ledger or a history with just several last blocks for the blockchains of the accounts. Because the account blockchains use fast and easy proof-of-work to create new blocks, the network is protected with spam. The total amount of coins on the network is also known, which makes checking the validity of the ledger somewhat easy.
Validity of blocks on XRB and protection from transaction flooding.
The main difference between XRB Nano/Raiblocks and Bitcoin is that the Bitcoin network has one blockchain into which it records all the transactions.
For a transaction to be valid on the Bitcoin network, it needs at least 6 confirmations. A confirmation on the Bitcoin network means a reference to a transaction by a block of the bitcoin blockchain.
On the XRB Nano/Raiblocks network, each account has its own blockchain, which means that XRB Nano/Raiblocks network has many blockchains. A block on a blockchain of XRB Nano/Raiblocks network is specific to an account and a record about a transaction for that very account.
Transactions on the XRB Nano/Raiblocks networks consist of two parts: sending and receiving. When a user sends funds, the network creates a block on the blockchain of the user’s account. It may be showing the transaction as pending before the receiver completes the part on his or her end, but it doesn’t change anything for the sender because once the sender initiates a transaction, creates a block on the blockchain and sends the funds, the funds are gone even before the receiver confirms them.
For a block on any of the blockchains of XRB Nano/Raiblocks network to be valid, it first needs not already be a part of the XRB Nano/Raiblocks ledger. If a block were to already be a part of the ledger, it would mean that it is a duplicate transaction. Next, the block needs to have a signature with private-key element. This means that only the owner of an account can send funds. Next, the previous block before the next block needs to be the last one on a blockchain. If it is not the last one, it means that a user is attempting to create a fork of the account. Finally, the account must have an open block and create a spam-protecting hash.
If the block is a receiving block, meaning that it represents the incoming funds, the source block needs to have a pending hash. A pending hash is the way for the network to check that the funds have not been redeemed already. For a sending source block, the amount of funds that the block is attempting to send needs to be smaller than the amount of funds in the account (which is the same as the amount of funds in the previous block of account’s blockchain).
Synchronization of bad blocks
A bad block, which is a block that an account or a node did not broadcast correctly, may or may not be a result of an attack. One of the benefits of the XRB Nano/Raiblocks network having multiple blockchains with accounts that only update their own status is that transactions on the network occur asynchronically, meaning that they happen directly between two accounts, without having one blockchain to process and record them in the way it happens on the Bitcoin blockchain. This means that the issue of bad block synchronization won’t affect the entire network when it happens.
When there is a bad block on the network, the network has two options. The first one is to ignore the block as a malicious attempt to change accounts on the network. The second one is to request a resync for this very block.
The XRB Nano/Raiblocks network is about efficiency, which is why its developers chose to make it ignore bad blocks. A node on the network would simply wait for votes from other nodes. If the votes are positive, the node would request a sync connection. If the votes are negative, the node would treat the block as a junk block.
The goal of transaction flooding is to saturate the network with fake/spam transactions to prevent legitimate holders of accounts from using the network. One of the reasons why attackers may choose to perform a transaction flooding attack is to drive down the price of the token of a network. Theoretically, with no transaction fees on the XRB Nano/Raiblocks network, the attackers could continue such an attack indefinitely. However, what makes such an attack impossible is the minimal proof-of-work that senders need to do to send a transaction out from an account. While the proof-of-work is minimal for one sender on the network, if an attacker were to try and flood the network with transactions, he or she would need a significant amount of computational resources. Even if the attacker were to succeed with that, the attacker would need accounts with funds in them to initiate transactions, and even he or she were able to have funds in the accounts, certain nodes on the XRB Nano/Raiblocks are not fully historical nodes. These nodes only have a record of the last few blocks for the XRB Nano/Raiblocks accounts. Such nodes can prune old transactions and keep operating without any issues arising from this type of attack.
Penny spend attack
A penny spend attack is similar to transaction flooding. During a penny spend attack, hackers try to send extremely small amounts of funds to a large number of accounts with an attempt of overloading the network with transactions that would require large computational resources. The reasons why a penny spend attack won’t be effective on the XRB Nano/Raiblocks network are the same as to why the transaction flooding and the Sybil attacks won’t be successful. These reasons are the necessity to have balances in accounts, small proof-of-work computations for all blockchains and proof-of-stake as the main decision-making algorithm on the network.
A 50% attack is an attack during which a hacker controls over 50% of resources that a network uses to make decisions. On the Bitcoin network, this means controlling over 50% of the mining power on the network. Because the XRB Nano/Raiblocks network uses proof-of-stake and not proof-of-work, the 50% attack on the XRB Nano/Raiblocks network would mean getting control over 50% of votes. If attackers could do that, they’d be able to break the rules of how the XRB Nano/Raiblocks network functions.
To prevent this attack, the XRB Nano/Raiblocks network connects the voting power on the network with financial investments in the system. When someone has funds in the XRB Nano/Raiblocks system, they are inherently interested in the system functioning according to the announced “rules of the game,” because changing the rules would mean a risk of losing the funds. Attempting to make changed to the ledger would be destructive to both the system and the individual accounts. Because the voting power and the financial interests are interrelated, essentially the probability of a 50% attack is tied to the market capitalization of XRB Nano/Raiblocks. With proof-of-work blockchains such as Bitcoin, it is theoretically possible to create technology that would give a huge computational advantage compared to the financial investment in the network or in the hardware to perform an attack. With XRB Nano/Raiblocks, the costs of attack will always be directly tied to the market capitalization of the network.
Finally, what makes a 50% attack unlikely is that the XRB Nano/Raiblocks can’t have accidental or good-faith forks. A fork on the XRB Nano/Raiblocks network is always an attack attempt. For this reason, the network can create sets of policies that protect it from the forks and issue guidelines for users. For example, because on the XRB Nano/Raiblocks network only the owner of an account can update the blockchain of the account, the only scenario in which accounts that don’t belong to hackers are vulnerable during an attack is when they receive a send transaction from an attacking account. This means that there’s a simple security solution. If an account holder wants to make sure that the incoming transaction is valid and secure, he or she can simply wait for a bit before initiating a receive transaction. Waiting would allow for nodes on the network to either sync or reject the forked blocks. When a user thinks that incoming funds may be coming as a result of an attack, the user can simply create a new account in order to protect existing valid accounts on the network.
The network does its best to create the blocks and distribute them to nodes very quickly. It is able to do so because it uses proof-of-stake algorithm. With Bitcoin, it is impossible to predict how long it would take for miners to mine a block on the Bitcoin network because the miners need to run computations and create a winning hash. This is one of the reasons why it may take the Bitcoin network five minutes to create one block of the network and twenty minutes to create the next block.
You can see how quickly the Bitcoin blockchain is creating blocks as you are reading this article by visiting https://blockchain.info/ and checking the “Age” column. If, for example, the “Age” column has, from top to bottom, the following numbers: 6 minutes, 36 minutes, 39 minutes, then it means that the network created the last block 6 minutes ago and it took it 30 minutes to create the block (36 minus 6), the block before that took three minutes to create (39 minus 36).
The XRB Nano/Raiblocks network makes decisions by checking accounts for funds and assigning voting power accordingly. The benefit of this approach is that it is possible to calculate how much it is going to take. There’s no guessing or randomness with proof-of-stake that exists with mining, difficulty, and hashes on the Bitcoin network.