Getting Started

From Burstcoin security to wallet selection, the Getting Started guide provides the information needed to succeed.

Software

The definitive collection of open-source and easy to use software is located in the Burstcoin Software Library.

Documentation

Visit the Burstcoin Documentation Project for more information.  Contribute new documentation or recommend improvements.

Faucets

Activate a new wallet for mining or to receive a transfer from Bittrex.  Visit the Burstcoin Community Faucet list.

FAQs

Supporting new users, this section contains Frequently Asked Questions. Help curate by visiting the documentation section.

Burstcoin mining: an introduction

Burstcoin mining is the foundation for adding blocks to the Burstcoin blockchain.  There are two distinct processes in Burstcoin mining, a preparatory stage referred to as plotting and a processing stage referred to as mining.  It is this unique division which differentiates Burstcoin’s proof-of-capacity consensus algorithm from its functional counterpart, the proof-of-work consensus algorithm, and earns Burstcoin the designation of “environmentally friendly”.

Stage 1: Plotting software pre-computes and stores the results of cryptographic hash functions in plot files.  These plot files contain all of the data and computations necessary to forge blocks, including what is referred to as a deadline.  Because the calculations are retained rather than being discarded immediately (as is done in traditional “proof-of-work” systems), mining capacity is built over time.  Plotting satisfies the “nothing at stake problem” and can be thought of as a modified proof-of-work component.

Stage 2: Mining software reads quickly through a subset of the data contained in the plot files and submits the best deadline (cryptographic solution) to the Burstcoin network.*  The miner submitting the best deadline is granted the right to forge the related block and earns the associated block rewards and transaction fees when the block is successfully forged.

*Burstcoin employs a sophisticated and decentralized API network to verify and records transactions within its distributed and immutable ledger.

Solo mining and pool mining

A solo miner benefits only from those plot files which are specifically bound to their account.  If a solo miner submits the best deadline to the network, they alone will be credited with the entire block reward and 100% of the transaction fees associated with that block.  Because the probability for any individual plot to win a block is low, consistent success with solo mining requires a large number of plot files.  With the current size of the network, successful solo mining requires multiple terabytes of storage capacity.  It is not unusual for a small miner to choose solo mining in order to further decentralize the network.  In this case, however, profit is not the primary objective.

Pool mining is the alternative to solo mining.  With Burstcoin pool mining, individual capacity is contributed to an independent pool operation and the mining revenue that is earned cooperatively is shared in accordance with the pool’s reward distribution policies (generally proportional).  Pool mining is preferred by most small capacity miners because it provides a stream of smaller but more regular payments.  Anyone with the requisite technical expertise can operate a mining pool using software developed by the Burstcoin community.

Mining Capacity and Effective Plot Size

Mining capacity, the total amount of storage capacity devoted to plot files, is the determining factor when choosing between mining methods.  It can also inform the choice of which mining pool to join.  There are no strict rules for making this decision and no technical obstacles preventing anyone with a particular mining capacity from joining any particular pool.  Distribution policies are usually stated using two numbers.  The first represents the percentage of the block reward that will be awarded directly to the account which provides the winning cryptographic solution.  The second, referred to as “historical share”, represents the percentage of the block reward that will be distributed among the remaining participating miners.

For illustrative purposes only, the following unofficial selection of common Burstcoin mining distribution methods is provided.  Each is paired with a suggest mining capacity:

Distribution Successful Forger Historical share Mining capacity (in terabytes)
0 - 100 0% 0% 0 - 40
20 - 80 20% 80% 30 - 80
50 - 50 50% 50% 60 - 200
80 - 20 80% 20% 150 - 250
100 - 0 100% 0% 150 and higher

Please note:  Distribution methods are decentralized and set solely by individual pool operators.  Most pool operators charge a small fee that is not addressed by this schedule.  Pool operators may also set their payment schedules and minimum payouts independently.  With the recent introduction of multi-out transactions, pools have additional flexibility.  Some have elected to pay rewards daily.

Effective plot size

