Rehabilitate cic-eth-create step
This commit is contained in:
parent
585ad07c6e
commit
e64b1bf984
@ -1,9 +1,10 @@
|
|||||||
# standard imports
|
# standard imports
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
# third-party imports
|
# external imports
|
||||||
import celery
|
import celery
|
||||||
from cic_registry.chain import ChainSpec
|
from chainlib.chain import ChainSpec
|
||||||
|
from chainlib.eth.tx import unpack
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from cic_eth.db.models.base import SessionBase
|
from cic_eth.db.models.base import SessionBase
|
||||||
@ -21,7 +22,6 @@ from cic_eth.queue.tx import (
|
|||||||
set_cancel,
|
set_cancel,
|
||||||
)
|
)
|
||||||
from cic_eth.queue.tx import create as queue_create
|
from cic_eth.queue.tx import create as queue_create
|
||||||
from cic_eth.eth.util import unpack_signed_raw_tx
|
|
||||||
from cic_eth.eth.gas import (
|
from cic_eth.eth.gas import (
|
||||||
create_check_gas_task,
|
create_check_gas_task,
|
||||||
)
|
)
|
||||||
@ -51,7 +51,7 @@ def shift_nonce(self, chain_str, tx_hash_orig_hex, delta=1):
|
|||||||
chain_spec = ChainSpec.from_chain_str(chain_str)
|
chain_spec = ChainSpec.from_chain_str(chain_str)
|
||||||
tx_brief = get_tx(tx_hash_orig_hex)
|
tx_brief = get_tx(tx_hash_orig_hex)
|
||||||
tx_raw = bytes.fromhex(tx_brief['signed_tx'][2:])
|
tx_raw = bytes.fromhex(tx_brief['signed_tx'][2:])
|
||||||
tx = unpack_signed_raw_tx(tx_raw, chain_spec.chain_id())
|
tx = unpack(tx_raw, chain_spec.chain_id())
|
||||||
nonce = tx_brief['nonce']
|
nonce = tx_brief['nonce']
|
||||||
address = tx['from']
|
address = tx['from']
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ def shift_nonce(self, chain_str, tx_hash_orig_hex, delta=1):
|
|||||||
txs = []
|
txs = []
|
||||||
for otx in otxs:
|
for otx in otxs:
|
||||||
tx_raw = bytes.fromhex(otx.signed_tx[2:])
|
tx_raw = bytes.fromhex(otx.signed_tx[2:])
|
||||||
tx_new = unpack_signed_raw_tx(tx_raw, chain_spec.chain_id())
|
tx_new = unpack(tx_raw, chain_spec.chain_id())
|
||||||
|
|
||||||
tx_previous_hash_hex = tx_new['hash']
|
tx_previous_hash_hex = tx_new['hash']
|
||||||
tx_previous_nonce = tx_new['nonce']
|
tx_previous_nonce = tx_new['nonce']
|
||||||
|
@ -2,14 +2,13 @@
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# third-party imports
|
# external imports
|
||||||
import celery
|
import celery
|
||||||
import web3
|
from chainlib.eth.constant import (
|
||||||
from cic_registry import zero_address
|
ZERO_ADDRESS,
|
||||||
from cic_registry import zero_content
|
ZERO_CONTENT,
|
||||||
from cic_registry import CICRegistry
|
)
|
||||||
from crypto_dev_signer.eth.web3ext import Web3 as Web3Ext
|
from cic_eth_registry.error import UnknownContractError
|
||||||
from cic_registry.error import UnknownContractError
|
|
||||||
from chainlib.eth.address import to_checksum_address
|
from chainlib.eth.address import to_checksum_address
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
@ -24,9 +23,7 @@ from cic_eth.db.enum import (
|
|||||||
)
|
)
|
||||||
from cic_eth.error import InitializationError
|
from cic_eth.error import InitializationError
|
||||||
from cic_eth.db.error import TxStateChangeError
|
from cic_eth.db.error import TxStateChangeError
|
||||||
from cic_eth.eth.rpc import RpcClient
|
|
||||||
from cic_eth.queue.tx import get_tx
|
from cic_eth.queue.tx import get_tx
|
||||||
from cic_eth.eth.util import unpack_signed_raw_tx
|
|
||||||
|
|
||||||
app = celery.current_app
|
app = celery.current_app
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import logging
|
|||||||
|
|
||||||
# external imports
|
# external imports
|
||||||
import celery
|
import celery
|
||||||
from cic_registry import CICRegistry
|
from cic_eth_registry import CICRegistry
|
||||||
from chainlib.chain import ChainSpec
|
from chainlib.chain import ChainSpec
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
|
@ -4,7 +4,7 @@ import logging
|
|||||||
|
|
||||||
# third-party imports
|
# third-party imports
|
||||||
from sqlalchemy import Column, String, Integer, DateTime, ForeignKey
|
from sqlalchemy import Column, String, Integer, DateTime, ForeignKey
|
||||||
from cic_registry import zero_address
|
from chainlib.eth.constant import ZERO_ADDRESS
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from cic_eth.db.models.base import SessionBase
|
from cic_eth.db.models.base import SessionBase
|
||||||
@ -35,7 +35,7 @@ class Lock(SessionBase):
|
|||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set(chain_str, flags, address=zero_address, session=None, tx_hash=None):
|
def set(chain_str, flags, address=ZERO_ADDRESS, session=None, tx_hash=None):
|
||||||
"""Sets flags associated with the given address and chain.
|
"""Sets flags associated with the given address and chain.
|
||||||
|
|
||||||
If a flags entry does not exist it is created.
|
If a flags entry does not exist it is created.
|
||||||
@ -88,7 +88,7 @@ class Lock(SessionBase):
|
|||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def reset(chain_str, flags, address=zero_address, session=None):
|
def reset(chain_str, flags, address=ZERO_ADDRESS, session=None):
|
||||||
"""Resets flags associated with the given address and chain.
|
"""Resets flags associated with the given address and chain.
|
||||||
|
|
||||||
If the resulting flags entry value is 0, the entry will be deleted.
|
If the resulting flags entry value is 0, the entry will be deleted.
|
||||||
@ -132,7 +132,7 @@ class Lock(SessionBase):
|
|||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check(chain_str, flags, address=zero_address, session=None):
|
def check(chain_str, flags, address=ZERO_ADDRESS, session=None):
|
||||||
"""Checks whether all given flags are set for given address and chain.
|
"""Checks whether all given flags are set for given address and chain.
|
||||||
|
|
||||||
Does not validate the address against any other tables or components.
|
Does not validate the address against any other tables or components.
|
||||||
|
@ -15,7 +15,6 @@ from cic_eth.db.enum import (
|
|||||||
is_error_status,
|
is_error_status,
|
||||||
)
|
)
|
||||||
from cic_eth.db.error import TxStateChangeError
|
from cic_eth.db.error import TxStateChangeError
|
||||||
#from cic_eth.eth.util import address_hex_from_signed_tx
|
|
||||||
|
|
||||||
logg = logging.getLogger()
|
logg = logging.getLogger()
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# standard imports
|
# standard imports
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
# third-party imports
|
# external imports
|
||||||
from sqlalchemy import Column, String, Text
|
from sqlalchemy import Column, String, Text
|
||||||
from cic_registry import zero_address
|
from chainlib.eth.constant import ZERO_ADDRESS
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from .base import SessionBase
|
from .base import SessionBase
|
||||||
@ -42,7 +42,7 @@ class AccountRole(SessionBase):
|
|||||||
|
|
||||||
role = AccountRole.__get_role(tag, session)
|
role = AccountRole.__get_role(tag, session)
|
||||||
|
|
||||||
r = zero_address
|
r = ZERO_ADDRESS
|
||||||
if role != None:
|
if role != None:
|
||||||
r = role.address_hex
|
r = role.address_hex
|
||||||
|
|
||||||
@ -133,4 +133,4 @@ class AccountRole(SessionBase):
|
|||||||
|
|
||||||
def __init__(self, tag):
|
def __init__(self, tag):
|
||||||
self.tag = tag
|
self.tag = tag
|
||||||
self.address_hex = zero_address
|
self.address_hex = ZERO_ADDRESS
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
"""Ethereum batch functions and utilities
|
|
||||||
|
|
||||||
.. moduleauthor:: Louis Holbrook <dev@holbrook.no>
|
|
||||||
|
|
||||||
"""
|
|
||||||
# standard imports
|
|
||||||
import os
|
|
||||||
|
|
||||||
# local imports
|
|
||||||
from .rpc import RpcClient
|
|
||||||
|
|
||||||
registry_extra_identifiers = {
|
|
||||||
'Faucet': '0x{:0<64s}'.format(b'Faucet'.hex()),
|
|
||||||
'TransferApproval': '0x{:0<64s}'.format(b'TransferApproval'.hex()),
|
|
||||||
}
|
|
||||||
|
|
@ -23,10 +23,7 @@ from eth_accounts_index import AccountRegistry
|
|||||||
from sarafu_faucet import MinterFaucet as Faucet
|
from sarafu_faucet import MinterFaucet as Faucet
|
||||||
|
|
||||||
# local import
|
# local import
|
||||||
#from cic_eth.registry import safe_registry
|
|
||||||
#from cic_eth.eth import RpcClient
|
|
||||||
from cic_eth_registry import CICRegistry
|
from cic_eth_registry import CICRegistry
|
||||||
from cic_eth.eth import registry_extra_identifiers
|
|
||||||
from cic_eth.eth.gas import (
|
from cic_eth.eth.gas import (
|
||||||
create_check_gas_task,
|
create_check_gas_task,
|
||||||
)
|
)
|
||||||
@ -35,7 +32,6 @@ from cic_eth.db.models.nonce import Nonce
|
|||||||
from cic_eth.db.models.base import SessionBase
|
from cic_eth.db.models.base import SessionBase
|
||||||
from cic_eth.db.models.role import AccountRole
|
from cic_eth.db.models.role import AccountRole
|
||||||
from cic_eth.db.models.tx import TxCache
|
from cic_eth.db.models.tx import TxCache
|
||||||
from cic_eth.eth.util import unpack_signed_raw_tx
|
|
||||||
from cic_eth.error import (
|
from cic_eth.error import (
|
||||||
RoleMissingError,
|
RoleMissingError,
|
||||||
SignerError,
|
SignerError,
|
||||||
|
@ -3,8 +3,6 @@ import logging
|
|||||||
|
|
||||||
# external imports
|
# external imports
|
||||||
import celery
|
import celery
|
||||||
import requests
|
|
||||||
import web3
|
|
||||||
from chainlib.eth.constant import ZERO_ADDRESS
|
from chainlib.eth.constant import ZERO_ADDRESS
|
||||||
from chainlib.chain import ChainSpec
|
from chainlib.chain import ChainSpec
|
||||||
from chainlib.connection import RPCConnection
|
from chainlib.connection import RPCConnection
|
||||||
@ -18,11 +16,9 @@ from cic_eth_registry.erc20 import ERC20Token
|
|||||||
from hexathon import strip_0x
|
from hexathon import strip_0x
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from cic_eth.registry import safe_registry
|
|
||||||
from cic_eth.db.models.tx import TxCache
|
from cic_eth.db.models.tx import TxCache
|
||||||
from cic_eth.db.models.base import SessionBase
|
from cic_eth.db.models.base import SessionBase
|
||||||
from cic_eth.db.models.role import AccountRole
|
from cic_eth.db.models.role import AccountRole
|
||||||
from cic_eth.eth import RpcClient
|
|
||||||
from cic_eth.error import TokenCountError, PermanentTxError, OutOfGasError, NotLocalTxError
|
from cic_eth.error import TokenCountError, PermanentTxError, OutOfGasError, NotLocalTxError
|
||||||
from cic_eth.queue.tx import register_tx
|
from cic_eth.queue.tx import register_tx
|
||||||
from cic_eth.eth.gas import (
|
from cic_eth.eth.gas import (
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
# standard imports
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logg = logging.getLogger()
|
|
||||||
|
|
||||||
|
|
||||||
class RpcClient:
|
|
||||||
pass
|
|
||||||
|
|
||||||
#class RpcClient(GasOracle):
|
|
||||||
# """RPC wrapper for web3 enabling gas calculation helpers and signer middleware.
|
|
||||||
#
|
|
||||||
# :param chain_spec: Chain spec
|
|
||||||
# :type chain_spec: cic_registry.chain.ChainSpec
|
|
||||||
# :param holder_address: DEPRECATED Address of subject of the session.
|
|
||||||
# :type holder_address: str, 0x-hex
|
|
||||||
# """
|
|
||||||
#
|
|
||||||
# signer_ipc_path = None
|
|
||||||
# """Unix socket path to JSONRPC signer and keystore"""
|
|
||||||
#
|
|
||||||
# web3_constructor = None
|
|
||||||
# """Custom function to build a web3 object with middleware plugins"""
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# def __init__(self, chain_spec, holder_address=None):
|
|
||||||
# (self.provider, w3) = RpcClient.web3_constructor()
|
|
||||||
# super(RpcClient, self).__init__(w3)
|
|
||||||
# self.chain_spec = chain_spec
|
|
||||||
# if holder_address != None:
|
|
||||||
# self.holder_address = holder_address
|
|
||||||
# logg.info('gasprice {}'.format(self.gas_price()))
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# @staticmethod
|
|
||||||
# def set_constructor(web3_constructor):
|
|
||||||
# """Sets the constructor to use for building the web3 object.
|
|
||||||
# """
|
|
||||||
# RpcClient.web3_constructor = web3_constructor
|
|
@ -32,7 +32,6 @@ from hexathon import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from .rpc import RpcClient
|
|
||||||
from cic_eth.db import (
|
from cic_eth.db import (
|
||||||
Otx,
|
Otx,
|
||||||
SessionBase,
|
SessionBase,
|
||||||
@ -64,7 +63,6 @@ from cic_eth.error import (
|
|||||||
AlreadyFillingGasError,
|
AlreadyFillingGasError,
|
||||||
EthError,
|
EthError,
|
||||||
)
|
)
|
||||||
from cic_eth.eth.util import tx_hex_string
|
|
||||||
from cic_eth.admin.ctrl import lock_send
|
from cic_eth.admin.ctrl import lock_send
|
||||||
from cic_eth.task import (
|
from cic_eth.task import (
|
||||||
CriticalSQLAlchemyTask,
|
CriticalSQLAlchemyTask,
|
||||||
@ -269,7 +267,6 @@ def send(self, txs, chain_spec_dict):
|
|||||||
|
|
||||||
queue = self.request.delivery_info.get('routing_key')
|
queue = self.request.delivery_info.get('routing_key')
|
||||||
|
|
||||||
#c = RpcClient(chain_spec)
|
|
||||||
r = None
|
r = None
|
||||||
s_set_sent = celery.signature(
|
s_set_sent = celery.signature(
|
||||||
'cic_eth.queue.tx.set_sent_status',
|
'cic_eth.queue.tx.set_sent_status',
|
||||||
@ -399,7 +396,7 @@ def resend_with_higher_gas(self, txold_hash_hex, chain_str, gas=None, default_fa
|
|||||||
c = RpcClient(chain_spec)
|
c = RpcClient(chain_spec)
|
||||||
|
|
||||||
tx_signed_raw_bytes = bytes.fromhex(otx.signed_tx[2:])
|
tx_signed_raw_bytes = bytes.fromhex(otx.signed_tx[2:])
|
||||||
tx = unpack_signed_raw_tx(tx_signed_raw_bytes, chain_spec.chain_id())
|
tx = unpack(tx_signed_raw_bytes, chain_spec.chain_id())
|
||||||
logg.debug('resend otx {} {}'.format(tx, otx.signed_tx))
|
logg.debug('resend otx {} {}'.format(tx, otx.signed_tx))
|
||||||
|
|
||||||
queue = self.request.delivery_info['routing_key']
|
queue = self.request.delivery_info['routing_key']
|
||||||
@ -489,9 +486,7 @@ def sync_tx(self, tx_hash_hex, chain_str):
|
|||||||
queue = self.request.delivery_info['routing_key']
|
queue = self.request.delivery_info['routing_key']
|
||||||
|
|
||||||
chain_spec = ChainSpec.from_chain_str(chain_str)
|
chain_spec = ChainSpec.from_chain_str(chain_str)
|
||||||
#c = RpcClient(chain_spec)
|
|
||||||
|
|
||||||
#tx = c.w3.eth.getTransaction(tx_hash_hex)
|
|
||||||
conn = RPCConnection.connect()
|
conn = RPCConnection.connect()
|
||||||
o = transaction(tx_hash_hex)
|
o = transaction(tx_hash_hex)
|
||||||
tx = conn.do(o)
|
tx = conn.do(o)
|
||||||
|
@ -1,110 +0,0 @@
|
|||||||
# standard imports
|
|
||||||
import logging
|
|
||||||
import sha3
|
|
||||||
import web3
|
|
||||||
|
|
||||||
# external imports
|
|
||||||
from rlp import decode as rlp_decode
|
|
||||||
from rlp import encode as rlp_encode
|
|
||||||
from eth_keys import KeyAPI
|
|
||||||
from chainlib.eth.tx import unpack
|
|
||||||
|
|
||||||
logg = logging.getLogger()
|
|
||||||
|
|
||||||
field_debugs = [
|
|
||||||
'nonce',
|
|
||||||
'gasPrice',
|
|
||||||
'gas',
|
|
||||||
'to',
|
|
||||||
'value',
|
|
||||||
'data',
|
|
||||||
'v',
|
|
||||||
'r',
|
|
||||||
's',
|
|
||||||
]
|
|
||||||
|
|
||||||
unpack_signed_raw_tx = unpack
|
|
||||||
|
|
||||||
#def unpack_signed_raw_tx(tx_raw_bytes, chain_id):
|
|
||||||
# d = rlp_decode(tx_raw_bytes)
|
|
||||||
#
|
|
||||||
# logg.debug('decoding {} using chain id {}'.format(tx_raw_bytes.hex(), chain_id))
|
|
||||||
# j = 0
|
|
||||||
# for i in d:
|
|
||||||
# logg.debug('decoded {}: {}'.format(field_debugs[j], i.hex()))
|
|
||||||
# j += 1
|
|
||||||
# vb = chain_id
|
|
||||||
# if chain_id != 0:
|
|
||||||
# v = int.from_bytes(d[6], 'big')
|
|
||||||
# vb = v - (chain_id * 2) - 35
|
|
||||||
# while len(d[7]) < 32:
|
|
||||||
# d[7] = b'\x00' + d[7]
|
|
||||||
# while len(d[8]) < 32:
|
|
||||||
# d[8] = b'\x00' + d[8]
|
|
||||||
# s = b''.join([d[7], d[8], bytes([vb])])
|
|
||||||
# so = KeyAPI.Signature(signature_bytes=s)
|
|
||||||
#
|
|
||||||
# h = sha3.keccak_256()
|
|
||||||
# h.update(rlp_encode(d))
|
|
||||||
# signed_hash = h.digest()
|
|
||||||
#
|
|
||||||
# d[6] = chain_id
|
|
||||||
# d[7] = b''
|
|
||||||
# d[8] = b''
|
|
||||||
#
|
|
||||||
# h = sha3.keccak_256()
|
|
||||||
# h.update(rlp_encode(d))
|
|
||||||
# unsigned_hash = h.digest()
|
|
||||||
#
|
|
||||||
# p = so.recover_public_key_from_msg_hash(unsigned_hash)
|
|
||||||
# a = p.to_checksum_address()
|
|
||||||
# logg.debug('decoded recovery byte {}'.format(vb))
|
|
||||||
# logg.debug('decoded address {}'.format(a))
|
|
||||||
# logg.debug('decoded signed hash {}'.format(signed_hash.hex()))
|
|
||||||
# logg.debug('decoded unsigned hash {}'.format(unsigned_hash.hex()))
|
|
||||||
#
|
|
||||||
# to = d[3].hex() or None
|
|
||||||
# if to != None:
|
|
||||||
# to = web3.Web3.toChecksumAddress('0x' + to)
|
|
||||||
#
|
|
||||||
# return {
|
|
||||||
# 'from': a,
|
|
||||||
# 'nonce': int.from_bytes(d[0], 'big'),
|
|
||||||
# 'gasPrice': int.from_bytes(d[1], 'big'),
|
|
||||||
# 'gas': int.from_bytes(d[2], 'big'),
|
|
||||||
# 'to': to,
|
|
||||||
# 'value': int.from_bytes(d[4], 'big'),
|
|
||||||
# 'data': '0x' + d[5].hex(),
|
|
||||||
# 'v': chain_id,
|
|
||||||
# 'r': '0x' + s[:32].hex(),
|
|
||||||
# 's': '0x' + s[32:64].hex(),
|
|
||||||
# 'chainId': chain_id,
|
|
||||||
# 'hash': '0x' + signed_hash.hex(),
|
|
||||||
# 'hash_unsigned': '0x' + unsigned_hash.hex(),
|
|
||||||
# }
|
|
||||||
|
|
||||||
|
|
||||||
def unpack_signed_raw_tx_hex(tx_raw_hex, chain_id):
|
|
||||||
return unpack_signed_raw_tx(bytes.fromhex(tx_raw_hex[2:]), chain_id)
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: consider moving tx string representation generation from api_admin to here
|
|
||||||
def tx_string(tx_raw_bytes, chain_id):
|
|
||||||
tx_unpacked = unpack_signed_raw_tx(tx_raw_bytes, chain_id)
|
|
||||||
return 'tx nonce {} from {} to {} hash {}'.format(
|
|
||||||
tx_unpacked['nonce'],
|
|
||||||
tx_unpacked['from'],
|
|
||||||
tx_unpacked['to'],
|
|
||||||
tx_unpacked['hash'],
|
|
||||||
)
|
|
||||||
|
|
||||||
def tx_hex_string(tx_hex, chain_id):
|
|
||||||
if len(tx_hex) < 2:
|
|
||||||
raise ValueError('invalid data length')
|
|
||||||
elif tx_hex[:2] == '0x':
|
|
||||||
tx_hex = tx_hex[2:]
|
|
||||||
|
|
||||||
tx_raw_bytes = bytes.fromhex(tx_hex)
|
|
||||||
return tx_string(tx_raw_bytes, chain_id)
|
|
||||||
|
|
||||||
|
|
@ -10,8 +10,6 @@ from cic_eth_registry import CICRegistry
|
|||||||
from eth_address_declarator import AddressDeclarator
|
from eth_address_declarator import AddressDeclarator
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from cic_eth.eth import RpcClient
|
|
||||||
from cic_eth.registry import safe_registry
|
|
||||||
from cic_eth.task import BaseTask
|
from cic_eth.task import BaseTask
|
||||||
|
|
||||||
celery_app = celery.current_app
|
celery_app = celery.current_app
|
||||||
|
@ -26,7 +26,6 @@ from cic_eth.db.enum import (
|
|||||||
dead,
|
dead,
|
||||||
)
|
)
|
||||||
from cic_eth.task import CriticalSQLAlchemyTask
|
from cic_eth.task import CriticalSQLAlchemyTask
|
||||||
from cic_eth.eth.util import unpack_signed_raw_tx # TODO: should not be in same sub-path as package that imports queue.tx
|
|
||||||
from cic_eth.error import NotLocalTxError
|
from cic_eth.error import NotLocalTxError
|
||||||
from cic_eth.error import LockedError
|
from cic_eth.error import LockedError
|
||||||
from cic_eth.db.enum import status_str
|
from cic_eth.db.enum import status_str
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
# standard imports
|
|
||||||
import logging
|
|
||||||
|
|
||||||
# external imports
|
|
||||||
from cic_registry import CICRegistry
|
|
||||||
from cic_registry.registry import from_identifier
|
|
||||||
from chainlib.chain import ChainSpec
|
|
||||||
from cic_registry.chain import ChainRegistry
|
|
||||||
from cic_registry.helper.declarator import DeclaratorOracleAdapter
|
|
||||||
|
|
||||||
logg = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def safe_registry(w3):
|
|
||||||
"""Temporary workaround for enabling thread-safe usage of the CICRegistry.
|
|
||||||
"""
|
|
||||||
CICRegistry.w3 = w3
|
|
||||||
return CICRegistry
|
|
||||||
|
|
||||||
|
|
||||||
def init_registry(config, w3, auto_populate=True):
|
|
||||||
chain_spec = ChainSpec.from_chain_str(config.get('CIC_CHAIN_SPEC'))
|
|
||||||
CICRegistry.init(w3, config.get('CIC_REGISTRY_ADDRESS'), chain_spec)
|
|
||||||
CICRegistry.add_path(config.get('ETH_ABI_DIR'))
|
|
||||||
|
|
||||||
chain_registry = ChainRegistry(chain_spec)
|
|
||||||
CICRegistry.add_chain_registry(chain_registry, True)
|
|
||||||
|
|
||||||
declarator = CICRegistry.get_contract(chain_spec, 'AddressDeclarator', interface='Declarator')
|
|
||||||
trusted_addresses_src = config.get('CIC_TRUST_ADDRESS')
|
|
||||||
if trusted_addresses_src == None:
|
|
||||||
raise ValueError('At least one trusted address must be declared in CIC_TRUST_ADDRESS')
|
|
||||||
trusted_addresses = trusted_addresses_src.split(',')
|
|
||||||
for address in trusted_addresses:
|
|
||||||
logg.info('using trusted address {}'.format(address))
|
|
||||||
|
|
||||||
oracle = DeclaratorOracleAdapter(declarator.contract, trusted_addresses)
|
|
||||||
chain_registry.add_oracle(oracle, 'naive_erc20_oracle')
|
|
||||||
|
|
||||||
if auto_populate:
|
|
||||||
populate(chain_spec, w3)
|
|
||||||
|
|
||||||
return CICRegistry
|
|
||||||
|
|
||||||
|
|
||||||
def populate(chain_spec, w3):
|
|
||||||
registry = CICRegistry.get_contract(chain_spec, 'CICRegistry')
|
|
||||||
fn = registry.function('identifiers')
|
|
||||||
i = 0
|
|
||||||
token_registry_contract = None
|
|
||||||
while True:
|
|
||||||
identifier_hex = None
|
|
||||||
try:
|
|
||||||
identifier_hex = fn(i).call()
|
|
||||||
except ValueError:
|
|
||||||
break
|
|
||||||
identifier = from_identifier(identifier_hex)
|
|
||||||
|
|
||||||
i += 1
|
|
||||||
try:
|
|
||||||
if identifier == 'TokenRegistry':
|
|
||||||
c = CICRegistry.get_contract(chain_spec, identifier, interface='RegistryClient')
|
|
||||||
token_registry_contract = c
|
|
||||||
else:
|
|
||||||
c = CICRegistry.get_contract(chain_spec, identifier)
|
|
||||||
logg.info('found token registry contract {}'.format(c.address()))
|
|
||||||
except ValueError:
|
|
||||||
logg.error('contract for identifier {} not found'.format(identifier))
|
|
||||||
continue
|
|
||||||
|
|
||||||
fn = token_registry_contract.function('entry')
|
|
||||||
i = 0
|
|
||||||
while True:
|
|
||||||
token_address = None
|
|
||||||
try:
|
|
||||||
token_address = fn(i).call()
|
|
||||||
except ValueError:
|
|
||||||
break
|
|
||||||
CICRegistry.get_address(chain_spec, token_address)
|
|
||||||
i += 1
|
|
@ -1,17 +1,19 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#import socket
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
import json
|
import json
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
# external imports
|
||||||
|
import confini
|
||||||
|
import redis
|
||||||
|
import celery
|
||||||
from xdg.BaseDirectory import xdg_config_home
|
from xdg.BaseDirectory import xdg_config_home
|
||||||
|
|
||||||
import celery
|
# local imports
|
||||||
from cic_eth.api import Api
|
from cic_eth.api import Api
|
||||||
import confini
|
|
||||||
import argparse
|
|
||||||
import redis
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.WARNING)
|
logging.basicConfig(level=logging.WARNING)
|
||||||
logg = logging.getLogger('create_account_script')
|
logg = logging.getLogger('create_account_script')
|
||||||
|
@ -145,7 +145,7 @@ def main():
|
|||||||
|
|
||||||
rpc = RPCConnection.connect(chain_spec, 'default')
|
rpc = RPCConnection.connect(chain_spec, 'default')
|
||||||
registry = CICRegistry(chain_spec, rpc)
|
registry = CICRegistry(chain_spec, rpc)
|
||||||
registry_address = registry.by_name('CICRegistry')
|
registry_address = registry.by_name('ContractRegistry')
|
||||||
|
|
||||||
trusted_addresses_src = config.get('CIC_TRUST_ADDRESS')
|
trusted_addresses_src = config.get('CIC_TRUST_ADDRESS')
|
||||||
if trusted_addresses_src == None:
|
if trusted_addresses_src == None:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
cic-base~=0.1.2a5
|
cic-base~=0.1.2a18
|
||||||
web3==5.12.2
|
web3==5.12.2
|
||||||
celery==4.4.7
|
celery==4.4.7
|
||||||
crypto-dev-signer~=0.4.14a5
|
crypto-dev-signer~=0.4.14a6
|
||||||
confini~=0.3.6rc3
|
confini~=0.3.6rc3
|
||||||
cic-eth-registry~=0.5.4a3
|
cic-eth-registry~=0.5.4a3
|
||||||
#cic-bancor~=0.0.6
|
#cic-bancor~=0.0.6
|
||||||
@ -18,8 +18,9 @@ semver==2.13.0
|
|||||||
websocket-client==0.57.0
|
websocket-client==0.57.0
|
||||||
moolb~=0.1.1b2
|
moolb~=0.1.1b2
|
||||||
eth-address-index~=0.1.1a2
|
eth-address-index~=0.1.1a2
|
||||||
chainlib~=0.0.1a29
|
chainlib~=0.0.1a30
|
||||||
hexathon~=0.0.1a5
|
hexathon~=0.0.1a5
|
||||||
chainsyncer~=0.0.1a20
|
chainsyncer~=0.0.1a20
|
||||||
pysha3==1.0.2
|
pysha3==1.0.2
|
||||||
coincurve==15.0.0
|
coincurve==15.0.0
|
||||||
|
sarafu-faucet==0.0.2a6
|
||||||
|
@ -236,7 +236,7 @@ services:
|
|||||||
BANCOR_DIR: ${BANCOR_DIR:-/usr/local/share/cic/bancor}
|
BANCOR_DIR: ${BANCOR_DIR:-/usr/local/share/cic/bancor}
|
||||||
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis}
|
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis}
|
||||||
CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis}
|
CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis}
|
||||||
SIGNER_SOCKET_PATH: ${SIGNER_SOCKET_PATH:-ipc:///tmp/cic/signer/jsonrpc.ipc}
|
SIGNER_SOCKET_PATH: ${SIGNER_SOCKET_PATH:-ipc:///run/crypto-dev-signer/jsonrpc.ipc}
|
||||||
SIGNER_SECRET: ${SIGNER_SECRET:-deadbeef}
|
SIGNER_SECRET: ${SIGNER_SECRET:-deadbeef}
|
||||||
ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER: ${DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER:-0xACB0BC74E1686D62dE7DC6414C999EA60C09F0eA}
|
ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER: ${DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER:-0xACB0BC74E1686D62dE7DC6414C999EA60C09F0eA}
|
||||||
TASKS_TRACE_QUEUE_STATUS: ${TASKS_TRACE_QUEUE_STATUS:-1}
|
TASKS_TRACE_QUEUE_STATUS: ${TASKS_TRACE_QUEUE_STATUS:-1}
|
||||||
|
Loading…
Reference in New Issue
Block a user