2018-10-22 | #5329160
硬分叉日期| 块号
信息
网络: Core
日期: 2018-10-22
区块高度: 5329160
描述
问题
治理智能合约不可升级。
功能要求:为了网络的自我可持续性,我们需要增加排放量(poanetwork / RFC#14)。
功能要求:无法为三个密钥创建一次投票(poanetwork / poa-network-consensus-contracts#92)。
功能要求:如果所有验证者都在投票结束前投票(poanetwork / RFC#8),则无法提前完成投票。
DApp的性能:智能合约中没有元组获取器。 这导致
投票DApp
的性能低下。pragma solidity ^0.4.18
; 用于治理智能合约的已过时。需要对智能合约进行重构,以使其易于阅读。
需要检查智能合约的安全性和设计问题(MixBytes团队的审核报告,ChainSecurity团队的审核报告)。
小错误修复。
日志
主要改动
智能合约可升级:
BallotsStorage
,KeysManager
,ProxyStorage
,ValidatorMetadata
,VotingToChangeKeys
,VotingToChangeMinThreshold
,VotingToChangeProxyAddress
;从旧智能合约迁移到新智能合约的脚本已添加到
scripts/migrate
目录中;增加了用于增加排放量供应
Increased Emission Supply
的新智能合约:VotingToManageEmissionFunds
,EmissionFunds
,RewardByBlock
;实施了一项新功能,用于创建选票以一次添加具有三个键的新验证器;
实施了一项新功能,以在所有验证人都投票的情况下,在投票结束前最终确定投票;
添加了元组吸气剂以提高
Voting DApp
的性能;智能合约已迁移到最新的稳定
Solidity
编译器版本(0.4.24
);重构智能合约;
npm软件包已更新;
发现错误已修复; 测试环境已更新(用
ganache-cli
代替testrpc
,新的solidity-coverage
);根据安全审核报告对安全性进行了改进。
主要的pull请求
(功能)向RewardByBlock合约添加铸造统计数据(poanetwork / poa-network-consensus-contracts#197)
(修复)摆脱RewardByBlock.addExtraReceiver函数的限制(poanetwork / poa-network-consensus-contracts#196)
(功能)添加用于检查合同是否发生冲突的脚本(poanetwork / poa-network-consensus-contracts#179)
(修复)减少gas支出,改善迁移并进行小幅改进(poanetwork / poa-network-consensus-contracts#171)
(功能)允许创建者在创建后的15分钟内取消
VotingToManageEmissionFunds
中的投票(poanetwork / poa-network-consensus-contracts#168)(修复)在ValidatorMetadata的
moveMetadata
和clearMetadata
函数中进行待定确认的会计处理(poanetwork / poa-network-consensus-contracts#164)(修复)将MoveMetadata和clearMetadata函数添加到ValidatorMetadata合约中(poanetwork / poa-network-consensus-contracts#158)
(修复)没有还原,优化和单元测试更新的定稿(poanetwork / poa-network-consensus-contracts#155)
(修复)从ValidatorMetadata中删除对ProxyStorage地址的更改(poanetwork / poa-network-consensus-contracts#150)
(功能)按时间的块奖励发射(poanetwork / poa-network-consensus-contracts#133)
(功能)为投票DApp优化添加额外的ether(poanetwork / poa-network-consensus-contracts#129)
(功能)一次添加带有挖掘/投票/支付密钥的新验证人(poanetwork / poa-network-consensus-contracts#118)
(功能)如果所有验证者都投票,则允许立即决策(poanetwork / poa-network-consensus-contracts#113)
(修复)如果已删除投票/支付键,则removeVotingKey和removePayoutKey不应还原(poanetwork / poa-network-consensus-contracts#127)
(修复)添加错过的单元测试(poanetwork / poa-network-consensus-contracts#125)
(重构)小增强,重构和修复(poanetwork / poa-network-consensus-contracts#122)
(重构)将solc更新为0.4.24,将truffle更新为4.1.11(poanetwork / poa-network-consensus-contracts#106)
(功能)增加排放量的单元测试和增强(poanetwork / poa-network-consensus-contracts#105)
(修复)可以删除MoC(poanetwork / poa-network-consensus-contracts#101)
(修复)更新web3(poanetwork / poa-network-consensus-contracts#99)
(重构)新的智能合约重构(poanetwork / poa-network-consensus-contracts#96)
(功能)添加BlockReward合约(poanetwork / poa-network-consensus-contracts#83)
(修正)审核员的一些建议(poanetwork / poa-network-consensus-contracts#135)
次要pull请求
(修复)异步等待RewardByBlock合同地址 (poanetwork/poa-network-consensus-contracts#199)
修复)2_deploy_contract.js以正确部署RewardByBlock(poanetwork/poa-network-consensus-contracts#198)
(功能)POA固体平整器而不是Python固体平整器 (poanetwork/poa-network-consensus-contracts#194)
(修复)更新npm软件包 (poanetwork/poa-network-consensus-contracts#192)
(修复)Migrations / 2_deploy_contract.js的一些增强 (poanetwork/poa-network-consensus-contracts#188)
(修复)更新README.md (poanetwork/poa-network-consensus-contracts#183)
(修复)迁移脚本的增强 (poanetwork/poa-network-consensus-contracts#182)
(修复)VotingToManageEmissionFunds._finalize函数的增强 (poanetwork/poa-network-consensus-contracts#181)
(重构)将地址参数放在函数的参数列表的末尾 (poanetwork/poa-network-consensus-contracts#178)
(重构)删除
this
和其他代码改进 (poanetwork/poa-network-consensus-contracts#175)(修复)用uint256替换uint8以减少气体消耗 (poanetwork/poa-network-consensus-contracts#174)
(修复)KeysManager和PoaNetworkConsensus.setProxyStorage的较小改进(poanetwork/poa-network-consensus-contracts#173)
(修复)从
VotingTo._createBallot
方法和其他增强功能中删除理论上的重入 (poanetwork/poa-network-consensus-contracts#170)(修复)
VotingToChange * .migrateBasicOne
功能的安全性增强(poanetwork/poa-network-consensus-contracts#169)修复)除非完成迁移,否则拒绝使用VotingToChange *功能 (poanetwork/poa-network-consensus-contracts#167)
(功能)检查投票键是EOA还是VotingToManageEmissionFunds中的合(poanetwork/poa-network-consensus-contracts#165)
(重构)将实现和版本功能从EternalStorage迁移到EternalStorageProxy (poanetwork/poa-network-consensus-contracts#163)
(重构)在几个私有函数中用return(interface)替换return(address)(poanetwork/poa-network-consensus-contracts#162)
(修复)在VotingToManageEmissionFunds中使用BallotsStorage.getProxyThreshold(poanetwork/poa-network-consensus-contracts#160)
(修复)用abi.encode替换abi.encode (poanetwork/poa-network-consensus-contracts#159)
(修复)ValidatorMetadata合同增强功能 (poanetwork/poa-network-consensus-contracts#157)
(修复)PoaNetworkConsensus合同和KeysManager.migrateMiningKey函数(poanetwork/poa-network-consensus-contracts#156)
(修复)从EternalStorageProxy的后备功能中删除空闲指针的使用(poanetwork/poa-network-consensus-contracts#151)
(重构)审核员提出的一些增强功能 (poanetwork/poa-network-consensus-contracts#149)
(重构)添加KeysManager.getInitialKeyStatus函数,而不是initialKeys和getInitialKey(poanetwork/poa-network-consensus-contracts#148)
(修复)不允许为零挖掘密钥添加投票/支付密钥 (poanetwork/poa-network-consensus-contracts#147)
(修复)修复和增强BallotsStorage.sol,EternalStorageProxy.sol,KeysManager.sol,ValidatorMetadata.sol,VotingToChange.sol,VotingToChangeKeys.sol (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)
(功能)新的RewardByBlock.addExtraReceiver函数 (poanetwork/poa-network-consensus-contracts#144)
(修复)将RewardByBlock和VotingToManageEmissionFunds地址的保留添加到ProxyStorage (poanetwork/poa-network-consensus-contracts#143)
(修复)BlockReward的可升级性,并分为RewardByBlock和RewardByTime(poanetwork/poa-network-consensus-contracts#140)
(修复)将solc添加到scripts / package.json (poanetwork/poa-network-consensus-contracts#138)
(重构)将BlockReward.rewardHBBFT函数重命名为rewardByTime (poanetwork/poa-network-consensus-contracts#136)
(重构)重写migrations / 2_deploy_contract.js (poanetwork/poa-network-consensus-contracts#134)
(修复)检查脚本中的交易状态/迁移 (poanetwork/poa-network-consensus-contracts#132)
(修复)在README中刷新单元测试的结果 (poanetwork/poa-network-consensus-contracts#131)
(修复)VotingToChangeKeys.getBallotInfo中的“堆栈太深”错误(poanetwork/poa-network-consensus-contracts#130)
(修复)migrations / 2_deploy_contract.js (poanetwork/poa-network-consensus-contracts#124)
(修复)PoaNetworkConsensus的小变化 (poanetwork/poa-network-consensus-contracts#123)
(重构)增强功能和修复 (poanetwork/poa-network-consensus-contracts#112)
(修复)实体覆盖率的单元测试 (poanetwork/poa-network-consensus-contracts#109)
(修复)KeysManager和一些增强功能 (poanetwork/poa-network-consensus-contracts#104)
修复)
hoek@4.2.0
依赖项中的已知漏洞 (poanetwork/poa-network-consensus-contracts#97)(修复)关于PoaNetworkConsensus字节码的自述文本 (poanetwork/poa-network-consensus-contracts#79)
(重构)折叠master和demo分支 (poanetwork/poa-network-consensus-contracts#76)
解决方案
部署新的智能合约,并使用脚本/migrate/migrateAll.js将所有数据从旧合约迁移到新合约。
将新的
PoaNetworkConsensus
合同的地址添加到engine/authorityRound/params/validators/multi
;将
blockRewardContractAddress
(从步骤1获得)和blockRewardContractTransition
(等于5761140
-2018年11月17日
)添加到engine/authorityRound/params
中。在区块
5329160
中组织HF。
排放供应增加
在此硬分叉的范围内,排放量将每块增加1 POA。
POA的区块时间约为5秒,奖励每个经过验证的区块矿工每个区块1个POA。 这些区块奖励永远不会用完,2018年11月17日之后,每个区块将铸造2个POA。 每个块剩余的1个POA将被保留以使网络受益,但是当前的验证者将投票选择,一些示例用例是为POA基金会刻录硬币,持有硬币或进行研发。 验证者的奖励在此转换后将保持为1 POA。
您可以在POA白皮书经济版块和RFC问题#14中找到更多信息。
使用说明
Update Parity to version
>=1.11
.Update spec.json
验证HF块号:
您将看到:
Last updated