Getting Started

From understanding Burstcoin security to selecting a wallet, the Getting Started guide provides the information needed to succeed with Burstcoin.

Software

A great deal of technical knowledge is not required to use the Burstcoin network’s collection of open source software.  The definitive collection, including wallet software, is located in the Burstcoin Software Library.

Documentation

For more information on any of the topics listed below, or technical documents, visit the Burstcoin Documentation Project.  Here you will find everything there is to know about Burstcoin.  You can even contribute new documentation to the project, or recommend improvements.

Faucet

To activate a new wallet for Burstcoin mining or to receive a transfer from the Bittrex exchange, visit the Burstcoin Community Faucet.

FAQs

To assist with supporting new users of Burstcoin, this section contains Frequently Asked Questions.  You can help curate this section by visiting the documentation project section.

Alias System

Burstcoin implements an alias system that translates alphanumeric text into any string of Latin-character numbers and letters.  The system is open-ended and provides a basis for any system that requires mapping one alphanumeric string to another. For example, it could be used as the basis for a decentralized DNS system, an online shopping cart application, etc.

The Alias System feature of Burstcoin essentially allows one piece of text to be substituted for another so that keywords or passphrases can be used to represent other things – names, telephone numbers, physical addresses, web sites, account numbers, email addresses, product SKU codes, etc.

A simple application would be to create easy-to-remember aliases for Burstcoin account numbers.

There are 2 main ways to use Burstcoin aliases without relying on third-party plugins for your browser:

  • Server-side:A web server analyzes the Burstcoin blockchain and replaces “burst-links” with corresponding addresses before sending HTML documents to users.
  • Client-side:A web browser runs JavaScript code that connects to Burstcoin bootstrapping nodes and replaces “burst-links” with their addresses. This requires embedding a small script which is executed in an “on-load” event. The script will use CORS, JSON, and other techniques.

Creating Aliases

  • To create an alias, send a transaction that states “This Text = That Text”.   Use the ‘Aliases’ menu and click ‘Register Alias’.
  • To change an alias, send another transaction with a new definition.  Use the ‘Aliases’ menu and click ‘Edit’.  Only the account that created an alias can change it. 

Registering Aliases

  • Click on ‘Register Alias’ in the upper right corner.
  • Select the ‘Type’: “URI”, “Account” or “Other”.
  • In the ‘Alias’ field, enter the name without blank spaces.
  • Depending on the selected ‘Type’, the text input field is named ‘URI’, ‘Account ID’ or ‘Data’. The ‘Data’ field can contain any text.  The maximum length is 1,000 bytes.
  • Enter your ‘Passphrase’ and click ‘Register’. It is listed in italics on the page.
  • After the network has processed your message, it will be listed in normal font. 

Editing Aliases

  • Click on ‘Edit’ behind the alias you want to change.
  • You can modify the ‘Type’ and ‘Data’, but you can not rename the ‘Alias’.
  • Enter your ‘Passphrase’ and click ‘Update’.

Transferring Aliases

An alias can be transferred for the minimum Burstcoin fee.

  • Click on the ‘Transfer’ button behind the alias to be transferred.
  • Enter the ‘Recipient’ account id and a message (optional).
  • Enter your ‘Passphrase’ and click ‘Transfer Alias’.

Selling Aliases

Aliases can be sold to specific Burstcoin accounts or to the general public.  When selling aliases, the prices can be set individually.

  • Click on ‘Sell’ behind the alias to be sold.
  • You can sell it to a specific user or offer it on the Burstcoin network.
  • Enter the price and the corresponding data.
  • Confirm with your passphrase and click on ‘Sell Alias’. 

Figure 1:  An example of the wallet interface for one of the procedures for working with Aliases.

Image showing fields for registering an alias using the Burstcoin wallet

 

Asset Exchange

The Burstcoin asset exchange, distinct from the Burstcoin marketplace, is a built-in decentralized peer-to-peer exchange which eliminates trust points, trading fees, and commissions.  No third party exercises custodial control and no one in a position to abscond with entrusted funds, misappropriate them, or otherwise lose them due to poor business practices.

The Burstcoin asset exchange builds upon the concept of colored coins, a class of methods for representing and managing real-world assets on top of a blockchain.  A particular coin can be colored with the designation of assets such as property, stocks, bonds, shares, or even intellectual property.  The asset exchange is particularly useful for exchanging digital assets and can be used to trade almost anything of value without relying on agencies or other organizations.  The Burstcoin blockchain is immutable, impossible to counterfeit, and transparent. These strengths make it a trustworthy record of transactions.

Assets listed on the asset exchange are liquid by nature.  They can be easily purchased, resold, or traded.  Applying standard business analysis in evaluating the offerings can lead to capital growth for investors while providing the necessary capital for startups or growing businesses.  In addition to share price increases, other potential ways that creators of assets can reward investors is through dividends and distributions of net profits.

An additional benefit to using the Burstcoin asset exchange is its inherent simplicity.  It is quick and easy to create an asset.  Below you will find the information necessary for using all of the important asset exchange features.

Example:

I want to run a business. I issue an asset (let’s call it ABCD). I set the quantity to 1000. I announce that I will sell ABCD for 20 Burstcoin each and will pay 5 BURST of monthly interest within the next six months. I create an ask order — 1000 ABCD for 20,000 Burstcoin.

You create a transaction that sends me 500 Burstcoin for 25 ABCD. It’s up to you what you do with your 25 ABCD.  You could place an ask order and sell them for 27 BURST realizing a profit.  Regardless, each month I will check the blockchain to see who owns ABCD.  I will send each current owner 5 Burstcoin for each ABCD that they hold.

 

