POA
English
English
  • Welcome to POA
  • Features
    • Known Validators
    • POADAO Consensus
    • Bridged Native Token
    • On-Chain Randomness
  • Use Cases
    • Scalability for BlockChain Games
    • Community-Based Currencies
    • Subsidized Transactions
    • Decentralized Finance (DeFi)
  • DApp Spotlights
    • Ethernal.World
  • Roadmap
  • For users
    • POA Tokens
      • POA Merger & STAKE Swap
      • POA - STAKE FAQs
      • POA Token Supply
      • POA & POA20 Exchanges
      • POA & POA20 on Binance
      • FAQ: POA20 General Questions
    • POA Token Use Cases
      • Utility Token
      • Currency Token
      • Collateral Token
      • Bridged Token
      • Staking Token
      • Stable Token
    • POA to POA20 Bridge
    • Accept POA20 Payments
      • Account Registration & Login (Merchant Setup)
      • Setup Merchant Account
      • Merchant Payment Method Setup
      • Making a Payment with POA20 (Customer Perspective)
    • Tutorials
      • Trading POA20 on DEX.AG
      • POA20 Token Swaps on 1inch.exchange
      • Getting Airdrops via Discord
    • Governance
      • Article: A Successful Year of On-Chain Governance
      • Governance Reports
        • April 2020 Report
        • December 2019 Report
      • Ballot Type, Lifecycle & Limits
    • ❌Nifty Wallet (Discontinued)
      • Getting Started
      • Import and Interact with Smart Contracts
      • Connect to a Hardware Wallet (Ledger & Trezor)
      • Connect to D'CENT Biometric Wallet
      • Connect to Pocket Decentralized Network
    • 3rd Party Wallets
      • Trust Wallet
      • MetaMask
    • POA Mania
      • News - Updates
      • Rules
      • POA Mania FAQs
      • Deposit & Withdraw
      • Winner Selection
      • Round Details
      • POA Mania vs PoolTogether
      • POA Mania on Trust Wallet
      • POA Mania Security Audit
      • POA Mania on MetaMask Mobile
    • Whitepaper
      • POADAO v1
        • Introduction
        • Proof of Authority
        • POA Network Functionality
        • Decentralized apps (DApps)
          • Initial ceremony DApp
          • Proof of Physical Address (PoPA) DApp
          • Proof of Bank Account DApp
          • Proof of Social Network DApp
          • Proof of Phone Number DApp
          • Governance DApp
        • Summary & Acknowledgements
        • References
        • Appendix A: Code Samples
          • Ballots manager
          • Validators manager
          • Deployment scripts for the mining node
  • For developers
    • Developer Resources
    • Getting Tokens For Tests
      • ERC20 Test Token Faucet
      • Sokol Testnet Faucet
    • Full Node Setup
      • Install OpenEthereum Client
      • Install Nethermind Client
    • DApp Deployment
    • TheGraph Data Indexing
    • On-Chain Random Numbers
      • RNG explainer (AuRa + RandomAura Contract)
      • Accessing a Random Seed with a Smart Contract
      • Randomness FAQs
    • API & SQL Access
    • Smart Contract Dashboard
    • Grants for Building on POA
  • For validators
    • Getting Started
      • Validator Resources
      • Becoming a Validator
    • Bootnode Setup
      • AWS Bootnode Setup
        • Prerequisites
        • Configure AWS
        • Download and Configure Playbook
        • Deploy
      • Non-AWS Bootnode Setup & Deployment
        • Local/Remote Machine System Requirements
        • Node Preparation
        • Configure node with Deployment Playbook
    • Validator Node Setup
      • Nethermind Upgrade
      • AWS VM for Validator Node Deployment
        • MoC: Master of Ceremony Key Exchange & Generation
        • Current Validators Vote in New Validators
        • Validator Node Setup Prerequisites
        • Configuring AWS
        • Download and Configure Playbook
        • Deployment
        • Upgrade Instance to a Larger Instance Type
      • Non-AWS Validator Node Setup
        • Local & Remote Machine System Requirements
        • Remote Machine Setup
        • Configure Node using Deployment Playbook
      • NetStats Dashboard
    • Hard Forks
      • Parity Upgrade Guide
      • POA Core
        • 2021-11-02 | #24090200
        • 2021-05-24 | #21364900
        • 2020-03-31 | #14350721
        • 2019-12-19 | #12598600
        • 2019-04-29 | #8582254
        • 2018-01-29 | # 772000
        • 2018-10-22 | #5329160
        • POA Core spec.json hard-fork update
      • Sokol
        • 2021-05-24 | #21050600
        • 2020-02-20 | #13391641
        • 2019-12-05 | #12095200
        • 2019-02-06 | #7026400
        • 2019-01-04 | #6464300
        • 2018-09-19 | #4622420
        • 2018-01-18 | #509355
        • 2018-01-08 | #362296
        • Sokol spec.json hard-fork update
    • Validator DApps
      • Validators MetaData DApp
      • Adding or Removing a Validator
  • Media
    • Social Media
    • Media Kit
    • Contact Us
