Bitswift Monetary System
The Bitswift blockchain allows users to easily create virtual currencies which are secured publicly in the blockchain where they may be exchanged between users without the requirement of a central mint or admin. Currencies created on Bitswift may be transferred, exchanged or deleted providing certain conditions are met.
User generated currencies on Bitswift have a unique name and currency code that is guranteed by the protocol. Currencies can be deleted and the code re used providing the creator of the currency holds all available units in the supply.
Currency units supports decimal positions implemented as a client side feature. The maximum number of currency units which can be issued per currency is similar to NXT i.e. 10^9 * 10^8. The actual maximum units supply is set by the currency issuer.
The currency issuer is the account which issues the currency and pays the issuance fee. The issuer is responsible for setting the currency properties and in some configurations has additional control over the currency usage. Like asset balance, currency units can be transferred between accounts. The issuer is responsible for dictating the following fields upon currency creation:
CURRENCY NAME: The name must be unique, three to ten characters long and longer than the currency code.
CURRENCY CODE: The code must be unique and composed of three to five upper case letters.
TYPE: Check the desired combination of currency types, subject these restrictions: Reservable requires exchangeable and/or claimable, as does controllable; but mintable requires exchangeable. Claimable requires reservable, non-mintable and zero initial supply. Refer to Currency Types below for more detail.
TOTAL SUPPLY: The total supply must equal the initial supply unless the currency is mintable or reservable. If mintable, the total supply is the maximum supply that can be achieved through minting. The total supply of a reservable currency is set at issuance to the reserve supply (entered as UNITS TO RESERVE in the reservable section of the form) and must be greater than the initial supply.
INITIAL SUPPLY: The supply of a mintable currency increases through the minting process; the initial supply (if any) is held by the issuer. The initial supply (if any) of a reservable currency is held by the issuer; but the initial supply of a claimable reservable currency must be zero.
DECIMALS: The number of allowed decimal places can be from zero to eight, but to avoid client rounding errors in rate calculations, it is recommended that a maximum of four decimal places be used.
ISSUANCE HEIGHT: This applies only to reservable currencies, and must be a blockchain height greater than the current value. Otherwise it must be zero.
FEE: See currency fee schedule below
Fees are required to create virtual currencies on the Bitswift blockchian. The base fee for creating sub currencies is dictated by the length of the currency code.
A bundler would have to pay this fee to the forgers to include a currency creation txn in an Ardor block where it would be permanently secured.
3 Letters - 2500 Ardor
4 Letters - 100 Ardor
5 Letters - 4 Ardor
Fee= (BundlerRate)*(Base Fee)
Example: Bundler rate of 1.5 required to process a 4 letter currency code creation txn would cost the Bitswift user (1.5)*(100)= 150 Bitswift tokens.
The currency creation otpions supports several properties. Properties can be mixed and matched in various ways to compose the currency type. The currency type then controls the inner workings of the currency. The list of available currency properties is as follows:
Exchangeable currencies can be traded for Bitswift currency in the Exchange Booth of the bitswift client, which operates differently than the Asset Exchange. A currency owner can publish a combined buy/sell offer pair with an expiration block height and quantity limits. Only one active offer per account is permitted. Requests to buy or sell offered currency can submitted by anyone. These exchange requests are executed immediately (fully or partially) or not at all if no matching offers are found.
Controllable currencies can only be transferred to and from the issuing account, and if also exchangeable only the issuing account can publish offers.
Ideally used for fundraising or ICO purposes. Allows the currency issuer to issue a currency providing that their is enough backing (support) for the currency. If there is enough backing (the minimum requirement is met or exceeded) the currency is activated and issued to the backers. If the minimum backing is not met in time the currency is deleted and all pledged Bitswift will be unlocked and returned to the backers.
Reservable options sub files
UNITS TO RESERVE: This is the total amount of the currency to reserve, the reserve supply. It will become the total currency supply when the issuance height is reached, unless the minimum amount below is not achieved by then. It must therefore equal TOTAL SUPPLY and be greater than INITIAL SUPPLY.
MINIMUM AMOUNT: Assuming the currency code COIN, this is the minimum amount of Bitswift per COIN needed to back the currency. For example, if the reserve supply is set to 1000 COIN and the minimum amount per reserve unit is 0.2, then at least a combined 200 Bitswift must be pledged by supporters to back the COIN currency before the issuance height. If this minimum requirement is met or exceeded in time, each pledged supporter becomes a founder and receives a portion of the difference between the initial supply and the reserve (now total) supply of the COIN currency. If the minimum is not met in time, the currency will be deleted and all pledged Bitswift will be unlocked and returned to supporters. If the minimum is met or exceeded, all pledged Bitswift will either remain locked until claimed if claimable or be transferred to the issuer otherwise.
Claimable currencies are reservable currencies that allow the locked Bitswift reserves that back them to be claimed, meaning that a current holder of a claimable currency can exchange it for the locked Bitswift that backs it, in doing so reducing the Current Supply shown on the All Currencies Screen.
Allows the user to set attributes on the currency issues with an initial supply that can increase over time until a total supply is reach. The supply is increased through a minting process governed by the properties set within. Minting does not secure the currency as mining would do for other cirtual currencies such as Bitcoin, the currency created on Bitswift are already secured through the Ardor parent chain.
If Mintable is checked, three extra fields appear:
- MINIMUM DIFFICULTY: The minimum difficulty (minimum 1).
- MAXIMUM DIFFICULTY: The maximum difficulty (maximum 255 and greater than the minimum).
- ALGORITHM: The hashing algorithm to use. Select SHA256, SHA3, Scrypt, or Keccak25.
More on minting:
The Bitswift client interface does not provide a minting mechanism. Minting requires a separate tool that makes use of following API calls:
Minting Target returns a target hash a nonce must be found such that its hash is less than the target hash. The difficulty of computing a valid nonce increases as the currency supply increases, according to the MINIMUM and MAXIMUM DIFFICULTY properties entered in the Issue a Currency form. The hashing algorithm applied to the nonce must be the one selected as the ALGORITHM property in that same form.
Currency Mint submits the computed nonce in exchange for newly minted currency, increasing the Current Supply shown on the All Currencies Screen. A reference minting tool that uses the API is the Java Mint Worker Utility (https://nxtwiki.org/wiki/Mint_Worker_Utility), included with Nxt Software. In its current form, it can only use a CPU for hashing computations.
Non-Shuffleable currencies will not participate in coin shuffling (an anonymity feature) when it becomes available in the future. The default is to participate.
A currency can be deleted only when the total supply belongs to one account, and only by using the Delete Currency API call. However, a currency that can be deleted can also be reissued with different properties using Issue a Currency.
To transfer a quantity of currency to another account, click on the Send Currency button at the top of the Bitswift Client Interface. Alternatively, click on the Transfer link on the My Currencies Screen, or navigate to the Exchange Booth for the currency and click on the Transfer link there. The Transfer Currency pop-up entry form will appear.
Custom virtual currencies may be exchanged on Bitswift using the Virtual Currency Exchange Booth inside the Bitswift client.