Wallet Interface

The asset exchange is accessible within the Burstcoin wallet.  If your wallet was installed using QBundle you need only to start the wallet and connect to your Burstcoin account. If you are using a standalone wallet (currently all wallets installed without using QBundle), the exchange is accessed using a standard web browser to connect to your localhost (wallet).  To connect, enter  127.0.0.1:8125   into the address bar.

Select asset exchange  To observe an asset, select add asset and enter the asset id or the issuing account id.  Your selections will be listed along with information such as a description, buy and sell orders, quantity, etc.

You can check the transfer history of assets in your possession which are found under my Assets.  This includes assets that you have purchases as well as any assets that you have issued.

You can check that status of open order by selecting open orders.  From this list you can cancel any order.  Order cancellations are not instantaneous as the order cancellations must be propagated through the network.  There is a possibility that your order may fill while this process is proceeding.

To issue an asset, select issue asset.  The form for entering the asset information will appear.

There are several mechanisms for paying and rewarding your investor.  To do so, you will use one of three asset distribution modules:  dividendsautomatic asset distribution, or share swap.  Select payout dividends to choose one of the three modules.

By default, the asset exchange does not list any asset. You must locate the assets that you wish to follow and add them to your list using the add asset button.  There are several online resources (asset exchange explorers) being developed to help rank assets in meaningful ways, such as by volume, number of trades, or another useful metric.  These resources include a variety of filters to help you locate assets of interest.  After locating an asset, you can bookmark it your list.  Asset exchange explorers are listed in the online resources section.

Note: Incognito mode (or its equivalent) is not supported for adding assets to your watch list.  In order for your list to retain the asset that you add to it, your browser must be in normal mode.

 

 

By selecting an asset, the interface area will automatically display the corresponding information. This includes the number of tokens that have been created (“quantity”), how divisible is the token (“asset decimals”), a brief description of the asset, who created the asset (“account”) and the asset identifier (“asset ID”). This information is critical, in fact the asset names are non-unique. This means that there can be multiple assets that have the same name.

The cost of issuing an asset (1000 BURST) should discourage people from spamming the exchange with assets whose only purpose is confusion and abuse. Without entering this worst-case scenario, it is reasonable to assume that perfectly legit users may create assets of the same name. Therefore a good degree of vigilance before buying is always beneficial.

 

Buying assets

  • Select the asset from the list.
  • Click on “Buy *Asset Name* with BURST
  • Quantity: define the number of assets that you are interested in buying.
  • Price: set the amount you are willing to pay.  Warning: “price” refers to the cost of a unit of tokens. So, by entering 10, you are willing to pay 10 BURST per token.
  • Fee: define the fee (the minimum fee is .00735 BURST).
  • Select buy.
  • Inter your passphrase and select buy asset.