Powered by GitBook
On this page
  • Info
  • Description
  • Changelog
  • Solution
  • Increased Emission Supply
  • Instructions
  • Verify

Was this helpful?

  1. For validators
  2. Hard Forks
  3. Sokol

2018-09-19 | #4622420

Hard Fork Date | Block Number

Previous2019-01-04 | #6464300Next2018-01-18 | #509355

Last updated 5 years ago

Was this helpful?

Info

  • Network: Sokol

  • Date: 2018-09-19

  • Block number: 4622420

Description

Problems

  • 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.

Changelog

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

Solution

  1. add an address of the new PoaNetworkConsensus contract to engine/authorityRound/params/validators/multi;

  2. add blockRewardContractAddress (obtained from step 1) and blockRewardContractTransition (equal to 4639000) to engine/authorityRound/params.

  3. Organize the HF on block 4622420.

Increased Emission Supply

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.

Instructions

Verify

grep -n -A2 4622420 spec.json

You should see:

"4622420": { "safeContract": "0x4c6a159659CCcb033F4b2e2Be0C16ACC62b89DDB" }

(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 .

poanetwork/RFC#14
poanetwork/poa-network-consensus-contracts#92
poanetwork/RFC#8
audit report by MixBytes team
audit report by ChainSecurity team
poanetwork/poa-network-consensus-contracts#179
poanetwork/poa-network-consensus-contracts#171
poanetwork/poa-network-consensus-contracts#168
poanetwork/poa-network-consensus-contracts#164
poanetwork/poa-network-consensus-contracts#158
poanetwork/poa-network-consensus-contracts#155
poanetwork/poa-network-consensus-contracts#150
poanetwork/poa-network-consensus-contracts#133
poanetwork/poa-network-consensus-contracts#129
poanetwork/poa-network-consensus-contracts#118
poanetwork/poa-network-consensus-contracts#113
poanetwork/poa-network-consensus-contracts#127
poanetwork/poa-network-consensus-contracts#125
poanetwork/poa-network-consensus-contracts#122
poanetwork/poa-network-consensus-contracts#106
poanetwork/poa-network-consensus-contracts#105
poanetwork/poa-network-consensus-contracts#101
poanetwork/poa-network-consensus-contracts#99
poanetwork/poa-network-consensus-contracts#96
poanetwork/poa-network-consensus-contracts#83
poanetwork/poa-network-consensus-contracts#82
poanetwork/poa-network-consensus-contracts#81
poanetwork/poa-network-consensus-contracts#135
poanetwork/poa-network-consensus-contracts#183
poanetwork/poa-network-consensus-contracts#182
poanetwork/poa-network-consensus-contracts#181
poanetwork/poa-network-consensus-contracts#178
poanetwork/poa-network-consensus-contracts#175
poanetwork/poa-network-consensus-contracts#174
poanetwork/poa-network-consensus-contracts#173
poanetwork/poa-network-consensus-contracts#170
poanetwork/poa-network-consensus-contracts#169
poanetwork/poa-network-consensus-contracts#167
poanetwork/poa-network-consensus-contracts#165
poanetwork/poa-network-consensus-contracts#163
poanetwork/poa-network-consensus-contracts#162
poanetwork/poa-network-consensus-contracts#160
poanetwork/poa-network-consensus-contracts#159
poanetwork/poa-network-consensus-contracts#157
poanetwork/poa-network-consensus-contracts#156
poanetwork/poa-network-consensus-contracts#151
poanetwork/poa-network-consensus-contracts#149
poanetwork/poa-network-consensus-contracts#148
poanetwork/poa-network-consensus-contracts#147
poanetwork/poa-network-consensus-contracts#145
poanetwork/poa-network-consensus-contracts#146
poanetwork/poa-network-consensus-contracts#152
poanetwork/poa-network-consensus-contracts#153
poanetwork/poa-network-consensus-contracts#166
poanetwork/poa-network-consensus-contracts#144
poanetwork/poa-network-consensus-contracts#143
poanetwork/poa-network-consensus-contracts#141
poanetwork/poa-network-consensus-contracts#142
poanetwork/poa-network-consensus-contracts#140
poanetwork/poa-network-consensus-contracts#138
poanetwork/poa-network-consensus-contracts#136
poanetwork/poa-network-consensus-contracts#134
poanetwork/poa-network-consensus-contracts#132
poanetwork/poa-network-consensus-contracts#131
poanetwork/poa-network-consensus-contracts#130
poanetwork/poa-network-consensus-contracts#124
poanetwork/poa-network-consensus-contracts#123
poanetwork/poa-network-consensus-contracts#112
poanetwork/poa-network-consensus-contracts#109
poanetwork/poa-network-consensus-contracts#104
poanetwork/poa-network-consensus-contracts#97
poanetwork/poa-network-consensus-contracts#79
poanetwork/poa-network-consensus-contracts#76
new smart contracts
scripts/migrate/migrateAll.js
poa-chain-spec/contracts.json
poa-chain-spec/abis
poa-chain-spec/spec.json
POA Whitepaper Economy Section
RFC issue #14
Follow Sokol spec.json hard-fork guide