Code Monkey home page Code Monkey logo

Comments (2)

jonathanraes avatar jonathanraes commented on June 12, 2024

http://www.multichain.com/developers/blockchain-parameters/

Basic chain parameters

parameter description (default) value why
chain-protocol Use multichain for a MultiChain blockchain or bitcoin for a bitcoin-style blockchain with no permissions, native assets or streams. multichain needed to have permissions
chain-description Textual description of the blockchain for display to users. Verkiezingen X
root-stream-name Name of the root stream for general data storage (leave blank for none). root Default
root-stream-open Allow anyone with send permissions to write to the root stream. (true) true Default
chain-is-testnet Whether to set testnet to true in the output of various JSON-RPC API calls. This is for compatibility with Bitcoin Core and does not affect any other testnet-like behavior. (false) false Is not a test net
target-block-time Target average number of seconds between blocks, i.e. delay for confirming transactions. If this is below 10 seconds, it is recommended to set mining-turnover low, to minimize the number of forks. (60) 10 see final report for calculation
maximum-block-size Maximum number of bytes in each block, to prevent network flooding by a rogue miner. (1000000 (1MB)) 1MB default, should be able to hold 5k transactions, see final report

Global permissions

parameter description (default) value why
anyone-can-connect Apply no restriction to connecting to the network, i.e. nodes do not require connect permissions. (false) true For transparency reasons
anyone-can-send Apply no restriction to sending transactions, i.e. signing transaction inputs. (false) false Government can freeze wallets if person in question loses his right to vote, (e.g in case of incarceration or death)
anyone-can-receive Apply no restriction to receiving transactions, i.e. appearing in transaction outputs. (false) true Ability to proxy-vote
anyone-can-receive-empty Apply no restriction to addresses which appear in transaction outputs containing no native currency, assets or other metadata. Only relevant if anyone-can-receive=false. This allows addresses without receive permission to include a change output in non-asset transactions, e.g. to publish to streams. false ....
anyone-can-create Apply no restriction to creating new streams. (false) false No streams are used so unnecessary, except the root stream
anyone-can-issue Apply no restriction to issuing (creating) new native assets. (false) false Issuing means creating new election -> reserved for government
anyone-can-mine Apply no restriction to mining blocks for the chain, i.e. confirming transactions. (false) false Mining reserved for government nodes to protect against monopoly attack
anyone-can-activate Apply no restriction to changing connect, send and receive permissions of other users. (false) false Only admin is allowed to do this
anyone-can-admin Apply no restriction to changing all permissions of other users. (false) false obvious
support-miner-precheck Support advanced miner permission checks by caching the inputs spent by an administrator when setting admin or mine permissions – see permissions management for more information. (true) true Default
allow-p2sh-outputs Allow pay to scripthash outputs, where the redeem script is only revealed when an output is spent. See permissions management for more information about permissions and P2SH addresses. (true) false p2sh is not needed to create and send/verify transactions. Is thus an unnessacary risk (when turned on), which can be avoided.
allow-multisig-outputs Allow multisignature outputs, where more than one address is explicitly listed in a transaction output, and a given number of these addresses are required to sign in order to spend that output. See permissions management for more information about permissions and multisig outputs. (true) false Isn't needed

Consensus requirements