Effective plot size is the parameter used to determine each miner’s share of a pool’s mining revenue.  The method to determine this statistic is set independently by each pool operator, but it is commonly calculated based on the best deadlines submitted by a miner over a period covering 360 blocks.  For a new miner, the effective plot size typically starts at zero and rises to reflect full capacity over the course of 24 hours.  Because effective plot size is statistically generated, it will usually oscillate above and below the actual physical size of a plot.  This calculation can be optimized by limiting the maximum deadline to be submitted.  Miners are advised to read and understand the method used by their selected pool operator in order to optimize their mining performance and revenue.

Reward Assignment

Reward assignment is a transaction that notifies the network which account is to be credited for block rewards and transaction fees attributable to an individual miner’s account.  It is a prerequisite for both solo and pool mining.  For solo burstcoin mining, the reward assignment transaction specifies the solo miner’s account.  For burstcoin pool mining, the transaction specifies the mining pool operator’s account.  In the context of pool mining, the reward assignment transaction delegates authority to the pool to uses the participating miner’s submitted deadlines and to sign newly forged blocks using the participating miner’s account.  Note:  forged blocks are always signed by the account belonging to the miner who submitted the deadline used to forge the block.

To perform the reward assignment transaction, consult the documentation for the specific wallet being used.  The procedure generally follows this form:  Select tools - enter reward recipient address in Reed-Solomon format - select “Set Reward Recipient”.  Most wallets include a list of pool operations.  Selecting from this list will generally configure the wallet automatically.  Lists are updated frequently, but newer operations may not yet be included.  In this case, information specific to the chosen pool operation will have to be added manually.

Note:  The reward recipient assignment transaction requires a minimum network transaction fee and requires 4 confirmations in order to become effective.  The network fee is provided by the community for new mining accounts.  Visit one of the Burstcoin Community Faucets for assistance getting started.

It is possible to set the reward recipient directly using the Burst API.  This method is intended for developers and is not a practical alternative for general usage.  If more information is required, consult the Burst API documentation.

Block Rewards

Mining revenue consists of block rewards and transaction fees.  The block reward decreases by 5% every 10,400 blocks.  To calculate the expected revenue for a particular plot size based on the current block reward, a calculator is provided at https://explore.burst.cryptoguru.org/tool/calculate.

The Burstcoin block reward is reduced after every 10,800 blocks (approximately once per month). The general formula for calculating the block reward based on the current block height is as follows:  month = block height / 10800reward = 10000 * 95^month / 100^month  (research tag - discrepancy in number of blocks until reduction)

