mirror of https://github.com/nucypher/nucypher.git
Randomize order of generated WorkOrders (Fixes #245)
parent
90a3c26298
commit
4b24fecba0
|
@ -16,14 +16,19 @@ along with nucypher. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import time
|
|
||||||
from base64 import b64encode, b64decode
|
from base64 import b64encode, b64decode
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from json.decoder import JSONDecodeError
|
from json.decoder import JSONDecodeError
|
||||||
|
from random import shuffle
|
||||||
from typing import Dict, Iterable, List, Set, Tuple, Union
|
from typing import Dict, Iterable, List, Set, Tuple, Union
|
||||||
|
|
||||||
import maya
|
import maya
|
||||||
|
import time
|
||||||
|
from bytestring_splitter import BytestringKwargifier, BytestringSplittingError
|
||||||
|
from bytestring_splitter import BytestringSplitter, VariableLengthBytestring
|
||||||
|
from constant_sorrow import constants
|
||||||
|
from constant_sorrow.constants import INCLUDED_IN_BYTESTRING, PUBLIC_ONLY, STRANGER_ALICE
|
||||||
from cryptography.hazmat.backends import default_backend
|
from cryptography.hazmat.backends import default_backend
|
||||||
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve
|
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve
|
||||||
from cryptography.hazmat.primitives.serialization import Encoding
|
from cryptography.hazmat.primitives.serialization import Encoding
|
||||||
|
@ -32,17 +37,8 @@ from eth_utils import to_checksum_address
|
||||||
from flask import request, Response
|
from flask import request, Response
|
||||||
from twisted.internet import threads
|
from twisted.internet import threads
|
||||||
from twisted.logger import Logger
|
from twisted.logger import Logger
|
||||||
from umbral import pre
|
|
||||||
from umbral.keys import UmbralPublicKey
|
|
||||||
from umbral.kfrags import KFrag
|
|
||||||
from umbral.pre import UmbralCorrectnessError
|
|
||||||
from umbral.signing import Signature
|
|
||||||
|
|
||||||
import nucypher
|
import nucypher
|
||||||
from bytestring_splitter import BytestringKwargifier, BytestringSplittingError
|
|
||||||
from bytestring_splitter import BytestringSplitter, VariableLengthBytestring
|
|
||||||
from constant_sorrow import constants
|
|
||||||
from constant_sorrow.constants import INCLUDED_IN_BYTESTRING, PUBLIC_ONLY, STRANGER_ALICE
|
|
||||||
from nucypher.blockchain.eth.actors import BlockchainPolicyAuthor, Worker
|
from nucypher.blockchain.eth.actors import BlockchainPolicyAuthor, Worker
|
||||||
from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency
|
from nucypher.blockchain.eth.agents import StakingEscrowAgent, ContractAgency
|
||||||
from nucypher.blockchain.eth.registry import BaseContractRegistry
|
from nucypher.blockchain.eth.registry import BaseContractRegistry
|
||||||
|
@ -67,6 +63,11 @@ from nucypher.network.nicknames import nickname_from_seed
|
||||||
from nucypher.network.nodes import Teacher, NodeSprout
|
from nucypher.network.nodes import Teacher, NodeSprout
|
||||||
from nucypher.network.protocols import InterfaceInfo, parse_node_uri
|
from nucypher.network.protocols import InterfaceInfo, parse_node_uri
|
||||||
from nucypher.network.server import ProxyRESTServer, TLSHostingPower, make_rest_app
|
from nucypher.network.server import ProxyRESTServer, TLSHostingPower, make_rest_app
|
||||||
|
from umbral import pre
|
||||||
|
from umbral.keys import UmbralPublicKey
|
||||||
|
from umbral.kfrags import KFrag
|
||||||
|
from umbral.pre import UmbralCorrectnessError
|
||||||
|
from umbral.signing import Signature
|
||||||
|
|
||||||
|
|
||||||
class Alice(Character, BlockchainPolicyAuthor):
|
class Alice(Character, BlockchainPolicyAuthor):
|
||||||
|
@ -609,7 +610,9 @@ class Bob(Character):
|
||||||
"Bob doesn't have a TreasureMap to match any of these capsules: {}".format(
|
"Bob doesn't have a TreasureMap to match any of these capsules: {}".format(
|
||||||
capsules))
|
capsules))
|
||||||
|
|
||||||
for node_id, arrangement_id in treasure_map_to_use:
|
random_walk = list(treasure_map_to_use)
|
||||||
|
shuffle(random_walk) # Mutates list in-place
|
||||||
|
for node_id, arrangement_id in random_walk:
|
||||||
|
|
||||||
capsules_to_include = []
|
capsules_to_include = []
|
||||||
for capsule in capsules:
|
for capsule in capsules:
|
||||||
|
@ -792,7 +795,8 @@ class Bob(Character):
|
||||||
capsule.attach_cfrag(pre_task.cfrag)
|
capsule.attach_cfrag(pre_task.cfrag)
|
||||||
except UmbralCorrectnessError:
|
except UmbralCorrectnessError:
|
||||||
task = work_order.tasks[0] # TODO: generalize for WorkOrders with more than one capsule/task
|
task = work_order.tasks[0] # TODO: generalize for WorkOrders with more than one capsule/task
|
||||||
from nucypher.policy.models import IndisputableEvidence
|
# TODO: WARNING - This block is untested.
|
||||||
|
from nucypher.policy.collections import IndisputableEvidence
|
||||||
evidence = IndisputableEvidence(task=task, work_order=work_order)
|
evidence = IndisputableEvidence(task=task, work_order=work_order)
|
||||||
# I got a lot of problems with you people ...
|
# I got a lot of problems with you people ...
|
||||||
the_airing_of_grievances.append(evidence)
|
the_airing_of_grievances.append(evidence)
|
||||||
|
|
Loading…
Reference in New Issue