From 62d40bb7fec506c9e1d6f5a2bb73a97daef201c3 Mon Sep 17 00:00:00 2001 From: Yosuke Otosu Date: Wed, 4 Jan 2023 18:59:02 +0900 Subject: [PATCH] bump --- config.py | 185 +++++++++++------- requirements.lock | 43 ++-- requirements.txt | 18 +- tests/requirements.txt | 1 + ...ns_{token_address}_additional_issue_GET.py | 2 +- ..._bond_tokens_{token_address}_redeem_GET.py | 2 +- ...ns_{token_address}_additional_issue_GET.py | 2 +- ...share_tokens_{token_address}_redeem_GET.py | 2 +- 8 files changed, 149 insertions(+), 106 deletions(-) diff --git a/config.py b/config.py index f9ce4ee6..fafb39ec 100644 --- a/config.py +++ b/config.py @@ -20,11 +20,19 @@ import os import configparser -# Global Config SERVER_NAME = 'ibet-Prime' -APP_ENV = os.environ.get('APP_ENV') or 'local' + +#################################################### +# Basic settings +#################################################### +# System timezone for REST API +TZ = os.environ.get("TZ") or "Asia/Tokyo" + +# Blockchain network NETWORK = os.environ.get("NETWORK") or "IBET" # IBET or IBETFIN +# Environment-specific settings +APP_ENV = os.environ.get('APP_ENV') or 'local' if APP_ENV != "live": INI_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), f"conf/{APP_ENV}.ini") else: @@ -35,10 +43,10 @@ CONFIG = configparser.ConfigParser() CONFIG.read(INI_FILE) -# Logging -LOG_LEVEL = CONFIG['logging']['level'] -AUTH_LOGFILE = os.environ.get('AUTH_LOGFILE') or '/dev/stdout' -ACCESS_LOGFILE = os.environ.get('ACCESS_LOGFILE') or '/dev/stdout' + +#################################################### +# Server settings +#################################################### # Database if 'pytest' in sys.modules: # for unit test @@ -50,13 +58,59 @@ DATABASE_SCHEMA = os.environ.get('DATABASE_SCHEMA') DB_ECHO = True if CONFIG['database']['echo'] == 'yes' else False -# Blockchain +# Logging +LOG_LEVEL = CONFIG['logging']['level'] +AUTH_LOGFILE = os.environ.get('AUTH_LOGFILE') or '/dev/stdout' +ACCESS_LOGFILE = os.environ.get('ACCESS_LOGFILE') or '/dev/stdout' + + +#################################################### +# Blockchain monitoring settings +#################################################### +# Block synchronization monitoring interval [sec] +BLOCK_SYNC_STATUS_SLEEP_INTERVAL = int(os.environ.get("BLOCK_SYNC_STATUS_SLEEP_INTERVAL")) \ + if os.environ.get("BLOCK_SYNC_STATUS_SLEEP_INTERVAL") else 3 +# Number of monitoring data period +BLOCK_SYNC_STATUS_CALC_PERIOD = int(os.environ.get("BLOCK_SYNC_STATUS_CALC_PERIOD")) \ + if os.environ.get("BLOCK_SYNC_STATUS_CALC_PERIOD") else 3 +# Threshold for remaining block synchronization +# - Threshold for difference between highestBlock and currentBlock +BLOCK_SYNC_REMAINING_THRESHOLD = int(os.environ.get("BLOCK_SYNC_REMAINING_THRESHOLD", 2)) +# Threshold of block generation speed for judging synchronous stop [%] +if APP_ENV == "local": + BLOCK_GENERATION_SPEED_THRESHOLD = int(os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD")) \ + if os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD") else 0 +else: + BLOCK_GENERATION_SPEED_THRESHOLD = int(os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD")) \ + if os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD") else 20 + + +#################################################### +# Web3 settings +#################################################### +# Provider WEB3_HTTP_PROVIDER = os.environ.get('WEB3_HTTP_PROVIDER') or 'http://localhost:8545' WEB3_HTTP_PROVIDER_STANDBY = [node.strip() for node in os.environ.get("WEB3_HTTP_PROVIDER_STANDBY").split(",")] \ if os.environ.get("WEB3_HTTP_PROVIDER_STANDBY") else [] + +# Chain ID CHAIN_ID = int(os.environ.get("CHAIN_ID")) if os.environ.get("CHAIN_ID") else 2017 + +# Gas limit TX_GAS_LIMIT = int(os.environ.get("TX_GAS_LIMIT")) if os.environ.get("TX_GAS_LIMIT") else 6000000 + +WEB3_REQUEST_RETRY_COUNT = int(os.environ.get("WEB3_REQUEST_RETRY_COUNT")) if os.environ.get( + "WEB3_REQUEST_RETRY_COUNT") else 3 +WEB3_REQUEST_WAIT_TIME = int(os.environ.get("WEB3_REQUEST_WAIT_TIME")) \ + if os.environ.get("WEB3_REQUEST_WAIT_TIME") else BLOCK_SYNC_STATUS_SLEEP_INTERVAL # Same batch interval + + +#################################################### +# Token settings +#################################################### +# Default addresses ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" + TOKEN_LIST_CONTRACT_ADDRESS = os.environ.get('TOKEN_LIST_CONTRACT_ADDRESS') E2E_MESSAGING_CONTRACT_ADDRESS = os.environ.get('E2E_MESSAGING_CONTRACT_ADDRESS') @@ -64,15 +118,56 @@ TOKEN_CACHE = False if os.environ.get("TOKEN_CACHE") == "0" else True TOKEN_CACHE_TTL = int(os.environ.get("TOKEN_CACHE_TTL")) if os.environ.get("TOKEN_CACHE_TTL") else 43200 + +#################################################### +# Batch settings +#################################################### # Indexer INDEXER_SYNC_INTERVAL = 10 INDEXER_BLOCK_LOT_MAX_SIZE = int(os.environ.get("INDEXER_BLOCK_LOT_MAX_SIZE")) \ if os.environ.get("INDEXER_BLOCK_LOT_MAX_SIZE") else 1000000 -# AWS Region -AWS_REGION_NAME = os.environ.get("AWS_REGION_NAME") or "ap-northeast-1" +# Processor +# Bulk Transfer +BULK_TRANSFER_INTERVAL = int(os.environ.get("BULK_TRANSFER_INTERVAL")) \ + if os.environ.get("BULK_TRANSFER_INTERVAL") else 10 +BULK_TRANSFER_WORKER_COUNT = int(os.environ.get("BULK_TRANSFER_WORKER_COUNT")) \ + if os.environ.get("BULK_TRANSFER_WORKER_COUNT") else 5 +BULK_TRANSFER_WORKER_LOT_SIZE = int(os.environ.get("BULK_TRANSFER_WORKER_LOT_SIZE")) \ + if os.environ.get("BULK_TRANSFER_WORKER_LOT_SIZE") else 5 -# Password Policy +# Batch Register Personal Info +BATCH_REGISTER_PERSONAL_INFO_INTERVAL = int(os.environ.get("BATCH_REGISTER_PERSONAL_INFO_INTERVAL")) \ + if os.environ.get("BATCH_REGISTER_PERSONAL_INFO_INTERVAL") else 60 +BATCH_REGISTER_PERSONAL_INFO_WORKER_COUNT = int(os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_COUNT")) \ + if os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_COUNT") else 1 +BATCH_REGISTER_PERSONAL_INFO_WORKER_LOT_SIZE = int(os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_LOT_SIZE")) \ + if os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_LOT_SIZE") else 2 + +# Scheduled Events +SCHEDULED_EVENTS_INTERVAL = int(os.environ.get("SCHEDULED_EVENTS_INTERVAL")) \ + if os.environ.get("SCHEDULED_EVENTS_INTERVAL") else 60 +SCHEDULED_EVENTS_WORKER_COUNT = int(os.environ.get("SCHEDULED_EVENTS_WORKER_COUNT")) \ + if os.environ.get("SCHEDULED_EVENTS_WORKER_COUNT") else 5 + +# Update Token +UPDATE_TOKEN_INTERVAL = int(os.environ.get("UPDATE_TOKEN_INTERVAL")) \ + if os.environ.get("UPDATE_TOKEN_INTERVAL") else 10 + +# Create UTXO +CREATE_UTXO_INTERVAL = int(os.environ.get("CREATE_UTXO_INTERVAL")) \ + if os.environ.get("CREATE_UTXO_INTERVAL") else 600 +CREATE_UTXO_BLOCK_LOT_MAX_SIZE = int(os.environ.get("CREATE_UTXO_BLOCK_LOT_MAX_SIZE")) \ + if os.environ.get("CREATE_UTXO_BLOCK_LOT_MAX_SIZE") else 10000 + +# Rotate E2E Messaging RSA Key +ROTATE_E2E_MESSAGING_RSA_KEY_INTERVAL = int(os.environ.get("ROTATE_E2E_MESSAGING_RSA_KEY_INTERVAL")) \ + if os.environ.get("ROTATE_E2E_MESSAGING_RSA_KEY_INTERVAL") else 10 + + +#################################################### +# Password settings +#################################################### # NOTE: # Set PATTERN with a regular expression. # e.g.) ^(?=.*?[a-z])(?=.*?[A-Z])[a-zA-Z]{10,}$ @@ -127,74 +222,24 @@ E2EE_RSA_PASSPHRASE = os.environ.get("E2EE_RSA_PASSPHRASE") E2EE_REQUEST_ENABLED = False if os.environ.get("E2EE_REQUEST_ENABLED") == "0" else True -# Bulk Transfer -BULK_TRANSFER_INTERVAL = int(os.environ.get("BULK_TRANSFER_INTERVAL")) \ - if os.environ.get("BULK_TRANSFER_INTERVAL") else 10 -BULK_TRANSFER_WORKER_COUNT = int(os.environ.get("BULK_TRANSFER_WORKER_COUNT")) \ - if os.environ.get("BULK_TRANSFER_WORKER_COUNT") else 5 -BULK_TRANSFER_WORKER_LOT_SIZE = int(os.environ.get("BULK_TRANSFER_WORKER_LOT_SIZE")) \ - if os.environ.get("BULK_TRANSFER_WORKER_LOT_SIZE") else 5 -# Batch Register Personal Info -BATCH_REGISTER_PERSONAL_INFO_INTERVAL = int(os.environ.get("BATCH_REGISTER_PERSONAL_INFO_INTERVAL")) \ - if os.environ.get("BATCH_REGISTER_PERSONAL_INFO_INTERVAL") else 60 -BATCH_REGISTER_PERSONAL_INFO_WORKER_COUNT = int(os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_COUNT")) \ - if os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_COUNT") else 1 -BATCH_REGISTER_PERSONAL_INFO_WORKER_LOT_SIZE = int(os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_LOT_SIZE")) \ - if os.environ.get("BATCH_REGISTER_PERSONAL_INFO_WORKER_LOT_SIZE") else 2 - -# System timezone for REST API -TZ = os.environ.get("TZ") or "Asia/Tokyo" - -# Scheduled Events -SCHEDULED_EVENTS_INTERVAL = int(os.environ.get("SCHEDULED_EVENTS_INTERVAL")) \ - if os.environ.get("SCHEDULED_EVENTS_INTERVAL") else 60 -SCHEDULED_EVENTS_WORKER_COUNT = int(os.environ.get("SCHEDULED_EVENTS_WORKER_COUNT")) \ - if os.environ.get("SCHEDULED_EVENTS_WORKER_COUNT") else 5 +#################################################### +# Blockchain explorer settings +#################################################### +# Blockchain Explorer +BC_EXPLORER_ENABLED = True if os.environ.get("BC_EXPLORER_ENABLED") == "1" else False -# Update Token -UPDATE_TOKEN_INTERVAL = int(os.environ.get("UPDATE_TOKEN_INTERVAL")) \ - if os.environ.get("UPDATE_TOKEN_INTERVAL") else 10 -# Block Sync Monitor -# monitoring interval(second) -BLOCK_SYNC_STATUS_SLEEP_INTERVAL = int(os.environ.get("BLOCK_SYNC_STATUS_SLEEP_INTERVAL")) \ - if os.environ.get("BLOCK_SYNC_STATUS_SLEEP_INTERVAL") else 3 -# number of monitoring data period -BLOCK_SYNC_STATUS_CALC_PERIOD = int(os.environ.get("BLOCK_SYNC_STATUS_CALC_PERIOD")) \ - if os.environ.get("BLOCK_SYNC_STATUS_CALC_PERIOD") else 3 -# Threshold for remaining block synchronization -# - Threshold for difference between highestBlock and currentBlock -BLOCK_SYNC_REMAINING_THRESHOLD = int(os.environ.get("BLOCK_SYNC_REMAINING_THRESHOLD", 2)) -# Threshold of block generation speed for judging synchronous stop(%) -if APP_ENV == "local": - BLOCK_GENERATION_SPEED_THRESHOLD = int(os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD")) \ - if os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD") else 0 -else: - BLOCK_GENERATION_SPEED_THRESHOLD = int(os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD")) \ - if os.environ.get("BLOCK_GENERATION_SPEED_THRESHOLD") else 20 -WEB3_REQUEST_RETRY_COUNT = int(os.environ.get("WEB3_REQUEST_RETRY_COUNT")) if os.environ.get( - "WEB3_REQUEST_RETRY_COUNT") else 3 -WEB3_REQUEST_WAIT_TIME = int(os.environ.get("WEB3_REQUEST_WAIT_TIME")) \ - if os.environ.get("WEB3_REQUEST_WAIT_TIME") else BLOCK_SYNC_STATUS_SLEEP_INTERVAL # Same batch interval +#################################################### +# Other settings +#################################################### +# AWS Region +AWS_REGION_NAME = os.environ.get("AWS_REGION_NAME") or "ap-northeast-1" # Random Bytes Generator AWS_KMS_GENERATE_RANDOM_ENABLED = True if os.environ.get("AWS_KMS_GENERATE_RANDOM_ENABLED") == "1" else False -# Create UTXO -CREATE_UTXO_INTERVAL = int(os.environ.get("CREATE_UTXO_INTERVAL")) \ - if os.environ.get("CREATE_UTXO_INTERVAL") else 600 -CREATE_UTXO_BLOCK_LOT_MAX_SIZE = int(os.environ.get("CREATE_UTXO_BLOCK_LOT_MAX_SIZE")) \ - if os.environ.get("CREATE_UTXO_BLOCK_LOT_MAX_SIZE") else 10000 - # File Upload # NOTE: (Reference information) WSGI server and app used by ibet-Prime has no request body size limit. MAX_UPLOAD_FILE_SIZE = int(os.environ.get("MAX_UPLOAD_FILE_SIZE")) \ if os.environ.get("MAX_UPLOAD_FILE_SIZE") else 100_000_000 - -# Rotate E2E Messaging RSA Key -ROTATE_E2E_MESSAGING_RSA_KEY_INTERVAL = int(os.environ.get("ROTATE_E2E_MESSAGING_RSA_KEY_INTERVAL")) \ - if os.environ.get("ROTATE_E2E_MESSAGING_RSA_KEY_INTERVAL") else 10 - -# Blockchain Explorer -BC_EXPLORER_ENABLED = True if os.environ.get("BC_EXPLORER_ENABLED") == "1" else False diff --git a/requirements.lock b/requirements.lock index d522394c..4f3c70a3 100644 --- a/requirements.lock +++ b/requirements.lock @@ -1,21 +1,20 @@ aiohttp==3.8.3 aiosignal==1.3.1 -alembic==1.5.6 +alembic==1.9.1 anyio==3.6.2 asn1crypto==1.5.1 async-timeout==4.0.2 -attrs==22.1.0 +attrs==22.2.0 base58==2.1.1 -bitarray==2.6.0 -boto3==1.17.12 -botocore==1.20.112 +bitarray==2.6.2 +boto3==1.26.42 +botocore==1.29.42 certifi==2022.12.7 cffi==1.15.1 -chardet==4.0.0 charset-normalizer==2.1.1 click==8.1.3 -coincurve==17.0.0 -cytoolz==0.12.0 +coincurve==18.0.0 +cytoolz==0.12.1 eth-abi==2.2.0 eth-account==0.5.9 eth-hash==0.3.3 @@ -24,46 +23,44 @@ eth-keys==0.3.4 eth-rlp==0.2.1 eth-typing==2.3.0 eth-utils==1.10.0 -fastapi==0.85.0 +fastapi==0.88.0 frozenlist==1.3.3 -greenlet==2.0.1 gunicorn==20.1.0 h11==0.14.0 hexbytes==0.3.0 -idna==2.10 +idna==3.4 ipfshttpclient==0.8.0a2 -jmespath==0.10.0 +jmespath==1.0.1 jsonschema==4.17.3 lru-dict==1.1.8 Mako==1.2.4 MarkupSafe==2.1.1 multiaddr==0.0.9 -multidict==6.0.3 +multidict==6.0.4 netaddr==0.8.0 parsimonious==0.8.1 protobuf==3.19.5 psycopg2-binary==2.9.3 pycparser==2.21 -pycryptodome==3.15.0 -pydantic==1.8.2 +pycryptodome==3.16.0 +pydantic==1.10.4 PyMySQL==1.0.2 -pyrsistent==0.19.2 +pyrsistent==0.19.3 python-dateutil==2.8.2 -python-editor==1.0.4 -pytz==2021.1 -requests==2.25.1 +pytz==2022.7 +requests==2.28.1 rlp==2.0.1 -s3transfer==0.3.7 +s3transfer==0.6.0 shared-memory-dict==0.5.0 six==1.16.0 sniffio==1.3.0 -SQLAlchemy==1.4.45 -starlette==0.20.4 +SQLAlchemy==1.4.46 +starlette==0.22.0 toolz==0.12.0 typing_extensions==4.4.0 urllib3==1.26.13 uvicorn==0.20.0 varint==1.0.2 -web3==5.31.1 +web3==5.31.3 websockets==9.1 yarl==1.8.2 diff --git a/requirements.txt b/requirements.txt index d013451e..936d60ee 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,17 +1,17 @@ -alembic==1.5.6 -boto3==1.17.12 -coincurve==17.0.0 +alembic==1.9.1 +boto3==1.26.42 +coincurve==18.0.0 eth-keyfile==0.5.1 eth-utils==1.10.0 -fastapi==0.85.0 +fastapi==0.88.0 gunicorn==20.1.0 psycopg2-binary==2.9.3 -pycryptodome==3.15.0 -pydantic==1.8.2 +pycryptodome==3.16.0 +pydantic==1.10.4 PyMySQL==1.0.2 -pytz==2021.1 -requests==2.25.1 +pytz==2022.7 +requests==2.28.1 shared-memory-dict==0.5.0 SQLAlchemy>=1.4,<1.5 uvicorn==0.20.0 -web3==5.31.1 +web3==5.31.3 diff --git a/tests/requirements.txt b/tests/requirements.txt index 5bc376ac..b4b921d7 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,3 +1,4 @@ +httpx==0.23.2 pytest==7.1.2 pytest-cov==3.0.0 PyYAML==5.4.1 diff --git a/tests/test_app_routers_bond_tokens_{token_address}_additional_issue_GET.py b/tests/test_app_routers_bond_tokens_{token_address}_additional_issue_GET.py index 39fea38b..1c341f62 100644 --- a/tests/test_app_routers_bond_tokens_{token_address}_additional_issue_GET.py +++ b/tests/test_app_routers_bond_tokens_{token_address}_additional_issue_GET.py @@ -234,7 +234,7 @@ def test_normal_3(self, client, db): resp = client.get( self.base_url.format(self.test_token_address), params={ - "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP, + "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP.value, "sort_order": 0 } ) diff --git a/tests/test_app_routers_bond_tokens_{token_address}_redeem_GET.py b/tests/test_app_routers_bond_tokens_{token_address}_redeem_GET.py index 8aeafe74..b9eda841 100644 --- a/tests/test_app_routers_bond_tokens_{token_address}_redeem_GET.py +++ b/tests/test_app_routers_bond_tokens_{token_address}_redeem_GET.py @@ -234,7 +234,7 @@ def test_normal_3(self, client, db): resp = client.get( self.base_url.format(self.test_token_address), params={ - "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP, + "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP.value, "sort_order": 0 } ) diff --git a/tests/test_app_routers_share_tokens_{token_address}_additional_issue_GET.py b/tests/test_app_routers_share_tokens_{token_address}_additional_issue_GET.py index d7f6c7d3..ed41d989 100644 --- a/tests/test_app_routers_share_tokens_{token_address}_additional_issue_GET.py +++ b/tests/test_app_routers_share_tokens_{token_address}_additional_issue_GET.py @@ -234,7 +234,7 @@ def test_normal_3(self, client, db): resp = client.get( self.base_url.format(self.test_token_address), params={ - "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP, + "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP.value, "sort_order": 0 } ) diff --git a/tests/test_app_routers_share_tokens_{token_address}_redeem_GET.py b/tests/test_app_routers_share_tokens_{token_address}_redeem_GET.py index 03c13565..9e711263 100644 --- a/tests/test_app_routers_share_tokens_{token_address}_redeem_GET.py +++ b/tests/test_app_routers_share_tokens_{token_address}_redeem_GET.py @@ -234,7 +234,7 @@ def test_normal_3(self, client, db): resp = client.get( self.base_url.format(self.test_token_address), params={ - "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP, + "sort_item": IDXIssueRedeemSortItem.BLOCK_TIMESTAMP.value, "sort_order": 0 } )