Types of Proposals
Type of proposals (schema of a proposal)
For the section that allows validators to submit network proposals the following types of forms must be created.
-
Proposal of type "text"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "text" (fixed value) Y value T_DICT Y value.text https://github.com/icon-project/governance2#T_STR (opens in a new tab) Text value Y { "name": "text", "value": { "text": "This is a text proposal" } }
-
Proposal of type "revision"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "revision" (fixed value) Y value T_DICT Y value.revision https://github.com/icon-project/governance2#T_INT (opens in a new tab) Revision code Y { "name": "revision", "value": { "revision": "0x11" } }
-
Proposal of type "maliciousScore"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "maliciousScore" (fixed value) Y value T_DICT Y value.address https://github.com/icon-project/governance2#T_ADDR_SCORE (opens in a new tab) SCORE address Y value.type https://github.com/icon-project/governance2#T_INT (opens in a new tab) 0x0: Freeze, 0x1: Unfreeze Y { "name": "maliciousScore", "value": { "address": "cx7cc546bf908018b5602b66fa65ff5fdacef45fe0", "type": "0x0" } }
-
Proposal of type "prepDisqualification"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "prepDisqualification" (fixed value) Y value T_DICT Y value.address https://github.com/icon-project/governance2#T_ADDR_EOA (opens in a new tab) EOA address of main/sub P-Rep Y { "name": "prepDisqualification", "value": { "address": "hx7cc546bf908018b5602b66fa65ff5fdacef45fe0" } }
-
Proposal of type "stepPrice"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "stepPrice" (fixed value) Y value T_DICT Y value.stepPrice https://github.com/icon-project/governance2#T_INT (opens in a new tab) An integer of the step price in loop Y { "name": "stepPrice", "value": { "stepPrice": "0x2e90edd00" } }
-
Proposal of type "stepCosts"
name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "stepCosts" (fixed value) Required field? value T_DICT Y value.costs https://github.com/icon-project/governance2#T_DICT (opens in a new tab) Step costs to set as a dict. All fields are optional but at least one field should be specified. Y value.costs.schema T_INT Schema version (currently fixed at 1) N value.costs.default T_INT Default cost charged each time transaction is executed N value.costs.contractCall T_INT Cost to call the smart contract function N value.costs.contractCreate T_INT Cost to call the smart contract code generation function N value.costs.contractUpdate T_INT Cost to call the smart contract code update function N value.costs.contractSet T_INT Cost to store the generated/updated smart contract code per byte N value.costs.get T_INT Cost to get values from the state database per byte N value.costs.getBase T_INT Default cost charged each time get is called N value.costs.set T_INT Cost to set values newly in the state database per byte N value.costs.setBase T_INT Default cost charged each time set is called N value.costs.delete T_INT Cost to delete values in the state database per byte N value.costs.deleteBase T_INT Default cost charged each time delete is called N value.costs.input T_INT Cost charged for input data included in transaction per byte N value.costs.log T_INT Cost to emit event logs per byte N value.costs.logBase T_INT Default cost charged each time log is called N value.costs.apiCall T_INT Cost charged for heavy API calls (e.g. hash functions) N { "name": "stepCosts", "value": { "costs": {"default": "0x186a0", "set": "0x140"} } }
-
Proposal of type "rewardFund"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "rewardFund" (fixed value) Y value T_DICT Y value.iglobal https://github.com/icon-project/governance2#T_INT (opens in a new tab) The total amount of monthly reward fund in loop Y { "name": "rewardFund", "value": { "iglobal": "0x27b46536c66c8e3000000" } }
-
Proposal of type "rewardFundsAllocation"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "rewardFundsAllocation" (fixed value) Y value T_DICT Y value.rewardFunds https://github.com/icon-project/governance2#T_DICT (opens in a new tab) Reward fund values information to set. All values are required. Y value.rewardFunds.iprep T_INT The percentage allocated to the P-Rep from the monthly reward fund Y value.rewardFunds.icps T_INT The percentage allocated to the CPS from the monthly reward fund Y value.rewardFunds.irelay T_INT The percentage allocated to the BTP relay from the monthly reward fund Y value.rewardFunds.ivoter T_INT The percentage allocated to the Voter from the monthly reward fund Y { "name": "rewardFundsAllocation", "value": { "rewardFunds": { "iprep": "0x10", "icps": "0xa", "irelay": "0xa", "ivoter": "0x40" } } }
-
Proposal of type "networkScoreDesignation"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "networkScoreDesignation" (fixed value) Y value T_DICT Y value.networkScores T_LIST[T_DICT] network SCORE values to set. If the address is an empty string, deallocate network SCORE. Y value.networkScores.role https://github.com/icon-project/governance2#T_STR (opens in a new tab) "cps" or "relay" Y value.networkScores.address https://github.com/icon-project/governance2#T_ADDR_SCORE (opens in a new tab) network SCORE address Y { "name": "networkScoreDesignation", "value": { "networkScores": [ { "role": "cps", "address": "cx7cc546bf908018b5602b66fa65ff5fdacef45fe0" } ] } }
-
Proposal of type "networkScoreUpdate"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "networkScoreUpdate" (fixed value) Y value T_DICT Y value.address https://github.com/icon-project/governance2#T_ADDR_SCORE (opens in a new tab) network SCORE address to update Y value.content https://github.com/icon-project/governance2#T_BIN_DATA (opens in a new tab) SCORE code in hexadecimal string Y value.params https://github.com/icon-project/governance2#T_LIST (opens in a new tab) Parameters passed to score on update N { "name": "networkScoreUpdate", "value": { "address": "cx7cc546bf908018b5602b66fa65ff5fdacef45fe0", "content": "0x504b0304107082bc2bf352a000000280...00000504b03041400080808000000210000000", "params": ["0x10", "Hello"] } }
-
Proposal of type "accumulatedValidationFailureSlashingRate"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "accumulatedValidationFailureSlashingRate" (fixed value) Y value T_DICT Y value.slashingRate https://github.com/icon-project/governance2#T_INT (opens in a new tab) slashing rate [0 ~ 100] Y { "name": "accumulatedValidationFailureSlashingRate", "value": { "slashingRate": "0x5" } }
-
Proposal of type "missedNetworkProposalVoteSlashingRate"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "missedNetworkProposalVoteSlashingRate" (fixed value) Y value T_DICT Y value.slashingRate https://github.com/icon-project/governance2#T_INT (opens in a new tab) slashing rate [0 ~ 100] Y { "name": "missedNetworkProposalVoteSlashingRate", "value": { "slashingRate": "0x5" } }
-
Proposal of type "call"
Key Value Type Description Required field? name https://github.com/icon-project/governance2#T_STR (opens in a new tab) "customCall" (fixed value) Y value T_DICT Y value.to https://github.com/icon-project/governance2#T_ADDRESS_SCORE (opens in a new tab) SCORE address Y value.method https://github.com/icon-project/governance2#T_STR (opens in a new tab) method name Y value.params https://github.com/icon-project/governance2#T_LIST (opens in a new tab) parameters ? value.params.type https://github.com/icon-project/governance2#T_STR (opens in a new tab) type of parameter ? value.params.value https://github.com/icon-project/governance2#T_STR (opens in a new tab) value ? value.params.fields T_DICT[T_STR] empty if parameter type is not struct or []struct. It has the keys of the struct as keys, and the types of values as values. ? { "name": "call", "value": { "to": "cx0000000000000000000000000000000000000000", "method": "someMethod", "params": [ { "type": "str", "value": "Alice" }, { "type": "struct", "value": { "nickName": "Bob", "address": "hxb6b5791be0b5ef67063b3c10b840fb81514db2fd" }, "fields": { "nickName": "str", "address": "Address" } } ] } }