Ethereum smart contracts to manage validators in Oracles POA Network
ValidatorsStorage and ValidatorsManager contracts.
These are contracts for storing and managing the data for validators.
KeysStorage and KeysManager contracts.
These are contracts for storing and managing the data for Oracles POA Network Keys Generation dApp.
BallotsStorage and BallotsManager contracts.
These are contracts for storing and managing the data for Oracles POA Network Governance dApp.
To be done...
№ | Attack vector | Description | Status |
---|---|---|---|
1 | Race Conditions | The order of transactions themselves (within a block) is easily subject to manipulation | |
1.a | Reentrancy | Functions can be called repeatedly, before the first invocation of the function was finished | |
1.b | Cross-function Race Conditions | A similar attack using two different functions that share the same state | |
1.c | Pitfalls in Race Condition Solutions | Avoiding of calling functions which call external functions | |
2 | Timestamp Dependence | Timestamp of the block can be manipulated by the miner | |
3 | Integer Overflow and Underflow | Usage of unlimited increments can cause such issue | |
4 | DoS with (Unexpected) Throw | Unexpected throw is reached with some contract method for any user, because of malicious user called it before with bad parameters | |
5 | DoS with Block Gas Limit | Block gas limit can be reached, for example, with looping through an array with unknown size and sending send() in a single transaction. Sending should be divided to multiple transactions |
Install dapp cli
-
git clone https://github.com/oraclesorg/oracles-contract
// clone repository -
cd oracles-contract/
// move to folder with project -
git submodule update --init --recursive
// get submodules data -
dapp build
// compiling of contracts to./out
Expected result:
./out/Oracles.bin
- bytecode of Oracles contract
./out/Oracles.abi
- binary interface of Oracles contract
- Start testrpc process with specific accounts and balances. Use
make testrpc
command. - Run tests with command
truffle test
.