parameter description (default) value why
setup-first-blocks Length of initial setup phase in blocks. During the setup phase, the constraints specified by the other parameters in this section are not applied. (1440) - This does not matter since the government will send about 13 million transactions, which will create a lot of blocks
mining-diversity Minimum proportion of permitted miners required to participate in round-robin mining to render a valid blockchain, between 0.0 (no constraint) and 1.0 (every permitter miner must participate). Unlike mining-turnover, this is a hard rule which determines whether a blockchain is valid or not. (0.5) 0.75 This is; "a constraint on the number of blocks which may be created by the same miner within a given window". 0.75 is good: For example, if miners=20, f=2.5% and c=25% then setting diversity=0.75 keeps both Pr(F) and Pr(C) below 0.001%. Probability f of technical failure and c of malicious collusion
admin-consensus-admin Proportion of permitted administrators who must agree to modify the admin privileges for an address, between 0 (no consensus required) and 1 (every admin must agree). (0.5) 1 All admins for safety
admin-consensus-activate Proportion of permitted administrators who must agree to modify the activate privileges for an address, between 0 and 1. (0.5)
admin-consensus-mine Proportion of permitted administrators who must agree to modify mining privileges for an address, between 0 and 1. (0.5) 1 All admins agree for safety reasons
admin-consensus-create Proportion of permitted administrators who must agree to modify stream creation privileges for an address, between 0 and 1. (0.0) - Don't use streams
admin-consensus-issue Proportion of permitted administrators who must agree to modify asset issuing privileges for an address, between 0 and 1. (0.0)

Defaults for mining runtime parameters

parameter description (default) value why
lock-admin-mine-rounds Ignore forks that reverse changes in admin or mine permissions after this many (integer) mining rounds have passed. A mining round is defined as mining-diversity multiplied by the number of permitted miners, rounded up. This prevents changes in the blockchain’s governance model from being reversed and can be overridden by each node using the lockadminminerounds runtime parameter. 10 Default value
mining-requires-peers A node will only mine if it is connected to at least one other node. This is ignored during the setup phase or if only one address has mine permissions, and can be overridden by each node using the miningrequirespeers runtime parameter. (true) true An isolated node mining is useless to the network
mine-empty-rounds If there are no new transactions, stop mining after this many rounds of empty blocks. A mining round is defined as mining-diversity multiplied by the number of permitted miners, rounded up. This reduces disk usage in blockchains with periods of low activity. If negative, continue mining indefinitely. This is ignored during the setup phase or if target-adjust-freq>0, and can be overridden by each node using the mineemptyrounds runtime parameter. 5 No mining needed when there is no election in progress or no passes being cashed,
mining-turnover A value of 0.0 prefers pure round robin mining between an automatically-discovered subset of the permitted miners, with others stepping in only if a miner fails. In this case the number of active miners will be mining-diversity multiplied by the number of permitted miners, rounded up. A value of 1.0 prefers pure random mining between all permitted miners. Intermediate values set the balance between these two behaviors. Lower values reduce the number of forks, making the blockchain more efficient, but increase the level of mining concentration. Unlike mining-diversity, this is a recommendation rather than a consensus rule, and can be overridden by each node using the miningturnover runtime parameter. (0.5) low Must be low to reduce forks

Advanced mining parameters

parameter description (default) value why
skip-pow-check Skip checking whether block hashes demonstrate proof of work. false Obvious
pow-minimum-bits Initial and minimum proof of work difficulty, in leading zero bits. (1 - 32) 4 Should be low so it easy to mine a block and thus conform transactions
target-adjust-freq Interval between proof of work difficulty adjustments, in seconds, if negative - never adjusted. (-1 - 4294967295) -1 Difficulty should not increase, to ensure blocks are still mined fast enough
allow-min-difficulty-blocks Allow lower difficulty blocks if none after 2*. false Difficulty is already quite low, so this is not necessary

Standard transaction definitions

parameter description (default) value why
only-accept-std-txs Only accept and relay transactions which qualify as 'standard'. true Default
max-std-tx-size Maximum size of standard transactions, in bytes. (1024 - 100000000)
max-std-op-returns-count Maximum number of OP_RETURN metadata outputs in standard transactions. (0 - 1024) 10 Default
max-std-op-return-size Maximum size of an OP_RETURN metadata output in a standard transaction, in bytes. 2097152 Default
max-std-op-drops-count Maximum number of inline OP_DROP metadata elements in a single output in standard transactions. 5 Default
max-std-element-size Maximum size of data elements in standard transactions, in bytes. 8192 Default

from polling-station-app.

jonathanraes avatar jonathanraes commented on June 12, 2024

Not yet determined are:

  • Maximum size per transaction
  • depends on whether we want the distribution of voting tokens by the government in one transaction

from polling-station-app.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.