nucypher/tests/constants.py

187 lines
4.2 KiB
Python

import string
import tempfile
from datetime import datetime
from pathlib import Path
from random import SystemRandom
from hexbytes import HexBytes
from web3 import Web3
from nucypher.blockchain.eth.domains import ChainInfo, TACoDomain
from nucypher.blockchain.eth.token import NU
from nucypher.config.constants import (
NUCYPHER_ENVVAR_KEYSTORE_PASSWORD,
NUCYPHER_ENVVAR_OPERATOR_ETH_PASSWORD,
TEMPORARY_DOMAIN_NAME,
)
#
# Contracts
#
MOCK_STAKING_CONTRACT_NAME = "ThresholdStakingForTACoApplicationMock"
RITUAL_TOKEN = "RitualToken"
T_TOKEN = "TToken"
TACO_CHILD_APPLICATION = "TACoChildApplication"
CONDITION_NFT = "ConditionNFT"
GLOBAL_ALLOW_LIST = "GlobalAllowList"
#
# Ursula
#
# Ursulas (Operators) and Staking Providers have their own account
NUMBER_OF_ETH_TEST_ACCOUNTS = 30
#
# Local Signer Keystore
#
KEYFILE_NAME_TEMPLATE = 'UTC--2020-{month}-21T03-42-07.869432648Z--{address}'
MOCK_KEYSTORE_PATH = '/home/fakeMcfakeson/.ethereum/llamanet/keystore/'
MOCK_SIGNER_URI = f'keystore://{MOCK_KEYSTORE_PATH}'
NUMBER_OF_MOCK_KEYSTORE_ACCOUNTS = NUMBER_OF_ETH_TEST_ACCOUNTS
#
# Testerchain
#
ONE_YEAR_IN_SECONDS = ((60 * 60) * 24) * 365
DEVELOPMENT_TOKEN_AIRDROP_AMOUNT = NU(1_000_000, 'NU')
MIN_STAKE_FOR_TESTS = NU(750_000, 'NU').to_units()
BONUS_TOKENS_FOR_TESTS = NU(150_000, 'NU').to_units()
DEVELOPMENT_ETH_AIRDROP_AMOUNT = int(Web3().to_wei(100, 'ether'))
NUMBER_OF_ALLOCATIONS_IN_TESTS = 50 # TODO: Move to constants
TESTERCHAIN_CHAIN_ID = 131277322940537
TESTERCHAIN_CHAIN_INFO = ChainInfo(131277322940537, "eth-tester")
TEMPORARY_DOMAIN = TACoDomain(
name=TEMPORARY_DOMAIN_NAME,
eth_chain=TESTERCHAIN_CHAIN_INFO,
polygon_chain=TESTERCHAIN_CHAIN_INFO,
condition_chains=(TESTERCHAIN_CHAIN_INFO,),
)
#
# Insecure Secrets
#
__valid_password_chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
INSECURE_DEVELOPMENT_PASSWORD = ''.join(SystemRandom().choice(__valid_password_chars) for _ in range(32))
#
# Known Enrico signer
#
# private key for wallet address '0x070a85eD1Ddb44ecD07e746235bE0B959ff5b30A'
DEFAULT_TEST_ENRICO_PRIVATE_KEY = HexBytes(
"0x900edb9e8214b2353f82aa195e915128f419a92cfb8bbc0f4784f10ef4112b86"
)
#
# Temporary Directories and Files
#
BASE_TEMP_DIR = Path(tempfile.gettempdir())
BASE_TEMP_PREFIX = 'nucypher-tmp-'
DATETIME_FORMAT = "%Y-%m-%d_%H-%M-%S.%f"
MOCK_CUSTOM_INSTALLATION_PATH = BASE_TEMP_DIR / f'{BASE_TEMP_PREFIX}test-custom-{datetime.now().strftime(DATETIME_FORMAT)}'
MOCK_CUSTOM_INSTALLATION_PATH_2 = BASE_TEMP_DIR / f'{BASE_TEMP_PREFIX}test-custom-2-{datetime.now().strftime(DATETIME_FORMAT)}'
MOCK_REGISTRY_FILEPATH = BASE_TEMP_DIR / f'{BASE_TEMP_PREFIX}mock-registry-{datetime.now().strftime(DATETIME_FORMAT)}.json'
GETH_DEV_URI = f'ipc://{BASE_TEMP_DIR}/geth.ipc' # Standard IPC path for `geth --dev`
PYEVM_DEV_URI = "tester://pyevm"
TEST_ETH_PROVIDER_URI = PYEVM_DEV_URI # TODO: Pytest flag entry point?
TEST_POLYGON_PROVIDER_URI = PYEVM_DEV_URI # TODO: Introduce multichain separation tests
MOCK_ETH_PROVIDER_URI = 'tester://mock'
#
# Node Configuration
#
MOCK_POLICY_DEFAULT_THRESHOLD = 3
# These IP addresses are reserved for usage in documentation
# https://tools.ietf.org/html/rfc5737
MOCK_IP_ADDRESS = '192.0.2.100'
MOCK_IP_ADDRESS_2 = '203.0.113.20'
FEE_RATE_RANGE = (5, 10, 15)
#
# Configuration
#
MIN_OPERATOR_SECONDS = 60 * 60 * 24 # one day in seconds
#
# Gas
#
TEST_GAS_LIMIT = 8_000_000 # gas
PYEVM_GAS_LIMIT = TEST_GAS_LIMIT # TODO: move elsewhere (used to set pyevm gas limit in tests)?
#
# CLI
#
YES = 'Y'
YES_ENTER = YES + '\n'
NO = 'N'
NO_ENTER = NO + '\n'
FAKE_PASSWORD_CONFIRMED = '{password}\n{password}\n'.format(password=INSECURE_DEVELOPMENT_PASSWORD)
CLI_TEST_ENV = {NUCYPHER_ENVVAR_KEYSTORE_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD}
CLI_ENV = {NUCYPHER_ENVVAR_KEYSTORE_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD,
NUCYPHER_ENVVAR_OPERATOR_ETH_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD}
#
# Network
#
RPC_TOO_MANY_REQUESTS = {
"jsonrpc": "2.0",
"error": {
"code": 429,
"message": "Too many concurrent requests"
}
}
RPC_SUCCESSFUL_RESPONSE = {
"jsonrpc": "2.0",
"id": 1,
"result": "Geth/v1.9.20-stable-979fc968/linux-amd64/go1.15"
}