Contents

Scalability

The main advantage of the mini-blockchain scheme is obviously the increased level of scalability. Having the ability to discard all old transactions is a tremendously useful feature because it means a lot of disk space can be saved and it also means that new nodes can synchronize to the network without having to download every transaction ever made.

The reason old transactions can be discarded is because transactions are applied to the account tree as soon as a block is accepted by other nodes, we don't need to go back and reference that transaction at a later time like we do in Bitcoin. Keep in mind there is no such thing as unspent transactions in this scheme, it doesn't even make use of scripts.

The inputs and outputs in our transactions do not point to other transactions, they simply point to addresses in the account tree, so the transactions aren't linked together the same way they are in Bitcoin, and we can discard all transactions after a safe amount of time has elapsed (enough to make the Secret Chain Attack infeasible).

Of course the account tree will grow over time as new non-empty addresses come into existence but the level of compression and scalability this system offers is truly unbeatable. There is no other known scheme that achieves anything close to this level of scalability, and with this level of scalability comes new possibilities and potential:

Micro-Transactions

The Bitcoin community generally discourages tiny payment amounts, such as the small transactions made by Satoshi Dice, in fact many people feel that those types of "dust" transactions represent spam because they "bloat" the blockchain. This is a problem for Bitcoin because nodes require the full blockchain before they can synchronize with the network. However blockchain bloat isn't such a problem for Cryptonite because in this scheme old transactions can be discarded and new nodes don't need the full blockchain to sync with the network, they only need transactions younger than the cycle time.

So because of this we have more freedom to support smaller transactions and a higher transaction rate overall. However there is one small catch: although we can support small value transactions, we can only be so lenient when the receiving address already exists in the account tree. The reason for this is because we don't want to go filling up the account tree with many low balance addresses because that is our schemes version of "dust". The solution is a simple rule: if sending to an address which does not already exist in the account tree the amount being sent cannot be lower than the transaction fee.

Transaction Messages

Like micro-transactions, although possible, the Bitcoin community tends to discourage the storage of text messages in the blockchain because they must be stored forever. The early versions of the bitcoin-qt GUI included a feature for including a custom text message with your transaction but it has since been removed from the GUI in order to slow down blockchain bloat. Including a custom message with a transaction is a very common and useful feature that can play an important role in many merchant scenarios, so it's clearly important for any currency to support such a common and useful feature.

The scalable nature of the mini-blockchain scheme relieves us from the concern of blockchain bloat and we can have full support for transaction messages for the same reason we can support micro-transactions: all the transactions containing the messages can be forgotten by the network after some relatively short period of time. Cryptonite has native support for attaching custom messages to transactions, since we don't use script the message field is embedded into the structure of the transaction, meaning you cannot have a different message for each output, only one message per transaction.