Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
15ef751
[scripts] Remove executable state
drcpu-github Feb 3, 2025
c0033e1
[api] Remove option to use SASL authentication in memcached instance …
drcpu-github Feb 3, 2025
9009df0
[blockchain] Differentiate between mainnet and testnet at a configura…
drcpu-github Feb 3, 2025
fcfb6e5
[blockchain] Create configuration class to store TOML config, WIP and…
drcpu-github Feb 4, 2025
fbeaba3
[api] Modify API blueprints to use BlockchainConfig
drcpu-github Feb 4, 2025
23f9b79
[blockchain] Read mockup WIP data from mockup database
drcpu-github Feb 5, 2025
b7fa204
[wip] Add functions to check activation of WIP0028 and wit/2
drcpu-github Feb 5, 2025
1fc9b8b
[blockchain] Move consensus constants to blockchain module
drcpu-github Feb 5, 2025
58fdfeb
[blockchain] Fix comparison bug in consensus constants
drcpu-github Feb 5, 2025
cfcae19
[schemas] Add validation exception for genesis block
drcpu-github Feb 5, 2025
be0b84c
[database] Add tables and indexes for stake and unstake transactions
drcpu-github Feb 6, 2025
edc2686
[database] Set autocommit to true to properly create database
drcpu-github Feb 6, 2025
a141e32
[database] Add HTTP-HEAD retrieve kind
drcpu-github Feb 6, 2025
a1f85c9
[blockchain] Calculate and store total transactions fees for a block …
drcpu-github Feb 8, 2025
d82159a
[database] Rework mockup database to use testnet data and move its cr…
drcpu-github Feb 9, 2025
15e13d3
[blockchain] Read consensus constants either from a database or mocku…
drcpu-github Feb 9, 2025
bb50ac0
[transactions] Move input / output calculations for commit transactio…
drcpu-github Feb 11, 2025
cf85af1
[tests] Remove unnecessary print statements
drcpu-github Feb 12, 2025
b17306b
[tests] Add generic function to test both mainnet and testnet address…
drcpu-github Feb 12, 2025
0ff5ef8
[tests] Improve test coverage and utilize generic_address_test function
drcpu-github Feb 12, 2025
4335e22
[blockchain] Add consensus constants for wit/2
drcpu-github Feb 15, 2025
0f469cb
[util] Adapt utility functions to calculate block rewards, timestamps…
drcpu-github Feb 15, 2025
4e415cf
[transactions] Implement stake and unstake transactions plus tests
drcpu-github Feb 16, 2025
e8b117a
[explorer] Adapt explorer timing to support change in block time when…
drcpu-github Feb 18, 2025
56c5254
[schemas] Update and make several schema validation checks configurab…
drcpu-github Feb 18, 2025
58ac441
[util] Add TooManyWitnesses error to RadonTranslator
drcpu-github Feb 18, 2025
28bd337
[tests] Update tests after migration to testnet-based mockup database
drcpu-github Feb 19, 2025
7a97b84
[blockchain] Fix is_wip_activate check with an activation epoch of 0
drcpu-github Feb 19, 2025
5cbbf53
[blockchain] Reimplement mint transaction to behave more like all oth…
drcpu-github Feb 19, 2025
c578fef
[blockchain] Allow transaction object to connect to the mockup databa…
drcpu-github Feb 19, 2025
46ddb90
[transactions] Fetch commit collateral from database since we cannot …
drcpu-github Feb 19, 2025
596ccd4
[schemas] Add HTTP-HEAD as a valid request type for a data request
drcpu-github Feb 20, 2025
015eb36
[transactions] Data request creators do not pay for the tally transac…
drcpu-github Feb 20, 2025
2f47ce7
[mockups] Add specialized array transform case to handle the absence …
drcpu-github Feb 20, 2025
5bf8628
[tests] Add tests for processing value transfers, data requests, comm…
drcpu-github Feb 21, 2025
d366466
[mockups] Only load required data into cache when requested to preven…
drcpu-github Feb 22, 2025
a495262
[tests] Merge all conftests files into one
drcpu-github Feb 22, 2025
79014f7
[api] Update search epoch endpoint and tests
drcpu-github Feb 22, 2025
1c4a19a
[api] Update the hash search endpoint and add extra tests
drcpu-github Feb 23, 2025
2eec7c1
[blockchain] Remove error_retry from function ConsensusConstants cons…
drcpu-github Feb 23, 2025
971882d
[api] Update post transaction endpoint to include stake / unstake tra…
drcpu-github Feb 24, 2025
816969f
[api] Update transacion mempool endpoint to include stake / unstake t…
drcpu-github Feb 24, 2025
925927a
[node] Implement new getBalance2 and getSupplyInfo2 RPC functions
drcpu-github Feb 24, 2025
4bfcb85
[api] Update supply info endpoint to include stake info and add tests
drcpu-github Feb 26, 2025
fa06883
[api] Update home endpoint and home caching script for wit/2 migratio…
drcpu-github Feb 26, 2025
9428a24
[blockchain] Remove redundant fields from data request and tally for …
drcpu-github Feb 28, 2025
ac81fdc
[mockups] Update status endpoint test data
drcpu-github Feb 28, 2025
747fdbd
[api] Implement stake and unstake views for address API endpoint
drcpu-github Feb 28, 2025
e93c613
[node] Implement queryStakes RPC
drcpu-github Mar 5, 2025
c6a91f6
[api] Implement endpoint to query the nonce to submit with an unstake…
drcpu-github Mar 5, 2025
ffeb14b
[api] Update API for address views related to the wit/2 transition an…
drcpu-github Mar 5, 2025
0ff19f3
[tests] Fix network tests for testnet data
drcpu-github Mar 6, 2025
bfe027d
[api] Adapt network mempool endpoint and tests for wit/2
drcpu-github Mar 6, 2025
0e20cd5
[tests] Fix TAPI-related tests
drcpu-github Mar 9, 2025
8120c20
[schemas] Adapt input / output validations to handle zero-value UTXO's
drcpu-github Mar 9, 2025
24a32a5
[api] Fix reading of incorrect poll interval config setting
drcpu-github Mar 10, 2025
eb4fbac
[api] Add network versions API endpoint, schemas and tests
drcpu-github Mar 10, 2025
8646ad5
[api] Add network stakes API endpoint, schemas and tests
drcpu-github Mar 10, 2025
9b6c926
[api] Add a stake-through-time and validator field to home stats
drcpu-github Mar 12, 2025
86c4f00
[address] Fix error checking when an address is not a validator or wi…
drcpu-github Mar 13, 2025
81e7616
[address] Add fee field to address stake view and fix incorrect input…
drcpu-github Mar 19, 2025
6b47ba8
[address] Add fee field to address unstake view
drcpu-github Mar 19, 2025
6d01be1
[address] Add extra direction (in, out, self) for stakes and unstakes
drcpu-github Mar 19, 2025
389b2b7
[misc] Use the correct configuration file when installing the cron jobs
drcpu-github Mar 26, 2025
6313491
[caching] Remove reputation-related code after it being deprecated by…
drcpu-github Mar 26, 2025
8d9797d
[util] Disable SQL statement preparation to prevent concurrency issues
drcpu-github Mar 30, 2025
e657137
[api] Fix check-if-cached statement by comparing with None as to cons…
drcpu-github Apr 2, 2025
ba363d0
[blockchain] Send update request to address caching process for stake…
drcpu-github Apr 2, 2025
afc64fc
[caching] Fix memcached-related bugs in the standalone address cachin…
drcpu-github Apr 2, 2025
ab5cda3
[caching] Improve logging in the address caching process
drcpu-github Apr 2, 2025
c6aed2c
[blockchain] Defer creating a connection to the node pool until neces…
drcpu-github Apr 4, 2025
2516a18
[blockchain] Fetch data request collateral and fee from the database …
drcpu-github Apr 4, 2025
0c7f1df
[schemas] Relax data request URL validation from a validated URL to a…
drcpu-github Apr 6, 2025
1c52605
[schemas] Add 'Unknown' type to DataRequestRetrieval kind
drcpu-github May 21, 2025
b5c6e36
[address] Return stake transactions for withdrawer when searching for…
drcpu-github May 21, 2025
3b456e6
[api] Update priority endpoint to include st and ut priorities
drcpu-github May 21, 2025
40b7b76
[transactions] Fix CBOR error translation for reveal transactions
drcpu-github Jun 5, 2025
b6cbb50
[explorer] Send update signal to cached views process for honest reve…
drcpu-github Sep 30, 2025
7fc9dc5
[blockchain] Add counts for stakes and unstakes to addresses table
drcpu-github Jan 10, 2026
6b61835
[blockchain] Add functionality to batch insert blocks during database…
drcpu-github Jan 10, 2026
4a809f2
[cron] Update install script
drcpu-github Jan 19, 2026
01d2201
[caching] Fix home stats script to deal with slow queries by initiali…
drcpu-github Jan 19, 2026
d63a813
[caching] Make the amount of epochs for which to build the staking ov…
drcpu-github Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ venv

