Block Reward
As of March 10th, 2019, the block reward is 595 BURST plus transaction fees. A block reward schedule appears at the end of this document.
Reward Assignment
The reward assignment transaction notifies the network which account to credit for the block rewards attributed to a particular account. This transaction is required in order to begin mining. A minimum fee is required which can be obtained by visiting the Burstcoin community faucet.
Plotting
Plotting is the process that prepares a head drive for the mining process. Plot files contain all of the information necessary for forging blocks. Plot files are subdivided into nonces and scoops.
Mining
Burstcoin mining is the foundation for adding blocks to the Burstcoin blockchain.
Pools

Pool mining is a popular option, especially for miner's with relatively small amounts of processing capacity. If a mining pool has sufficient capacity, even a relatively small mining operation can receive a steady stream of block reward payments.

Burstcoin plotting and mining:  Introduction

Burstcoin mining is the foundation for adding blocks to the Burstcoin blockchain.  There are two distinct processes, a preparatory stage referred to as plotting and a processing stage referred to as mining.  Plotting satisfies the “nothing at stake problem” and can be thought of as a modified proof-of-work component.  In the mining stage Burstcoin employs a sophisticated decentralized API network to verify and record transactions within Burstcoin’s distributed and immutable ledger.  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 for 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 computations and data necessary to forge blocks, including what is referred to as a deadline.  

Stage 2:  Mining software quickly reads through the associated plot files and submits the best deadlines found to the network. The miner which submits the best cryptographic solution is granted the right to forge the related block and earns the block reward.    

 

Burstcoin solo mining

Solo mining refers to mining individually outside of a mining pool.  A solo miner benefits only from those plot files which are specifically bound to its account.  If a solo miner submits the best deadline to the network, it alone will be credited with the entire block reward and 100% of the transaction fees associated with that block.  Because the probability of any individual plot winning a block reward is low, success with solo mining generally 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.

Burstcoin pool mining

Burstcoin pool mining is the alternative to solo mining.  With pool mining, individual capacity is added to that of an independent pool operation.  Block rewards are shared in accordance with the pool operator’s reward distribution policies.  Rewards are generally shared proportionately.  Pool mining is the preferred method of 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 community developed software for pool operations

Mining Capacity

Mining capacity, the total amount of capacity devoted to plot files, is the key determining factor when choosing between mining methods.  It can also inform the choice of which mining pool to join.  There are no strict rules when it comes to making this decision and there are no technical obstacles that prevent anyone with a particular mining capacity from joining any particular pool.  The basic distribution policy for a mining pool is usually stated with two numbers.  The first number represents the percentage of the block reward that is awarded directly to the account providing the winning deadline.  The second, often referred to as “historical share”, represents the percentage of the block reward that is distributed among the remaining participating miners.

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

Successful ForgerHistorical shareMining capacity
0 – 100    0%    0%<40
20 – 80  20%  80%>30    < 80 TB
50 – 50  50%  50%>60    < 200 TB
80 – 20  80%  20%>150  < 250 TB
100 – 0100%    0%>150

 

Please note:  Distribution methods are decentralized and set solely by the individual pool operator.  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 out rewards daily. 

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 mining, the reward assignment transaction specifies the solo miner’s account.  For 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 pool operation may have to be added manually.

Note:  The reward recipient assignment transaction requires the 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 the Burstcoin Community Faucet for assistance getting started.  

Reward assignment using the Burstcoin API

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.

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.  It is a common method to calculate the effective plot size 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.

Mining revenue

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.

Technical information:

The process of mining and forging blocks

Entities involved in the mining and block forging process are a Burstcoin wallet (locally installed, web-based, or pool wallet) and mining software (software able to compute deadlines from plot files).  The mining process is as follows:

 

  1. Mining software requests mining information from the wallet.
  2. 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.  
  3. The mining software produces the generation hash by running the new generation signature and the new block height through the Shabal-256 hash function. 
  4. 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.
Image showing the Burstcoin mining process

5. 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.

6. 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.  

7. 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.

8. 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.

9. 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://www.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

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.

Typical information found in a Burstcoin 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 showing block information displayed in a Burstcoin block explorer:

Image showing Burstcoin block details and information

Burstcoin wallets also show a selection of Block details. 

Image showing block details displayed in the Burstcoin wallet (1 of 2)
Image showing block details displayed in the Burstcoin wallet (2 of 2)

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 the 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:

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 nonce

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.

Image showing fir step in creating a Burstcoin nonce

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

Image showing the second step in creating a Burstcoin nonce

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

Image showing the third step in creating a Burstcoin nonce

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.

