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))
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:
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
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",
def test_token_info(self): ret = logger.log('logger', 'log') self.assertEqual(ret[1:4], ['test_logger:6 ', 'logger', 'log'])
def test_style(self): for c in [ 'reset', 'bold', 'disable', 'underline', 'blink', 'reverse', 'invisible', 'strikethrough' ]: logger.log('logger', getattr(logger, c)(c))
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. #################################################