Set Total Supply? Where's da $$$?

+2 votes
Ok so I have been playing with multichain  for a few days now but I seem to be stuck :(

For my first chain I am trying to make a custom bitcoin chain (not multicoin). I want a total of 1 million coin supply and I want those in a master wallet. I will create other wallets and disperse.

1) I cant figure our or find total supply in config
2) after creating chain and connecting two nodes to the master nodem i still have zero balance on all addresses

 

My params.dat

```
# Basic chain parameters
chain-protocol = bitcoin                # Chain protocol: multichain (permissions, native assets) or bitcoin
chain-description = testchain # Chain description, embedded in genesis block coinbase, max 90 chars.
root-stream-name = root                 # Root stream name, blank means no root stream.
root-stream-open = true                 # Allow anyone to publish in root stream
chain-is-testnet = false                # Content of the 'testnet' field of API responses, for compatibility.
target-block-time = 15                  # Target time between blocks (transaction confirmation delay), seconds. (2 - 86400)
maximum-block-size = 1000000            # Maximum block size in bytes. (1000 - 1000000000)

# Global permissions
anyone-can-connect = true               # Anyone can connect, i.e. a publicly readable blockchain.
anyone-can-send = true                  # Anyone can send, i.e. transaction signing not restricted by address.
anyone-can-receive = true               # Anyone can receive, i.e. transaction outputs not restricted by address.
anyone-can-receive-empty = true         # Anyone can receive empty output, i.e. without permission grants, asset transfers and zero native currency.
anyone-can-create = false               # Anyone can create new streams.
anyone-can-issue = false                # Anyone can issue new native assets.
anyone-can-mine = false                 # Anyone can mine blocks (confirm transactions).
anyone-can-activate = false             # Anyone can grant or revoke connect, send and receive permissions.
anyone-can-admin = false                # Anyone can grant or revoke all permissions.
support-miner-precheck = true           # Require special metadata output with cached scriptPubKey for input, to support advanced miner checks.
allow-arbitrary-outputs = false         # Allow arbitrary (without clear destination) scripts.
allow-p2sh-outputs = true               # Allow pay-to-scripthash (P2SH) scripts, often used for multisig. Ignored if allow-arbitrary-outputs=true.
allow-multisig-outputs = true           # Allow bare multisignature scripts, rarely used but still supported. Ignored if allow-arbitrary-outputs=true.

# Consensus requirements
setup-first-blocks = 50                 # Length of initial setup phase in blocks, in which mining-diversity,
                                        # admin-consensus-* and mining-requires-peers are not applied. (1 - 31536000)
mining-diversity = 0.3                  # Miners must wait <mining-diversity>*<active miners> between blocks. (0 - 1)
admin-consensus-upgrade = 0.5           # <admin-consensus-upgrade>*<active admins> needed to upgrade the chain. (0 - 1)
admin-consensus-admin = 0.5             # <admin-consensus-admin>*<active admins> needed to change admin perms. (0 - 1)
admin-consensus-activate = 0.5          # <admin-consensus-activate>*<active admins> to change activate perms. (0 - 1)
admin-consensus-mine = 0.5              # <admin-consensus-mine>*<active admins> to change mining permissions. (0 - 1)
admin-consensus-create = 0.0            # <admin-consensus-create>*<active admins> to change create permissions. (0 - 1)
admin-consensus-issue = 0.0             # <admin-consensus-issue>*<active admins> to change issue permissions. (0 - 1)

# Defaults for node runtime parameters
lock-admin-mine-rounds = 10             # Ignore forks that reverse changes in admin or mine permissions after this many mining rounds have passed. Integer only. (0 - 10000)
mining-requires-peers = true            # Nodes only mine blocks if connected to other nodes (ignored if only one permitted miner).
mine-empty-rounds = 10                  # Mine this many rounds of empty blocks before pausing to wait for new transactions. If negative, continue indefinitely (ignored if target-adjust-freq>0). Non-integer allowed. (-1 - 1000)
mining-turnover = 0.5                   # Prefer pure round robin between a subset of active miners to minimize forks (0.0) or random equal participation for all permitted miners (1.0). (0 - 1)

# Native blockchain currency (likely not required)
initial-block-reward = 0                # Initial block mining reward in raw native currency units. (0 - -1486618624)
first-block-reward = 1000000            # Different mining reward for first block only, ignored if negative. (-1 - -1486618624)
reward-halving-interval = 52560000      # Interval for halving of mining rewards, in blocks. (60 - 1000000000)
reward-spendable-delay = 10             # Delay before mining reward can be spent, in blocks. (1 - 100000)
minimum-per-output = 0                  # Minimum native currency per output (anti-dust), in raw units.
                                        # If set to -1, this is calculated from minimum-relay-fee. (-1 - 1000000000)
maximum-per-output = 1000000            # Maximum native currency per output, in raw units. (0 - -1486618624)
minimum-relay-fee = 0                   # Minimum transaction fee, per 1000 bytes, in raw units of native currency. (0 - 1000000000)
native-currency-multiple = 1000000      # Number of raw units of native currency per display unit. (0 - 1000000000)

# Advanced mining parameters
skip-pow-check = false                  # Skip checking whether block hashes demonstrate proof of work.
pow-minimum-bits = 8                    # Initial and minimum proof of work difficulty, in leading zero bits. (1 - 32)
target-adjust-freq = 3600               # Interval between proof of work difficulty adjustments, in seconds, if negative - never adjusted. (-1 - -1)
allow-min-difficulty-blocks = false     # Allow lower difficulty blocks if none after 2*<target-block-time>.

# Standard transaction definitions
only-accept-std-txs = true              # Only accept and relay transactions which qualify as 'standard'.
max-std-tx-size = 100000                # Maximum size of standard transactions, in bytes. (1024 - 100000000)
max-std-op-returns-count = 32           # Maximum number of OP_RETURN metadata outputs in standard transactions. (0 - 1024)
max-std-op-return-size = 2097152        # Maximum size of OP_RETURN metadata in standard transactions, in bytes. (0 - 67108864)
max-std-op-drops-count = 5              # Maximum number of OP_DROPs per output in standard transactions. (0 - 100)
max-std-element-size = 8192             # Maximum size of data elements in standard transactions, in bytes. (128 - 32768)​

```
asked Dec 13, 2018 by Andrew
Does any of your nodes have mining permissions?

