3 Commits

Author SHA1 Message Date
lash
e31367853c Correct erc20 extension req 2022-05-01 06:27:26 +00:00
lash
9522729fa0 Catch backend race 2022-04-30 18:44:52 +00:00
lash
097a6f4b53 Advance nonce on gas token txs only 2022-04-29 06:30:12 +00:00
7 changed files with 31 additions and 18 deletions

View File

@@ -67,10 +67,26 @@ settings.process(config)
logg.debug('settings:\n{}'.format(settings)) logg.debug('settings:\n{}'.format(settings))
def process_outgoing(chain_spec, adapter, rpc, limit=100): def process_outgoing(chain_spec, adapter, rpc, limit=50):
upcoming = adapter.upcoming() adapter = None
logg.info('process {} {} {}'.format(chain_spec, adapter, rpc)) process_err = None
logg.info('upcoming {}'.format(upcoming)) for i in range(2):
try:
adapter = ChaindFsAdapter(
settings.get('CHAIN_SPEC'),
settings.dir_for('queue'),
EthCacheTx,
dispatcher,
)
except BackendIntegrityError as e:
process_err = e
continue
if adapter == None:
raise BackendIntegrityError(process_err)
upcoming = adapter.upcoming(limit=limit)
logg.info('processor has {} candidates for {}, processing with limit {} adapter {} rpc {}'.format(len(upcoming), chain_spec, limit, adapter, rpc))
i = 0 i = 0
for tx_hash in upcoming: for tx_hash in upcoming:
if adapter.dispatch(tx_hash): if adapter.dispatch(tx_hash):

View File

@@ -8,7 +8,6 @@ import chainsyncer.cli
import chaind.cli import chaind.cli
from chaind.setup import Environment from chaind.setup import Environment
from chaind.filter import StateFilter from chaind.filter import StateFilter
from chaind.adapters.fs import ChaindFsAdapter
from chainlib.eth.block import block_latest from chainlib.eth.block import block_latest
from hexathon import strip_0x from hexathon import strip_0x
from chainsyncer.store.fs import SyncFsStore from chainsyncer.store.fs import SyncFsStore
@@ -59,13 +58,7 @@ logg.debug('settings:\n{}'.format(settings))
def main(): def main():
queue_adapter = ChaindFsAdapter( fltr = StateFilter(settings.get('CHAIN_SPEC'), settings.dir_for('queue'), EthCacheTx)
settings.get('CHAIN_SPEC'),
settings.dir_for('queue'),
EthCacheTx,
None,
)
fltr = StateFilter(queue_adapter)
sync_store = SyncFsStore(settings.get('SESSION_DATA_DIR'), session_id=settings.get('SESSION_ID')) sync_store = SyncFsStore(settings.get('SESSION_DATA_DIR'), session_id=settings.get('SESSION_ID'))
sync_store.register(fltr) sync_store.register(fltr)

View File

@@ -9,7 +9,7 @@ logg = logging.getLogger(__name__)
class BaseTokenResolver: class BaseTokenResolver:
def __init__(self, chain_spec, sender, signer, gas_oracle, nonce_oracle): def __init__(self, chain_spec, sender, signer, gas_oracle, nonce_oracle, advance_nonce=False):
self.chain_spec = chain_spec self.chain_spec = chain_spec
self.chain_id = chain_spec.chain_id() self.chain_id = chain_spec.chain_id()
self.signer = signer self.signer = signer
@@ -19,6 +19,10 @@ class BaseTokenResolver:
self.factory = None self.factory = None
self.gas_limit_start = None self.gas_limit_start = None
self.gas_price_start = None self.gas_price_start = None
if advance_nonce:
self.nonce_getter = self.nonce_oracle.next_nonce
else:
self.nonce_getter = self.nonce_oracle.get_nonce
def reset(self): def reset(self):
@@ -28,7 +32,7 @@ class BaseTokenResolver:
def get_values(self, gas_value, value, executable_address=None): def get_values(self, gas_value, value, executable_address=None):
nonce = self.nonce_oracle.get_nonce() nonce = self.nonce_getter()
if executable_address == None: if executable_address == None:
return (value, 0, nonce) return (value, 0, nonce)

View File

@@ -9,7 +9,7 @@ from chaind.eth.token import BaseTokenResolver
class GasTokenResolver(BaseTokenResolver): class GasTokenResolver(BaseTokenResolver):
def __init__(self, chain_spec, sender, signer, gas_oracle, nonce_oracle): def __init__(self, chain_spec, sender, signer, gas_oracle, nonce_oracle):
super(GasTokenResolver, self).__init__(chain_spec, sender, signer, gas_oracle, nonce_oracle) super(GasTokenResolver, self).__init__(chain_spec, sender, signer, gas_oracle, nonce_oracle, advance_nonce=True)
self.factory = Gas(self.chain_spec, signer=self.signer, gas_oracle=self.gas_oracle, nonce_oracle=self.nonce_oracle) self.factory = Gas(self.chain_spec, signer=self.signer, gas_oracle=self.gas_oracle, nonce_oracle=self.nonce_oracle)

View File

@@ -1,4 +1,4 @@
chaind~=0.1.1 chaind~=0.2.0
hexathon~=0.1.5 hexathon~=0.1.5
chainlib-eth~=0.1.1 chainlib-eth~=0.1.1
pyxdg~=0.27 pyxdg~=0.27

View File

@@ -1,6 +1,6 @@
[metadata] [metadata]
name = chaind-eth name = chaind-eth
version = 0.1.4 version = 0.2.0
description = Queue server for ethereum description = Queue server for ethereum
author = Louis Holbrook author = Louis Holbrook
author_email = dev@holbrook.no author_email = dev@holbrook.no

View File

@@ -27,7 +27,7 @@ while True:
l = f.readline() l = f.readline()
if l == '': if l == '':
break break
test_requirements.append(l.rstrip()) erc20_requirements.append(l.rstrip())
f.close() f.close()