analysis/*

explorer.toml
explorer.mainnet.toml
explorer.testnet.toml

**/*.lock

Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
files: api/|blockchain/|mockups/|schemas/|scripts/|tests/
files: create_*|api/|blockchain/|mockups/|schemas/|scripts/|tests/
repos:
- repo: https://github.com/PyCQA/isort
rev: 5.13.2
Expand Down
27 changes: 2 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,30 +44,7 @@ After installing memcached (see Dependencies), the memcached daemon will now hav
sudo vim /etc/memcached.conf
```

Increase the amount of memory in MB memcached can use by editing the value after the `-m` flag and at the bottom of the file add `-S` to enable SASL authentication. All other parameters can be kept at their default values.

Create the SASL configuration:
```
sudo mkdir /etc/sasl2
sudo vim /etc/sasl2/memcached.conf
```

Add below lines to the configuration file and save it:
```
mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2
```

Create a user for memcached and enter your password twice:
```
sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 <username>
```

Change the ownership of the SASL database so the memcache user can access it. Note that if you changed the memcache user in the `memcached.conf` file, you also need to modify it in below command:
```
sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
```
Increase the amount of memory in MB memcached can use by editing the value after the `-m` flag. All other parameters can be kept at their default values.

Restart the memcached daemon with the following command:
```
Expand All @@ -86,7 +63,7 @@ sudo journalctl -u memcached

