mirror of https://github.com/nucypher/nucypher.git
Events for the MiningAdjudicator
parent
fa190cd27a
commit
92af87778f
|
@ -17,13 +17,19 @@ contract MiningAdjudicator is Upgradeable {
|
|||
using UmbralDeserializer for bytes;
|
||||
using SafeMath for uint256;
|
||||
|
||||
event CFragEvaluated(
|
||||
bytes32 indexed evaluationHash,
|
||||
address indexed miner,
|
||||
address indexed investigator,
|
||||
bool correctness
|
||||
);
|
||||
|
||||
uint8 public constant UMBRAL_PARAMETER_U_SIGN = 0x02;
|
||||
uint256 public constant UMBRAL_PARAMETER_U_XCOORD = 0x03c98795773ff1c241fc0b1cced85e80f8366581dda5c9452175ebd41385fa1f;
|
||||
uint256 public constant UMBRAL_PARAMETER_U_YCOORD = 0x7880ed56962d7c0ae44d6f14bb53b5fe64b31ea44a41d0316f3a598778f0f936;
|
||||
// used only for upgrading
|
||||
bytes32 constant RESERVED_CAPSULE_AND_CFRAG_BYTES = bytes32(0);
|
||||
address constant RESERVED_ADDRESS = 0x0;
|
||||
// TODO events
|
||||
|
||||
MinersEscrow public escrow;
|
||||
SignatureVerifier.HashAlgorithm public hashAlgorithm;
|
||||
|
@ -120,6 +126,9 @@ contract MiningAdjudicator is Upgradeable {
|
|||
if (!isCapsuleFragCorrect(_capsuleBytes, _cFragBytes, _preComputedData)) {
|
||||
(uint256 penalty, uint256 reward) = calculatePenaltyAndReward(miner, minerValue);
|
||||
escrow.slashMiner(miner, penalty, msg.sender, reward);
|
||||
emit CFragEvaluated(evaluationHash, miner, msg.sender, false);
|
||||
} else {
|
||||
emit CFragEvaluated(evaluationHash, miner, msg.sender, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -89,6 +89,7 @@ def fragments(metadata):
|
|||
@pytest.mark.slow
|
||||
def test_evaluate_cfrag(testerchain, escrow, adjudicator_contract):
|
||||
creator, miner, wrong_miner, *everyone_else = testerchain.interface.w3.eth.accounts
|
||||
evaluation_log = adjudicator_contract.events.CFragEvaluated.createFilter(fromBlock='latest')
|
||||
|
||||
# TODO: Move this to an integration test?
|
||||
umbral_params = default_params()
|
||||
|
@ -171,6 +172,14 @@ def test_evaluate_cfrag(testerchain, escrow, adjudicator_contract):
|
|||
assert adjudicator_contract.functions.evaluatedCFrags(data_hash).call()
|
||||
assert 1000 == escrow.functions.minerInfo(miner).call()[0]
|
||||
|
||||
events = evaluation_log.get_all_entries()
|
||||
assert 1 == len(events)
|
||||
event_args = events[0]['args']
|
||||
assert data_hash == event_args['evaluationHash']
|
||||
assert miner == event_args['miner']
|
||||
assert creator == event_args['investigator']
|
||||
assert event_args['correctness']
|
||||
|
||||
# Can't evaluate miner with data that already was checked
|
||||
with pytest.raises((TransactionFailed, ValueError)):
|
||||
tx = adjudicator_contract.functions.evaluateCFrag(*args).transact()
|
||||
|
@ -291,6 +300,7 @@ def test_evaluate_cfrag(testerchain, escrow, adjudicator_contract):
|
|||
# assert adjudicator_contract.functions.evaluatedCFrags(data_hash).call()
|
||||
# assert 800 == escrow.functions.minerInfo(miner).call()[0]
|
||||
# TODO tests for penalty/reward calculation
|
||||
# TODO tests for events
|
||||
|
||||
|
||||
@pytest.mark.slow
|
||||
|
|
Loading…
Reference in New Issue