Example #1
0
 def test_color(self):
     for c in [
             'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan',
             'white'
     ]:
         logger.log('logger', getattr(logger, c)(c))
         c1 = 'light_' + c
         logger.log('logger', getattr(logger, c1)(c1))
         c2 = 'on_' + c
         logger.log('logger', getattr(logger, c2)(c2))
Example #2
0
import sys
import json
from web3 import Web3
from eth_tool.common import web3_eth, cache, etherscan, logger
from eth_tool.common.logger import debug, log

#################################################
# Check if address is contract
# Print its balance and latest TX.
#################################################
addr = Web3.toChecksumAddress(sys.argv[1])

info = cache.contract_info(addr)
if info is not None:
    if len(info) == 0:
        log("Contract info is empty", info)
    elif len(info['ContractName']) > 0:
        log("Contract name", logger.on_green(info['ContractName']))
        if info.get('Proxy') == '1':
            info = etherscan.contract_info(addr)
            log("Implementation contract address", info['Implementation'])
            log("Implementation contract",
                logger.on_green(info['implementation_info']['ContractName']))
        quit()

log("getCode()", addr)
code = web3_eth.getCode(addr)
if code != '0x':  # Contract
    if len(code) > 30:
        log("\t", "code", code[0:29], "...", "len:", len(code) - 2)
    else:
Example #3
0
import os
import sys
import json
from web3 import Web3
from eth_tool.common import web3_eth, cache, etherscan, logger
from eth_tool.common.logger import debug, log

ROOT_DIR = os.environ['ETH_TOOLS_DIR']
contacts_ = ROOT_DIR + '/data/trace_contacts.json'
if len(sys.argv) >= 2:
    contacts_ = sys.argv[1]

log("Loading", contacts_)
with open(contacts_, 'r') as f:
    contacts = json.loads(f.read())

contact_ct = 0
for alias in contacts:
    contact_ct += 1
    addr_list = contacts[alias]
    has_new_tx = False
    for addr in addr_list:
        addr = Web3.toChecksumAddress(addr)
        debug("Scanning", alias, addr)
        new_txs = etherscan.addr_tx_update(addr, verbose=False)
        if len(new_txs) == 0:
            continue
        has_new_tx = True
        log("New TX", alias, addr)
        ct = 0
        page_size = 5
Example #4
0
new_data = etherscan.gas_tracker_or_cached(valid_cache_t=600)

data = new_data
if new_data == last_data:
    logger.info("gas_tracker data unchanged")

logger.info("At", data['time_str'], "Gas Tracker Contracts:")
idx = 0
for t in data['data']:
    idx = idx + 1
    idx_str = str(idx).ljust(3)
    name = t[0]
    addr = t[1]
    name_pad = t[0].ljust(len(addr))
    if name != addr:  # Use public tag directly.
        logger.log(idx_str, addr, "Tag     ",
                   logger.green(logger.reverse(name)))
        continue

    addr = web3_eth.toChecksumAddress(addr)
    # log("getCode()", addr)
    code = web3_eth.getCode(addr)
    if code == '0x':  # Personal Address
        # logger.log(idx_str, name_pad, "Address")
        continue

    # Must be some contract
    info = etherscan.contract_info(addr, verbose=False)
    if info is None:
        # logger.error(idx_str, name_pad, "Contract ????")
        continue
    logger.log(idx_str, name_pad, "Contract",
Example #5
0
 def test_token_info(self):
     ret = logger.log('logger', 'log')
     self.assertEqual(ret[1:4], ['test_logger:6 ', 'logger', 'log'])
Example #6
0
 def test_style(self):
     for c in [
             'reset', 'bold', 'disable', 'underline', 'blink', 'reverse',
             'invisible', 'strikethrough'
     ]:
         logger.log('logger', getattr(logger, c)(c))
Example #7
0
logger.info("Token", token, "order_by", order_by, "filter_by", filter_by)

txs_ct = 0
txs_map = {}
for a in addr_list:
    etherscan.addr_tx_update(a, verbose=True)
    txs_map[a] = cache.addr_tx_get(a)
    txs_ct = txs_ct + len(txs_map[a])

#################################################
# TX filter, would be post-filtering if txs is too many.
#################################################
if token is not None:
    for a in txs_map:
        txs = txs_map[a]
        logger.log("Filter", len(txs), "TX by", token, a)
        txs_map[a] = list(
            filter(lambda tx: token in etherscan.tx_tokens(tx), txs))

if filter_by == 'peer' and txs_ct < 1000:
    for a in txs_map:
        txs = txs_map[a]
        logger.log("Filter", len(txs), "TX by peer transfer", a)
        txs_map[a] = list(
            filter(
                lambda tx: len(etherscan.tx_xfr_info(tx, a, mode='peer')) == 1,
                txs))

#################################################
# TX merging, add owner address.
#################################################