For full technical description, read the white paper: https://byteball.org/Byteball.pdf
and trading bot (see the link at https://byteball.org
Auctions: #auctionroom channel on our slack http://slack.byteball.org
Download the wallet:
Desktop wallets can be full nodes (will take a while syncing with the network after the first start) or light nodes. Mobile wallets are always light clients.
If you want to experience the wallet without paying a penny, visit https://byteball.org/testnet.html
to install testnet wallet and click the link to receive free bytes to play with. The link will open your wallet:The design
There are no blocks in Byteball, and no block size issue. Instead, every new transaction references one or more earlier ones (parents) by including and signing their hashes. The links among transactions form a DAG (directed acyclic graph
By including its parents, each new transaction also indirectly includes and confirms all parents of the parents, parents of the parents of the parents, and so on. As more transactions are added after your transaction, the number of confirmations you receive grows like snowball, that’s why the name Byteball (our snowflakes are bytes of data).Consensus
There is no PoW, no PoS, and no mining. Instead, we have the DAG, which already establishes partial order
between transactions, plus we add the main chain
within the DAG:
The main chain (MC) allows to define total order
between transactions: the transaction which gets included (directly or indirectly) earlier on the MC, is deemed earlier in the total order. When there is a double-spend, the version of the transaction that comes earlier in the total order is deemed valid, all others are deemed void.
The main chain is defined deterministically based on the positions of transactions in the graph. Refer to the white paper for details, but as a general rule, the MC gravitates towards transactions authored by well known users, which we call witnesses. The list of witnesses is defined by users themselves as they include the list in every transaction they post. The MC then follows the path within the DAG such that:
1. the witness lists of the neighboring transactions on the chain are either identical or differ by only one mutation,
2. the chain goes through the most number of witness-authored transactions, compared with alternative chains.
The above is very brief and sketchy description with many important details omitted, refer to the white paper for a full technical story.Fees and intrinsic value
The fees paid for storing one’s transactions (or any other data) in the Byteball database are equal to the size of the data being stored. If the size of your transaction data is 500 bytes, you pay exactly 500 bytes (the native currency of Byteball) in fees. This means there is intrinsic value in bytes: it is the utility of permanently storing that size of data in a decentralized immutable database. For data that represents financial transactions, the value is social
rather than personal, because you absolutely need to store the full coin history in order to be able to prove the value and authenticity of the coin to each subsequent owner.
The fees are collected partially by those who are first to reference your transaction as parent and partially by witnesses. The former incentivizes referencing the most recent transactions as parents, which results in the DAG growing in one direction only, like the trunk of a tree, and being as narrow as network latency permits. If new transactions are rare enough, such that all nodes have enough time to sync before a new transaction appears, the DAG will look almost like a chain, with only occasional forks and quick merges.Money supply
The total number of bytes is 1015
, all bytes will be issued in the genesis transaction. Since the fees paid are returned into the circulation, the money supply will remain the same.Deterministic finality
In Byteball, there is a protocol rule that a transaction must include the previous transaction (if any) sent from the same address, i.e. there must be partial order between subsequent transactions from the same address. Breaking this rule is considered equivalent to double-spending, therefore at least one of such unordered transactions will become void. If we assume that most witnesses follow this rule (that’s what they are elected for), they have to reference only sufficiently recent transactions as parents and can’t inherit from old enough parents. Therefore, they can no longer influence the MC (which is attracted to witnesses) in the old enough part of the DAG, and that part of the MC becomes stable, hence the total order relative to this MC also becomes stable. See the white paper for discussion of exact criteria of reaching stability, here it is important that the criteria are deterministic, and once a transaction appears on the stable part of the MC, it is final, and, unlike all other cryptocurrencies, no re-orgs are possible.
This is extremely important for applications in financial industry and for wider adoption in general, as most people are used to expect certainty in matters of money and property ownership, and the concept of probabilistic finality is a difficult sell.Assets and on-chain exchange
Bytes is the native currency of Byteball. Users can issue any other tokens (assets), e.g. to represent debt. The debt can be expressed e.g. in fiat currencies or in natural units (barrels, ounces, kWh, etc). The issuers of the debt can reveal their real-world identities and/or be voluntarily attested (i.e. their real-word identities be verified by a well known third party such as CA). This enables the use of the existing legal system to secure against fraud.
The issued assets can be used as means of payment, along with bytes. Assets can be exchanged against bytes and other assets by both parties signing a single unit that executes both legs of the exchange, thus the two transactions either happen simultaneously or don't happen at all. This kind of signing is called multilateral signing. No centralized exchange is needed, hence no trust is necessary and no exchange fees (apart from the usual fees for the size of the data).Private untraceable payments
Assets can be either public or private. All transactions in public assets are visible to everyone on the public decentralized database, just like Bitcoin. Bytes is a predefined public asset.
Payments in private assets are not published to the public database. Instead, only the hash of the transaction is stored to the database, while the plaintext of the transaction is sent directly from the payer to the payee. To protect against double-spends, a spend proof
is also published to the Byteball database. The spend proof is constructed as a hash of the output being spent, so that if the same output is spent twice, the spend proofs will be necessarily the same.
I’ve already described this design at https://bitcointalk.org/index.php?topic=1574508.0
, see more details in the white paper.Regulated assets
Regulated institutions can issue assets that are compatible with KYC/AML requirements. Every transfer of such asset is to be cosigned by the issuer, and if there is anything that contradicts the regulations, the issuer won't cosign.
This way, banks can issue fiat-pegged assets and stay fully compliant. They can open demand deposit accounts and track them on Byteball as assets. These assets are easily exchangeable against bytes and other assets (with bank’s approval).Other features
- Spending conditions (AKA smart contracts) in an easy to understand declarative language https://bitcointalk.org/index.php?topic=1617816.0
- Multisig: a special case of spending conditions
- On-chain oracles can post data (such as timestamps, exchange rates, weather, various events) directly to the database, then that data can be referenced from spending conditions
- Private end-to-end encrypted messaging: used to convey private payment data, communicate in multisig scenarios, and chat with a merchant’s bot.Initial distribution
There will be no ICO, no crowdsale. I believe the success of a currency depends on the number of people who own it, in fact Peter R’s research suggests that historical marketcap of Bitcoin follows Metcalfe's law
, i.e. it is proportional to the square of the number of active users. That’s why I want Byteball to be in the hands of as many people as possible:
- 98% of all bytes and blackbytes (the private untraceable currency) will be distributed among bitcoin holders who link their bitcoin and byteball addresses before any of the distribution rounds. No investment required, you keep your bitcoins, plus receive the bytes and blackbytes. See below how to receive the coins.
- 1% I reserve for myself
The network was launched on December 25, 2016, and 10% of bytes and blackbytes distributed to those who linked their Bitcoin and Byteball addresses. The total balance linked was over 70,000 BTC.Participation in Byteball distribution
If you missed the 1st round of distribution, you can still participate in the further rounds. If you were in the 1st round, you can multiply your holdings.
The snapshots for the second round will be taken on the Full Moon of February, on February 11 at 00:33 UTC. In this round, you receive:
- 62.5 MB for every 1 BTC of proven balance
- 0.1 new bytes for every 1 byte you own at the moment of the snapshot
You also receive blackbytes:
- 62.5 * 2.1111 * 106
blackbytes for every 1 BTC of proven balance
- 0.21111 new blackbytes for every 1 byte you hold on the linked address at the moment of the snapshot
(total money supply of blackbytes is 2.1111 times more than that of bytes)
To participate, link your Byteball and Bitcoin addresses before the second round:
1. Download and install the wallet by following the above links.
2. Visit https://byteball.org
and click the link to chat with the Transition Bot. The link will open the new wallet and start a chat. Follow the instructions of the Transition Bot to prove your Bitcoin balance.
You have two options to prove your Bitcoin balance:
a. By making a micropayment. The bot will see your address the payment came from, will know that it is your address, and will instruct you to move your Bitcoins to this address. By making several micropayments, you can link several Bitcoin addresses to the same Byteball address.
b. By signing a message (if your Bitcoin wallet supports this function). You tell the bot your Bitcoin address and sign your Byteball address with the Bitcoin address. After you prove one address (a typical Bitcoin wallet has dozens of them), you can either move all your coins to this single proven address or prove all other addresses in the same way -- by signing a message.
If you try to link the same Bitcoin address to multiple Byteball addresses, both links are ignored. If you did this by mistake, link another Bitcoin address.
If you prove by micropayment, remember to check that the Bitcoin address that the bot received the micropayment from, is indeed your address. An attacker might see your payment on the blockchain and repeat the same micropayment from his address trying to trick you to move your funds to him.
3. If you make any Bitcoin payment, your coins will most likely be moved to a new change address. Chat with the bot again, see the balance on your linked address(es) and move the coins back to the linked address(es) if necessary.
The linking phase will end on February 11 at 00:33 UTC, after which we'll do the distribution in proportion to BTC and bytes balances on this date.
In the second round, we'll distribute as much as is linked and calculated by the above rules, the exact % is not known in advance.
The 3rd and subsequent rounds (yet to be announced) will follow similar rules, but the relative weight of bytes vs. BTC in the 3rd and further rounds will change and will gradually increase to 1 BTC=62.5 MB. It will be selected to maximize the value of bytes and keep the speed of distribution in sync with the growth of user base and the actual use of the network. The ratio 62.5 MB per 1 BTC is chosen so that the total money supply of bytes (1015
) and the total number of BTC in circulation (16,000,000) are equivalent.
We'll have as many rounds as is necessary until all bytes are distributed, the rounds will be spaced 1 to 2 months.
My 1% doesn't participate in the 2nd and further rounds.
Earlier adopters have the opportunity to participate in greater number of distribution rounds and receive new bytes in each round by using the same BTC balance and bytes received in the previous rounds. You are effectively multiplying your stake in each additional round you take part in.
Track the progress of linking at http://transition.byteball.org
.How you can help
- play with the wallets, install them on multiple devices, pair them for multisig. If you find bugs, report them.
- run a relay on your cloud server to help the network. The relay doesn’t hold any private keys, so you don’t have to worry too much about security. Get relay source code from https://github.com/byteball/byteball-relay
- run a hub to better decentralize the delivery of private payments (the hub also includes a relay). Again, the security doesn’t matter much as all messages are end-to-end encrypted. Hub address can be changed by users in their wallet settings. Get hub source code from https://github.com/byteball/byteball-hub
- fix bugs, contribute improvements in our github repositories https://github.com/byteball. In particular, we need faster syncing and faster UI. Before now, I prioritized simplicity of algorithms over performance, now we need speed too. A 10x improvement should come easy enough, the next 10x will be probably harder. Discuss any major changes before actually implementing them.
- develop new tools/apps that you think will be useful for Byteball users
- spread the word about Byteball and remember that its value is proportional to the square of the number of active users
One last thing. The remaining 1% will be given away to the first 100m users who install Byteball wallet, 100 Kbytes to each user. This will start 6 months from now or later, after we get ready for that scale.