Month Approx. Date Block Height Reward in BURST
0 2014-08-11 0 10000
1 2014-09-11 10800 9500
2 2014-10-11 21600 9025
3 2014-11-11 32400 8573
4 2014-12-11 43200 8145
5 2015-01-11 54000 7737
6 2015-02-11 64800 7350
7 2015-03-11 75600 6983
8 2015-04-11 86400 6634
9 2015-05-11 97200 6302
10 2015-06-11 108000 5987
11 2015-07-11 118800 5688
12 2015-08-11 129600 5403
13 2015-09-11 140400 5133
14 2015-10-11 151200 4876
15 2015-11-11 162000 4632
16 2015-12-11 172800 4401
17 2016-01-11 183600 4181
18 2016-02-11 194400 3972
19 2016-03-11 205200 3773
20 2016-04-11 216000 3584
21 2016-05-11 226800 3405
22 2016-06-11 237600 3235
23 2016-07-11 248400 3073
24 2016-08-11 259200 2919
25 2016-09-11 270000 2773
26 2016-10-11 280800 2635
27 2016-11-11 291600 2503
28 2016-12-11 302400 2378
29 2017-01-11 313200 2259
30 2017-02-11 324000 2146
31 2017-03-11 334800 2039
32 2017-04-11 345600 1937
33 2017-05-11 356400 1840
34 2017-06-11 367200 1748
35 2017-07-11 378000 1660
36 2017-08-11 388800 1577
37 2017-09-11 399600 1498
38 2017-10-11 410400 1423
39 2017-11-11 421200 1352
40 2017-12-11 432000 1285
41 2018-01-11 442800 1220
42 2018-02-11 453600 1159
43 2018-03-11 464400 1101
44 2018-04-11 475200 1046
45 2018-05-11 486000 994
46 2018-06-11 496800 944
47 2018-07-11 507600 897
48 2018-08-11 518400 852
49 2018-09-11 529200 809
50 2018-10-11 540000 769
51 2018-11-11 550800 730
52 2018-12-11 561600 694
53 2019-01-11 572400 659
54 2019-02-11 583200 626
55 2019-03-11 594000 595
56 2019-04-11 604800 565
57 2019-05-11 615600 537
58 2019-06-11 626400 510
59 2019-07-11 637200 484
60 2019-08-11 648000 460
61 2019-09-11 658800 437
62 2019-10-11 669600 415
63 2019-11-11 680400 394
64 2019-12-11 691200 375
65 2020-01-11 702000 356
66 2020-02-11 712800 338
67 2020-03-11 723600 321
68 2020-04-11 734400 305
69 2020-05-11 745200 290
70 2020-06-11 756000 275
71 2020-07-11 766800 262
72 2020-08-11 777600 248
73 2020-09-11 788400 236
74 2020-10-11 799200 224
75 2020-11-11 810000 213
76 2020-12-11 820800 202
77 2021-01-11 831600 192
78 2021-02-11 842400 182
79 2021-03-11 853200 173
80 2021-04-11 864000 165
81 2021-05-11 874800 156
82 2021-06-11 885600 149
83 2021-07-11 896400 141
84 2021-08-11 907200 134
85 2021-09-11 918000 127
86 2021-10-11 928800 121
87 2021-11-11 939600 115
88 2021-12-11 950400 109
89 2022-01-11 961200 104
90 2022-02-11 972000 98
91 2022-03-11 982800 93
92 2022-04-11 993600 89
93 2022-05-11 1004400 84
94 2022-06-11 1015200 80
95 2022-07-11 1026000 76
96 2022-08-11 1036800 72
97 2022-09-11 1047600 69
98 2022-10-11 1058400 65
99 2022-11-11 1069200 62
100 2022-12-11 1080000 59
101 2023-01-11 1090800 56
102 2023-02-11 1101600 53
103 2023-03-11 1112400 50
104 2023-04-11 1123200 48
105 2023-05-11 1134000 45
106 2023-06-11 1144800 43
107 2023-07-11 1155600 41
108 2023-08-11 1166400 39
109 2023-09-11 1177200 37
110 2023-10-11 1188000 35
111 2023-11-11 1198800 33
112 2023-12-11 1209600 31
113 2024-01-11 1220400 30
114 2024-02-11 1231200 28
115 2024-03-11 1242000 27
116 2024-04-11 1252800 26
117 2024-05-11 1263600 24
118 2024-06-11 1274400 23
119 2024-07-11 1285200 22
120 2024-08-11 1296000 21
121 2024-09-11 1306800 20
122 2024-10-11 1317600 19
123 2024-11-11 1328400 18
124 2024-12-11 1339200 17
125 2025-01-11 1350000 16
126 2025-02-11 1360800 15
127 2025-03-11 1371600 14
128 2025-04-11 1382400 14
129 2025-05-11 1393200 13
130 2025-06-11 1404000 12
131 2025-07-11 1414800 12
132 2025-08-11 1425600 11
133 2025-09-11 1436400 10
134 2025-10-11 1447200 10
135 2025-11-11 1458000 9
136 2025-12-11 1468800 9
137 2026-01-11 1479600 8
138 2026-02-11 1490400 8
139 2026-03-11 1501200 8
140 2026-04-11 1512000 7
141 2026-05-11 1522800 7
142 2026-06-11 1533600 6
143 2026-07-11 1544400 6
144 2026-08-11 1555200 6
145 2026-09-11 1566000 5
146 2026-10-11 1576800 5
147 2026-11-11 1587600 5
148 2026-12-11 1598400 5
149 2027-01-11 1609200 4
150 2027-02-11 1620000 4
151 2027-03-11 1630800 4
152 2027-04-11 1641600 4
153 2027-05-11 1652400 3

 

Image showing the Burstcoin mining block reward schedule

Image showing the Burstcoin mining process

The process of mining and forging blocks

