Add tx filestore, add tx dict src to hexdir in store
This commit is contained in:
parent
0bfe054b90
commit
265a53f9ca
@ -9,7 +9,10 @@ from cic_eth_registry.lookup.tokenindex import TokenIndexLookup
|
|||||||
from cic_types.models.person import Person
|
from cic_types.models.person import Person
|
||||||
from chainlib.eth.address import to_checksum_address
|
from chainlib.eth.address import to_checksum_address
|
||||||
from chainlib.encode import TxHexNormalizer
|
from chainlib.encode import TxHexNormalizer
|
||||||
from hexathon import add_0x
|
from hexathon import (
|
||||||
|
add_0x,
|
||||||
|
strip_0x,
|
||||||
|
)
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from clicada.tx import TxGetter
|
from clicada.tx import TxGetter
|
||||||
@ -19,6 +22,7 @@ from clicada.token import (
|
|||||||
token_balance,
|
token_balance,
|
||||||
)
|
)
|
||||||
from clicada.tx import ResolvedTokenTx
|
from clicada.tx import ResolvedTokenTx
|
||||||
|
from clicada.tx.file import FileTxStore
|
||||||
from clicada.error import MetadataNotFoundError
|
from clicada.error import MetadataNotFoundError
|
||||||
|
|
||||||
logg = logging.getLogger(__name__)
|
logg = logging.getLogger(__name__)
|
||||||
@ -108,15 +112,19 @@ Tags: {}""".format(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
tx_store = FileTxStore(store_path)
|
||||||
tx_lines = []
|
tx_lines = []
|
||||||
seen_tokens = {}
|
seen_tokens = {}
|
||||||
for tx_src in txs['data']:
|
for tx_src in txs['data']:
|
||||||
ctrl.notify('resolve details for tx {}'.format(tx_src['tx_hash']))
|
tx_hash = strip_0x(tx_src['tx_hash'])
|
||||||
|
ctrl.notify('resolve details for tx {}'.format(tx_hash))
|
||||||
tx = ResolvedTokenTx.from_dict(tx_src)
|
tx = ResolvedTokenTx.from_dict(tx_src)
|
||||||
tx.resolve(token_store, user_address_store, show_decimals=True, update=ctrl.get('_FORCE'))
|
tx.resolve(token_store, user_address_store, show_decimals=True, update=ctrl.get('_FORCE'))
|
||||||
tx_lines.append(tx)
|
tx_lines.append(tx)
|
||||||
seen_tokens[tx.source_token_label] = tx.source_token
|
seen_tokens[tx.source_token_label] = tx.source_token
|
||||||
seen_tokens[tx.destination_token_label] = tx.destination_token
|
seen_tokens[tx.destination_token_label] = tx.destination_token
|
||||||
|
tx_store.put(tx_hash, str(tx_src))
|
||||||
|
|
||||||
|
|
||||||
for k in seen_tokens.keys():
|
for k in seen_tokens.keys():
|
||||||
ctrl.notify('resolve token {}'.format(seen_tokens[k]))
|
ctrl.notify('resolve token {}'.format(seen_tokens[k]))
|
||||||
|
20
clicada/tx/file.py
Normal file
20
clicada/tx/file.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
from leveldir.numeric import NumDir
|
||||||
|
from leveldir.hex import HexDir
|
||||||
|
|
||||||
|
class FileTxStore:
|
||||||
|
|
||||||
|
subdivision = 100000
|
||||||
|
|
||||||
|
def __init__(self, store_base_path):
|
||||||
|
tx_base_path = os.path.join(store_base_path, 'tx')
|
||||||
|
num_base_path = os.path.join(tx_base_path, 'blocks')
|
||||||
|
hash_base_path = os.path.join(tx_base_path, 'hash')
|
||||||
|
self.block_index_dir = NumDir(num_base_path)
|
||||||
|
self.hash_index_dir = HexDir(hash_base_path, 32)
|
||||||
|
|
||||||
|
|
||||||
|
def put(self, k, v):
|
||||||
|
hsh = bytes.fromhex(k)
|
||||||
|
self.hash_index_dir.add(hsh, v.encode('utf-8'))
|
@ -191,7 +191,6 @@ class FileUserStore:
|
|||||||
|
|
||||||
if self.encrypter != None:
|
if self.encrypter != None:
|
||||||
v = self.encrypter.decrypt(k, v)
|
v = self.encrypter.decrypt(k, v)
|
||||||
logg.debug('>>>>>>>>>>>>< v decoded {}'.format(v))
|
|
||||||
v = v.decode('utf-8')
|
v = v.decode('utf-8')
|
||||||
|
|
||||||
logg.debug('retrieved {} from {}'.format(k, p))
|
logg.debug('retrieved {} from {}'.format(k, p))
|
||||||
|
@ -8,3 +8,4 @@ hexathon~=0.1.0
|
|||||||
pycryptodome~=3.10.1
|
pycryptodome~=3.10.1
|
||||||
chainlib-eth~=0.0.21
|
chainlib-eth~=0.0.21
|
||||||
chainlib~=0.0.17
|
chainlib~=0.0.17
|
||||||
|
leveldir~=0.1.0
|
||||||
|
Loading…
Reference in New Issue
Block a user