You can fetch memcached statistics using below command.
```
memcstat --servers="127.0.0.1" --username <username> --password <password>
memcstat --servers="127.0.0.1"
```

## Creating the database
Expand Down
39 changes: 23 additions & 16 deletions api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import toml
from flask import Flask
from flask_smorest import Api, Blueprint

Expand All @@ -13,6 +12,8 @@
from api.blueprints.address.info_blueprint import address_info_blueprint
from api.blueprints.address.labels_blueprint import address_labels_blueprint
from api.blueprints.address.mints_blueprint import address_mints_blueprint
from api.blueprints.address.stakes_blueprint import address_stakes_blueprint
from api.blueprints.address.unstakes_blueprint import address_unstakes_blueprint
from api.blueprints.address.utxos_blueprint import address_utxos_blueprint
from api.blueprints.address.value_transfers_blueprint import (
address_value_transfers_blueprint,
Expand All @@ -23,13 +24,15 @@
from api.blueprints.network.balances_blueprint import network_balances_blueprint
from api.blueprints.network.blockchain_blueprint import network_blockchain_blueprint
from api.blueprints.network.mempool_blueprint import network_mempool_blueprint
from api.blueprints.network.reputation_blueprint import network_reputation_blueprint
from api.blueprints.network.stakes_blueprint import network_stakes_blueprint
from api.blueprints.network.statistics_blueprint import network_statistics_blueprint
from api.blueprints.network.supply_blueprint import network_supply_blueprint
from api.blueprints.network.tapi_blueprint import network_tapi_blueprint
from api.blueprints.network.version_blueprint import network_version_blueprint
from api.blueprints.search.epoch_blueprint import search_epoch_blueprint
from api.blueprints.search.hash_blueprint import search_hash_blueprint
from api.blueprints.transaction.mempool_blueprint import transaction_mempool_blueprint
from api.blueprints.transaction.nonce_blueprint import transaction_nonce_blueprint
from api.blueprints.transaction.priority_blueprint import transaction_priority_blueprint
from api.blueprints.transaction.send_blueprint import transaction_send_blueprint
from api.connect import (
Expand All @@ -38,12 +41,13 @@
create_database,
create_witnet_node,
)
from api.gunicorn_config import toml_config
from mockups.config import mock_config
from blockchain.config import BlockchainConfig
from blockchain.consensus_constants import ConsensusConstants
from blockchain.objects.wip import WIP
from util.logger import configure_rotating_logger


def create_app(mock=False):
def create_app(config, mockup=False):
# Create app
app = Flask(__name__)
app.config["JSON_SORT_KEYS"] = False
Expand All @@ -66,27 +70,26 @@ def create_app(mock=False):
"show-header": "false",
}

