Return block number
This commit is contained in:
parent
de5fa5f6ec
commit
1b1ea38a78
|
@ -9,11 +9,11 @@ contract NodesV2
|
|||
// Nodes that have not passed any check or failed previous check
|
||||
Enode[] public inactiveNodes;
|
||||
|
||||
// For testing purposes
|
||||
bool overrideBlockPeriod;
|
||||
uint quorum;
|
||||
// How many blocks is a period
|
||||
uint blockPeriod;
|
||||
uint currentBlock;
|
||||
uint currentBlockStart;
|
||||
uint public currentBlock;
|
||||
|
||||
struct Enode {
|
||||
bytes publicKey;
|
||||
|
@ -39,10 +39,19 @@ contract NodesV2
|
|||
public
|
||||
{
|
||||
owner = msg.sender;
|
||||
currentBlock = block.number;
|
||||
currentBlock = 0;
|
||||
currentBlockStart = block.number;
|
||||
blockPeriod = _blockPeriod;
|
||||
}
|
||||
|
||||
function getCurrentBlock() public view returns (uint) {
|
||||
if (newBlockPeriod()) {
|
||||
return currentBlock + 1;
|
||||
} else {
|
||||
return currentBlock;
|
||||
}
|
||||
}
|
||||
|
||||
function getNode(uint index) public view returns (bytes memory, uint32, uint16) {
|
||||
Enode memory enode = activeNodes[index];
|
||||
|
||||
|
@ -90,7 +99,9 @@ contract NodesV2
|
|||
// Reset quorum for next vote
|
||||
quorum = calculateQuorum(activeNodes.length);
|
||||
// Set current block
|
||||
currentBlock = block.number;
|
||||
currentBlock++;
|
||||
// Set start
|
||||
currentBlockStart = block.number;
|
||||
}
|
||||
|
||||
function vote(
|
||||
|
@ -153,7 +164,7 @@ contract NodesV2
|
|||
}
|
||||
|
||||
function newBlockPeriod() private view returns (bool) {
|
||||
return block.number >= currentBlock + blockPeriod;
|
||||
return block.number >= currentBlockStart + blockPeriod;
|
||||
}
|
||||
|
||||
function publicKeyToAddress (bytes memory publicKey) public pure returns (address) {
|
||||
|
@ -190,10 +201,6 @@ contract NodesV2
|
|||
return a / 2 + 1;
|
||||
}
|
||||
|
||||
function setOverrideBlockPeriod(bool val) public onlyOwner {
|
||||
overrideBlockPeriod = val;
|
||||
}
|
||||
|
||||
function _deleteInactiveNode(uint index) internal {
|
||||
require(index < inactiveNodes.length);
|
||||
// Remove from index
|
||||
|
|
|
@ -156,6 +156,13 @@ contract('Nodes', async (accounts) => {
|
|||
await instance.vote([node4.address, node5.address], [node2.address], { from: accounts[2] });
|
||||
});
|
||||
|
||||
describe('currentBlock', async () => {
|
||||
it('returns 1', async () => {
|
||||
const actualCurrentBlock = await instance.getCurrentBlock();
|
||||
assert.equal(1, actualCurrentBlock);
|
||||
});
|
||||
});
|
||||
|
||||
describe('double voting', async () => {
|
||||
it('throws an exception', async () => {
|
||||
try {
|
||||
|
@ -196,6 +203,13 @@ contract('Nodes', async (accounts) => {
|
|||
await instance.vote([], [node2.address]);
|
||||
});
|
||||
|
||||
describe('currentBlock', async () => {
|
||||
it('returns 2', async () => {
|
||||
const actualCurrentBlock = await instance.getCurrentBlock();
|
||||
assert.equal(2, actualCurrentBlock);
|
||||
});
|
||||
});
|
||||
|
||||
it('promotes the inactive nodes that have passed the checks', async () => {
|
||||
const actualNodeCount = await instance.inactiveNodeCount();
|
||||
assert.equal(1, actualNodeCount);
|
||||
|
|
Loading…
Reference in New Issue