2018-09-19 | #4622420
Hard Fork Date | Block Number
Last updated
Was this helpful?
Hard Fork Date | Block Number
Last updated
Was this helpful?
Network: Sokol
Date: 2018-09-19
Block number: 4622420
Governance smart contracts are non-upgradable.
Feature request: we need to increase emission supply for self-sustainability of the network ().
Feature request: there is no ability to create one ballot for three keys ().
Feature request: there is no ability to finalize ballot earlier if all validators voted before the end of a ballot ().
DApp performance: There are no tuple getters in smart contracts. It leads to the low performance of Voting DApp
.
pragma solidity ^0.4.18;
used for governance smart contracts is outdated.
Smart contracts need to be refactored in order to make them easy to read.
Smart contracts need to be checked for security and design issues (, ).
Minor bugs.
Major changes
smart contracts were made upgradable: BallotsStorage
, KeysManager
, ProxyStorage
, ValidatorMetadata
, VotingToChangeKeys
, VotingToChangeMinThreshold
, VotingToChangeProxyAddress
;
scripts for migration from old to new smart contracts were added to scripts/migrate
directory;
new smart contracts for Increased Emission Supply
were added: VotingToManageEmissionFunds
, EmissionFunds
, RewardByBlock
;
a new feature was implemented for creating a ballot to add a new validator with three keys at once;
a new feature was implemented for finalizing a ballot before its end time in case of all validators voted;
tuple getters were added to increase the performance of Voting DApp
;
smart contracts were migrated to the latest stable Solidity
compiler version (0.4.24
);
smart contracts were refactored;
npm packages were updated;
found bugs were fixed;
the test environment was updated (ganache-cli
instead of testrpc
, new solidity-coverage
);
security improvements were made according to reports of security audits.
Major pull requests
Minor pull requests
add an address of the new PoaNetworkConsensus
contract to engine/authorityRound/params/validators/multi
;
add blockRewardContractAddress
(obtained from step 1) and blockRewardContractTransition
(equal to 4639000
) to engine/authorityRound/params
.
Organize the HF on block 4622420
.
In the scope of this hard fork, the emission supply will be increased by 1 POA per block.
POA has a block time of ~5 seconds and rewards each validated block miner 1 POA for each block. These block rewards never run out and after the hard fork there will be 2 POA minted per block. The remaining 1 POA per block will be put aside to benefit the network however the current Validators vote to choose, some example use cases are to Burn coins, hold coins or spend on R&D for the POA Foundation. Validator's reward will remain at 1 POA after this transition.
You should see:
(Feature) Add script for checking contracts' functions for a clashing ()
(Fix) Reduce gas spending, improve migrations, and minor enhancements ()
(Feature) Allow cancellation of a ballot in VotingToManageEmissionFunds
by its creator for 15 minutes after it's created ()
(Fix) Accounting of pending confirmations in ValidatorMetadata's moveMetadata
and clearMetadata
functions ()
(Fix) Add moveMetadata and clearMetadata functions to ValidatorMetadata contract ()
(Fix) Finalization without reverts, optimizations and unit tests updates ()
(Fix) Remove changing of ProxyStorage's address from ValidatorMetadata ()
(Feature) Block Reward emission by time ()
(Feature) Add extra getters for Voting DApp optimization ()
(Feature) Add new validator with mining/voting/payout keys at once ()
(Feature) Allow finalize at once if all validators gave their votes ()
(Fix) removeVotingKey and removePayoutKey shouldn't revert if voting/ payout key is already removed ()
(Fix) Add missed unit tests ()
(Refactor) Small enhancements, refactoring and fixes ()
(Refactor) Update solc to 0.4.24 and truffle to 4.1.11 ()
(Feature) Unit tests and enhancements for Increased Emission Supply ()
(Fix) MoC can be removed ()
(Fix) Update web3 ()
(Refactor) New smart contracts refactoring ()
(Feature) Add BlockReward contract ()
(Refactor) Code refactoring ()
(Feature) Upgradable contracts ()
(Fix) Some of proposals from auditors ()
(Fix) Update README.md ()
(Fix) Enhancements of migration scripts ()
(Fix) Enhancement of VotingToManageEmissionFunds._finalize function ()
(Refactor) Put address arguments at the end of argument list of functions ()
(Refactor) Remove this
and other code improvements ()
(Fix) Replace uint8 with uint256 to reduce gas spending ()
(Fix) Minor improvements of KeysManager and PoaNetworkConsensus.setProxyStorage ()
(Fix) Remove theoretical reentrancy from VotingTo._createBallot
method and other enhancements ()
(Fix) Security enhancements of VotingToChange*.migrateBasicOne
function ()
(Fix) Deny using VotingToChange* functions unless migration is completed ()
(Feature) Checking if a voting key is EOA or a contract in VotingToManageEmissionFunds ()
(Refactor) Move implementation
and version
functions from EternalStorage
to EternalStorageProxy
()
(Refactor) Replace returns(address) with returns(interface) in several private functions ()
(Fix) Using of BallotsStorage.getProxyThreshold in VotingToManageEmissionFunds ()
(Fix) Replace abi.encodePacked with abi.encode ()
(Fix) ValidatorMetadata contract enhancements ()
(Fix) PoaNetworkConsensus contract and KeysManager.migrateMiningKey function ()
(Fix) Removing usage of a free pointer from EternalStorageProxy's fallback function ()
(Refactor) A few enhancements proposed by auditors ()
(Refactor) Add KeysManager.getInitialKeyStatus function instead of initialKeys and getInitialKey ()
(Fix) Don't allow adding voting/ payout key for zero mining key ()
(Fix) Fixes and enhancements of BallotsStorage.sol, EternalStorageProxy.sol, KeysManager.sol, ValidatorMetadata.sol, VotingToChange.sol, VotingToChangeKeys.sol (, , , , )
(Feature) A new RewardByBlock.addExtraReceiver function ()
(Fix) Add keeping of RewardByBlock and VotingToManageEmissionFunds addresses to ProxyStorage ()
(Fix) Fixes of migration scripts (, )
(Fix) BlockReward upgradability and splitting into RewardByBlock and RewardByTime ()
(Fix) Add solc to scripts/package.json ()
(Refactor) Rename BlockReward.rewardHBBFT function to rewardByTime ()
(Refactor) Rewrite migrations/2_deploy_contract.js ()
(Fix) Checking transaction status in scripts/migrate ()
(Fix) Refreshing unit tests' results in README ()
(Fix) "Stack too deep" error in VotingToChangeKeys.getBallotInfo ()
(Fix) migrations/2_deploy_contract.js ()
(Fix) PoaNetworkConsensus small changes ()
(Refactor) Enhancements and fixes ()
(Fix) Unit tests for solidity-coverage ()
(Fix) KeysManager and a few enhancements ()
(Fix) Known vulnerability in hoek@4.2.0
dependency ()
(Fix) README text about PoaNetworkConsensus bytecode ()
(Refactor) Collapse master and demo branch ()
Deploy and migrate all the data from old to new contracts with .
Update .
Update .
Update :
You can find more info located in the and .