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))
def process_outgoing(chain_spec, adapter, rpc, limit=100):
upcoming = adapter.upcoming()
logg.info('process {} {} {}'.format(chain_spec, adapter, rpc))
logg.info('upcoming {}'.format(upcoming))
def process_outgoing(chain_spec, adapter, rpc, limit=50):
adapter = None
process_err = None
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
for tx_hash in upcoming:
if adapter.dispatch(tx_hash):

View File

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

View File

@@ -9,7 +9,7 @@ logg = logging.getLogger(__name__)
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_id = chain_spec.chain_id()
self.signer = signer
@@ -19,6 +19,10 @@ class BaseTokenResolver:
self.factory = None
self.gas_limit_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):
@@ -28,7 +32,7 @@ class BaseTokenResolver:
def get_values(self, gas_value, value, executable_address=None):
nonce = self.nonce_oracle.get_nonce()
nonce = self.nonce_getter()
if executable_address == None:
return (value, 0, nonce)

View File

@@ -9,7 +9,7 @@ from chaind.eth.token import BaseTokenResolver
class GasTokenResolver(BaseTokenResolver):
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)

View File

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

View File

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

View File

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