Image continues illustrating the Burstcoin nonce creation procedure

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

Image showing the final step in creating a Burstcoin nonce

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 100000000
Hash 200000001
XOR11111110
Hash 100001111
Hash 200001110
XOR11110001

 

Image showing XOR of Burstcoin 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 Burstcoin 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)

Burstcoin Block Reward Schedule

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
month = block height / 10800reward = 10000 * 95^month / 100^month

Image showing the Burstcoin block reward schedule

Table of block rewards 

MonthApprox. DateBlock HeightReward in BURST
02014-08-11010000
12014-09-11108009500
22014-10-11216009025
32014-11-11324008573
42014-12-11432008145
52015-01-11540007737
62015-02-11648007350
72015-03-11756006983
82015-04-11864006634
92015-05-11972006302
102015-06-111080005987
112015-07-111188005688
122015-08-111296005403
132015-09-111404005133
142015-10-111512004876
152015-11-111620004632
162015-12-111728004401
172016-01-111836004181
182016-02-111944003972
192016-03-112052003773
202016-04-112160003584
212016-05-112268003405
222016-06-112376003235
232016-07-112484003073
242016-08-112592002919
252016-09-112700002773
262016-10-112808002635
272016-11-112916002503
282016-12-113024002378
292017-01-113132002259
302017-02-113240002146
312017-03-113348002039
322017-04-113456001937
332017-05-113564001840
342017-06-113672001748
352017-07-113780001660
362017-08-113888001577
372017-09-113996001498
382017-10-114104001423
392017-11-114212001352
402017-12-114320001285
412018-01-114428001220
422018-02-114536001159
432018-03-114644001101
442018-04-114752001046
452018-05-11486000994
462018-06-11496800944
472018-07-11507600897
482018-08-11518400852
492018-09-11529200809
502018-10-11540000769
512018-11-11550800730
522018-12-11561600694
532019-01-11572400659
542019-02-11583200626
552019-03-11594000595
562019-04-11604800565
572019-05-11615600537
582019-06-11626400510
592019-07-11637200484
602019-08-11648000460
612019-09-11658800437
622019-10-11669600415
632019-11-11680400394
642019-12-11691200375
652020-01-11702000356
662020-02-11712800338
672020-03-11723600321
682020-04-11734400305
692020-05-11745200290
702020-06-11756000275
712020-07-11766800262
722020-08-11777600248
732020-09-11788400236
742020-10-11799200224
752020-11-11810000213
762020-12-11820800202
772021-01-11831600192
782021-02-11842400182
792021-03-11853200173
802021-04-11864000165
812021-05-11874800156
822021-06-11885600149
832021-07-11896400141
842021-08-11907200134
852021-09-11918000127
862021-10-11928800121
872021-11-11939600115
882021-12-11950400109
892022-01-11961200104
902022-02-1197200098
912022-03-1198280093
922022-04-1199360089
932022-05-11100440084
942022-06-11101520080
952022-07-11102600076
962022-08-11103680072
972022-09-11104760069
982022-10-11105840065
992022-11-11106920062
1002022-12-11108000059
1012023-01-11109080056
1022023-02-11110160053
1032023-03-11111240050
1042023-04-11112320048
1052023-05-11113400045
1062023-06-11114480043
1072023-07-11115560041
1082023-08-11116640039
1092023-09-11117720037
1102023-10-11118800035
1112023-11-11119880033
1122023-12-11120960031
1132024-01-11122040030
1142024-02-11123120028
1152024-03-11124200027
1162024-04-11125280026
1172024-05-11126360024
1182024-06-11127440023
1192024-07-11128520022
1202024-08-11129600021
1212024-09-11130680020
1222024-10-11131760019
1232024-11-11132840018
1242024-12-11133920017
1252025-01-11135000016
1262025-02-11136080015
1272025-03-11137160014
1282025-04-11138240014
1292025-05-11139320013
1302025-06-11140400012
1312025-07-11141480012
1322025-08-11142560011
1332025-09-11143640010
1342025-10-11144720010
1352025-11-1114580009
1362025-12-1114688009
1372026-01-1114796008
1382026-02-1114904008
1392026-03-1115012008
1402026-04-1115120007
1412026-05-1115228007
1422026-06-1115336006
1432026-07-1115444006
1442026-08-1115552006
1452026-09-1115660005
1462026-10-1115768005
1472026-11-1115876005
1482026-12-1115984005
1492027-01-1116092004
1502027-02-1116200004
1512027-03-1116308004
1522027-04-1116416004
1532027-05-1116524003

 

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.

9 + 3 =