Overview Theory Design Downloads HowTo Network state Source

Boolberry is a new cryptocurrency based on CryptoNote technology. Boolberry's major benefit is to provide much stronger privacy to both the senders and receivers of transactions.  It does so by ensuring that:

Boolberry improves upon the base CryptoNote technology in several ways that strengthen its anonymity and reduce the size of the global ledger of all transactions, called the "blockchain".  It provides an aliasing facility built in to the blockchain so that people or programs can send money to, for example, "@zoidberg" instead of a long address.  And it has an easy-to-use 
GUI wallet that ships in source and binary as an official part of the Boolberry distribution.

Main Features

The main ideas of Boolberry transaction generation are explained in the following graph:

transaction
Transaction generation

This picture shows the transaction's creation, the cryptographic protocol which is the basis for the whole technology. More details on theory page

Currency specification
Block reward
PoW hash
Project donations

#Currency Specification

Money supply: 18446744.073709551615
Block interval: 120 seconds
Default P2P port: 10101
Default RPC port: 10102
84467.440737095516), dev bounties is 1%

Reward Emissions for 10 years:

Day       Block Reward       Generated Coins
0         17.416264000000    0%  0.000000000000
183       15.359717000000    11% 2179953.768778000000
366       13.546011000000    22% 4102274.357256000000
549       11.946471000000    31% 5797411.627041000000
732       10.535808000000    39% 7292216.288657000000
915       9.291719000000     46% 8610365.351676000000
1098      8.194534000000     52% 9772737.277389000000
1281      7.226907000000     58% 10797742.784839000000
1464      6.373539000000     63% 11701616.548800000000
1647      5.620939000000     67% 12498674.414764000000
1830      4.957208000000     71% 13201540.208042000000
2013      4.371851000000     74% 13821345.733154000000
2196      3.855614000000     77% 14367907.128588000000
2379      3.400335000000     80% 14849880.376022000000
2562      2.998817000000     82% 15274898.428772000000
2745      2.644711000000     84% 15649692.128002000000
2928      2.332418000000     86% 15980196.828462000000
3111      2.057001000000     88% 16271646.419271000000
3294      1.814107000000     89% 16528656.232190000000
3477      1.599893000000     90% 16755296.148816000000

Block reward depends of block cumulative size (includes transaction's blob sizes) and could be less than nominal.


Emission graph, compared with bitcoin:

layers

#Block Reward

Reward for block is calculated according to the following rules:
base_reward=(EMISSION_SUPPLY - already_generated_coins) >> EMISSION_CURVE_CHARACTER;
if(block_cumulative_size <= median)
  reward = base_reward;
else
  reward = (base_reward*(block_cumulative_size * (2 * median - block_cumulative_size)))/(median2)
Where: If block cumulative size more than two medians - block is considered as wrong. This approach is used to make self-regulated fair model of transaction size/fee ration.

#PoW Hash

Actually this is a keccak hybrid(that we called wild keccak), that use external scratchpad. After each keccack round, psudo-randomly addressed[state vector used as addresses] data is taken from scratchpad and xored with state. Calculating each block PoW usualy hits about 1100 randomly addressed reading of blocks by 32 bytes.
layers
We used "performance_tests" with different scratchpad size to find out memory hardness:
Warm up: 2161 ms
test_wild_keccak<400> - OK:
loop count:    100000
elapsed:       3020 ms
time per call: 0 ms/call

Warm up: 2158 ms
test_wild_keccak<40000> - OK:
loop count:    100000
elapsed:       3060 ms
time per call: 0 ms/call

Warm up: 2168 ms
test_wild_keccak<4000000> - OK:
loop count:    100000
elapsed:       3484 ms
time per call: 0 ms/call

Warm up: 2156 ms
test_wild_keccak<40000000> - OK:
loop count:    100000
elapsed:       8119 ms
time per call: 0 ms/call
1JjGoHdzP5HvtyEZ6MN9LXbh8uTDVgrPY9

Warm up: 2150 ms
test_wild_keccak<100000000> - OK:
loop count:    100000
elapsed:       8574 ms
time per call: 0 ms/call
As you can see, working on small amount of memory 100000 hash operations takes 3020 ms, meanwhile work on 100Mb scratchpad with the same operations count takes 8574 ms. Such difference(caused by the cache memory exhaustion) points to real memory hardness we guess.

#Project Donations

If you want to support the project, donations could be sent to the following addresses:
BTC: 1Gz2EQrod8E32i9Cq7zzHTp8WsDsR6tuXe
BBR: @zoidberg