if not mock:
explorer_config = toml.load(toml_config)
else:
explorer_config = mock_config
app.config["explorer"] = explorer_config
# Create blockchain configuration object
BlockchainConfig.config = config
BlockchainConfig.wip = WIP(mockup=mockup)
BlockchainConfig.consensus_constants = ConsensusConstants(mockup=mockup)

# Setup logger
log_file = explorer_config["api"]["log"]["log_file"]
log_file = BlockchainConfig.config["api"]["log"]["log_file"]
app.extensions["logger"] = configure_rotating_logger("api", log_file, "info")

# Create connections to external resources
address_caching_server = create_address_caching_server(explorer_config, mock=mock)
address_caching_server = create_address_caching_server(mockup=mockup)
address_caching_server.init_app(app, "address_caching_server")

cache = create_cache(explorer_config, mock=mock)
cache = create_cache(mockup=mockup)
cache.init_app(app)

database = create_database(explorer_config, mock=mock)
database = create_database(mockup=mockup)
database.init_app(app)

witnet_node = create_witnet_node(explorer_config, mock=mock)
witnet_node = create_witnet_node(mockup=mockup)
witnet_node.init_app(app)

# Create top-level blueprints
Expand Down Expand Up @@ -123,7 +126,9 @@ def create_app(mock=False):
address_blueprint.register_blueprint(address_info_blueprint)
address_blueprint.register_blueprint(address_labels_blueprint)
address_blueprint.register_blueprint(address_mints_blueprint)
address_blueprint.register_blueprint(address_stakes_blueprint)
address_blueprint.register_blueprint(address_utxos_blueprint)
address_blueprint.register_blueprint(address_unstakes_blueprint)
address_blueprint.register_blueprint(address_value_transfers_blueprint)
api.register_blueprint(address_blueprint, url_prefix="/api/address")

Expand All @@ -136,17 +141,19 @@ def create_app(mock=False):
network_blueprint.register_blueprint(network_balances_blueprint)
network_blueprint.register_blueprint(network_blockchain_blueprint)
network_blueprint.register_blueprint(network_mempool_blueprint)
network_blueprint.register_blueprint(network_reputation_blueprint)
network_blueprint.register_blueprint(network_stakes_blueprint)
network_blueprint.register_blueprint(network_statistics_blueprint)
network_blueprint.register_blueprint(network_supply_blueprint)
network_blueprint.register_blueprint(network_tapi_blueprint)
network_blueprint.register_blueprint(network_version_blueprint)
api.register_blueprint(network_blueprint, url_prefix="/api/network")

search_blueprint.register_blueprint(search_epoch_blueprint)
search_blueprint.register_blueprint(search_hash_blueprint)
api.register_blueprint(search_blueprint, url_prefix="/api/search")

transaction_blueprint.register_blueprint(transaction_mempool_blueprint)
transaction_blueprint.register_blueprint(transaction_nonce_blueprint)
transaction_blueprint.register_blueprint(transaction_priority_blueprint)
transaction_blueprint.register_blueprint(transaction_send_blueprint)
api.register_blueprint(transaction_blueprint, url_prefix="/api/transaction")
Expand Down
6 changes: 2 additions & 4 deletions api/blueprints/address/blocks_blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from flask_smorest import Blueprint, abort
from marshmallow import ValidationError