Following is the main asset exchange area showing a list of assets being tracked and menu items for interacting with these assets.  (If you owned any shares in these assets, they would be highlighted in yellow (not shown here). 

 Image showing tracked assets in the Burstcoin asset exchange

The asset exchange is accessible within the Burstcoin wallet.  If your wallet was installed using QBundle you need only to start the wallet and connect to your Burstcoin account. If you are using a standalone wallet (currently all wallets installed without using QBundle), the exchange is accessed using a standard web browser to connect to your localhost (wallet).  To connect, enter  127.0.0.1:8125   into the address bar.

Select asset exchange add asset and enter the asset id or the issuing account id.  Your selections will be listed along with information such as a description, buy and sell orders, quantity, etc.

You can check the transfer history of assets in your possession which are found under my Assets.  This includes assets that you have purchases as well as any assets that you have issued.

You can check that status of open order by selecting open orders. From this list you can cancel any order.  Order cancellations are not instantaneous as the order cancellations must be propagated through the network.  There is a possibility that your order may fill while this process is proceeding.

To issue an asset, select issue asset.  The form for entering the asset information will appear.

There are several mechanisms for paying and rewarding your investor.  To do so, you will use one of three asset distribution modules:  dividendsautomatic asset distribution, or share swap.  Select payout dividends to choose one of the three modules.

By default, the asset exchange does not list any asset. You must locate the assets that you wish to follow and add them to your list using the add asset button.  There are several online resources (asset exchange explorers) being developed to help rank assets in meaningful ways, such as by volume, number of trades, or another useful metric.  These resources include a variety of filters to help you locate assets of interest.  After locating an asset, you can bookmark it your list.  Asset exchange explorers are listed in the online resources section.

Note: Incognito mode (or its equivalent) is not supported for adding assets to your watch list.  In order for your list to retain the asset that you add to it, your browser must be in normal mode.

Following is the main asset exchange area showing a list of assets being tracked and menu items for interacting with these assets.  (If you owned any shares in these assets, they would be highlighted in yellow (not shown here).

 

By selecting an asset, the interface area will automatically display the corresponding information. This includes the number of tokens that have been created (“quantity”), how divisible is the token (“asset decimals”), a brief description of the asset, who created the asset (“account”) and the asset identifier (“asset ID”). This information is critical, in fact the asset names arenon-unique. What this means is that there can be multiple assets that have the same name.

The cost of issuing an asset (1000 BURST) should discourage people from spamming the exchange with assets whose only purpose is confusion and abuse. Without entering this worst-case scenario, it is reasonable to assume that perfectly legit users may create assets of the same name. Therefore a good degree of vigilance before buying is always beneficial.

In order to buy an asset, follow these steps:

  • Select the asset from the list.
  • Click on “Buy *Asset Name* with BURST
  • Quantity: define the number of assets that you are interested in buying.
  • Price: set the amount you are willing to pay.  Warning: “price” refers to the cost of a unit of tokens. So, by entering 10, you are willing to pay 10 BURST per token.
  • Fee: define the fee (the minimum fee is .00735 BURST).
  • Select buy.
  • Inter your passphrase and select buy asset.

My assets 

In this menu, all of your confirmed assets will be displayed including the assets you have issued and those you have obtained through trading. 

Image of menu showing confirmed assets that you have issued or obtained through trading

Assets are transferable using the following procedure:

  • Find the asset you wish to transfer Under My Assets
  • Click ‘transfer’.
  • Type the recipient.
  • Select the quantity that you want to transfer.
  • Add a message to the transfer if appropriate.
  • Complete the following fields:

Image showing fields for transferring assets in the Burstcoin wallet

 

RECIPIENT – The account you wish to transfer the assets to.

Mandatory: this field is mandatory.

QUANTITY – Specify the amount of assets you wish to transfer.

Mandatory: this field is mandatory.

Limits: there is no upper limit.  You can transfer all of your assets. The minimum amount you can transfer depends on the nature of the asset. In particular, it depends on what has been defined as decimals. For 0 decimals, the minimum would be .0075 Burst.  For 1 decimal, it would be 0.1 tokens and so on.   (research tag).

ADD MESSAGE – attach a brief message to the transfer.

Optional: this field is optional.

Characters allowed: it can contain any Unicode characters but should be URL-encoded. Maximum length of 1000 characters.

FEE – Set the fee you are willing to pay for the transaction.

Mandatory: this field is mandatory.

Limits: there is no upper limit. However, the minimum fee is .00735 BURST.

DEADLINE – Set how long you are willing to wait before the request gets automatically deleted.

Mandatory: this field is mandatory.

Expressed in hours

SECRET PASSPHRASE – Enter your passphrase.

Mandatory: this field is mandatory.

Open Orders menu – This menu shows all of your open orders.

 

Image showing account holders open orders in the Burstcoin wallet

 

Order Cancellation

You can cancel an order at any time.  However,

  • The process is not instantaneous.  Your order may be accepted before your cancellation reaches the network.
  • Cancellation orders incur a minimum transaction fee.
  • An order that is in the process of being canceled will appear in red in the ‘Open Orders’ menu.

Issue asset

Under this menu, you can issue assets yourself. These will be publicly available on the Asset Exchange where they can be traded for Burstcoin vice-versa.

NOTE:  When you issue an asset, you will not be able to modify any of the fields, ever. Be certain that all of the information is correct.

ASSET NAME – The name of the asset you intend to issue. This is also the name announced to other traders, allowing them to find this asset.

Mandatory: you cannot issue an unnamed asset. Names are non-unique: multiple assets can be issued with the same name.

Note: for this reason, it is important to pay close when buying or selling!

Length: between 3 and 10 characters.

Characters allowed: uppercase letters, lowercase letters, and numbers.

DESCRIPTION – In this field, you can briefly describe the asset being issued.

Mandatory: this field is mandatory.

Characters allowed: it can contain any Unicode characters but should be URL-encoded. Maximum length of 1,000 characters.

QUANTITY – Specify how many tokens you intend to create.

Mandatory: this field is mandatory. Must be a whole number

DECIMALS – This field defines the divisibility of the token. As an example, by defining 2 decimals, the minimum amount of tokens you can sell or buy is 0.01.

Mandatory: this field is mandatory.

Limits:  0 to 8 decimals. The latter corresponds to the minimum of 0.00000001 tokens.

FEE – Define the fee related to issuing the asset.  1,000 BURST is the minimum required to issue an asset (to avoid spam assets).

Mandatory: this field is mandatory.

PASSPHRASE –Assets belong to the person who issues it. Therefore it is required to enter your own passphrase. It will not be broadcast.

Mandatory: this field is mandatory.

Note: assets belong to the person that creates them, but they can be bought, sold and transferred.

 

Image showing field for issuing an asset in the Burstcoin asset exchange

Arbitrary Messages

Burstcoin can transmit data messages of up to 1000 bytes in length from one account to another account.  These messages can be encrypted or plain text.  Because they can be any type of data, they are referred to as Arbitrary messages.

Arbitrary messages are limited only by length. Any string can be transmitted, using any data structure or form of data encryption. Encoding, decoding, linked messages, data structures, and more can be implemented by any application that uses the system.

The base implementation allows for the transmission of simple, unencrypted text messages between accounts, but since the messages are truly “arbitrary” the range of possible applications is vast:  Secure messaging, torrent applications, voting systems, data storage systems, simple distributed applications,  even higher level Burstcoin function are possible.

 

Sending messages

Select the Messages option from the left-hand menu or click on the messages icon as shown below and click on ‘Send Message’.

  • In the Recipient field, enter the Burstcoin address for the message recipient account.
  • In the Message field, you can enter any text with a length of up to 1000 bytes. When sending, you receive a corresponding error message if you enter longer text.
  • You can select the checkbox ‘Encrypt Message’ or send the data in plain text. The recipient needs his passphrase to read encrypted messages.
  • In the Passphrase field, enter your ‘Passphrase’ and click on Send Message.
  • When you have sent the message it is listed in italics on the transactions page.
  • After the network has processed your message (usually after a few minutes), it will be listed in normal font. 

Image showing fields for sending messages using the Burstcoin wallet

 

Receiving messages

Select the Messages option from the left-hand menu or click on the messages icon as shown below and click on ‘Inbox’.

  • Here you can find all the received messages sorted by Burstcoin account.  Select one of the sending accounts and all of the messages sent from that account will be displayed. If the message has been encrypted, you will see a padlock symbol and a prompt to enter your passphrase in order to decrypt the messages:
  • Selecting one of the messages allows you to enter your passphrase. You can also select the checkbox to remember your passphrase for decryption.
  • Once you enter your passphrase the message content will be shown.
  • Below the messages, you will find input fields to respond directly to the sender.

Using the Burstcoin API with arbitrary messages

Colored Coins

In an abstract sense, coloring is a simple tagging technique used to allow distinction, thus coexistence, of various instances of a class in a common data context.  In cryptocurrency, coloring is a concept that allows attaching metadata to transactions and by this leveraging the coins infrastructure for issuing and trading immutable digital assets that can represent real world value.  

Related to Burstcoin, the concept of colored coins refers to a method for tracking the origin of Burstcoins so that a certain set of coins can be set aside and conserved, allowing a party to acknowledge them in various ways. Such coins can be used to represent arbitrary digital tokens, such as stocks, bonds, smart property and so on. They can even represent real-world objects.

When a coin is “colored”, it can be traded on the Burstcoin network just as any other coin in the system. This allows Burstcoin to be exchanged for whatever object the colored coin represents.

This concept forms the basis for the Burstcoin Asset Exchange.

For an excellent white paper on the concept of colored coins, as written for the Bitcoin project, see https://bitcoil.co.il/BitcoinX.pdf

Crowdfunding

Burstcoin implements a crowdfunding system which allows every Burstcoin user to set up crowdfunding campaigns to raise money for causes and projects.

Crowdfunding is the practice of funding a project or venture by raising monetary contributions from a large number of people. The Burstcoin crowdfunding feature allows you to create a decentralized crowdfund in a few clicks, and to donate just as easily. Creating a crowdfund is simple.

The crowdfund system is a nice and useful addition to the Burst ecosystem and emphasizes the community spirit that drives all Burstcoin users. Successful crowdfunds have already been organized by Burstcoin developers and users alike.

Crowdfunding also provides the producer with a number of non-financial benefits:

Profile: a compelling project can raise a producer’s profile and provide a boost to their reputation.

Marketing: Project initiators can show that there is an audience and a market for their project. If a campaign is unsuccessful, valuable feedback can be provided.

Audience engagement: crowdfunding can create a forum where project initiators can engage with their audience.  The audience can engage in the production process by following progress and sharing feedback.

Encrypted Messaging

Secured communication on the blockchain

The Burstcoin messaging system allows you to send and receive data directly on the Burstcoin Blockchain, thus allowing any Burstcoin account holder to communicate directly with any other account holder.

Messages can be attached to any Burstcoin transaction, making bookkeeping easy, as you can tag all your transactions with a description.

Messaging is securely encrypted by default, but text or data can also be sent unencrypted. The recipient of an encrypted message can easily decrypt it by entering the passphrase of his account.

Marketplace – the future of peer-to-peer buying and selling

The Burstcoin Marketplace provides a protocol for decentralized, peer-to-peer selling.  It is no longer necessary to rely on external market sites that charge commissions for facilitating your business.  Any type of merchandise can bought and sold.  The marketplace is particularly suited for digital goods such as software, music, and videos.  Buyers shop for seller’s products, place an order, and are provided with instructions for receiving or downloading their purchased products — no intermediaries, no fees, and no delays.    All transactions between the buyer and the seller are transacted directly on the blockchain using Burstcoin.

With server running, access the local Burstcoin wallet by visiting http://localhost:8125/. On the sidebar, find menus for marketplace and my store.  Following are descriptions of each sub menu: 

  • Search marketplace: Enter a seller’s address to view their products.
  • Purchased products: See all of your previous purchases.
  • My products for sale: See your items for sale and make updates to your offers.
  • My pending orders: Here you will see pending orders from users who want to buy a product.
  • My completed orders: Shows all finished orders and feedback from your customers.
  • List product for sale: Here you add a new digital good in the marketplace. 

Image showing the Marketplace menu in the Burstcoin wallet

 

How to buy products on the marketplace

  • Open your Burstcoin wallet and select marketplace.
  • Select marketplace from the menu and then select search marketplace.
  • Enter a seller’s Burstcoin address to see a list of items that they have for sale.
  • Click the name of a product to open a purchase dialog.  Enter quantity and delivery deadline (in hours).  The delivery deadline defines the amount of time you are willing to wait for the seller to deliver before the transaction will be canceled.  Verify your data, enter your passphrase, and click purchase.
  • Orders that have been placed successfully appear in the purchased products menu with an initial order status of tentative.  After network confirmation (block generation) the order status changes to pending.  When the product has been delivered, the status changes to complete.
  • Click the name to open the marketplace delivery dialog.  Enter your passphrase to decrypt the seller’s message. Here you will find the information on how you can receive your digital good.
  • You now have the option of leaving feedback for the seller.

 

How to sell products on the marketplace

  • Open your Burstcoin wallet and select my store.
  • Click list product for Sale in the top right-hand corner.
  • Describe your product.
    Name: The name of the product.
    Description: More details about the product.  You can add a link to our promotional website where you can present the product in full detail.
    Tags: (optional) – Enter up to three tags separated by commas.
    Price: The product price per unity in Burstcoin.
    Quantity: The number of the items that you have in stock. This will decrease automatically each time a sale is made.
    Passphrase: Your wallet’s passphrase.
  • Confirm the offer by clicking on put For sale. It will then be listed in italics under my products for sale.
  • After your offer has been confirmed in a block, usually after a few minutes, it will be listed in normal font as a link.
  • When someone places an order to buy goods from you, it will show up in my pending orders. To complete the sale, press the deliver goods button.
  • In the pop-up window, enter your passphrase to decrypt the buyer’s message. You can check remember passphrase for decryption for future sales.
  • Enter details on how the buyer can download or receive their merchandise in data. You can optionally give your buyer a discount.
  • Enter your passphrase and select deliver purchase to finalize.
  • The completed order appears in my completed orders. For details, click on the product’s name. If they buyer has provided any feedback, you will find it here.  This section is also where you would issue a refund if applicable.

External Links

Internal AT (automated transaction) escrow account

The internal AT (automated transaction) and escrow account is used for execution of automated transactions and escrow payments, as an internal intermediary party i.e. it cannot be the sender or recipient of a transaction.

The account information is visible when it is accessed through the Block Explorer, using the following link: https://explore.burst.cryptoguru.org/account/0. The account has the numeric ID 0 and a Burst address BURST-2222-2222-2222-22222.

 

Image showing the Burstcoin escrow account balance as viewed in a block explorer

 

 

Account #0

The account information shows a number of historic transactions, ordinary and multi-outs, which are indicative of the transactions executed using this account. However, the balance of the account shown in Block Explorer is a result of the Block Explorer’s interpretation of the intermediary states of the account, and therefore doesn’t affect the total supply of Burstcoin.

Smart Contracts (automated transactions)

The concept of smart contracts was introduced to advance blockchain technology. This technology involves presetting the rules of transactions that both parties in a contract must meet. Burstcoin adopted smart contracts in 2014 and referred to them as Automated Transactions (AT). The automated transactions are Turing-complete and designed to facilitate simpler applications in many areas. This is aimed at helping to reach and draw more users to the Burstcoin network.

A blockchain can be seen as a distributed database that is ensuring consistency and validity by verification work done by a majority of participating nodes in the blockchain’s network.  While cryptocurrencies such as Bitcoin speak of the blockchain as a public ledger, others such as Ethereum put an emphasis on smart contracts stored on their blockchain.  A smart contract is a procedural way to facilitate, verify, or enforce the negotiation or performance of a contract. Compared to their “inanimate” paper-based ancestors, smart contracts fulfill the role of otherwise needed lawyers for verification, notaries for validation, and executors for enforcement. For this reason, smart contracts are a disruptive technology to future digital economies.

The formalism used in Burstcoin’s implementation of smart contracts is called AT (Automated Transaction) and has been proposed and implemented by CIYAM.  As turing-complete formalism, ATs are both powerful (expressiveness) and dangerous (verifiability) and have been used only as templates to facilitate simpler smart contracts (SCs) such as lotteries, crowdfunding, and an asset exchange. Because of the expressiveness of the formalism, other possible applications are basically limitless, but have to be designed with great care in order to avoid situations such as the DAO debacle that led to the hard fork and community split between Ethereum and Ethereum Classic.

From Wikipedia:  With present implementations, based on blockchains, smart contracts are mostly used in the sense of general purpose computation taking place on a blockchain or distributed ledger. In this interpretation, a smart contract is not necessarily related to the classical concept of a contract, but can be any kind of computer program.

In 2018, a US Senate report said: “While smart contracts might sound new, the concept is rooted in basic contract law. Usually, the judicial system adjudicates contractual disputes and enforces terms, but it is also common to have another arbitration method, especially for international transactions. With smart contracts, a program enforces the contract terms which are built into the code. 

smart contract is a computer protocol intended to facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts were first proposed by Nick Szabo in 1996.

We are converting contracts to computer code, stored and replicated on the blockchain and supervised by the network of miners.

What are smart contracts?

Smart contracts are computer programs that can automatically execute the terms of a contract. Anyone familiar with computer programming would be aware of what is known as an if-then-else statement, where a program executes a certain task if certain conditions are met and does not execute the task if the conditions are not met. Smart contracts implement this on the blockchain in a completely decentralized and trustless way.

Smart contracts help you exchange money, property, shares, or anything of value in a transparent, conflict-free way while avoiding the services of a middleman.

Smart Contracts allow people to agree on a piece of code ahead of time and trustlessly know that if they submit the code to the network, then it will be completed as requested. The code’s arguments can be modified as desired, before its submission to the network.

  • A contract is written as public code into the blockchain
  • A triggering event is hit and the contract executes itself
  • Regulators can use the blockchain to track the activity

Burst Automated Transactions

How it works

With Burstcoin, smart contracts are implemented using Automated Transactions (AT), a technology created by CIYAM Developers. Automated Transactions are Turing-complete and thus have a potentially infinite number of use cases.

If you are interested in Burstcoin smart contracts and want to learn how to create one yourself, please have a look at the documentation provided by CIYAM and at the wiki created by a Burstcoin community member.

http://ciyam.org/at/

https://github.com/antonyip/BurstAT/wiki

Unparalleled benefits

Autonomy – You are the one making the agreement. There is no need to rely on a broker, lawyer or other intermediaries to confirm. Incidentally, this also removes the danger of manipulation by a third party, since execution is managed automatically by the network.

Speed – You would ordinarily have to spend substantial amounts of time and paperwork to manually process documents. Smart contracts use software code to automate tasks, thereby saving hours for most business processes.

Trust – Your documents are encrypted and duplicated many times over on a shared ledger. There is no way that someone can say they lost it.

Safety – Smart contracts are kept safe by the highest grade cryptography. The blockchain is immutable, and no hacker can modify the data it contains.

Savings – Smart contracts save you money since they knock out the presence of intermediaries. You would, for instance, have to pay a notary to witness your transaction.

Use cases examples

Atomic cross-chain transactions (ACCT) – ACCTs allow for truly decentralized trading between cryptocurrencies. For example, trade your burstcoins with a coin that provides a mixing service for the purposes of privacy, then send it right back to a new Burst account.  With the Dymaxion, ACCTs (or ACTTs) are used to connect the colored tangles and the Burstcoin blockchain together.

Decentralized crowdfunding – Smart contracts make decentralized crowdfunding possible: supporting a project is as easy as sending funds to an account. If the account receives enough funds by a certain block, then the project funds are released to the crowdfund initiator; otherwise, the money is returned to the senders.

Decentralized gambling – A good example of automated gambling consists of decentralized lotteries. You send Burstcoins to a smart contract programmed to randomly choose a winner and distribute the reward to that account.

Decentralized auctions – You can auction an item or a service off at a certain starting price – participants will send money to the smart contract, and anytime one sends more than the previous participant, the latter’s money is automatically refunded. ‘Buy Now’ option can also be supported. 

Other – There are countless other possibilities, such as autonomous corporations (entities holding internal capital, autonomously acting on the market through sets of trustless rules), gaming, self-mixing, smart property and much more. The sky is the limit!  Did you know? In 2014, Burst was the first ever cryptocurrency to implement working, Turing complete smart contracts in a live environment in the form of Automated Transactions (ATs).  In January 2015, the world’s first decentralized Burst lottery became the first ever program to run on top of a blockchain in a trustless decentralized manner.

Offline Transaction Signing

Offline Transaction Signing [offline device]

The term “offline transaction” refers to the practice of keeping the private keys on an offline device (not connected to the internet) and signing on individuals transactions. The signature is then copy-pasted from this device into a connected device, and broadcast into the network. Assuming the offline computer is malware-free, then this practice is virtually risk-free of theft.

Online transaction signing [local device]

In addition to signing your transactions from an offline device, the signing can also be done on an online device but still performed locally. Assuming the computer is malware-free, this is the most convenient option while still keeping your private keys secret. For example, the BRS (Burst Reference Software) wallet uses this form of signing for its wallet interface through locally run JavaScript.

Online transaction signing [server side]

Just don’t do it. Although it is possible, it would only be considered “safe” to do this using a local host. Especially if you are developing/distributing software; don’t present online signing as an option to your clients. You will make them a potential target for malicious actions.

Implementing transaction signing

Any transaction needs to be signed before it can be broadcast and accepted into the memory pool. You use one of the API functions to request transactionBytes from a node. This API call returns a JSON containing the transactionBytes. These bytes represent the transaction you want to make.

It is important to use the publicKey argument and not the secretPhrase for the transactionBytes request. And set the broadcast argument to false to prevent broadcasting the transaction to the network.

Now to sign the transactionBytes locally. Refer to these sources below to include the signing functions in your code.

Code sources

Pseudo code:

function signTX(unsignedTransactionBytes) { myBytes = unsignedTransactionBytes // keep a copy signature = crypto.sign(unsignedTransactionBytes, passPhrase) // make the signature myBytes.copy(96, signature); // copy the signature over the unsignedTransactionBytes with a offset of 96 bytes return myBytes}

Note: add signature and TransactionBytes length

Compare and verify your implementation with the requestType: Sign Transaction.

The transaction is now signed and can now be broadcast (through POST only): Broadcast the transaction

BRS API Transaction Operations

Transaction Types

Burstcoin supports sending Burstcoin from one account to multiple recipients in a single transaction for a single minimum fee.  This new transaction type, referred to as a multi-out transaction, as well as ordinary transactions and advanced transaction types, are documented below.

Note:  All transaction types use the same slot-based transaction fee schedule.  For more information, see “Transaction Fees” which can be accessed from the menu item above.

Transaction types are as follows:

  • send money
  • create alias
  • transmit message
  • issue asset
  • order asset

Each transaction type has a unique set of required details.  However, the following details are common to all transaction types:

  • sending account’s secret passphrase (required)
  • specified transaction fee (required)
  • transaction deadline (required, default is 24 hours))
  • “referenced” transaction (optional)

Ordinary transactions

Ordinary Burstcoin transactions are one-to-one transactions where one account sends Burstcoin to one recipient. Ordinary transactions can be initiated from both local or web-based wallets.

To issue an ordinary transaction, specify a Burstcoin account as the recipient, the amount of the transaction, and a transaction fee. 

An optional message can be added.  The sender can elect to encrypt the message so that it only visible to the recipient, or send the message in plain text.

The transaction is issued when the “Send BURST” button is clicked.

 

Image showing the fields for sending Burstcoin

 

Advanced options for ordinary transactions

 

  • custom deadlines
  • conditional execution
  • offline transaction signing

Custom deadlines

Deadlines set the duration of transaction’s pre-confirmation validity.  The default deadline is the maximum allowed deadline of 24 hours. If a transaction is not confirmed within the configured deadline, it will be deleted from the mempool. Transactions deleted due to deadline expiration can of course be reissued.

Image showing an advanced transaction in the Burstcoin wallet

 

Conditional execution

Referenced transaction hash represents a condition that has to be met before the transaction that is being issued can be confirmed. This mechanism works as follows: a transaction with hash txhash1 has been issued. The user is currently creating transaction tx2. If the txhash1 is provided as the “References Transaction Hash”, transaction tx2 will be executed only after the transaction with txhash1 has been confirmed.

Image showing the raw text of an advanced transaction in the Burstcoin wallet

Do not broadcast option

The “Do Not Broadcast” option prevents a signed but unconfirmed transaction fom being broadcast to the network. After signing a transaction offline, it can be broadcast to the network at a later time. When the “Do Not Broadcast” option is checked, the user can see the raw transaction details, as shown in the example image: Raw transaction details.  To broadcast the signed transaction later, the user has to save the raw transaction details in a separate file.

 

Add note to self

This option allows entry of an encrypted note for the transaction.

 

Offline transaction signing

To broadcast a transaction that has been previously signed offline, access “Transaction Operations”.

“Advanced Transaction Operations” allows for the signed transaction bytes to be broadcast to the network:

 

Image showing the transaction operations menu item

 

Image showing the Broadcast button for finalizing an advanced transaction in the Burstcoin wallet

 

Multi-out

If the amount to be sent to each recipient is the same, the “Same amount” option should be checked.  The number of recipients in Multi-out Same transaction can be up to 128.

 

Multi-out transactions

Multi-out transactions allow the sender to send Burstcoin to up to 64 unique recipient accounts as a single transaction with a considerably lower fee than would be required if sending the same amount using 64 ordinary transactions.

Multi-out transactions can be issued from both local and web-based wallets.

 

Image showing the fields for multi-out transactions in the Burstcoin wallet

 

Multi-out transactions lookup – multi-out reverse

Due to design optimizations, recipients of multi-out and multi-out same transactions do not see transaction details in their transaction record.  Their account balance are increased by the correct amount however.

To see the details of multi-out transactions, recipients use the block explorer, available at https://explore.burst.cryptoguru.org/.  Enter a Burstcoin account into the search box and then access the “Multi-out Reverse” tab.  All of the multi-out transaction details will be displayed.

Note:  Due to the less than optimal procedure for accessing multi-out transaction details, multi-out transactions may not be ideal for certain situations.  They are currently used mostly for the distribution of mining pool proceeds.  An effort is being made to develop this transaction type further so that its transaction details will appear in the receiving wallet automatically.

Image showing a recipient's multi-out transactions in a Burstcoin block explorer

Slot Based Transaction Fees

Minimum transaction fee

The minimum transaction for all types of Burstcoin transactions is .00735 burst (735.000 Plancks).

Burstcoin use a now slot-based transaction fee structure.

At block height 500,200 Burstcoin changed its transaction fee structure from “1 burst per transaction” to a progressive slot-based structure.  Burstcoin’s slot based transaction fee system is described in the Burst Dymaxion whitepaper.

The slot-based transaction fee system allows for variable fees depending on the blockchain’s transaction load.  This prevents spamming blocks with minimum fee transactions.  Transactions that are only created because they require little or no investment consume space on the blockchain.  It is important to conserve blockchain space in order to keep the cost of operating a public node at a minimum.

Technical Information

A block is divided into 1,020 slots that can each hold one transaction. The fees for the slots increase progressively in a linear fashion.  The fee for each slot is calculated by multiplying the slot number by the lowest minimum fee  (slot# * 0.00735 burst).  The lowest minimum fee is referred to as ‘fee quant’.  Ordinary transactions and multi-out transactions use the same fee structure.  The highest fee is 7.497 burst. The total fees collected for a block where all of slots are filled with the minimal required fee is 3827.2185 BURST.

Assignment of transactions to slots

When a new block is generated, new (currently unconfirmed) transactions are assigned to the available slots. Here, each transaction is assigned to the most costly slot it fits in. If no slot is available, the transaction is not included in the block and remains unconfirmed in the mempool of the node. For included transactions, left-over funds for the slot are not refunded. This means if a transaction specifies a fee of 0.01 BURST and is assigned to the first slot which costs 0.00735 BURST, it will still cost 0.01 BURST to process the transaction. It is up to the user to choose a reasonable fee that does not waste funds.

Example 1

A (legacy) fee of 1 Burst guarantees inclusion into a block with less than 136 transactions.

Example 2

A fee of 0.1 Burst guarantees inclusion into a block with less than 13 transactions.

Example 3

A more complex example of transaction assignment to slots is shown in the following:

Fee Quantum: 0.00735
Block Capacity: 10
Fee slots:

10: 0.0735 
9: 0.06615
8: 0.0588
7: 0.05145
6: 0.0441
5: 0.03675
4: 0.0294
3: 0.02205
2: 0.0147
1: 0.00735

Pending Tx fees (descending-sorted and filtered too low):

$VAR1 = [
‘0.3’,
‘0.2’,
‘0.1’,
‘0.008’
];

Distributing as follows:
0.3 has slot @ 10 -> added
0.2 has slot @ 9 -> added
0.1 has slot @ 8 -> added
skipped slot @ 7 (0.008 too low for 0.05145).
skipped slot @ 6 (0.008 too low for 0.0441).
skipped slot @ 5 (0.008 too low for 0.03675).
skipped slot @ 4 (0.008 too low for 0.0294).
skipped slot @ 3 (0.008 too low for 0.02205).
skipped slot @ 2 (0.008 too low for 0.0147).
0.008 has slot @ 1 -> added

 

 Fee types

Unconfirmed transactions can be issued with arbitrary fees, with the lowest possible fee being 0.00735000 Burst (735.000 Plancks). Depending on the fee amount, unconfirmed transactions will either execute or be delayed until a slot for that fee amount is available.

The Burstcoin wallet is equipped with a fee suggestion tool which suggests the fee amount to be used for a transaction based on the transaction load on the chain in the last 10 blocks. The fee suggestion tool offers three fee amounts:

  • Standard: 50% probability the transaction will be included in the next block
  • Cheap: 50% probability the transaction will be included in the next 10 blocks
  • Priority: 90% probability the transaction will be included in the next block, 99% probability the transaction will be included in the next two blocks.

The fee suggestion tool can also be used using The Burst API.

Support for ERC20 Tokens

Introduction

ERC20 is a popular Ethereum standard for token management, explained here https://github.com/ethereum/EIPs/issues/20

The BURST asset exchange already supports most of the ERC20 operations out of the box without the need to issue a smart contract.

This document explains how to implement the ERC20 APIs using the equivalent BURST APIs.

Issuing tokens

Each ERC20 token is represented as a BURST asset.

Issue the asset using the issueAsset API.

Each asset is identified by a unique asset id set to the transaction id of the issueAsset transaction.

For more details, please take a look at The Burst API.

Implementing the ERC20 APIs

totalSupply

To get the total token supply, invoke the getAsset API and supply the asset id. The total supply is provided by the initialQuantityQNT attribute, the existing supply, after possible share deletes, is specified by the quantityQNT attribute. Quantity values are always provided as integer values, the number of decimal positions to apply to these quantities is specified by the “decimals” attribute.

balanceOf

To get the account balance of another account with a given address, invoke the getAssetAccounts API and provide the BURST address as the account parameter and the asset id as the asset parameter.

The unconfirmedQuantityQNT attribute in the response represents the current account balance. The quantityQNT attribute represents the quantity available for use at the moment after taking into account balance locked by open asset orders.

transfer

To send tokens from your address to another address use the transferAsset API, specify the recipient address, the asset id and the quantity to transfer as well as your account passphrase, the transaction fee, and transaction deadline.

The transferAsset transaction is recorded on the BURST blockchain. You can later track token transfers using the Get Asset Transfers API

The Reed-Solomon Address Format

The Burstcoin account numbers (addresses) are of the form:  BURST-XXXX-XXXX-XXXX-XXXXX

This format is referred to as a Reed-Solomon address. This is the default format in the official client. where X is a non-ambiguous number or alphabetic character (the letters O and I are not used; nor are the numbers 1 and 0). Addresses are always prefixed with “BURST-“, and hyphens are used to separate the address into groups of 4, 4, 4, and then 5 characters. The addresses are NOT case-sensitive.

This form of address improves reliability by introducing redundancy that can detect and correct errors when entering and using Burst account numbers.

Background

The internal format for Burst account numbers is a completely numeric 64-bit identifier that is derived from the account’s private key. This format is error-prone because a single error when typing a character can result in transactions being unintentionally sent to the wrong account.

Reed-Solomon error-correction codes largely remedy this issue by adding redundancy to addresses. Reed-Solomon format was chosen because:

  • the account collision rate is the same as the default address format;
  • the system’s basic error correction can be used to assist users in typing addresses;
  • some programming languages do not have a native MD5 hashing function, and the Reed-Solomon implementation is simpler than MD5.

Benefits of Reed-Solomon addresses

  • The chance of a random address collision, using Burst’s
    implementation of 4 “check-bits”, is 1 in a million (20-bit redundancy).
  • It allows up to 2 typos in an address to be corrected.
  • It guarantees that up to 4 typographical errors can be detected.
  • The address length is always 17 characters and is always prefixed with “BURST”. This makes the addresses easily recognizable as belonging to Burst

Encoding of Burstcoin Reed-Solomon addresses

  • Case is not enforced in this format, but for unification, all addresses are displayed using upper case.
  • Addresses are split by dashes into groups of 4 characters and a final group of 5 characters, but this is not enforced during address input.
  • The old numeric addresses are also recognized and supported for backward compatibility.

Example RS Addresses:

BURST-3DH5-DSAE-4WQ7-3LPSE
BURST-K4G2-FF32-WLL3-QBGEL

Technical details

The first and most important rule is that no error-correction scheme is infallible: You cannot rely on error correction, period.

The problem is somewhat counter-intuitive: either you can do a simple yes/no check of address validity, which will give you one in a million collision, or you can try and correct errors. You cannot do both.

The problem here is that the Reed-Solomon algorithm is only guaranteed to correct up to 2 errors. If there are more than 2 errors present in an address entry, it will produce false positives with a probability of around 10% and transactions will still be sent to incorrect addresses.

Think of the algorithm as error-guessing, instead, to assist users with spotting errors.

Reed-Solomon (RS) addresses for Burst are encoded as follows:

  1. Take the original 64-bit account ID, add 1 zero bit to get 65 and then split it into thirteen 5-bit “symbols” (65 / 5 = 13).
  2. Order the symbols from lowest bit to highest bits, in little-endian order, i.e. bits 0-4, 5-9, 10-14, etc. up to 60-64.
  3. Append 4 symbols of parity (20 bits), produced by the Reed-Solomon encoding of our 13 symbols from step one (which are left untouched). This produces a 13 + 4 = 17 symbol codeword.
  4. Scramble the codeword symbols in a predefined order and encode them
    1-to-1 with an alphabet of 32 characters, splitting them into groups by
    dashes.

4 + 8 =