Implement unsafe address for send

This commit is contained in:
lash 2022-05-04 07:26:17 +00:00
parent abc619d7b2
commit 8f86e9c970
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
3 changed files with 16 additions and 7 deletions

View File

@ -118,7 +118,7 @@ def main():
m = GasTokenResolver m = GasTokenResolver
token_resolver = m(chain_spec, rpc.get_sender_address(), rpc.get_signer(), rpc.get_gas_oracle(), rpc.get_nonce_oracle()) token_resolver = m(chain_spec, rpc.get_sender_address(), rpc.get_signer(), rpc.get_gas_oracle(), rpc.get_nonce_oracle())
processor = Processor(token_resolver, config.get('_SOURCE')) processor = Processor(token_resolver, config.get('_SOURCE'), use_checksum=not config.get('_UNSAFE'))
processor.add_processor(CSVProcessor()) processor.add_processor(CSVProcessor())
sends = None sends = None

View File

@ -3,7 +3,10 @@ import logging
# external imports # external imports
from chaind.error import TxSourceError from chaind.error import TxSourceError
from chainlib.eth.address import is_checksum_address from chainlib.eth.address import (
is_checksum_address,
to_checksum_address,
)
from chainlib.eth.tx import unpack from chainlib.eth.tx import unpack
from chainlib.eth.gas import Gas from chainlib.eth.gas import Gas
from hexathon import ( from hexathon import (
@ -17,10 +20,11 @@ logg = logging.getLogger(__name__)
class Processor: class Processor:
def __init__(self, resolver, source): def __init__(self, resolver, source, use_checksum=True):
self.resolver = resolver self.resolver = resolver
self.source = source self.source = source
self.processor = [] self.processor = []
self.safe = use_checksum
self.conn = None self.conn = None
@ -50,9 +54,14 @@ class Processor:
txs = [] txs = []
for i, r in enumerate(self.content): for i, r in enumerate(self.content):
logg.debug('processing {}'.format(r)) logg.debug('processing {}'.format(r))
if not is_checksum_address(r[0]): address = r[0]
raise ValueError('invalid checksum address {} in record {}'.format(r[0], i)) if self.safe:
self.content[i][0] = add_0x(r[0]) if not is_checksum_address(address):
raise ValueError('invalid checksum address {} in record {}'.format(address, i))
else:
address = to_checksum_address(address)
self.content[i][0] = add_0x(address)
try: try:
self.content[i][1] = int(r[1]) self.content[i][1] = int(r[1])
except ValueError: except ValueError:

View File

@ -1,6 +1,6 @@
[metadata] [metadata]
name = chaind-eth name = chaind-eth
version = 0.2.2 version = 0.2.3
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