3 Commits

Author SHA1 Message Date
lash
097a6f4b53 Advance nonce on gas token txs only 2022-04-29 06:30:12 +00:00
lash
8d0a1f589b Update chain interface, add chainqueue settings to cli 2022-04-28 12:49:50 +00:00
lash
24a71b6c7f Make sure syncer doesnt croak on invalidstate 2022-04-27 09:01:46 +00:00
8 changed files with 29 additions and 12 deletions

View File

@@ -2,6 +2,7 @@
from chainlib.interface import ChainInterface
from chainlib.eth.block import (
block_by_number,
block_latest,
Block,
)
from chainlib.eth.tx import (
@@ -16,3 +17,4 @@ class EthChainInterface(ChainInterface):
self._block_from_src = Block.from_src
self._tx_receipt = receipt
self._src_normalize = Tx.src_normalize
self._block_latest = block_latest

View File

@@ -6,6 +6,7 @@ import signal
# external imports
import chainlib.eth.cli
import chaind.cli
import chainqueue.cli
from chaind.session import SessionController
from chaind.setup import Environment
from chaind.error import (
@@ -44,14 +45,18 @@ env = Environment(domain='eth', env=os.environ)
arg_flags = chainlib.eth.cli.argflag_std_read
argparser = chainlib.eth.cli.ArgumentParser(arg_flags)
queue_arg_flags = 0
chainqueue.cli.process_flags(argparser, queue_arg_flags)
local_arg_flags = chaind.cli.argflag_local_base | chaind.cli.ChaindFlag.DISPATCH | chaind.cli.ChaindFlag.SOCKET
chaind.cli.process_flags(argparser, local_arg_flags)
args = argparser.parse_args()
base_config_dir = [chaind.cli.config_dir]
base_config_dir = [chainqueue.cli.config_dir, chaind.cli.config_dir]
config = chainlib.eth.cli.Config.from_args(args, arg_flags, base_config_dir=base_config_dir)
config = chaind.cli.process_config(config, args, local_arg_flags)
config = chainqueue.cli.process_config(config, args, queue_arg_flags)
config.add('eth', 'CHAIND_ENGINE', False)
config.add('queue', 'CHAIND_COMPONENT', False)
logg.debug('config loaded:\n{}'.format(config))
@@ -82,7 +87,7 @@ token_cache_store = CacheTokenTx(chain_spec, normalizer=tx_normalizer)
dispatcher = EthDispatcher(conn)
queue_adapter = ChaindFsAdapter(
settings.get('CHAIN_SPEC'),
settings.get('SESSION_DATA_DIR'),
settings.dir_for('queue'),
EthCacheTx,
dispatcher,
)

View File

@@ -10,6 +10,7 @@ import socket
# external imports
import chainlib.eth.cli
import chainqueue.cli
import chaind.cli
from chaind.setup import Environment
from chainlib.eth.gas import price
@@ -34,15 +35,18 @@ arg_flags = chainlib.eth.cli.argflag_std_write
argparser = chainlib.eth.cli.ArgumentParser(arg_flags, arg_long={'-s': '--send-rpc'})
argparser.add_positional('source', required=False, type=str, help='Transaction source file')
local_arg_flags = chaind.cli.argflag_local_socket_client
local_arg_flags = chaind.cli.argflag_local_socket_client | chaind.cli.ChaindFlag.TOKEN
chaind.cli.process_flags(argparser, local_arg_flags)
chainqueue.cli.process_flags(argparser, 0)
args = argparser.parse_args()
env = Environment(domain='eth', env=os.environ)
base_config_dir = [chaind.cli.config_dir]
base_config_dir = [chaind.cli.config_dir, chainqueue.cli.config_dir]
config = chainlib.eth.cli.Config.from_args(args, arg_flags, base_config_dir=base_config_dir)
config = chainqueue.cli.process_config(config, args, 0)
config = chaind.cli.process_config(config, args, local_arg_flags)
config.add(args.source, '_SOURCE', False)
config.add('eth', 'CHAIND_ENGINE', False)
@@ -105,9 +109,9 @@ class SocketSender:
def main():
token_resolver = None
if config.get('TOKEN_MODULE') != None:
if settings.get('TOKEN_MODULE') != None:
import importlib
m = importlib.import_module(config.get('TOKEN_MODULE'))
m = importlib.import_module(settings.get('TOKEN_MODULE'))
m = m.TokenResolver
else:
from chaind.eth.token.gas import GasTokenResolver

View File

@@ -57,6 +57,7 @@ settings.process(config)
logg.debug('settings:\n{}'.format(settings))
def main():
queue_adapter = ChaindFsAdapter(
settings.get('CHAIN_SPEC'),

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.next_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,6 +1,6 @@
chaind~=0.1.0
chaind~=0.1.3
hexathon~=0.1.5
chainlib-eth~=0.1.0
chainlib-eth~=0.1.1
pyxdg~=0.27
shep~=0.2.3
funga-eth~=0.6.0

View File

@@ -1,6 +1,6 @@
[metadata]
name = chaind-eth
version = 0.1.0
version = 0.1.5
description = Queue server for ethereum
author = Louis Holbrook
author_email = dev@holbrook.no
@@ -31,6 +31,7 @@ packages =
chaind.eth
chaind.eth.runnable
chaind.eth.cli
chaind.eth.token
[options.entry_points]
console_scripts =