mirror of https://github.com/nucypher/nucypher.git
Actors accept a transacting power or an address but not both + Cleanup.
parent
dcd8c9b12f
commit
ba464989ba
|
@ -114,26 +114,26 @@ class BaseActor:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
domain: Optional[str],
|
domain: Optional[str],
|
||||||
registry: BaseContractRegistry,
|
registry: BaseContractRegistry,
|
||||||
transacting_power: TransactingPower = None, # support non-transacting characters
|
transacting_power: TransactingPower = None,
|
||||||
checksum_address: ChecksumAddress = None):
|
checksum_address: ChecksumAddress = None
|
||||||
|
):
|
||||||
|
|
||||||
|
if not bool(checksum_address) ^ bool(transacting_power):
|
||||||
|
error = f'Pass transacting power or checksum address, got {checksum_address} and {transacting_power}.'
|
||||||
|
raise ValueError(error)
|
||||||
|
|
||||||
# TODO: Review this consistency check and simplify
|
|
||||||
# Note: If the base class implements multiple inheritance and already has a checksum address...
|
|
||||||
try:
|
try:
|
||||||
if checksum_address:
|
parent_address = self.checksum_address # type: ChecksumAddress
|
||||||
parent_address = self.checksum_address # type: ChecksumAddress
|
if checksum_address is not None:
|
||||||
if parent_address != checksum_address:
|
if parent_address != checksum_address:
|
||||||
raise ValueError("Can't have two different addresses.")
|
raise ValueError("Can't have two different addresses.")
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# This is an actor only, and not a full-fledged character.
|
|
||||||
if transacting_power:
|
if transacting_power:
|
||||||
self.checksum_address = transacting_power.account # type: ChecksumAddress
|
self.checksum_address = transacting_power.account
|
||||||
else:
|
else:
|
||||||
self.checksum_address = checksum_address
|
self.checksum_address = checksum_address
|
||||||
|
|
||||||
self.transacting_power = transacting_power
|
self.transacting_power = transacting_power
|
||||||
# self.checksum_address = checksum_address # TODO: Something better, deal with inherited addresses
|
|
||||||
|
|
||||||
self.registry = registry
|
self.registry = registry
|
||||||
self.network = domain
|
self.network = domain
|
||||||
self._saved_receipts = list() # track receipts of transmitted transactions
|
self._saved_receipts = list() # track receipts of transmitted transactions
|
||||||
|
@ -509,14 +509,12 @@ class Staker(NucypherTokenActor):
|
||||||
class InsufficientTokens(StakerError):
|
class InsufficientTokens(StakerError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, transacting_power: TransactingPower = None, *args, **kwargs) -> None:
|
||||||
is_me: bool,
|
|
||||||
*args, **kwargs) -> None:
|
|
||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(transacting_power=transacting_power, *args, **kwargs)
|
||||||
self.log = Logger("staker")
|
self.log = Logger("staker")
|
||||||
|
|
||||||
self.is_me = is_me
|
self.is_me = bool(transacting_power)
|
||||||
self._worker_address = None
|
self._worker_address = None
|
||||||
|
|
||||||
# Blockchain
|
# Blockchain
|
||||||
|
@ -1197,7 +1195,6 @@ class BlockchainPolicyAuthor(NucypherTokenActor):
|
||||||
"""Alice base class for blockchain operations, mocking up new policies!"""
|
"""Alice base class for blockchain operations, mocking up new policies!"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
checksum_address: ChecksumAddress,
|
|
||||||
rate: int = None,
|
rate: int = None,
|
||||||
duration_periods: int = None,
|
duration_periods: int = None,
|
||||||
*args, **kwargs):
|
*args, **kwargs):
|
||||||
|
@ -1207,7 +1204,7 @@ class BlockchainPolicyAuthor(NucypherTokenActor):
|
||||||
be created from default values.
|
be created from default values.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
super().__init__(checksum_address=checksum_address, *args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
# From defaults
|
# From defaults
|
||||||
self.staking_agent = ContractAgency.get_agent(StakingEscrowAgent, registry=self.registry)
|
self.staking_agent = ContractAgency.get_agent(StakingEscrowAgent, registry=self.registry)
|
||||||
|
@ -1291,8 +1288,8 @@ class Investigator(NucypherTokenActor):
|
||||||
anyone can report CFrags.
|
anyone can report CFrags.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, checksum_address: ChecksumAddress, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(checksum_address=checksum_address, *args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.adjudicator_agent = ContractAgency.get_agent(AdjudicatorAgent, registry=self.registry)
|
self.adjudicator_agent = ContractAgency.get_agent(AdjudicatorAgent, registry=self.registry)
|
||||||
|
|
||||||
@save_receipt
|
@save_receipt
|
||||||
|
@ -1300,9 +1297,9 @@ class Investigator(NucypherTokenActor):
|
||||||
receipt = self.adjudicator_agent.evaluate_cfrag(evidence=evidence, transacting_power=self.transacting_power)
|
receipt = self.adjudicator_agent.evaluate_cfrag(evidence=evidence, transacting_power=self.transacting_power)
|
||||||
return receipt
|
return receipt
|
||||||
|
|
||||||
def was_this_evidence_evaluated(self, evidence) -> dict:
|
def was_this_evidence_evaluated(self, evidence) -> bool:
|
||||||
receipt = self.adjudicator_agent.was_this_evidence_evaluated(evidence=evidence)
|
result = self.adjudicator_agent.was_this_evidence_evaluated(evidence=evidence)
|
||||||
return receipt
|
return result
|
||||||
|
|
||||||
|
|
||||||
class StakeHolder:
|
class StakeHolder:
|
||||||
|
@ -1352,9 +1349,7 @@ class StakeHolder:
|
||||||
if checksum_address not in self.signer.accounts:
|
if checksum_address not in self.signer.accounts:
|
||||||
raise ValueError(f"{checksum_address} is not a known client account.")
|
raise ValueError(f"{checksum_address} is not a known client account.")
|
||||||
transacting_power = TransactingPower(account=checksum_address, signer=self.signer)
|
transacting_power = TransactingPower(account=checksum_address, signer=self.signer)
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(transacting_power=transacting_power,
|
||||||
checksum_address=transacting_power.account,
|
|
||||||
transacting_power=transacting_power,
|
|
||||||
domain=self.domain,
|
domain=self.domain,
|
||||||
registry=self.registry)
|
registry=self.registry)
|
||||||
staker.refresh_stakes()
|
staker.refresh_stakes()
|
||||||
|
|
|
@ -155,9 +155,8 @@ class NucypherTokenAgent(EthereumContractAgent):
|
||||||
contract_name: str = NUCYPHER_TOKEN_CONTRACT_NAME
|
contract_name: str = NUCYPHER_TOKEN_CONTRACT_NAME
|
||||||
|
|
||||||
@contract_api(CONTRACT_CALL)
|
@contract_api(CONTRACT_CALL)
|
||||||
def get_balance(self, address: Optional[ChecksumAddress] = None) -> NuNits:
|
def get_balance(self, address: ChecksumAddress) -> NuNits:
|
||||||
"""Get the NU balance (in NuNits) of a token holder address, or of this contract address"""
|
"""Get the NU balance (in NuNits) of a token holder address, or of this contract address"""
|
||||||
address = address if address is not None else self.contract_address
|
|
||||||
balance: int = self.contract.functions.balanceOf(address).call()
|
balance: int = self.contract.functions.balanceOf(address).call()
|
||||||
return NuNits(balance)
|
return NuNits(balance)
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ import random
|
||||||
from _pydecimal import Decimal
|
from _pydecimal import Decimal
|
||||||
from collections import UserList
|
from collections import UserList
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
from eth_typing.evm import ChecksumAddress
|
||||||
from typing import Callable, Dict, Union
|
from typing import Callable, Dict, Union
|
||||||
|
|
||||||
import maya
|
import maya
|
||||||
|
@ -791,7 +793,7 @@ class StakeList(UserList):
|
||||||
@validate_checksum_address
|
@validate_checksum_address
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
registry: BaseContractRegistry,
|
registry: BaseContractRegistry,
|
||||||
checksum_address: str = None, # allow for lazy setting
|
checksum_address: ChecksumAddress = None, # allow for lazy setting
|
||||||
*args, **kwargs):
|
*args, **kwargs):
|
||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
@ -803,10 +805,7 @@ class StakeList(UserList):
|
||||||
self.__initial_period = NOT_STAKING
|
self.__initial_period = NOT_STAKING
|
||||||
self.__terminal_period = NOT_STAKING
|
self.__terminal_period = NOT_STAKING
|
||||||
|
|
||||||
# "load-in": Read on-chain stakes
|
# "load-in" Read on-chain stakes
|
||||||
# Allow stake tracker to be initialized as an empty collection.
|
|
||||||
if checksum_address and not is_checksum_address(checksum_address):
|
|
||||||
raise ValueError(f'{checksum_address} is not a valid EIP-55 checksum address')
|
|
||||||
self.checksum_address = checksum_address
|
self.checksum_address = checksum_address
|
||||||
self.__updated = None
|
self.__updated = None
|
||||||
|
|
||||||
|
|
|
@ -183,8 +183,9 @@ class Character(Learner):
|
||||||
raise ValueError('Provider URI is required to init a decentralized character.')
|
raise ValueError('Provider URI is required to init a decentralized character.')
|
||||||
self.provider_uri = provider_uri
|
self.provider_uri = provider_uri
|
||||||
|
|
||||||
if not BlockchainInterfaceFactory.is_interface_initialized(provider_uri=provider_uri):
|
# TODO: Implicit / lazy blockchain connection here?
|
||||||
BlockchainInterfaceFactory.initialize_interface(provider_uri=provider_uri)
|
# if not BlockchainInterfaceFactory.is_interface_initialized(provider_uri=provider_uri):
|
||||||
|
# BlockchainInterfaceFactory.initialize_interface(provider_uri=provider_uri)
|
||||||
|
|
||||||
self.registry = registry or InMemoryContractRegistry.from_latest_publication(network=domain) # See #1580
|
self.registry = registry or InMemoryContractRegistry.from_latest_publication(network=domain) # See #1580
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -167,7 +167,6 @@ class Alice(Character, BlockchainPolicyAuthor):
|
||||||
self._crypto_power.consume_power_up(self.transacting_power)
|
self._crypto_power.consume_power_up(self.transacting_power)
|
||||||
BlockchainPolicyAuthor.__init__(self,
|
BlockchainPolicyAuthor.__init__(self,
|
||||||
domain=self.domain,
|
domain=self.domain,
|
||||||
checksum_address=checksum_address,
|
|
||||||
transacting_power=self.transacting_power,
|
transacting_power=self.transacting_power,
|
||||||
registry=self.registry,
|
registry=self.registry,
|
||||||
rate=rate,
|
rate=rate,
|
||||||
|
@ -1074,8 +1073,8 @@ class Ursula(Teacher, Character, Worker):
|
||||||
availability_check: bool = False, # TODO: Remove from init
|
availability_check: bool = False, # TODO: Remove from init
|
||||||
|
|
||||||
# Blockchain
|
# Blockchain
|
||||||
checksum_address: str = None,
|
checksum_address: ChecksumAddress = None,
|
||||||
worker_address: str = None, # TODO: deprecate, and rename to "checksum_address"
|
worker_address: ChecksumAddress = None, # TODO: deprecate, and rename to "checksum_address"
|
||||||
client_password: str = None,
|
client_password: str = None,
|
||||||
decentralized_identity_evidence=NOT_SIGNED,
|
decentralized_identity_evidence=NOT_SIGNED,
|
||||||
|
|
||||||
|
@ -1132,8 +1131,9 @@ class Ursula(Teacher, Character, Worker):
|
||||||
try:
|
try:
|
||||||
Worker.__init__(self,
|
Worker.__init__(self,
|
||||||
is_me=is_me,
|
is_me=is_me,
|
||||||
|
domain=self.domain,
|
||||||
|
transacting_power=self.transacting_power,
|
||||||
registry=self.registry,
|
registry=self.registry,
|
||||||
checksum_address=checksum_address,
|
|
||||||
worker_address=worker_address)
|
worker_address=worker_address)
|
||||||
except (Exception, self.WorkerError):
|
except (Exception, self.WorkerError):
|
||||||
# TODO: Do not announce self to "other nodes" until this init is finished.
|
# TODO: Do not announce self to "other nodes" until this init is finished.
|
||||||
|
|
|
@ -139,7 +139,7 @@ def select_client_account(emitter,
|
||||||
for index, account in enumerated_accounts.items():
|
for index, account in enumerated_accounts.items():
|
||||||
row = [account]
|
row = [account]
|
||||||
if show_staking:
|
if show_staking:
|
||||||
staker = Staker(is_me=True, domain=network, checksum_address=account, registry=registry)
|
staker = Staker(domain=network, checksum_address=account, registry=registry)
|
||||||
staker.refresh_stakes()
|
staker.refresh_stakes()
|
||||||
is_staking = 'Yes' if bool(staker.stakes) else 'No'
|
is_staking = 'Yes' if bool(staker.stakes) else 'No'
|
||||||
row.append(is_staking)
|
row.append(is_staking)
|
||||||
|
|
|
@ -342,7 +342,10 @@ def accounts(general_config, staker_options, config_file):
|
||||||
"""Show ETH and NU balances for stakeholder's accounts."""
|
"""Show ETH and NU balances for stakeholder's accounts."""
|
||||||
emitter = setup_emitter(general_config)
|
emitter = setup_emitter(general_config)
|
||||||
STAKEHOLDER = staker_options.create_character(emitter, config_file)
|
STAKEHOLDER = staker_options.create_character(emitter, config_file)
|
||||||
paint_staking_accounts(emitter=emitter, signer=STAKEHOLDER.signer, registry=STAKEHOLDER.registry)
|
paint_staking_accounts(emitter=emitter,
|
||||||
|
signer=STAKEHOLDER.signer,
|
||||||
|
registry=STAKEHOLDER.registry,
|
||||||
|
domain=STAKEHOLDER.domain)
|
||||||
|
|
||||||
|
|
||||||
@stake.command('bond-worker')
|
@stake.command('bond-worker')
|
||||||
|
|
|
@ -135,9 +135,9 @@ class WorkLockOptions:
|
||||||
transacting_power = TransactingPower(account=self.bidder_address, signer=signer)
|
transacting_power = TransactingPower(account=self.bidder_address, signer=signer)
|
||||||
transacting_power.unlock(password=client_password)
|
transacting_power.unlock(password=client_password)
|
||||||
|
|
||||||
bidder = Bidder(checksum_address=self.bidder_address,
|
bidder = Bidder(registry=registry,
|
||||||
registry=registry,
|
|
||||||
transacting_power=transacting_power,
|
transacting_power=transacting_power,
|
||||||
|
checksum_address=self.bidder_address if not transacting_power else None,
|
||||||
domain=domain)
|
domain=domain)
|
||||||
return bidder
|
return bidder
|
||||||
|
|
||||||
|
|
|
@ -210,7 +210,7 @@ def paint_staking_confirmation(emitter, staker, receipt):
|
||||||
emitter.echo(POST_STAKING_ADVICE, color='green')
|
emitter.echo(POST_STAKING_ADVICE, color='green')
|
||||||
|
|
||||||
|
|
||||||
def paint_staking_accounts(emitter, signer, registry):
|
def paint_staking_accounts(emitter, signer, registry, domain):
|
||||||
from nucypher.blockchain.eth.actors import Staker
|
from nucypher.blockchain.eth.actors import Staker
|
||||||
|
|
||||||
rows = list()
|
rows = list()
|
||||||
|
@ -218,9 +218,11 @@ def paint_staking_accounts(emitter, signer, registry):
|
||||||
token_agent = ContractAgency.get_agent(NucypherTokenAgent, registry=registry)
|
token_agent = ContractAgency.get_agent(NucypherTokenAgent, registry=registry)
|
||||||
for account in signer.accounts:
|
for account in signer.accounts:
|
||||||
eth = str(Web3.fromWei(blockchain.client.get_balance(account), 'ether')) + " ETH"
|
eth = str(Web3.fromWei(blockchain.client.get_balance(account), 'ether')) + " ETH"
|
||||||
nu = str(NU.from_nunits(token_agent.get_balance(account, registry)))
|
nu = str(NU.from_nunits(token_agent.get_balance(account)))
|
||||||
|
|
||||||
staker = Staker(is_me=True, checksum_address=account, registry=registry)
|
staker = Staker(checksum_address=account,
|
||||||
|
domain=domain,
|
||||||
|
registry=registry)
|
||||||
staker.refresh_stakes()
|
staker.refresh_stakes()
|
||||||
is_staking = 'Yes' if bool(staker.stakes) else 'No'
|
is_staking = 'Yes' if bool(staker.stakes) else 'No'
|
||||||
rows.append((is_staking, account, eth, nu))
|
rows.append((is_staking, account, eth, nu))
|
||||||
|
|
|
@ -157,8 +157,7 @@ def paint_stakers(emitter, stakers: List[str], registry: BaseContractRegistry) -
|
||||||
emitter.echo('=' * (42 + 2 + 53))
|
emitter.echo('=' * (42 + 2 + 53))
|
||||||
|
|
||||||
for staker_address in stakers:
|
for staker_address in stakers:
|
||||||
staker = Staker(is_me=False,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=staker_address,
|
checksum_address=staker_address,
|
||||||
registry=registry)
|
registry=registry)
|
||||||
nickname = Nickname.from_seed(staker_address)
|
nickname = Nickname.from_seed(staker_address)
|
||||||
|
|
|
@ -15,17 +15,15 @@ You should have received a copy of the GNU Affero General Public License
|
||||||
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
|
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
|
||||||
from tempfile import TemporaryDirectory
|
|
||||||
|
|
||||||
|
import os
|
||||||
from constant_sorrow.constants import UNINITIALIZED_CONFIGURATION
|
from constant_sorrow.constants import UNINITIALIZED_CONFIGURATION
|
||||||
from cryptography.hazmat.primitives.asymmetric import ec
|
from cryptography.hazmat.primitives.asymmetric import ec
|
||||||
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve
|
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve
|
||||||
from cryptography.x509 import Certificate
|
from cryptography.x509 import Certificate
|
||||||
|
from tempfile import TemporaryDirectory
|
||||||
|
|
||||||
from nucypher.blockchain.eth.actors import StakeHolder
|
from nucypher.blockchain.eth.actors import StakeHolder
|
||||||
from nucypher.blockchain.eth.networks import NetworksInventory
|
|
||||||
from nucypher.blockchain.eth.signers import Signer
|
|
||||||
from nucypher.config.constants import (
|
from nucypher.config.constants import (
|
||||||
DEFAULT_CONFIG_ROOT,
|
DEFAULT_CONFIG_ROOT,
|
||||||
NUCYPHER_ENVVAR_WORKER_ETH_PASSWORD,
|
NUCYPHER_ENVVAR_WORKER_ETH_PASSWORD,
|
||||||
|
@ -328,9 +326,7 @@ class StakeHolderConfiguration(CharacterConfiguration):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def dynamic_payload(self) -> dict:
|
def dynamic_payload(self) -> dict:
|
||||||
testnet = self.domain != NetworksInventory.MAINNET
|
payload = dict(registry=self.registry, signer=self.signer)
|
||||||
signer = Signer.from_signer_uri(self.signer_uri, testnet=testnet)
|
|
||||||
payload = dict(registry=self.registry, signer=signer)
|
|
||||||
return payload
|
return payload
|
||||||
|
|
||||||
def _setup_node_storage(self, node_storage=None) -> None:
|
def _setup_node_storage(self, node_storage=None) -> None:
|
||||||
|
|
|
@ -14,7 +14,7 @@ GNU Affero General Public License for more details.
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
|
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
from decimal import Decimal
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
@ -26,11 +26,11 @@ from constant_sorrow.constants import (
|
||||||
NO_KEYRING_ATTACHED,
|
NO_KEYRING_ATTACHED,
|
||||||
UNINITIALIZED_CONFIGURATION
|
UNINITIALIZED_CONFIGURATION
|
||||||
)
|
)
|
||||||
|
from decimal import Decimal
|
||||||
from eth_utils.address import is_checksum_address
|
from eth_utils.address import is_checksum_address
|
||||||
from tempfile import TemporaryDirectory
|
from tempfile import TemporaryDirectory
|
||||||
from typing import Callable, List, Union, Optional
|
from typing import Callable, List, Union, Optional
|
||||||
from umbral.signing import Signature
|
from umbral.signing import Signature
|
||||||
from web3 import Web3
|
|
||||||
|
|
||||||
from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory
|
from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory
|
||||||
from nucypher.blockchain.eth.networks import NetworksInventory
|
from nucypher.blockchain.eth.networks import NetworksInventory
|
||||||
|
|
|
@ -888,7 +888,7 @@ class Learner:
|
||||||
# TODO: This whole section is weird; sprouts down have any of these things.
|
# TODO: This whole section is weird; sprouts down have any of these things.
|
||||||
except sprout.StampNotSigned:
|
except sprout.StampNotSigned:
|
||||||
self.log.warn(f'Verification Failed - '
|
self.log.warn(f'Verification Failed - '
|
||||||
f'{sprout} stamp is unsigned.')
|
f'{sprout} {NOT_SIGNED}.')
|
||||||
|
|
||||||
except sprout.NotStaking:
|
except sprout.NotStaking:
|
||||||
self.log.warn(f'Verification Failed - '
|
self.log.warn(f'Verification Failed - '
|
||||||
|
|
|
@ -36,9 +36,7 @@ def staker(testerchain, agency, test_registry, deployer_transacting_power):
|
||||||
transacting_power=deployer_transacting_power,
|
transacting_power=deployer_transacting_power,
|
||||||
addresses=[staker_account],
|
addresses=[staker_account],
|
||||||
amount=DEVELOPMENT_TOKEN_AIRDROP_AMOUNT)
|
amount=DEVELOPMENT_TOKEN_AIRDROP_AMOUNT)
|
||||||
staker = Staker(checksum_address=staker_account,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
is_me=True,
|
|
||||||
transacting_power=staker_power,
|
transacting_power=staker_power,
|
||||||
registry=test_registry)
|
registry=test_registry)
|
||||||
return staker
|
return staker
|
||||||
|
|
|
@ -32,8 +32,7 @@ from nucypher.blockchain.eth.constants import NULL_ADDRESS
|
||||||
def test_create_bidder(testerchain, test_registry, agency, token_economics):
|
def test_create_bidder(testerchain, test_registry, agency, token_economics):
|
||||||
bidder_address = testerchain.unassigned_accounts[0]
|
bidder_address = testerchain.unassigned_accounts[0]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
registry=test_registry,
|
registry=test_registry,
|
||||||
transacting_power=tpower)
|
transacting_power=tpower)
|
||||||
assert bidder.checksum_address == bidder_address
|
assert bidder.checksum_address == bidder_address
|
||||||
|
@ -57,8 +56,7 @@ def test_bidding(testerchain, agency, token_economics, test_registry):
|
||||||
for i, bid in enumerate(initial_bids):
|
for i, bid in enumerate(initial_bids):
|
||||||
bidder_address = testerchain.client.accounts[i]
|
bidder_address = testerchain.client.accounts[i]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
transacting_power=tpower)
|
transacting_power=tpower)
|
||||||
|
|
||||||
|
@ -74,8 +72,7 @@ def test_cancel_bid(testerchain, agency, token_economics, test_registry):
|
||||||
|
|
||||||
bidder_address = testerchain.client.accounts[1]
|
bidder_address = testerchain.client.accounts[1]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
assert bidder.get_deposited_eth # Bid
|
assert bidder.get_deposited_eth # Bid
|
||||||
|
@ -91,8 +88,7 @@ def test_cancel_bid(testerchain, agency, token_economics, test_registry):
|
||||||
def test_get_remaining_work(testerchain, agency, token_economics, test_registry):
|
def test_get_remaining_work(testerchain, agency, token_economics, test_registry):
|
||||||
bidder_address = testerchain.client.accounts[0]
|
bidder_address = testerchain.client.accounts[0]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
remaining = bidder.remaining_work
|
remaining = bidder.remaining_work
|
||||||
|
@ -102,8 +98,7 @@ def test_get_remaining_work(testerchain, agency, token_economics, test_registry)
|
||||||
def test_verify_correctness_before_refund(testerchain, agency, token_economics, test_registry):
|
def test_verify_correctness_before_refund(testerchain, agency, token_economics, test_registry):
|
||||||
bidder_address = testerchain.client.accounts[0]
|
bidder_address = testerchain.client.accounts[0]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
||||||
|
@ -124,8 +119,7 @@ def test_verify_correctness_before_refund(testerchain, agency, token_economics,
|
||||||
def test_force_refund(testerchain, agency, token_economics, test_registry):
|
def test_force_refund(testerchain, agency, token_economics, test_registry):
|
||||||
bidder_address = testerchain.client.accounts[0]
|
bidder_address = testerchain.client.accounts[0]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
whales = bidder.get_whales()
|
whales = bidder.get_whales()
|
||||||
|
@ -139,8 +133,7 @@ def test_force_refund(testerchain, agency, token_economics, test_registry):
|
||||||
|
|
||||||
bidder_address = testerchain.client.accounts[1]
|
bidder_address = testerchain.client.accounts[1]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
||||||
|
@ -160,8 +153,7 @@ def test_force_refund(testerchain, agency, token_economics, test_registry):
|
||||||
def test_verify_correctness(testerchain, agency, token_economics, test_registry):
|
def test_verify_correctness(testerchain, agency, token_economics, test_registry):
|
||||||
bidder_address = testerchain.client.accounts[0]
|
bidder_address = testerchain.client.accounts[0]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
||||||
|
@ -180,8 +172,7 @@ def test_verify_correctness(testerchain, agency, token_economics, test_registry)
|
||||||
def test_withdraw_compensation(testerchain, agency, token_economics, test_registry):
|
def test_withdraw_compensation(testerchain, agency, token_economics, test_registry):
|
||||||
bidder_address = testerchain.client.accounts[12]
|
bidder_address = testerchain.client.accounts[12]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
worklock_agent = ContractAgency.get_agent(WorkLockAgent, registry=test_registry)
|
||||||
|
@ -195,8 +186,7 @@ def test_withdraw_compensation(testerchain, agency, token_economics, test_regist
|
||||||
def test_claim(testerchain, agency, token_economics, test_registry):
|
def test_claim(testerchain, agency, token_economics, test_registry):
|
||||||
bidder_address = testerchain.client.accounts[11]
|
bidder_address = testerchain.client.accounts[11]
|
||||||
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder_address, signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=bidder_address,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
staking_agent = ContractAgency.get_agent(StakingEscrowAgent, registry=test_registry)
|
staking_agent = ContractAgency.get_agent(StakingEscrowAgent, registry=test_registry)
|
||||||
|
|
|
@ -21,10 +21,9 @@ import json
|
||||||
import pytest
|
import pytest
|
||||||
import random
|
import random
|
||||||
|
|
||||||
from nucypher.blockchain.eth.signers.software import Web3Signer
|
|
||||||
from nucypher.blockchain.eth.actors import ContractAdministrator
|
from nucypher.blockchain.eth.actors import ContractAdministrator
|
||||||
from nucypher.crypto.powers import TransactingPower
|
from nucypher.blockchain.eth.signers.software import Web3Signer
|
||||||
from tests.constants import INSECURE_DEVELOPMENT_PASSWORD, NUMBER_OF_ALLOCATIONS_IN_TESTS
|
from tests.constants import NUMBER_OF_ALLOCATIONS_IN_TESTS
|
||||||
|
|
||||||
# Prevents TesterBlockchain to be picked up by py.test as a test class
|
# Prevents TesterBlockchain to be picked up by py.test as a test class
|
||||||
from tests.utils.blockchain import TesterBlockchain as _TesterBlockchain
|
from tests.utils.blockchain import TesterBlockchain as _TesterBlockchain
|
||||||
|
@ -33,13 +32,8 @@ from tests.utils.blockchain import TesterBlockchain as _TesterBlockchain
|
||||||
@pytest.mark.usefixtures('testerchain')
|
@pytest.mark.usefixtures('testerchain')
|
||||||
def test_rapid_deployment(token_economics, test_registry, tmpdir, get_random_checksum_address):
|
def test_rapid_deployment(token_economics, test_registry, tmpdir, get_random_checksum_address):
|
||||||
|
|
||||||
blockchain = _TesterBlockchain(eth_airdrop=False,
|
blockchain = _TesterBlockchain(eth_airdrop=False, test_accounts=4)
|
||||||
test_accounts=4)
|
|
||||||
|
|
||||||
# TODO: #1092 - TransactingPower
|
|
||||||
blockchain.transacting_power = TransactingPower(password=INSECURE_DEVELOPMENT_PASSWORD,
|
|
||||||
signer=Web3Signer(blockchain.client),
|
|
||||||
account=blockchain.etherbase_account)
|
|
||||||
deployer_address = blockchain.etherbase_account
|
deployer_address = blockchain.etherbase_account
|
||||||
|
|
||||||
administrator = ContractAdministrator(deployer_address=deployer_address,
|
administrator = ContractAdministrator(deployer_address=deployer_address,
|
||||||
|
|
|
@ -67,9 +67,7 @@ def test_investigator_requests_slashing(testerchain,
|
||||||
|
|
||||||
# Deposit: The staker deposits tokens in the StakingEscrow contract.
|
# Deposit: The staker deposits tokens in the StakingEscrow contract.
|
||||||
staker_tpower = TransactingPower(account=staker_account, signer=Web3Signer(testerchain.client))
|
staker_tpower = TransactingPower(account=staker_account, signer=Web3Signer(testerchain.client))
|
||||||
staker = Staker(checksum_address=staker_account,
|
staker = Staker(transacting_power=staker_tpower,
|
||||||
is_me=True,
|
|
||||||
transacting_power=staker_tpower,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
registry=test_registry)
|
registry=test_registry)
|
||||||
|
|
||||||
|
@ -91,8 +89,7 @@ def test_investigator_requests_slashing(testerchain,
|
||||||
bob_tpower = TransactingPower(account=bob_account, signer=Web3Signer(testerchain.client))
|
bob_tpower = TransactingPower(account=bob_account, signer=Web3Signer(testerchain.client))
|
||||||
investigator = Investigator(registry=test_registry,
|
investigator = Investigator(registry=test_registry,
|
||||||
transacting_power=bob_tpower,
|
transacting_power=bob_tpower,
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN)
|
||||||
checksum_address=bob_account)
|
|
||||||
ursula = mock_ursula(testerchain, worker_account, mocker=mocker)
|
ursula = mock_ursula(testerchain, worker_account, mocker=mocker)
|
||||||
|
|
||||||
# Let's create a bad cfrag
|
# Let's create a bad cfrag
|
||||||
|
|
|
@ -71,9 +71,7 @@ def test_adjudicator_slashes(agency,
|
||||||
|
|
||||||
# Deposit: The staker deposits tokens in the StakingEscrow contract.
|
# Deposit: The staker deposits tokens in the StakingEscrow contract.
|
||||||
tpower = TransactingPower(account=staker_account, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=staker_account, signer=Web3Signer(testerchain.client))
|
||||||
staker = Staker(checksum_address=staker_account,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
is_me=True,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
registry=test_registry,
|
registry=test_registry,
|
||||||
transacting_power=tpower)
|
transacting_power=tpower)
|
||||||
|
|
||||||
|
|
|
@ -130,10 +130,8 @@ def test_stake_in_idle_network(testerchain, token_economics, test_registry):
|
||||||
|
|
||||||
account = testerchain.stakers_accounts[0]
|
account = testerchain.stakers_accounts[0]
|
||||||
tpower = TransactingPower(account=account, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=account, signer=Web3Signer(testerchain.client))
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(transacting_power=tpower,
|
||||||
transacting_power=tpower,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
checksum_address=account,
|
|
||||||
registry=test_registry)
|
registry=test_registry)
|
||||||
|
|
||||||
# Since StakingEscrow hasn't been activated yet, deposit should work but making a commitment must fail
|
# Since StakingEscrow hasn't been activated yet, deposit should work but making a commitment must fail
|
||||||
|
|
|
@ -133,7 +133,6 @@ def test_collect_inflation_rewards(software_stakeholder, manual_worker, testerch
|
||||||
transacting_power=tpower,
|
transacting_power=tpower,
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
worker_address=manual_worker,
|
worker_address=manual_worker,
|
||||||
checksum_address=stake.staker_address,
|
|
||||||
registry=test_registry)
|
registry=test_registry)
|
||||||
|
|
||||||
# Wait out stake lock periods, manually make a commitment once per period.
|
# Wait out stake lock periods, manually make a commitment once per period.
|
||||||
|
|
|
@ -126,11 +126,9 @@ def test_run_felix(click_runner, testerchain, agency_local_registry):
|
||||||
recipient = testerchain.client.accounts[-1]
|
recipient = testerchain.client.accounts[-1]
|
||||||
staker_power = TransactingPower(account=recipient, signer=Web3Signer(testerchain.client))
|
staker_power = TransactingPower(account=recipient, signer=Web3Signer(testerchain.client))
|
||||||
|
|
||||||
staker = Staker(checksum_address=recipient,
|
staker = Staker(registry=agency_local_registry,
|
||||||
registry=agency_local_registry,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
transacting_power=staker_power,
|
transacting_power=staker_power)
|
||||||
is_me=True)
|
|
||||||
original_eth_balance = staker.eth_balance
|
original_eth_balance = staker.eth_balance
|
||||||
|
|
||||||
# Run the callbacks
|
# Run the callbacks
|
||||||
|
@ -142,11 +140,9 @@ def test_run_felix(click_runner, testerchain, agency_local_registry):
|
||||||
|
|
||||||
def confirm_airdrop(_results):
|
def confirm_airdrop(_results):
|
||||||
recipient = testerchain.client.accounts[-1]
|
recipient = testerchain.client.accounts[-1]
|
||||||
staker = Staker(checksum_address=recipient,
|
staker = Staker(registry=agency_local_registry,
|
||||||
registry=agency_local_registry,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
transacting_power=staker_power,
|
transacting_power=staker_power)
|
||||||
is_me=True)
|
|
||||||
|
|
||||||
assert staker.token_balance == NU(45000, 'NU')
|
assert staker.token_balance == NU(45000, 'NU')
|
||||||
|
|
||||||
|
|
|
@ -232,10 +232,8 @@ def test_refund(click_runner, testerchain, agency_local_registry, token_economic
|
||||||
|
|
||||||
# Bidder is now STAKER. Bond a worker.
|
# Bidder is now STAKER. Bond a worker.
|
||||||
tpower = TransactingPower(account=bidder, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=bidder, signer=Web3Signer(testerchain.client))
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(transacting_power=tpower,
|
||||||
transacting_power=tpower,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
checksum_address=bidder,
|
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
receipt = staker.bond_worker(worker_address=worker_address)
|
receipt = staker.bond_worker(worker_address=worker_address)
|
||||||
assert receipt['status'] == 1
|
assert receipt['status'] == 1
|
||||||
|
@ -284,8 +282,7 @@ def test_participant_status(click_runner, testerchain, agency_local_registry, to
|
||||||
|
|
||||||
tpower = TransactingPower(account=testerchain.client.accounts[2],
|
tpower = TransactingPower(account=testerchain.client.accounts[2],
|
||||||
signer=Web3Signer(testerchain.client))
|
signer=Web3Signer(testerchain.client))
|
||||||
bidder = Bidder(checksum_address=testerchain.client.accounts[2],
|
bidder = Bidder(transacting_power=tpower,
|
||||||
transacting_power=tpower,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
|
|
||||||
|
|
|
@ -193,8 +193,7 @@ def test_stake_prolong(click_runner,
|
||||||
'--staking-address', manual_staker,
|
'--staking-address', manual_staker,
|
||||||
'--force')
|
'--force')
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
staker.refresh_stakes()
|
staker.refresh_stakes()
|
||||||
|
@ -345,8 +344,7 @@ def test_stake_bond_worker(click_runner,
|
||||||
catch_exceptions=False)
|
catch_exceptions=False)
|
||||||
assert result.exit_code == 0
|
assert result.exit_code == 0
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
assert staker.worker_address == manual_worker
|
assert staker.worker_address == manual_worker
|
||||||
|
@ -420,8 +418,7 @@ def test_stake_restake(click_runner,
|
||||||
agency_local_registry,
|
agency_local_registry,
|
||||||
stakeholder_configuration_file_location):
|
stakeholder_configuration_file_location):
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
assert staker.is_restaking
|
assert staker.is_restaking
|
||||||
|
@ -475,8 +472,7 @@ def test_stake_winddown(click_runner,
|
||||||
agency_local_registry,
|
agency_local_registry,
|
||||||
stakeholder_configuration_file_location):
|
stakeholder_configuration_file_location):
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
assert not staker.is_winding_down
|
assert not staker.is_winding_down
|
||||||
|
@ -517,8 +513,7 @@ def test_stake_snapshots(click_runner,
|
||||||
agency_local_registry,
|
agency_local_registry,
|
||||||
stakeholder_configuration_file_location):
|
stakeholder_configuration_file_location):
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
assert staker.is_taking_snapshots
|
assert staker.is_taking_snapshots
|
||||||
|
@ -572,8 +567,7 @@ def test_collect_rewards_integration(click_runner,
|
||||||
staker_address = manual_staker
|
staker_address = manual_staker
|
||||||
worker_address = manual_worker
|
worker_address = manual_worker
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=staker_address,
|
checksum_address=staker_address,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
staker.refresh_stakes()
|
staker.refresh_stakes()
|
||||||
|
@ -739,8 +733,7 @@ def test_stake_unbond_worker(click_runner,
|
||||||
stakeholder_configuration_file_location):
|
stakeholder_configuration_file_location):
|
||||||
testerchain.time_travel(periods=1)
|
testerchain.time_travel(periods=1)
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
|
|
||||||
|
@ -759,8 +752,7 @@ def test_stake_unbond_worker(click_runner,
|
||||||
catch_exceptions=False)
|
catch_exceptions=False)
|
||||||
assert result.exit_code == 0
|
assert result.exit_code == 0
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
|
|
||||||
|
@ -775,8 +767,7 @@ def test_set_min_rate(click_runner,
|
||||||
|
|
||||||
_minimum, _default, maximum = FEE_RATE_RANGE
|
_minimum, _default, maximum = FEE_RATE_RANGE
|
||||||
min_rate = maximum - 1
|
min_rate = maximum - 1
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
assert staker.raw_min_fee_rate == 0
|
assert staker.raw_min_fee_rate == 0
|
||||||
|
@ -813,8 +804,7 @@ def test_mint(click_runner,
|
||||||
stakeholder_configuration_file_location):
|
stakeholder_configuration_file_location):
|
||||||
|
|
||||||
testerchain.time_travel(periods=2)
|
testerchain.time_travel(periods=2)
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(domain=TEMPORARY_DOMAIN,
|
||||||
domain=TEMPORARY_DOMAIN,
|
|
||||||
checksum_address=manual_staker,
|
checksum_address=manual_staker,
|
||||||
registry=agency_local_registry)
|
registry=agency_local_registry)
|
||||||
assert staker.mintable_periods() > 0
|
assert staker.mintable_periods() > 0
|
||||||
|
|
|
@ -58,7 +58,7 @@ def test_blockchain_ursula_stamp_verification_tolerance(blockchain_ursulas, mock
|
||||||
assert len(warnings) == 1
|
assert len(warnings) == 1
|
||||||
warning = warnings[0]['log_format']
|
warning = warnings[0]['log_format']
|
||||||
assert str(unsigned) in warning
|
assert str(unsigned) in warning
|
||||||
assert "stamp is unsigned" in warning # TODO: Cleanup logging templates
|
assert "Verification Failed" in warning # TODO: Cleanup logging templates
|
||||||
|
|
||||||
# TODO: Buckets! #567
|
# TODO: Buckets! #567
|
||||||
# assert unsigned not in lonely_blockchain_learner.known_nodes
|
# assert unsigned not in lonely_blockchain_learner.known_nodes
|
||||||
|
@ -102,9 +102,6 @@ def test_invalid_workers_tolerance(testerchain,
|
||||||
amount = token_economics.minimum_allowed_locked
|
amount = token_economics.minimum_allowed_locked
|
||||||
periods = token_economics.minimum_locked_periods
|
periods = token_economics.minimum_locked_periods
|
||||||
|
|
||||||
# Mock Powerup consumption (Staker)
|
|
||||||
testerchain.transacting_power = TransactingPower(account=idle_staker.checksum_address)
|
|
||||||
|
|
||||||
idle_staker.initialize_stake(amount=amount, lock_periods=periods)
|
idle_staker.initialize_stake(amount=amount, lock_periods=periods)
|
||||||
|
|
||||||
# Stake starts next period (or else signature validation will fail)
|
# Stake starts next period (or else signature validation will fail)
|
||||||
|
@ -138,8 +135,6 @@ def test_invalid_workers_tolerance(testerchain,
|
||||||
# The stake period has ended, and the staker wants her tokens back ("when lambo?").
|
# The stake period has ended, and the staker wants her tokens back ("when lambo?").
|
||||||
# She withdraws up to the last penny (well, last nunit, actually).
|
# She withdraws up to the last penny (well, last nunit, actually).
|
||||||
|
|
||||||
# Mock Powerup consumption (Staker)
|
|
||||||
testerchain.transacting_power = TransactingPower(account=idle_staker.checksum_address)
|
|
||||||
idle_staker.mint()
|
idle_staker.mint()
|
||||||
testerchain.time_travel(periods=1)
|
testerchain.time_travel(periods=1)
|
||||||
i_want_it_all = staking_agent.owned_tokens(idle_staker.checksum_address)
|
i_want_it_all = staking_agent.owned_tokens(idle_staker.checksum_address)
|
||||||
|
|
|
@ -517,10 +517,6 @@ def testerchain(_testerchain) -> TesterBlockchain:
|
||||||
testerchain.log.info("Airdropped {} ETH {} -> {}".format(eth_amount, tx['from'], tx['to']))
|
testerchain.log.info("Airdropped {} ETH {} -> {}".format(eth_amount, tx['from'], tx['to']))
|
||||||
|
|
||||||
BlockchainInterfaceFactory.register_interface(interface=testerchain, force=True)
|
BlockchainInterfaceFactory.register_interface(interface=testerchain, force=True)
|
||||||
# Mock TransactingPower Consumption (Deployer)
|
|
||||||
testerchain.transacting_power = TransactingPower(password=INSECURE_DEVELOPMENT_PASSWORD,
|
|
||||||
signer=Web3Signer(client=testerchain.client),
|
|
||||||
account=testerchain.etherbase_account)
|
|
||||||
yield testerchain
|
yield testerchain
|
||||||
|
|
||||||
|
|
||||||
|
@ -542,10 +538,6 @@ def deployer_transacting_power(testerchain):
|
||||||
|
|
||||||
|
|
||||||
def _make_agency(testerchain, test_registry, token_economics, deployer_transacting_power):
|
def _make_agency(testerchain, test_registry, token_economics, deployer_transacting_power):
|
||||||
"""
|
|
||||||
Launch the big three contracts on provided chain,
|
|
||||||
make agents for each and return them.
|
|
||||||
"""
|
|
||||||
|
|
||||||
transacting_power = deployer_transacting_power
|
transacting_power = deployer_transacting_power
|
||||||
|
|
||||||
|
@ -608,10 +600,7 @@ def agency_local_registry(testerchain, agency, test_registry):
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def stakers(testerchain, agency, token_economics, test_registry, deployer_transacting_power):
|
def stakers(testerchain, agency, token_economics, test_registry, deployer_transacting_power):
|
||||||
token_agent = ContractAgency.get_agent(NucypherTokenAgent, registry=test_registry)
|
token_agent = ContractAgency.get_agent(NucypherTokenAgent, registry=test_registry)
|
||||||
staking_agent = ContractAgency.get_agent(StakingEscrowAgent, registry=test_registry)
|
|
||||||
|
|
||||||
blockchain = token_agent.blockchain
|
blockchain = token_agent.blockchain
|
||||||
|
|
||||||
token_airdrop(transacting_power=deployer_transacting_power,
|
token_airdrop(transacting_power=deployer_transacting_power,
|
||||||
addresses=blockchain.stakers_accounts,
|
addresses=blockchain.stakers_accounts,
|
||||||
token_agent=token_agent,
|
token_agent=token_agent,
|
||||||
|
@ -622,10 +611,8 @@ def stakers(testerchain, agency, token_economics, test_registry, deployer_transa
|
||||||
tpower = TransactingPower(account=account, signer=Web3Signer(testerchain.client))
|
tpower = TransactingPower(account=account, signer=Web3Signer(testerchain.client))
|
||||||
tpower.unlock(password=INSECURE_DEVELOPMENT_PASSWORD)
|
tpower.unlock(password=INSECURE_DEVELOPMENT_PASSWORD)
|
||||||
|
|
||||||
staker = Staker(is_me=True,
|
staker = Staker(transacting_power=tpower,
|
||||||
transacting_power=tpower,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
checksum_address=account,
|
|
||||||
registry=test_registry)
|
registry=test_registry)
|
||||||
|
|
||||||
amount = MIN_STAKE_FOR_TESTS + random.randrange(BONUS_TOKENS_FOR_TESTS)
|
amount = MIN_STAKE_FOR_TESTS + random.randrange(BONUS_TOKENS_FOR_TESTS)
|
||||||
|
@ -694,10 +681,8 @@ def idle_staker(testerchain, agency, test_registry):
|
||||||
amount=DEVELOPMENT_TOKEN_AIRDROP_AMOUNT)
|
amount=DEVELOPMENT_TOKEN_AIRDROP_AMOUNT)
|
||||||
|
|
||||||
# Prepare idle staker
|
# Prepare idle staker
|
||||||
idle_staker = Staker(is_me=True,
|
idle_staker = Staker(transacting_power=transacting_power,
|
||||||
transacting_power=transacting_power,
|
|
||||||
domain=TEMPORARY_DOMAIN,
|
domain=TEMPORARY_DOMAIN,
|
||||||
checksum_address=idle_staker_account,
|
|
||||||
blockchain=testerchain)
|
blockchain=testerchain)
|
||||||
yield idle_staker
|
yield idle_staker
|
||||||
|
|
||||||
|
|
|
@ -60,8 +60,7 @@ def surrogate_transacting_power(mock_testerchain):
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def surrogate_bidder(mock_testerchain, test_registry, mock_worklock_agent, surrogate_transacting_power):
|
def surrogate_bidder(mock_testerchain, test_registry, mock_worklock_agent, surrogate_transacting_power):
|
||||||
bidder = Bidder(checksum_address=surrogate_transacting_power.account,
|
bidder = Bidder(registry=test_registry,
|
||||||
registry=test_registry,
|
|
||||||
transacting_power=surrogate_transacting_power,
|
transacting_power=surrogate_transacting_power,
|
||||||
domain=TEMPORARY_DOMAIN)
|
domain=TEMPORARY_DOMAIN)
|
||||||
return bidder
|
return bidder
|
||||||
|
|
Loading…
Reference in New Issue