A Burstcoin wallet (locally installed, web-based, or pool wallet) and Burstcoin mining software (software able to compute deadlines from plot files) are required.  The Burstcoin mining process is as follows:

  • Mining software requests mining information from the wallet.
  • The wallet creates a new generation signature by running the previous generation signature and the previous block generator through the Shabal-256 hash function.  It passes this signature to the mining software along with the base target value and the new block height.
  • The mining software produces the generation hash by running the new generation signature and the new block height through the Shabal-256 hash function.
  • The generation hash is used as the argument for the modulo 4096 function in order to calculate the scoop number which will be used to process the plot files.
  • The scoop number is used to read all of the scoops from all of the nonces in all of the plot files individually.  A target and deadline is calculated for each scoop.  The target is calculated by running the scoop and the generation signature through the Shabal-256 hash function.  The deadline is calculated by dividing the calculated target by the base target.  The deadline is the first 8 bytes of the result.
  • The mining software compares each deadline found with the maximum deadline setting.  The first deadline found to be lower is passed to the wallet together with the numeric account ID bound to the plot file and the nonce number for the scoop data used to generate the deadline.  For solo mining, the passphrase of the account bound to the plot file is also passed.  For pool mining, the passphrase of the pool account is used.  The software continues searching the plot files, but will only pass a new deadline to the wallet if it is lower than one previously passed.
  • The wallet creates the nonce that will be used to find and verify the deadline.  If the deadline is verified, the wallet waits for the deadline to expire.  If a lower deadline is passed to the wallet while the original deadline is expiring, the wallet will wait for the new lower deadline to expire.  After the lowest deadline submitted to the wallet has expired, the wallet will check the network to see if a new valid block has already been announced.  If a new block has already been announced, the information will be discarded as it will no longer be valid.  If a new block has not been announced, the wallet will begin forging a new block.
  • To forge a block, the wallet collects unconfirmed transactions received by users on the network and checks the validity of each transaction, signature, timestamp, etc.  It assembles as many transactions as possible until the maximum number amount of transactions per block is reached or all available transactions have been processed.  The constraints on including transactions are the maximum block payload of 179,520 bytes (176 kB), and the maximum number of transactions that can be included in a single block.  The theoretical maximum number of transactions is 19,200.
  • Once a wallet forges a block, it will be announced to the network. The wallet connects to peers and sends the block for verification and validation.

Burstcoin recently introduced a slot-based transaction fee structure.  For more information, read the Burstcoin.ist article located here:  https://burstcoin.ist/2018/05/04/1st-hard-fork-explained-changes-in-transaction-dynamics/

Note that transactions are not stored within the block, but separately.

Pools often set a maximum deadline limit and deadlines that exceed this limit will not be included for calculating historic share.

Block contents and block explorers

Burstcoin block explorers are used to view block information and contents.  Block explorers are provided by programmers and organizations within the Burstcoin community.  Various block explorers can be found in the online services directory.  