from api.connect import send_address_caching_request
from blockchain.objects.address import Address
from schemas.address.block_view_schema import BlockView
from schemas.include.address_schema import AddressSchema
from schemas.misc.abort_schema import AbortSchema
from schemas.misc.version_schema import VersionSchema
from util.common_functions import send_address_caching_request

address_blocks_blueprint = Blueprint(
"address blocks",
Expand Down Expand Up @@ -45,7 +45,6 @@ class AddressBlocks(MethodView):
def get(self, args, pagination_parameters):
address_caching_server = current_app.extensions["address_caching_server"]
cache = current_app.extensions["cache"]
config = current_app.config["explorer"]
database = current_app.extensions["database"]
logger = current_app.extensions["logger"]
witnet_node = current_app.extensions["witnet_node"]
Expand All @@ -62,7 +61,7 @@ def get(self, args, pagination_parameters):
# Try to fetch the result from the cache
cached_blocks = cache.get(f"{arg_address}_blocks")
# Return cached version if found (fast)
if cached_blocks:
if cached_blocks is not None:
logger.info(f"Found {len(cached_blocks)} blocks for {arg_address} in cache")
pagination_parameters.item_count = len(cached_blocks)
return cached_blocks[start:stop], 200, {"X-Version": "1.0.0"}
Expand All @@ -73,7 +72,6 @@ def get(self, args, pagination_parameters):
)
address = Address(
arg_address,
config,
database=database,
witnet_node=witnet_node,
logger=logger,
Expand Down
6 changes: 2 additions & 4 deletions api/blueprints/address/data_requests_created_blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from flask_smorest import Blueprint, abort
from marshmallow import ValidationError

from api.connect import send_address_caching_request
from blockchain.objects.address import Address
from schemas.address.data_request_view_schema import DataRequestCreatedView
from schemas.include.address_schema import AddressSchema
from schemas.misc.abort_schema import AbortSchema
from schemas.misc.version_schema import VersionSchema
from util.common_functions import send_address_caching_request

address_data_requests_created_blueprint = Blueprint(
"address data requests created",
Expand Down Expand Up @@ -45,7 +45,6 @@ class AddressDataRequestsCreated(MethodView):
def get(self, args, pagination_parameters):
address_caching_server = current_app.extensions["address_caching_server"]
cache = current_app.extensions["cache"]
config = current_app.config["explorer"]
database = current_app.extensions["database"]
logger = current_app.extensions["logger"]
witnet_node = current_app.extensions["witnet_node"]
Expand All @@ -62,7 +61,7 @@ def get(self, args, pagination_parameters):
# Try to fetch the result from the cache
cached_data_requests_created = cache.get(f"{arg_address}_data-requests-created")
# Return cached version if found (fast)
if cached_data_requests_created:
if cached_data_requests_created is not None:
logger.info(
f"Found {len(cached_data_requests_created)} data requests created for {arg_address} in cache"
)
Expand All @@ -79,7 +78,6 @@ def get(self, args, pagination_parameters):
)
address = Address(
arg_address,
config,
database=database,
witnet_node=witnet_node,
logger=logger,
Expand Down
6 changes: 2 additions & 4 deletions api/blueprints/address/data_requests_solved_blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from flask_smorest import Blueprint, abort
from marshmallow import ValidationError

from api.connect import send_address_caching_request
from blockchain.objects.address import Address
from schemas.address.data_request_view_schema import DataRequestSolvedView
from schemas.include.address_schema import AddressSchema
from schemas.misc.abort_schema import AbortSchema
from schemas.misc.version_schema import VersionSchema
from util.common_functions import send_address_caching_request

address_data_requests_solved_blueprint = Blueprint(
"address data requests solved",
Expand Down Expand Up @@ -45,7 +45,6 @@ class AddressDataRequestsSolved(MethodView):
def get(self, args, pagination_parameters):
address_caching_server = current_app.extensions["address_caching_server"]
cache = current_app.extensions["cache"]
config = current_app.config["explorer"]
database = current_app.extensions["database"]
logger = current_app.extensions["logger"]
witnet_node = current_app.extensions["witnet_node"]
Expand All @@ -62,7 +61,7 @@ def get(self, args, pagination_parameters):
# Try to fetch the result from the cache
cached_data_requests_solved = cache.get(f"{arg_address}_data-requests-solved")
# Return cached version if found (fast)
if cached_data_requests_solved:
if cached_data_requests_solved is not None:
logger.info(
f"Found {len(cached_data_requests_solved)} data requests solved for {arg_address} in cache"
)
Expand All @@ -75,7 +74,6 @@ def get(self, args, pagination_parameters):
)
address = Address(
arg_address,
config,
database=database,
witnet_node=witnet_node,
logger=logger,
Expand Down
10 changes: 4 additions & 6 deletions api/blueprints/address/details_blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from flask_smorest import Blueprint, abort
from marshmallow import ValidationError

from api.connect import send_address_caching_request
from blockchain.objects.address import Address
from schemas.address.details_view_schema import DetailsView
from schemas.include.address_schema import AddressSchema
from schemas.misc.abort_schema import AbortSchema
from schemas.misc.version_schema import VersionSchema
from util.common_functions import send_address_caching_request

address_details_blueprint = Blueprint(
"address details",
Expand All @@ -23,7 +23,7 @@ class AddressDetails(MethodView):
@address_details_blueprint.response(
200,
DetailsView,
description="Returns the balance, reputation and label of an address.",
description="Returns the balance, stake info and label of an address.",
headers={
"X-Version": {
"description": "Version of this API endpoint.",
Expand All @@ -43,7 +43,6 @@ class AddressDetails(MethodView):
)
def get(self, args):
address_caching_server = current_app.extensions["address_caching_server"]
config = current_app.config["explorer"]
database = current_app.extensions["database"]
logger = current_app.extensions["logger"]
witnet_node = current_app.extensions["witnet_node"]
Expand All @@ -56,7 +55,6 @@ def get(self, args):

address = Address(
arg_address,
config,
database=database,
witnet_node=witnet_node,
logger=logger,
Expand All @@ -71,6 +69,6 @@ def get(self, args):
abort(
404,
message=f"Incorrect message format for details data for {arg_address}.",
headers={"X-Version": "1.0.0"},
headers={"X-Version": "2.0.0"},
)
return details, 200, {"X-Version": "1.0.0"}
return details, 200, {"X-Version": "2.0.0"}
6 changes: 2 additions & 4 deletions api/blueprints/address/mints_blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from flask_smorest import Blueprint, abort
from marshmallow import ValidationError

from api.connect import send_address_caching_request
from blockchain.objects.address import Address
from schemas.address.mint_view_schema import MintView
from schemas.include.address_schema import AddressSchema
from schemas.misc.abort_schema import AbortSchema
from schemas.misc.version_schema import VersionSchema
from util.common_functions import send_address_caching_request

address_mints_blueprint = Blueprint(
"address mints",
Expand Down Expand Up @@ -45,7 +45,6 @@ class AddressMints(MethodView):
def get(self, args, pagination_parameters):
address_caching_server = current_app.extensions["address_caching_server"]
cache = current_app.extensions["cache"]
config = current_app.config["explorer"]
database = current_app.extensions["database"]
logger = current_app.extensions["logger"]
witnet_node = current_app.extensions["witnet_node"]
Expand All @@ -62,7 +61,7 @@ def get(self, args, pagination_parameters):
# Try to fetch the result from the cache
cached_mints = cache.get(f"{arg_address}_mints")
# Return cached version if found (fast)
if cached_mints:
if cached_mints is not None:
logger.info(
f"Found {len(cached_mints)} mint transactions for {arg_address} in cache"
)
Expand All @@ -75,7 +74,6 @@ def get(self, args, pagination_parameters):
)
address = Address(
arg_address,
config,
database=database,
witnet_node=witnet_node,
logger=logger,
Expand Down
Loading