1 Answer

+2 votes

One way of doing this is by setting your native currency parameters like this:

initial-block-reward = 100000000            # Initial block mining reward in raw native currency units. (0 - -1486618624)
first-block-reward = 0            # Different mining reward for first block only, ignored if negative. (-1 - -1486618624)
reward-halving-interval = 52560000      # Interval for halving of mining rewards, in blocks. (60 - 1000000000)
reward-spendable-delay = 10             # Delay before mining reward can be spent, in blocks. (1 - 100000)
minimum-per-output = 0                  # Minimum native currency per output (anti-dust), in raw units.
                                        # If set to -1, this is calculated from minimum-relay-fee. (-1 - 1000000000)
maximum-per-output = 100000000            # Maximum native currency per output, in raw units. (0 - -1486618624)
minimum-relay-fee = 0                   # Minimum transaction fee, per 1000 bytes, in raw units of native currency. (0 - 1000000000)
native-currency-multiple = 100      # Number of raw units of native currency per display unit. (0 - 1000000000)

 

All the initial balance of 1 million tokens will be in your node wallet address(master wallet) and then you can disperse it in the wallets that you have created afterwards.

answered Dec 13, 2018 by gimmick
WOW, That was fast! I am trying it now, but let me say first that with this kind of community support ... I am definitely going to try to make this work. Will post result and thanks again.
This did work, I now have 3 VPS Nodes running (asia, central usa and london). Everything is syncing and working fine cryptocurrency wise.

One other thing I did notice though is that my balance (node wallet?) that had the 1,000,000 token out in it is now over 24,306,000,000 (mining rewards?) plus, how can there be 24+ million with a total supply of only 1 milion?

     "balance" : 24306000000.00000000,

I also already created another address and sent 750,000 to it.

New Address:
    {
        "assetref" : "",
        "qty" : 750000.00000000,
        "raw" : 75000000
    }

Node Address:
    {
        "assetref" : "",
        "qty" : 24310250000.00000000,
        "raw" : 2431025000000
    }

for a total of 24,311,000,000
The blockchain parameters above will not create a total supply of 1000000 units, but rather that will be the reward for each block until the reward halves. If you want a fixed total supply only, to go to the chain creator, set initial-block-reward=0 and first-block-reward=1000000
Ok, well it did create only 1,000,000 in the node wallet - but yeah the mining pushed it over. I will try again with your suggestion. But will doing it that way never allow more than 1,000,000 in circulation?
Yes, if you stop mining then the pre mined units will only be the currency in circulation.
...