From 55216153ba7c8f67dfde2cba0e7b3ce63e3fcbb8 Mon Sep 17 00:00:00 2001 From: Vadim Arasev Date: Fri, 13 Jul 2018 12:21:58 +0300 Subject: [PATCH] (Fix) VotingToManageEmissionFunds and RewardByBlock addr in ProxyStorage --- README.md | 46 ++++++---- contracts/ProxyStorage.sol | 30 ++++++- contracts/interfaces/IProxyStorage.sol | 4 +- migrations/2_deploy_contract.js | 85 +++++++++++++++---- scripts/migrate/migrateAll.js | 4 +- test/ballots_storage_test.js | 12 ++- test/ballots_storage_upgrade_test.js | 12 ++- test/keys_manager_test.js | 2 + test/keys_manager_upgrade_test.js | 2 + test/metadata_test.js | 10 ++- test/metadata_upgrade_test.js | 10 ++- test/poa_network_consensus_test.js | 2 + test/proxy_storage_test.js | 32 ++++++- test/proxy_storage_upgrade_test.js | 32 ++++++- test/reward_by_block_test.js | 2 + test/reward_by_block_upgrade_test.js | 2 + test/reward_by_time_test.js | 2 + test/reward_by_time_upgrade_test.js | 2 + test/voting_to_change_keys_test.js | 8 +- test/voting_to_change_keys_upgrade_test.js | 8 +- test/voting_to_change_min_threshold_test.js | 8 +- ...ng_to_change_min_threshold_upgrade_test.js | 36 ++++---- test/voting_to_change_proxy_test.js | 14 ++- test/voting_to_change_proxy_upgrade_test.js | 14 ++- test/voting_to_manage_emission_funds_test.js | 9 +- ...g_to_manage_emission_funds_upgrade_test.js | 9 +- 26 files changed, 310 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index 5571e31..c43bb61 100644 --- a/README.md +++ b/README.md @@ -36,41 +36,55 @@ Select `0.4.24` Solidity compiler version. Set `Optimize` to `true`. Compile and deploy contracts in the next sequence: -- `ProxyStorage_flat.sol` - Select contract `ProxyStorage`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- `ProxyStorage_flat.sol` - Deploy `ProxyStorage` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - equal to zero, `_implementationAddress` - address of ProxyStorage contract. -- Make a call to `ProxyStorage init` with `_poaConsensus` parameter equal to the address of poaConsensus contract, using the address of `EternalStorageProxy` and ABI of `ProxyStorage`. -- Select `poaNetworkConsensus` contract and send transaction `setProxyStorage` with the address of ProxyStorage contract. -- `KeysManager_flat.sol` - Select contract `KeysManager`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- Make a call to `ProxyStorage init` with `_poaConsensus` parameter equal to the address of PoaNetworkConsensus contract, using the address of `EternalStorageProxy` and ABI of `ProxyStorage`. +- Select `PoaNetworkConsensus` contract and call `setProxyStorage` with the address of ProxyStorage contract. +- `KeysManager_flat.sol` - Deploy `KeysManager` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - address of ProxyStorage contract, `_implementationAddress` - address of KeysManager contract. - Make a call to `KeysManager init` with `_previousKeysManager` parameter equal to 0x0000000000000000000000000000000000000000, using the address of `EternalStorageProxy` and ABI of `KeysManager`. -- `BallotsStorage_flat.sol` - Select contract `BallotsStorage`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- `BallotsStorage_flat.sol` - Deploy `BallotsStorage` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - address of ProxyStorage contract, `_implementationAddress` - address of BallotsStorage contract. - Make a call to `BallotsStorage init` with `_thresholds` parameter equal to [3, 2], using the address of `EternalStorageProxy` and ABI of `BallotsStorage`. -- `VotingToChangeKeys_flat.sol` - Select contract `VotingToChangeKeys`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- `VotingToChangeKeys_flat.sol` - Deploy `VotingToChangeKeys` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - address of ProxyStorage contract, `_implementationAddress` - address of VotingToChangeKeys contract. - Make a call to `VotingToChangeKeys init` with `_minBallotDuration` parameter equal to `172800`, using the address of `EternalStorageProxy` and ABI of `VotingToChangeKeys`. -- `VotingToChangeMinThreshold_flat.sol` - Select contract `VotingToChangeMinThreshold`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- `VotingToChangeMinThreshold_flat.sol` - Deploy `VotingToChangeMinThreshold` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - address of ProxyStorage contract, `_implementationAddress` - address of VotingToChangeMinThreshold contract. - Make a call to `VotingToChangeMinThreshold init` with `_minBallotDuration` parameter equal to `172800` and `_minPossibleThreshold` parameter equal to `3`, using the address of `EternalStorageProxy` and ABI of `VotingToChangeMinThreshold`. -- `VotingToChangeProxyAddress_flat.sol` - Select contract `VotingToChangeProxyAddress`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- `VotingToChangeProxyAddress_flat.sol` - Deploy `VotingToChangeProxyAddress` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - address of ProxyStorage contract, `_implementationAddress` - address of VotingToChangeProxyAddress contract. - Make a call to `VotingToChangeProxyAddress init` with `_minBallotDuration` parameter equal to `172800`, using the address of `EternalStorageProxy` and ABI of `VotingToChangeProxyAddress`. -- `ValidatorMetadata_flat.sol` - Select contract `ValidatorMetadata`. -- `EternalStorageProxy_flat.sol` - Select contract `EternalStorageProxy` with constructor parameters:
+- `ValidatorMetadata_flat.sol` - Deploy `ValidatorMetadata` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
`_proxyStorage` - address of ProxyStorage contract, `_implementationAddress` - address of ValidatorMetadata contract. +- `VotingToManageEmissionFunds_flat.sol` - Deploy `VotingToManageEmissionFunds` contract. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
+`_proxyStorage` - address of ProxyStorage contract, +`_implementationAddress` - address of VotingToManageEmissionFunds contract. +- `EmissionFunds_flat.sol` - Deploy `EmissionFunds` contract with constructor parameter `_votingToManageEmissionFunds` equal to `EternalStorageProxy` address of `VotingToManageEmissionFunds` contract. +- `RewardByBlock_flat.sol` - Deploy `RewardByBlock` contract and replace `emissionFunds` constant value `0x00...` inside it with the address of deployed `EmissionFunds`. Then deploy `RewardByBlock`. +- `EternalStorageProxy_flat.sol` - Deploy `EternalStorageProxy` contract with constructor parameters:
+`_proxyStorage` - address of ProxyStorage contract, +`_implementationAddress` - address of RewardByBlock contract. +- Make a call to `VotingToManageEmissionFunds init`, using the address of `EternalStorageProxy` and ABI of `VotingToManageEmissionFunds`, with the next parameters:
+`_emissionFunds` - address of EmissionFunds contract, +`_emissionReleaseTime` - your emission release unix timestamp, +`_emissionReleaseThreshold` - your emission release threshold in seconds, +`_distributionThreshold` - your distribution threshold in seconds. - Select deployed `ProxyStorage` contract and make a call from MoC address to `initializeAddresses` with relevant addresses. ## Unit tests diff --git a/contracts/ProxyStorage.sol b/contracts/ProxyStorage.sol index ea84f75..f9cf7ed 100644 --- a/contracts/ProxyStorage.sol +++ b/contracts/ProxyStorage.sol @@ -24,6 +24,9 @@ contract ProxyStorage is EternalStorage, IProxyStorage { bytes32 internal constant POA_CONSENSUS = keccak256("poaConsensus"); + + bytes32 internal constant REWARD_BY_BLOCK_ETERNAL_STORAGE = + keccak256("rewardByBlockEternalStorage"); bytes32 internal constant VALIDATOR_METADATA_ETERNAL_STORAGE = keccak256("validatorMetadataEternalStorage"); @@ -37,6 +40,9 @@ contract ProxyStorage is EternalStorage, IProxyStorage { bytes32 internal constant VOTING_TO_CHANGE_PROXY_ETERNAL_STORAGE = keccak256("votingToChangeProxyEternalStorage"); + bytes32 internal constant VOTING_TO_MANAGE_EMISSION_FUNDS_ETERNAL_STORAGE = + keccak256("votingToManageEmissionFundsEternalStorage"); + enum ContractTypes { Invalid, KeysManager, @@ -54,8 +60,10 @@ contract ProxyStorage is EternalStorage, IProxyStorage { address votingToChangeKeysEternalStorage, address votingToChangeMinThresholdEternalStorage, address votingToChangeProxyEternalStorage, + address votingToManageEmissionFundsEternalStorage, address ballotsStorageEternalStorage, - address validatorMetadataEternalStorage + address validatorMetadataEternalStorage, + address rewardByBlockEternalStorage ); event AddressSet(uint256 contractType, address contractAddress); @@ -102,6 +110,10 @@ contract ProxyStorage is EternalStorage, IProxyStorage { return addressStorage[VOTING_TO_CHANGE_PROXY_ETERNAL_STORAGE]; } + function getVotingToManageEmissionFunds() public view returns(address) { + return addressStorage[VOTING_TO_MANAGE_EMISSION_FUNDS_ETERNAL_STORAGE]; + } + function getPoaConsensus() public view returns(address) { return addressStorage[POA_CONSENSUS]; } @@ -114,13 +126,19 @@ contract ProxyStorage is EternalStorage, IProxyStorage { return addressStorage[VALIDATOR_METADATA_ETERNAL_STORAGE]; } + function getRewardByBlock() public view returns(address) { + return addressStorage[REWARD_BY_BLOCK_ETERNAL_STORAGE]; + } + function initializeAddresses( address _keysManagerEternalStorage, address _votingToChangeKeysEternalStorage, address _votingToChangeMinThresholdEternalStorage, address _votingToChangeProxyEternalStorage, + address _votingToManageEmissionFundsEternalStorage, address _ballotsStorageEternalStorage, - address _validatorMetadataEternalStorage + address _validatorMetadataEternalStorage, + address _rewardByBlockEternalStorage ) public { require(isValidator(msg.sender) || _isOwner(msg.sender)); require(!mocInitialized()); @@ -132,18 +150,24 @@ contract ProxyStorage is EternalStorage, IProxyStorage { _votingToChangeMinThresholdEternalStorage; addressStorage[VOTING_TO_CHANGE_PROXY_ETERNAL_STORAGE] = _votingToChangeProxyEternalStorage; + addressStorage[VOTING_TO_MANAGE_EMISSION_FUNDS_ETERNAL_STORAGE] = + _votingToManageEmissionFundsEternalStorage; addressStorage[BALLOTS_STORAGE_ETERNAL_STORAGE] = _ballotsStorageEternalStorage; addressStorage[VALIDATOR_METADATA_ETERNAL_STORAGE] = _validatorMetadataEternalStorage; + addressStorage[REWARD_BY_BLOCK_ETERNAL_STORAGE] = + _rewardByBlockEternalStorage; boolStorage[MOC_INITIALIZED] = true; emit ProxyInitialized( _keysManagerEternalStorage, _votingToChangeKeysEternalStorage, _votingToChangeMinThresholdEternalStorage, _votingToChangeProxyEternalStorage, + _votingToManageEmissionFundsEternalStorage, _ballotsStorageEternalStorage, - _validatorMetadataEternalStorage + _validatorMetadataEternalStorage, + _rewardByBlockEternalStorage ); } diff --git a/contracts/interfaces/IProxyStorage.sol b/contracts/interfaces/IProxyStorage.sol index 22d09e1..7140fa7 100644 --- a/contracts/interfaces/IProxyStorage.sol +++ b/contracts/interfaces/IProxyStorage.sol @@ -2,7 +2,9 @@ pragma solidity ^0.4.24; interface IProxyStorage { - function initializeAddresses(address, address, address, address, address, address) external; + function initializeAddresses( + address, address, address, address, address, address, address, address + ) external; function setContractAddress(uint256, address) external; function isValidator(address) external view returns(bool); function getBallotsStorage() external view returns(address); diff --git a/migrations/2_deploy_contract.js b/migrations/2_deploy_contract.js index 8f46d34..82d87b8 100644 --- a/migrations/2_deploy_contract.js +++ b/migrations/2_deploy_contract.js @@ -1,4 +1,5 @@ const fs = require('fs'); +const moment = require('moment'); const PoaNetworkConsensus = artifacts.require("./PoaNetworkConsensus.sol"); const ProxyStorage = artifacts.require("./ProxyStorage.sol"); const KeysManager = artifacts.require("./KeysManager.sol"); @@ -7,6 +8,9 @@ const ValidatorMetadata = artifacts.require("./ValidatorMetadata.sol"); const VotingToChangeKeys = artifacts.require("./VotingToChangeKeys"); const VotingToChangeMinThreshold = artifacts.require("./VotingToChangeMinThreshold"); const VotingToChangeProxyAddress = artifacts.require("./VotingToChangeProxyAddress"); +const VotingToManageEmissionFunds = artifacts.require("./VotingToManageEmissionFunds"); +const RewardByBlock = artifacts.require("./RewardByBlock"); +const EmissionFunds = artifacts.require("./EmissionFunds"); const EternalStorageProxy = artifacts.require("./eternal-storage/EternalStorageProxy.sol"); module.exports = function(deployer, network, accounts) { @@ -15,7 +19,7 @@ module.exports = function(deployer, network, accounts) { let poaNetworkConsensusAddress = process.env.POA_NETWORK_CONSENSUS_ADDRESS; let previousKeysManager = process.env.OLD_KEYSMANAGER || "0x0000000000000000000000000000000000000000"; let demoMode = !!process.env.DEMO === true; - let poaNetworkConsensus; + let poaNetworkConsensus, emissionFunds; let proxyStorage, proxyStorageImplAddress; let keysManager, keysManagerImplAddress; let ballotsStorage, ballotsStorageImplAddress; @@ -23,6 +27,8 @@ module.exports = function(deployer, network, accounts) { let votingToChangeKeys, votingToChangeKeysImplAddress; let votingToChangeMinThreshold, votingToChangeMinThresholdImplAddress; let votingToChangeProxyAddress, votingToChangeProxyAddressImplAddress; + let votingToManageEmissionFunds, votingToManageEmissionFundsImplAddress; + let rewardByBlock, rewardByBlockImplAddress; const minBallotDuration = demoMode ? 0 : 172800; @@ -119,14 +125,49 @@ module.exports = function(deployer, network, accounts) { ); await votingToChangeProxyAddress.init(minBallotDuration); + // Deploy VotingToManageEmissionFunds + votingToManageEmissionFunds = await VotingToManageEmissionFunds.new(); + votingToManageEmissionFundsImplAddress = votingToManageEmissionFunds.address; + votingToManageEmissionFunds = await EternalStorageProxy.new( + proxyStorage.address, + votingToManageEmissionFundsImplAddress + ); + votingToManageEmissionFunds = VotingToManageEmissionFunds.at( + votingToManageEmissionFunds.address + ); + + // Deploy EmissionFunds + emissionFunds = await EmissionFunds.new(votingToManageEmissionFunds.address); + + // Deploy RewardByBlock + rewardByBlock = await RewardByBlock.new(); + rewardByBlockImplAddress = rewardByBlock.address; + rewardByBlock = await EternalStorageProxy.new( + proxyStorage.address, + rewardByBlockImplAddress + ); + rewardByBlock = RewardByBlock.at( + rewardByBlock.address + ); + + // Initialize VotingToManageEmissionFunds + await votingToManageEmissionFunds.init( + emissionFunds.address, + moment.utc().add(3, 'months').unix(), + 7776000, + 604800 + ); + // Initialize ProxyStorage await proxyStorage.initializeAddresses( keysManager.address, votingToChangeKeys.address, votingToChangeMinThreshold.address, votingToChangeProxyAddress.address, + votingToManageEmissionFunds.address, ballotsStorage.address, - validatorMetadata.address + validatorMetadata.address, + rewardByBlock.address ); if (!!process.env.SAVE_TO_FILE === true) { @@ -134,11 +175,14 @@ module.exports = function(deployer, network, accounts) { "VOTING_TO_CHANGE_KEYS_ADDRESS": votingToChangeKeys.address, "VOTING_TO_CHANGE_MIN_THRESHOLD_ADDRESS": votingToChangeMinThreshold.address, "VOTING_TO_CHANGE_PROXY_ADDRESS": votingToChangeProxyAddress.address, + "VOTING_TO_MANAGE_EMISSION_FUNDS_ADDRESS": votingToManageEmissionFunds.address, "BALLOTS_STORAGE_ADDRESS": ballotsStorage.address, "KEYS_MANAGER_ADDRESS": keysManager.address, "METADATA_ADDRESS": validatorMetadata.address, "PROXY_ADDRESS": proxyStorage.address, - "POA_ADDRESS": poaNetworkConsensusAddress + "POA_ADDRESS": poaNetworkConsensusAddress, + "EMISSION_FUNDS_ADDRESS": emissionFunds.address, + "REWARD_BY_BLOCK_ADDRESS": rewardByBlock.address }; fs.writeFileSync('./contracts.json', JSON.stringify(contracts, null, 2)); @@ -147,21 +191,26 @@ module.exports = function(deployer, network, accounts) { console.log( '\nDone. ADDRESSES:', ` - VotingToChangeKeys.address (implementation) ....... ${votingToChangeKeysImplAddress} - VotingToChangeKeys.address (storage) .............. ${votingToChangeKeys.address} - VotingToChangeMinThreshold.address (implementation) ${votingToChangeMinThresholdImplAddress} - VotingToChangeMinThreshold.address (storage) ...... ${votingToChangeMinThreshold.address} - VotingToChangeProxyAddress.address (implementation) ${votingToChangeProxyAddressImplAddress} - VotingToChangeProxyAddress.address (storage) ...... ${votingToChangeProxyAddress.address} - BallotsStorage.address (implementation) ........... ${ballotsStorageImplAddress} - BallotsStorage.address (storage) .................. ${ballotsStorage.address} - KeysManager.address (implementation) .............. ${keysManagerImplAddress} - KeysManager.address (storage) ..................... ${keysManager.address} - ValidatorMetadata.address (implementation) ........ ${validatorMetadataImplAddress} - ValidatorMetadata.address (storage) ............... ${validatorMetadata.address} - ProxyStorage.address (implementation) ............. ${proxyStorageImplAddress} - ProxyStorage.address (storage) .................... ${proxyStorage.address} - PoaNetworkConsensus.address ....................... ${poaNetworkConsensusAddress} + VotingToChangeKeys.address (implementation) ........ ${votingToChangeKeysImplAddress} + VotingToChangeKeys.address (storage) ............... ${votingToChangeKeys.address} + VotingToChangeMinThreshold.address (implementation). ${votingToChangeMinThresholdImplAddress} + VotingToChangeMinThreshold.address (storage) ....... ${votingToChangeMinThreshold.address} + VotingToChangeProxyAddress.address (implementation). ${votingToChangeProxyAddressImplAddress} + VotingToChangeProxyAddress.address (storage) ....... ${votingToChangeProxyAddress.address} + VotingToManageEmissionFunds.address (implementation) ${votingToManageEmissionFundsImplAddress} + VotingToManageEmissionFunds.address (storage) ...... ${votingToManageEmissionFunds.address} + BallotsStorage.address (implementation) ............ ${ballotsStorageImplAddress} + BallotsStorage.address (storage) ................... ${ballotsStorage.address} + KeysManager.address (implementation) ............... ${keysManagerImplAddress} + KeysManager.address (storage) ...................... ${keysManager.address} + ValidatorMetadata.address (implementation) ......... ${validatorMetadataImplAddress} + ValidatorMetadata.address (storage) ................ ${validatorMetadata.address} + ProxyStorage.address (implementation) .............. ${proxyStorageImplAddress} + ProxyStorage.address (storage) ..................... ${proxyStorage.address} + PoaNetworkConsensus.address ........................ ${poaNetworkConsensusAddress} + EmissionFunds.address .............................. ${emissionFunds.address} + RewardByBlock.address (implementation) .............. ${rewardByBlockImplAddress} + RewardByBlock.address (storage) ..................... ${rewardByBlock.address} ` ); }).catch(function(error) { diff --git a/scripts/migrate/migrateAll.js b/scripts/migrate/migrateAll.js index a706320..931cf03 100644 --- a/scripts/migrate/migrateAll.js +++ b/scripts/migrate/migrateAll.js @@ -239,8 +239,10 @@ async function main() { votingToChangeKeysNewAddress, votingToChangeMinThresholdNewAddress, votingToChangeProxyNewAddress, + votingToManageEmissionFundsAddress, ballotsStorageNewAddress, - process.env.METADATA_NEW_ADDRESS + process.env.METADATA_NEW_ADDRESS, + rewardByBlockAddress ); await utils.call(initializeAddresses, sender, process.env.PROXY_STORAGE_NEW_ADDRESS, key, chainId); true.should.be.equal( diff --git a/test/ballots_storage_test.js b/test/ballots_storage_test.js index 282c4a1..0d21940 100644 --- a/test/ballots_storage_test.js +++ b/test/ballots_storage_test.js @@ -18,13 +18,17 @@ contract('BallotsStorage [all features]', function (accounts) { votingToChangeKeys, votingToChangeMinThreshold, votingToChangeProxy, - validatorMetadataEternalStorage + votingToManageEmissionFunds, + validatorMetadataEternalStorage, + rewardByBlock } = { keysManager: '', votingToChangeKeys: accounts[0], votingToChangeMinThreshold: accounts[3], votingToChangeProxy: accounts[4], - validatorMetadataEternalStorage: accounts[7] + votingToManageEmissionFunds: accounts[5], + validatorMetadataEternalStorage: accounts[7], + rewardByBlock: accounts[8] } masterOfCeremony = accounts[0]; beforeEach(async () => { @@ -54,8 +58,10 @@ contract('BallotsStorage [all features]', function (accounts) { votingToChangeKeys, votingToChangeMinThreshold, votingToChangeProxy, + votingToManageEmissionFunds, ballotsEternalStorage.address, - validatorMetadataEternalStorage + validatorMetadataEternalStorage, + rewardByBlock ); }) diff --git a/test/ballots_storage_upgrade_test.js b/test/ballots_storage_upgrade_test.js index b916ed5..a1f76e2 100644 --- a/test/ballots_storage_upgrade_test.js +++ b/test/ballots_storage_upgrade_test.js @@ -18,13 +18,17 @@ contract('BallotsStorage upgraded [all features]', function (accounts) { votingToChangeKeys, votingToChangeMinThreshold, votingToChangeProxy, - validatorMetadataEternalStorage + votingToManageEmissionFunds, + validatorMetadataEternalStorage, + rewardByBlock } = { keysManager: '', votingToChangeKeys: accounts[0], votingToChangeMinThreshold: accounts[3], votingToChangeProxy: accounts[4], - validatorMetadataEternalStorage: accounts[7] + votingToManageEmissionFunds: accounts[5], + validatorMetadataEternalStorage: accounts[7], + rewardByBlock: accounts[8] } masterOfCeremony = accounts[0]; beforeEach(async () => { @@ -54,8 +58,10 @@ contract('BallotsStorage upgraded [all features]', function (accounts) { votingToChangeKeys, votingToChangeMinThreshold, votingToChangeProxy, + votingToManageEmissionFunds, ballotsEternalStorage.address, - validatorMetadataEternalStorage + validatorMetadataEternalStorage, + rewardByBlock ); let ballotsStorageNew = await BallotsStorageNew.new(); diff --git a/test/keys_manager_test.js b/test/keys_manager_test.js index 7a03dae..095848c 100644 --- a/test/keys_manager_test.js +++ b/test/keys_manager_test.js @@ -41,6 +41,8 @@ contract('KeysManager [all features]', function (accounts) { accounts[0], accounts[0], accounts[0], + accounts[0], + accounts[0], accounts[0] ); }); diff --git a/test/keys_manager_upgrade_test.js b/test/keys_manager_upgrade_test.js index fb5c55b..9bf36b0 100644 --- a/test/keys_manager_upgrade_test.js +++ b/test/keys_manager_upgrade_test.js @@ -47,6 +47,8 @@ contract('KeysManager upgraded [all features]', function (accounts) { accounts[0], accounts[0], accounts[0], + accounts[0], + accounts[0], accounts[0] ); }); diff --git a/test/metadata_test.js b/test/metadata_test.js index 845406a..057e8f8 100644 --- a/test/metadata_test.js +++ b/test/metadata_test.js @@ -66,11 +66,13 @@ contract('ValidatorMetadata [all features]', function (accounts) { await proxyStorageMock.initializeAddresses( keysManager.address, - masterOfCeremony, - masterOfCeremony, - masterOfCeremony, + accounts[0], + accounts[0], + accounts[0], + accounts[0], ballotsEternalStorage.address, - metadataEternalStorage.address + metadataEternalStorage.address, + accounts[0] ); metadata = await ValidatorMetadata.at(metadataEternalStorage.address); diff --git a/test/metadata_upgrade_test.js b/test/metadata_upgrade_test.js index 25d2c9c..241030f 100644 --- a/test/metadata_upgrade_test.js +++ b/test/metadata_upgrade_test.js @@ -66,11 +66,13 @@ contract('ValidatorMetadata upgraded [all features]', function (accounts) { await proxyStorageMock.initializeAddresses( keysManager.address, - masterOfCeremony, - masterOfCeremony, - masterOfCeremony, + accounts[0], + accounts[0], + accounts[0], + accounts[0], ballotsEternalStorage.address, - metadataEternalStorage.address + metadataEternalStorage.address, + accounts[0] ); let metadataNew = await ValidatorMetadataNew.new(); diff --git a/test/poa_network_consensus_test.js b/test/poa_network_consensus_test.js index b414033..48418e7 100644 --- a/test/poa_network_consensus_test.js +++ b/test/poa_network_consensus_test.js @@ -29,6 +29,8 @@ contract('PoaNetworkConsensus [all features]', function (accounts) { accounts[0], accounts[0], accounts[0], + accounts[0], + accounts[0], accounts[0] ); }); diff --git a/test/proxy_storage_test.js b/test/proxy_storage_test.js index 1237794..fe752e3 100644 --- a/test/proxy_storage_test.js +++ b/test/proxy_storage_test.js @@ -7,6 +7,8 @@ let BallotsStorage = artifacts.require('./BallotsStorage'); let VotingToChangeKeys = artifacts.require('./VotingToChangeKeys'); let VotingToChangeMinThreshold = artifacts.require('./VotingToChangeMinThreshold'); let VotingToChangeProxy = artifacts.require('./VotingToChangeProxyAddress'); +let VotingToManageEmissionFunds = artifacts.require('./VotingToManageEmissionFunds'); +let RewardByBlock = artifacts.require('./RewardByBlock'); let EternalStorageProxy = artifacts.require('./mockContracts/EternalStorageProxyMock'); const ERROR_MSG = 'VM Exception while processing transaction: revert'; require('chai') @@ -22,6 +24,8 @@ let ballotsStorage, ballotsEternalStorage; let votingToChangeKeys, votingToChangeKeysEternalStorage; let votingToChangeMinThreshold, votingToChangeMinThresholdEternalStorage; let votingToChangeProxy, votingToChangeProxyEternalStorage; +let votingToManageEmissionFunds, votingToManageEmissionFundsEternalStorage; +let rewardByBlock, rewardByBlockEternalStorage; contract('ProxyStorage [all features]', function (accounts) { masterOfCeremony = accounts[0]; beforeEach(async () => { @@ -53,6 +57,12 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeProxy = await VotingToChangeProxy.new(); votingToChangeProxyEternalStorage = await EternalStorageProxy.new(proxyStorage.address, votingToChangeProxy.address); + + votingToManageEmissionFunds = await VotingToManageEmissionFunds.new(); + votingToManageEmissionFundsEternalStorage = await EternalStorageProxy.new(proxyStorage.address, votingToManageEmissionFunds.address); + + rewardByBlock = await RewardByBlock.new(); + rewardByBlockEternalStorage = await EternalStorageProxy.new(proxyStorage.address, rewardByBlock.address); }) describe('#constructor', async () => { it('sets MoC and Poa', async () => { @@ -71,8 +81,10 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address, {from: accounts[2]} ).should.be.rejectedWith(ERROR_MSG); const {logs} = await proxyStorage.initializeAddresses( @@ -80,8 +92,10 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ).should.be.fulfilled; keysManagerEternalStorage.address.should.be.equal( await proxyStorage.getKeysManager.call() @@ -95,19 +109,27 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeProxyEternalStorage.address.should.be.equal( await proxyStorage.getVotingToChangeProxy.call() ); + votingToManageEmissionFundsEternalStorage.address.should.be.equal( + await proxyStorage.getVotingToManageEmissionFunds.call() + ); ballotsEternalStorage.address.should.be.equal( await proxyStorage.getBallotsStorage.call() ); validatorMetadataEternalStorage.address.should.be.equal( await proxyStorage.getValidatorMetadata.call() ); + rewardByBlockEternalStorage.address.should.be.equal( + await proxyStorage.getRewardByBlock.call() + ); logs[0].event.should.be.equal('ProxyInitialized'); logs[0].args.keysManagerEternalStorage.should.be.equal(keysManagerEternalStorage.address); logs[0].args.votingToChangeKeysEternalStorage.should.be.equal(votingToChangeKeysEternalStorage.address); logs[0].args.votingToChangeMinThresholdEternalStorage.should.be.equal(votingToChangeMinThresholdEternalStorage.address); logs[0].args.votingToChangeProxyEternalStorage.should.be.equal(votingToChangeProxyEternalStorage.address); + logs[0].args.votingToManageEmissionFundsEternalStorage.should.be.equal(votingToManageEmissionFundsEternalStorage.address); logs[0].args.ballotsStorageEternalStorage.should.be.equal(ballotsEternalStorage.address); logs[0].args.validatorMetadataEternalStorage.should.be.equal(validatorMetadataEternalStorage.address); + logs[0].args.rewardByBlockEternalStorage.should.be.equal(rewardByBlockEternalStorage.address); }) it('prevents Moc to call it more than once', async () => { false.should.be.equal(await proxyStorage.mocInitialized.call()); @@ -116,8 +138,10 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ).should.be.fulfilled; true.should.be.equal(await proxyStorage.mocInitialized.call()); await proxyStorage.initializeAddresses( @@ -125,8 +149,10 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ).should.be.rejectedWith(ERROR_MSG); }) }) @@ -138,8 +164,10 @@ contract('ProxyStorage [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address, {from: masterOfCeremony} ).should.be.fulfilled; }) diff --git a/test/proxy_storage_upgrade_test.js b/test/proxy_storage_upgrade_test.js index 70e9efc..e2be2e6 100644 --- a/test/proxy_storage_upgrade_test.js +++ b/test/proxy_storage_upgrade_test.js @@ -7,6 +7,8 @@ let BallotsStorage = artifacts.require('./BallotsStorage'); let VotingToChangeKeys = artifacts.require('./VotingToChangeKeys'); let VotingToChangeMinThreshold = artifacts.require('./VotingToChangeMinThreshold'); let VotingToChangeProxy = artifacts.require('./VotingToChangeProxyAddress'); +let VotingToManageEmissionFunds = artifacts.require('./VotingToManageEmissionFunds'); +let RewardByBlock = artifacts.require('./RewardByBlock'); let EternalStorageProxy = artifacts.require('./mockContracts/EternalStorageProxyMock'); const ERROR_MSG = 'VM Exception while processing transaction: revert'; require('chai') @@ -22,6 +24,8 @@ let ballotsStorage, ballotsEternalStorage; let votingToChangeKeys, votingToChangeKeysEternalStorage; let votingToChangeMinThreshold, votingToChangeMinThresholdEternalStorage; let votingToChangeProxy, votingToChangeProxyEternalStorage; +let votingToManageEmissionFunds, votingToManageEmissionFundsEternalStorage; +let rewardByBlock, rewardByBlockEternalStorage; contract('ProxyStorage upgraded [all features]', function (accounts) { masterOfCeremony = accounts[0]; beforeEach(async () => { @@ -59,6 +63,12 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeProxy = await VotingToChangeProxy.new(); votingToChangeProxyEternalStorage = await EternalStorageProxy.new(proxyStorage.address, votingToChangeProxy.address); + + votingToManageEmissionFunds = await VotingToManageEmissionFunds.new(); + votingToManageEmissionFundsEternalStorage = await EternalStorageProxy.new(proxyStorage.address, votingToManageEmissionFunds.address); + + rewardByBlock = await RewardByBlock.new(); + rewardByBlockEternalStorage = await EternalStorageProxy.new(proxyStorage.address, rewardByBlock.address); }) describe('#constructor', async () => { it('sets MoC and Poa', async () => { @@ -77,8 +87,10 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address, {from: accounts[2]} ).should.be.rejectedWith(ERROR_MSG); const {logs} = await proxyStorage.initializeAddresses( @@ -86,8 +98,10 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ).should.be.fulfilled; keysManagerEternalStorage.address.should.be.equal( await proxyStorage.getKeysManager.call() @@ -101,19 +115,27 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeProxyEternalStorage.address.should.be.equal( await proxyStorage.getVotingToChangeProxy.call() ); + votingToManageEmissionFundsEternalStorage.address.should.be.equal( + await proxyStorage.getVotingToManageEmissionFunds.call() + ); ballotsEternalStorage.address.should.be.equal( await proxyStorage.getBallotsStorage.call() ); validatorMetadataEternalStorage.address.should.be.equal( await proxyStorage.getValidatorMetadata.call() ); + rewardByBlockEternalStorage.address.should.be.equal( + await proxyStorage.getRewardByBlock.call() + ); logs[0].event.should.be.equal('ProxyInitialized'); logs[0].args.keysManagerEternalStorage.should.be.equal(keysManagerEternalStorage.address); logs[0].args.votingToChangeKeysEternalStorage.should.be.equal(votingToChangeKeysEternalStorage.address); logs[0].args.votingToChangeMinThresholdEternalStorage.should.be.equal(votingToChangeMinThresholdEternalStorage.address); logs[0].args.votingToChangeProxyEternalStorage.should.be.equal(votingToChangeProxyEternalStorage.address); + logs[0].args.votingToManageEmissionFundsEternalStorage.should.be.equal(votingToManageEmissionFundsEternalStorage.address); logs[0].args.ballotsStorageEternalStorage.should.be.equal(ballotsEternalStorage.address); logs[0].args.validatorMetadataEternalStorage.should.be.equal(validatorMetadataEternalStorage.address); + logs[0].args.rewardByBlockEternalStorage.should.be.equal(rewardByBlockEternalStorage.address); }) it('prevents Moc to call it more than once', async () => { false.should.be.equal(await proxyStorage.mocInitialized.call()); @@ -122,8 +144,10 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ).should.be.fulfilled; true.should.be.equal(await proxyStorage.mocInitialized.call()); await proxyStorage.initializeAddresses( @@ -131,8 +155,10 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ).should.be.rejectedWith(ERROR_MSG); }) }) @@ -144,8 +170,10 @@ contract('ProxyStorage upgraded [all features]', function (accounts) { votingToChangeKeysEternalStorage.address, votingToChangeMinThresholdEternalStorage.address, votingToChangeProxyEternalStorage.address, + votingToManageEmissionFundsEternalStorage.address, ballotsEternalStorage.address, validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address, {from: masterOfCeremony} ).should.be.fulfilled; }) diff --git a/test/reward_by_block_test.js b/test/reward_by_block_test.js index 3309ba7..7d8ff7e 100644 --- a/test/reward_by_block_test.js +++ b/test/reward_by_block_test.js @@ -51,6 +51,8 @@ contract('RewardByBlock [all features]', function (accounts) { accounts[9], accounts[9], accounts[9], + accounts[9], + accounts[9], accounts[9] ); diff --git a/test/reward_by_block_upgrade_test.js b/test/reward_by_block_upgrade_test.js index 61f0dbe..0e10d35 100644 --- a/test/reward_by_block_upgrade_test.js +++ b/test/reward_by_block_upgrade_test.js @@ -51,6 +51,8 @@ contract('RewardByBlock upgraded [all features]', function (accounts) { accounts[9], accounts[9], accounts[9], + accounts[9], + accounts[9], accounts[9] ); diff --git a/test/reward_by_time_test.js b/test/reward_by_time_test.js index 4a30ae5..dca55a1 100644 --- a/test/reward_by_time_test.js +++ b/test/reward_by_time_test.js @@ -52,6 +52,8 @@ contract('RewardByTime [all features]', function (accounts) { accounts[9], accounts[9], accounts[9], + accounts[9], + accounts[9], accounts[9] ); diff --git a/test/reward_by_time_upgrade_test.js b/test/reward_by_time_upgrade_test.js index 67f1372..dd3aa29 100644 --- a/test/reward_by_time_upgrade_test.js +++ b/test/reward_by_time_upgrade_test.js @@ -52,6 +52,8 @@ contract('RewardByTime [all features]', function (accounts) { accounts[9], accounts[9], accounts[9], + accounts[9], + accounts[9], accounts[9] ); diff --git a/test/voting_to_change_keys_test.js b/test/voting_to_change_keys_test.js index f57bd96..5c24bb1 100644 --- a/test/voting_to_change_keys_test.js +++ b/test/voting_to_change_keys_test.js @@ -51,10 +51,12 @@ contract('Voting to change keys [all features]', function (accounts) { await proxyStorageMock.initializeAddresses( keysManagerEternalStorage.address, votingEternalStorage.address, - masterOfCeremony, - masterOfCeremony, + accounts[0], + accounts[0], + accounts[0], ballotsEternalStorage.address, - masterOfCeremony + accounts[0], + accounts[0] ); ballotsStorage = await BallotsStorage.at(ballotsEternalStorage.address); diff --git a/test/voting_to_change_keys_upgrade_test.js b/test/voting_to_change_keys_upgrade_test.js index f155efa..f9f8038 100644 --- a/test/voting_to_change_keys_upgrade_test.js +++ b/test/voting_to_change_keys_upgrade_test.js @@ -53,10 +53,12 @@ contract('Voting to change keys upgraded [all features]', function (accounts) { await proxyStorageMock.initializeAddresses( keysManagerEternalStorage.address, votingEternalStorage.address, - masterOfCeremony, - masterOfCeremony, + accounts[0], + accounts[0], + accounts[0], ballotsEternalStorage.address, - masterOfCeremony + accounts[0], + accounts[0] ); await ballotsStorage.init([3, 2]).should.be.fulfilled; diff --git a/test/voting_to_change_min_threshold_test.js b/test/voting_to_change_min_threshold_test.js index efe7ce7..708d290 100644 --- a/test/voting_to_change_min_threshold_test.js +++ b/test/voting_to_change_min_threshold_test.js @@ -57,11 +57,13 @@ contract('VotingToChangeMinThreshold [all features]', function (accounts) { await proxyStorageMock.initializeAddresses( keysManager.address, - masterOfCeremony, + accounts[0], voting.address, - masterOfCeremony, + accounts[0], + accounts[0], ballotsEternalStorage.address, - masterOfCeremony + accounts[0], + accounts[0] ); ballotsStorage = await BallotsStorage.at(ballotsEternalStorage.address); diff --git a/test/voting_to_change_min_threshold_upgrade_test.js b/test/voting_to_change_min_threshold_upgrade_test.js index 49de27f..ec72012 100644 --- a/test/voting_to_change_min_threshold_upgrade_test.js +++ b/test/voting_to_change_min_threshold_upgrade_test.js @@ -63,11 +63,13 @@ contract('VotingToChangeMinThreshold upgraded [all features]', function (account await proxyStorageMock.initializeAddresses( keysManager.address, - masterOfCeremony, + accounts[0], voting.address, - masterOfCeremony, + accounts[0], + accounts[0], ballotsEternalStorage.address, - masterOfCeremony + accounts[0], + accounts[0] ); ballotsStorage = await BallotsStorage.at(ballotsEternalStorage.address); @@ -465,20 +467,20 @@ contract('VotingToChangeMinThreshold upgraded [all features]', function (account (await votingNew.hasMiningKeyAlreadyVoted.call(id, votingKey2)).should.be.equal(true); (await votingNew.hasMiningKeyAlreadyVoted.call(id, votingKey3)).should.be.equal(true); - (await votingNew.nextBallotId.call()).should.be.bignumber.equal(0); - (await votingNew.activeBallotsLength.call()).should.be.bignumber.equal(0); - (await votingNew.validatorActiveBallots.call(accounts[1])).should.be.bignumber.equal(0); - await votingNew.migrateBasicAll(voting.address, {from: accounts[6]}).should.be.rejectedWith(ERROR_MSG); - await votingNew.migrateBasicAll('0x0000000000000000000000000000000000000000').should.be.rejectedWith(ERROR_MSG); - await votingNew.migrateBasicAll(voting.address).should.be.fulfilled; - await votingNew.migrateBasicAll(voting.address).should.be.fulfilled; - (await votingNew.nextBallotId.call()).should.be.bignumber.equal(1); - (await votingNew.activeBallotsLength.call()).should.be.bignumber.equal(1); - (await votingNew.validatorActiveBallots.call(accounts[1])).should.be.bignumber.equal(1); - (await votingNew.migrateDisabled.call()).should.be.equal(false); - await votingNew.migrateDisable({from: accounts[1]}).should.be.rejectedWith(ERROR_MSG); - await votingNew.migrateDisable().should.be.fulfilled; - (await votingNew.migrateDisabled.call()).should.be.equal(true); + (await votingNew.nextBallotId.call()).should.be.bignumber.equal(0); + (await votingNew.activeBallotsLength.call()).should.be.bignumber.equal(0); + (await votingNew.validatorActiveBallots.call(accounts[1])).should.be.bignumber.equal(0); + await votingNew.migrateBasicAll(voting.address, {from: accounts[6]}).should.be.rejectedWith(ERROR_MSG); + await votingNew.migrateBasicAll('0x0000000000000000000000000000000000000000').should.be.rejectedWith(ERROR_MSG); + await votingNew.migrateBasicAll(voting.address).should.be.fulfilled; + await votingNew.migrateBasicAll(voting.address).should.be.fulfilled; + (await votingNew.nextBallotId.call()).should.be.bignumber.equal(1); + (await votingNew.activeBallotsLength.call()).should.be.bignumber.equal(1); + (await votingNew.validatorActiveBallots.call(accounts[1])).should.be.bignumber.equal(1); + (await votingNew.migrateDisabled.call()).should.be.equal(false); + await votingNew.migrateDisable({from: accounts[1]}).should.be.rejectedWith(ERROR_MSG); + await votingNew.migrateDisable().should.be.fulfilled; + (await votingNew.migrateDisabled.call()).should.be.equal(true); await votingNew.migrateBasicAll(voting.address).should.be.rejectedWith(ERROR_MSG); }); }); diff --git a/test/voting_to_change_proxy_test.js b/test/voting_to_change_proxy_test.js index 9a715be..8812971 100644 --- a/test/voting_to_change_proxy_test.js +++ b/test/voting_to_change_proxy_test.js @@ -5,8 +5,10 @@ let VotingToChangeProxyAddress = artifacts.require('./mockContracts/VotingToChan let VotingToChangeProxyAddressNew = artifacts.require('./upgradeContracts/VotingToChangeProxyAddressNew'); let VotingForKeys = artifacts.require('./mockContracts/VotingToChangeKeysMock'); let VotingForMinThreshold = artifacts.require('./mockContracts/VotingToChangeMinThresholdMock'); +let VotingForEmissionFunds = artifacts.require('./mockContracts/VotingToManageEmissionFundsMock'); let BallotsStorage = artifacts.require('./BallotsStorage'); let ValidatorMetadata = artifacts.require('./ValidatorMetadata'); +let RewardByBlock = artifacts.require('./RewardByBlock'); let EternalStorageProxy = artifacts.require('./mockContracts/EternalStorageProxyMock'); const ERROR_MSG = 'VM Exception while processing transaction: revert'; const moment = require('moment'); @@ -61,6 +63,10 @@ contract('VotingToChangeProxyAddress [all features]', function (accounts) { const votingForMinThresholdEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, votingForMinThreshold.address); votingForMinThreshold = await VotingForMinThreshold.at(votingForMinThresholdEternalStorage.address); await votingForMinThreshold.init(172800, 3).should.be.fulfilled; + + let votingForEmissionFunds = await VotingForEmissionFunds.new(); + const votingForEmissionFundsEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, votingForEmissionFunds.address); + votingForEmissionFunds = await VotingForEmissionFunds.at(votingForEmissionFundsEternalStorage.address); voting = await VotingToChangeProxyAddress.new(); const votingEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, voting.address); @@ -71,13 +77,19 @@ contract('VotingToChangeProxyAddress [all features]', function (accounts) { const validatorMetadata = await ValidatorMetadata.new(); const validatorMetadataEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, validatorMetadata.address); + let rewardByBlock = await RewardByBlock.new(); + const rewardByBlockEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, rewardByBlock.address); + rewardByBlock = await RewardByBlock.at(rewardByBlockEternalStorage.address); + await proxyStorageMock.initializeAddresses( keysManagerEternalStorage.address, votingForKeysEternalStorage.address, votingForMinThresholdEternalStorage.address, votingEternalStorage.address, + votingForEmissionFunds.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlock.address ); }) diff --git a/test/voting_to_change_proxy_upgrade_test.js b/test/voting_to_change_proxy_upgrade_test.js index 89e35a1..6355b1d 100644 --- a/test/voting_to_change_proxy_upgrade_test.js +++ b/test/voting_to_change_proxy_upgrade_test.js @@ -5,8 +5,10 @@ let VotingToChangeProxyAddress = artifacts.require('./mockContracts/VotingToChan let VotingToChangeProxyAddressNew = artifacts.require('./upgradeContracts/VotingToChangeProxyAddressNew'); let VotingForKeys = artifacts.require('./mockContracts/VotingToChangeKeysMock'); let VotingForMinThreshold = artifacts.require('./mockContracts/VotingToChangeMinThresholdMock'); +let VotingForEmissionFunds = artifacts.require('./mockContracts/VotingToManageEmissionFundsMock'); let BallotsStorage = artifacts.require('./BallotsStorage'); let ValidatorMetadata = artifacts.require('./ValidatorMetadata'); +let RewardByBlock = artifacts.require('./RewardByBlock'); let EternalStorageProxy = artifacts.require('./mockContracts/EternalStorageProxyMock'); const ERROR_MSG = 'VM Exception while processing transaction: revert'; const moment = require('moment'); @@ -61,6 +63,10 @@ contract('VotingToChangeProxyAddress upgraded [all features]', function (account const votingForMinThresholdEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, votingForMinThreshold.address); votingForMinThreshold = await VotingForMinThreshold.at(votingForMinThresholdEternalStorage.address); await votingForMinThreshold.init(172800, 3).should.be.fulfilled; + + let votingForEmissionFunds = await VotingForEmissionFunds.new(); + const votingForEmissionFundsEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, votingForEmissionFunds.address); + votingForEmissionFunds = await VotingForEmissionFunds.at(votingForEmissionFundsEternalStorage.address); voting = await VotingToChangeProxyAddress.new(); const votingEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, voting.address); @@ -77,13 +83,19 @@ contract('VotingToChangeProxyAddress upgraded [all features]', function (account const validatorMetadata = await ValidatorMetadata.new(); const validatorMetadataEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, validatorMetadata.address); + let rewardByBlock = await RewardByBlock.new(); + const rewardByBlockEternalStorage = await EternalStorageProxy.new(proxyStorageMock.address, rewardByBlock.address); + rewardByBlock = await RewardByBlock.at(rewardByBlockEternalStorage.address); + await proxyStorageMock.initializeAddresses( keysManagerEternalStorage.address, votingForKeysEternalStorage.address, votingForMinThresholdEternalStorage.address, votingEternalStorage.address, + votingForEmissionFunds.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlock.address ); }) diff --git a/test/voting_to_manage_emission_funds_test.js b/test/voting_to_manage_emission_funds_test.js index 6602e42..218dd14 100644 --- a/test/voting_to_manage_emission_funds_test.js +++ b/test/voting_to_manage_emission_funds_test.js @@ -4,6 +4,7 @@ const EternalStorageProxy = artifacts.require('./mockContracts/EternalStoragePro const KeysManager = artifacts.require('./mockContracts/KeysManagerMock'); const PoaNetworkConsensus = artifacts.require('./mockContracts/PoaNetworkConsensusMock'); const ProxyStorage = artifacts.require('./mockContracts/ProxyStorageMock'); +const RewardByBlock = artifacts.require('./mockContracts/RewardByBlockMock'); const ValidatorMetadata = artifacts.require('./ValidatorMetadata'); const VotingForKeys = artifacts.require('./mockContracts/VotingToChangeKeysMock'); const VotingForMinThreshold = artifacts.require('./mockContracts/VotingToChangeMinThresholdMock'); @@ -104,14 +105,20 @@ contract('VotingToManageEmissionFunds [all features]', function (accounts) { emissionReleaseThreshold, distributionThreshold ).should.be.fulfilled; + + rewardByBlock = await RewardByBlock.new(); + const rewardByBlockEternalStorage = await EternalStorageProxy.new(proxyStorage.address, rewardByBlock.address); + rewardByBlock = await RewardByBlock.at(rewardByBlockEternalStorage.address); await proxyStorage.initializeAddresses( keysManagerEternalStorage.address, votingForKeysEternalStorage.address, votingForMinThresholdEternalStorage.address, votingForProxyEternalStorage.address, + votingEternalStorage.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ); (await web3.eth.getBalance(emissionFunds.address)).should.be.bignumber.equal(0); diff --git a/test/voting_to_manage_emission_funds_upgrade_test.js b/test/voting_to_manage_emission_funds_upgrade_test.js index e61297d..7f57cef 100644 --- a/test/voting_to_manage_emission_funds_upgrade_test.js +++ b/test/voting_to_manage_emission_funds_upgrade_test.js @@ -4,6 +4,7 @@ const EternalStorageProxy = artifacts.require('./mockContracts/EternalStoragePro const KeysManager = artifacts.require('./mockContracts/KeysManagerMock'); const PoaNetworkConsensus = artifacts.require('./mockContracts/PoaNetworkConsensusMock'); const ProxyStorage = artifacts.require('./mockContracts/ProxyStorageMock'); +const RewardByBlock = artifacts.require('./mockContracts/RewardByBlockMock'); const ValidatorMetadata = artifacts.require('./ValidatorMetadata'); const VotingForKeys = artifacts.require('./mockContracts/VotingToChangeKeysMock'); const VotingForMinThreshold = artifacts.require('./mockContracts/VotingToChangeMinThresholdMock'); @@ -104,14 +105,20 @@ contract('VotingToManageEmissionFunds upgraded [all features]', function (accoun emissionReleaseThreshold, distributionThreshold ).should.be.fulfilled; + + rewardByBlock = await RewardByBlock.new(); + const rewardByBlockEternalStorage = await EternalStorageProxy.new(proxyStorage.address, rewardByBlock.address); + rewardByBlock = await RewardByBlock.at(rewardByBlockEternalStorage.address); await proxyStorage.initializeAddresses( keysManagerEternalStorage.address, votingForKeysEternalStorage.address, votingForMinThresholdEternalStorage.address, votingForProxyEternalStorage.address, + votingEternalStorage.address, ballotsEternalStorage.address, - validatorMetadataEternalStorage.address + validatorMetadataEternalStorage.address, + rewardByBlockEternalStorage.address ); (await web3.eth.getBalance(emissionFunds.address)).should.be.bignumber.equal(0);