Skip to content

Commit 7faaf78

Browse files
committed
Merge branch 'cbsource' into 'main'
configs, address origin and max write ahead size See merge request flarenetwork/fdc/verifier-utxo-indexer!5
2 parents 2d1fdf3 + 11039ed commit 7faaf78

File tree

11 files changed

+116
-8
lines changed

11 files changed

+116
-8
lines changed

client/btc_client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,17 @@ def get_block_height(self, session: Session) -> int:
7979
},
8080
).json(parse_float=str)["result"]
8181
return height
82+
83+
def get_network_info(self, session: Session) -> str:
84+
info = self._post(
85+
session,
86+
{
87+
"jsonrpc": "1.0",
88+
"id": "rpc",
89+
"method": "getnetworkinfo",
90+
"params": [],
91+
},
92+
).json(parse_float=str)["result"]
93+
return (
94+
f"version: {info['version']}, subversion: {info['subversion']}, protocolversion: {info['protocolversion']}"
95+
)

client/doge_client.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,15 @@ def get_block_height(self, session: Session) -> int:
139139
},
140140
).json(parse_float=str)["result"]
141141
return height
142+
143+
def get_network_info(self, session: Session) -> str:
144+
info = self._post(
145+
session,
146+
{
147+
"jsonrpc": "1.0",
148+
"id": "rpc",
149+
"method": "getinfo",
150+
"params": [],
151+
},
152+
).json(parse_float=str)["result"]
153+
return f"version: {info['version']}, protocolversion: {info['protocolversion']}"

docker/local/docker-compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
POSTGRES_USER: ${DB_USER}
88
POSTGRES_PASSWORD: ${DB_PASSWORD}
99
# uncomment if you need to connect to db outside of docker, eg: pgadmin
10+
command: postgres -c max_wal_size=2GB
1011
ports:
1112
- "127.0.0.1:${DB_PROXY_PORT}:5432"
1213
# uncomment to persist db data between downs

docker/remote/bin/django

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
python manage.py collectstatic --no-input
44
python manage.py migrate
5+
python manage.py make_config
56

67
[ -z ${ADMIN_EMAIL+x} ] | [ -z ${ADMIN_PASSWORD+x} ] || python manage.py admin_user --email $ADMIN_EMAIL --password $ADMIN_PASSWORD
78

utxo_indexer/indexer/indexer_client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ def _get_block_hash_from_height(self, block_height: int, worker: Session) -> str
144144
def _get_block_by_hash(self, block_hash: str, worker: Session) -> BlockResponse:
145145
return self._client.get_block_by_hash(worker, block_hash)
146146

147+
@retry(5)
148+
def _get_network_info(self, worker: Session) -> str:
149+
return self._client.get_network_info(worker)
150+
147151
# Tip state management
148152
def update_tip_state_indexing(self, block_tip_height: int):
149153
"""
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from django.conf import settings
2+
from django.core.management.base import BaseCommand
3+
4+
from utxo_indexer.indexer import get_indexer_client
5+
from utxo_indexer.models.config import Config
6+
7+
8+
class Command(BaseCommand):
9+
def handle(self, *args, **options):
10+
indexer = get_indexer_client()
11+
node_version = indexer._get_network_info(indexer.toplevel_worker)
12+
13+
Config.objects.update_or_create(
14+
id=1,
15+
defaults={
16+
"node_version": node_version,
17+
"git_tag": settings.PROJECT_VERSION,
18+
"git_hash": settings.PROJECT_COMMIT_HASH,
19+
"build_date": settings.PROJECT_BUILD_DATE.timestamp(),
20+
},
21+
create_defaults={
22+
"node_version": node_version,
23+
"git_tag": settings.PROJECT_VERSION,
24+
"git_hash": settings.PROJECT_COMMIT_HASH,
25+
"build_date": settings.PROJECT_BUILD_DATE.timestamp(),
26+
},
27+
)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 5.1.1 on 2024-12-13 07:17
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('utxo_indexer', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.CreateModel(
14+
name='Config',
15+
fields=[
16+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17+
('node_version', models.CharField(max_length=256)),
18+
('git_tag', models.CharField(max_length=256)),
19+
('git_hash', models.CharField(max_length=40)),
20+
('build_date', models.PositiveIntegerField()),
21+
],
22+
),
23+
]

utxo_indexer/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from .block import UtxoBlock
2+
from .config import Config
23
from .sync_state import PruneSyncState, TipSyncState, TipSyncStateChoices
34
from .transaction import UtxoTransaction
45
from .transaction_outputs import TransactionInput, TransactionInputCoinbase, TransactionOutput

utxo_indexer/models/config.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from django.db import models
2+
3+
4+
class Config(models.Model):
5+
node_version = models.CharField(max_length=256)
6+
git_tag = models.CharField(max_length=256)
7+
git_hash = models.CharField(max_length=40)
8+
build_date = models.PositiveIntegerField()
9+
10+
def __str__(self):
11+
node_configurations = (
12+
"Node configurations:\n"
13+
+ f"node_version: {self.node_version}\n"
14+
+ f"git_tag: {self.git_tag}\n"
15+
+ f"git_hash: {self.git_hash}\n"
16+
+ f"build_date: {self.build_date}\n"
17+
)
18+
return node_configurations

utxo_indexer/models/transaction.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import TYPE_CHECKING, List
1+
from typing import TYPE_CHECKING, List, Sequence
22

33
from django.db import models
44

@@ -64,14 +64,17 @@ def update_source_addresses_root(self, inputs: List["TransactionInput"]):
6464
addresses.append(input.script_key_address)
6565
else:
6666
addresses.append(None)
67-
tree = merkle_tree_from_address_strings(addresses)
68-
if tree.root is None:
69-
self.source_addresses_root = ZERO_SOURCE_ADDRESS_ROOT
70-
else:
71-
self.source_addresses_root = un_prefix_0x(tree.root)
67+
self.source_addresses_root = self._construct_address_root(addresses)
7268

7369
def update_source_addresses_root_cb(self, inputs: List["TransactionInputCoinbase"]):
74-
self.source_addresses_root = ZERO_SOURCE_ADDRESS_ROOT
70+
addresses = [None]
71+
self.source_addresses_root = self._construct_address_root(addresses)
72+
73+
def _construct_address_root(self, addresses: Sequence[str | None]) -> str:
74+
tree = merkle_tree_from_address_strings(addresses)
75+
if tree.root is None:
76+
return ZERO_SOURCE_ADDRESS_ROOT
77+
return un_prefix_0x(tree.root)
7578

7679
@classmethod
7780
def object_from_node_response(cls, response: TransactionResponse, block_number: int, timestamp: int):

0 commit comments

Comments
 (0)