Information typically found in a block explorer:

  • Block version number - refers to the block format which determines what a block can contain.
  • Block height
  • List of included transaction Ids.
  • Payload hash - Sha256 hash of all the data included in the block payload.
  • Timestamp - time the block was forged - derived from the time of the Genesis block (August 11th, 2014, at 02:00:00)
  • Total amount of all included transactions
  • Total amount of transaction fees
  • Payload length
  • Public key of the account which forged the block.
  • Generation signature that was used to forge the block.
  • Sha256 hash of the previous block’s contents.
  • Previous block Id - first 8 bytes of the previous block hash converted to a number.
  • Cumulative difficulty - used to prevent “Nothing at Stake” problems during potential forks:  Calculation:  (previous cumulative difficulty + ( 18446744073709551616 / base target )
  • Base target that was used when the block was forged.
  • Nonce number that was used to forge the block.
  • AT – payload bytes of the AT if AT was added to the block.
  • Block signature - 64-byte hash generated from the forger’s private key and the block’s contents.

Example:

Image showing Burstcoin block details and information

 

Additional block details.

block details 2

 

Burstcoin wallets also show a selection of block details. 

block details

 

Hash Functions

Hash functions reduce text or data to a 64-character string of characters.  An original text, regardless of length or content, will produce the same string of 64 characters.  Even the smallest change will result in a completely different string of characters.  This has many applications, one being that a program can be checked for alterations by comparing the hash it produces with a hash produced from a version that is known to be good, or at least the original.  If a program with malicious code is presented as the original software, but the hash that it produces is different, this is evidence that the software has been altered.

With Burstcoin’s application of cryptology, each block contains the hash of the previous block so that each block in the chain of blocks can be verified as legitimate.  If an earlier block is altered, the hash for every subsequent block would also have to be changed, a task that would take billions of years due to Burstcoin’s strong cryptology.  New blocks are added approximately every four minutes and this short window of opportunity precludes such a lengthy task.  Herein lies the security of the Burstcoin blockchain. 

Unlike Bitcoin, the problem is not solved by random guessing, but by reading through plots that contain the results of pre-computed hash functions, evaluating each to determine a deadline, the amount of time it would take for a plot to return an answer to the puzzle.  All submitted deadlines submitted are compared and the account submitting the shortest valid deadline is authorized to signs the block and receive the block reward.

Newly-created blocks are distributed to the network by the account that creates them.

Burstcoin plotting: Introduction and technical information

As described in Burstcoin Plotting and Mining: Introduction, plotting is the preparatory stage that precedes Burstcoin mining.  Burstcoin plotting solves the “nothing at stake” problem and can be thought of as a modified proof-of-work component.  As a preparatory stage, it is temporary by nature and should not be confused with continuous proof-of-work implemented by other coins which use proof-of-work as their consensus algorithm.

Plotting software computes hashes using the cryptographic hash function Shabal-256 and stores them in plot files. Mining software retrieves these hashes to find values that can be used to forge blocks.

Plotting software pre-computes and stores all of the information necessary for forging Burstcoin blocks, including what is referred to as a deadline.  While there are multiple operations at work such as division and string operations, the most notable calculations are based on the Shabal-256 cryptographic hash function.  Shabal-256 is relatively slow and heavy when compared to other functions such as SHA256.  It was specifically selected for this characteristic which slows the rate of plot file creation while remaining fast enough for the live verification used in Burstcoin.

Plot files are bound to Burstcoin account IDs so it is impossible for different account IDs to generate identical plot files.  Using the same account ID, plot files can be created one computer and then transferred to mined by a computer with a slower CPU.  When using GPU capable plotting software, it is recommended that the GPU be reserved exclusively for plotting for the duration of the plotting session in order to avoid creating corrupted plot files.  This is a general rule as some plotting software may include innovations that prevent this.

It is important to avoid creating duplicate or overlapping plot files.  Duplicate or overlapping plots will not cause a malfunction and may go unnoticed.  However, they are of no value in the mining process and should be avoided.  Duplicate or overlapping plot files can be avoided by carefully entering a correct starting plot number each time a new plotting session is launched.

Plotting software

At the time of writing, easy to use plotting software ( XPlotter ) is included in QBundle, the Windows-based integrated installation package that includes the main Burstcoin wallet and many other useful tools.  XPlotter can be used to prepare a predetermined amount of computer disk space for mining or it can be used to dynamically manage the available space.  In dynamic mode, the number of plot files will be increase or decrease depending on the demand for storage space created by normal operation of the computer.

To a large degree, XPlotter has been eclipsed by faster plotting software with more advanced features.  TurboPlotter9000 is an excellent alternative for new users.  However, it is not included in QBundle and requires a separate installation.  TurboPlotter9000 can be found in the Burstcoin software library.  There are many other plotting programs with varying features, speed, and ease of use.

Technical information for creating plot files

Following is the terminology necessary for understanding the plot file creation process in Burstcoin mining:

Account ID:  The Burstcoin account numeric ID that binds a plot file to a specific Burstcoin account.

Shabal-256:  The principle cryptographic function used for Burstcoin processes.

Seed:  A shabal-256 argument.  It can also be thought of as an input variable.

Hash:  In the context of Burstcoin, the output of the Shabal-256 function.  Size on disk:  32-Byte (256-bit).  All hashes are stored with a final hash.

Scoop:  Scoops are the base level subdivisions of hash data in a plot file.  Each scoop contains two hashes.  Each scoop is assigned a unique number ranging from 0 - 4096.  Size on disk:  64 bytes.

Nonce:  Nonces are the top-level subdivision of hash data in a plot file.  Each nonce contains 4096 scoops.  Each nonce is assigned a unique number ranging from 0 to (( 2 ^ 64) - 1)  (0, 1, 2, 3 … 18,446,744,073,709,551,615).  The identifying number is pre-assigned and used as a seed in the nonce’s generation.  Because of this, each nonce has a unique set of data.  Size on Disk:  256 Kilobytes.

Plotfile:  A computer file containing all of the data necessary for forging Burstcoin blocks.  Plotfile data is first subdivided by nonces and then by scoops.  Size on Disk:  minimum of 256 Kilobytes, maximum of full disk capacity.

Note:  A plot file only contains raw data and there are no headers.  All information needed for a user and miner is set in the filenames. The formatting of the filename is as follows.

POC2 format: AccountID_StartingNonce_NrOfNonces

Generating a none

Step 1:

Calculate hash #8191 using an initial 16-byte seed comprised of the 8-byte account id and the 8-byte nonce number.

Note:  each subsequent hash number will decrease by 1 until the final hash number of 0 is reached.

Step 1:  Creating a Burstcoin nonce

Step 2:
Prepend hash #8191 to the initial seed creating a new seed. Calculate hash #8190.

Step 2: Prepend

Step 3:
Prepend hash #8190 to hash #8191 creating the next seed. Calculate hash #8189.

Step 3:

Step 4:

Continue prepending each result to the previous seed and running the calculation until 128 iterations are completed. After the 128th iteration, resulting seeds will exceed 4,096 bytes. For all remaining iterations, use only the last 4,096 bytes.

Step 4:

Calculate a final Shabal-256 hash of all 8,192 hashes and the original 16-byte seed.

step 5: final hash

Use the final hash to XOR all other hashes individually.

The XOR logical operator compares the 1st byte from each hash and outputs a ‘1’ if the bytes match, or a ‘0’ if the bytes do not match.  The operation is performed for each byte position.

Hash 1 0 0 0 0 0 0 0 0
Hash 2 0 0 0 0 0 0 0 1
XOR 1 1 1 1 1 1 1 0
Hash 1 0 0 0 0 1 1 1 1
Hash 2 0 0 0 0 1 1 1 0
XOR 1 1 1 1 0 0 0 1

Image showing XOR of Burstcoin mining nonces

When complete, the newly created nonce is stored in a plot file and the process for generating a nonce repeats. Each subsequent nonce generated is added to the plot file. The number of that can be included in a plot file is limited only by the capacity of the storage medium.

Image showing Burstcoin nonce recorded in a plot file

POC2 format

The process for creating nonces described until this point encapsulates what is known as the POC1 format.  In order to address a largely theoretical “time-memory tradeoff” vulnerability with POC1, POC2 was created.  The process for creating the POC2 follows the POC1 format, but a final step is added which reorganizes the data.  In this final step, the nonce is divided into 2 halves (scoop numbers 0 - 2047 and scoop numbers  2048 - 4095).  The data in the 2nd half of each scoop in the lower numbers is swapped for the data 1st half of each scoop in higher numbers.  The mirror scoop is calculated as 4095 - CurrentScoop.

Image showing Burstcoin POC2 format

Plot structure

Mining software reads from one or more plot files.  A file is opened, a scoop is located, and the data from the scoop is read.  If the plot file is not optimized for this process, the scoop locations will be in more than one location. In the example to the right, the mining software is looking for scoop #403.  As shown in the example, the continuity of scoop #403 is interrupted by scoop #403.

Image showing an un-optimized Burstcoin plot file

Previously the situation was optimized remedially with a second program designed specifically to optimize the plot files by regrouping the data so that all of the data for each scoop was grouped together. Recent developments in plotting software now allow for the creation of plot files that are optomized automatically at the time that they are written to a storage disk.

Image showing a comparison of un-optimized and optimized plot files

Expand this section for information deprecated with this POC2 format.

Stagger - A group of nonces in a plot file.  Each stagger has a stagger number equal to the number of nonces in the group.  To find the number of groups in a plot file, the number of nonces is divided by the stagger number.   If the stagger number is equal to the number of nonces in the file, there is only one group and the plot file is completely optimized. If the division does not result in an integer, the plot file can be assumed to be broken.  Files names under the POC1 format are as follows:

POC1 format: AccountID_StartingNonce_NrOfNonces_Stagger   (deprecated)

Credits
This information is this documentation is based on an article written by Quibus.  The document has been revised by decrescendo.  Late revision 3/10/2019.  Content auditing for this document is appreciated.

2 + 6 =