예제 #1
0
def extractErc20BlockData():

    while True:
        blockConfig = eth_config.find_one({'config_id': 1})
        export_flag = blockConfig["export_flag"]
        if export_flag is False:
            blockid = blockConfig["blockid"]
            print(blockid)
            web3 = ThreadLocalProxy(lambda: Web3(IPCProvider(geth_ipc, timeout=300)))
            # web3 = ThreadLocalProxy(lambda: Web3(HTTPProvider(http_address)))
            blockidNow = web3.eth.blockNumber
            print(blockidNow)

            if blockidNow > blockid:
                blockConfig["export_flag"] = True
                blockid += 1
                blockConfig["blockid"] = blockid
                t = time.time()
                blockConfig['timestamp'] = int(round(t * 1000))
                eth_config.save(blockConfig)
                job = ExportErc20TransfersJob(
                    start_block=blockid,
                    end_block=blockidNow,
                    batch_size=100,
                    web3=ThreadLocalProxy(lambda: Web3(IPCProvider(geth_ipc, timeout=300))),
                    output="",
                    max_workers=1,
                    tokens=None)
                job.run()
        sleep(3)
def test_export_erc20_transfers_job(tmpdir, start_block, end_block, batch_size, resource_group):
    output_file = tmpdir.join('erc20_transfers.csv')

    job = ExportErc20TransfersJob(
        start_block=start_block, end_block=end_block, batch_size=batch_size,
        web3=ThreadLocalProxy(lambda: Web3(MockWeb3Provider(resource_group))),
        item_exporter=erc20_transfers_item_exporter(output_file),
        max_workers=5
    )
    job.run()

    compare_lines_ignore_order(
        read_resource(resource_group, 'expected_erc20_transfers.csv'), read_file(output_file)
    )
예제 #3
0
                    '--max-workers',
                    default=5,
                    type=int,
                    help='The maximum number of workers.')
parser.add_argument('-p',
                    '--provider-uri',
                    default=None,
                    type=str,
                    help='The URI of the web3 provider e.g. '
                    'file://$HOME/Library/Ethereum/geth.ipc')
parser.add_argument('-t',
                    '--tokens',
                    default=None,
                    type=str,
                    nargs='+',
                    help='The list of token addresses to filter by.')

args = parser.parse_args()

job = ExportErc20TransfersJob(
    start_block=args.start_block,
    end_block=args.end_block,
    batch_size=args.batch_size,
    web3=ThreadLocalProxy(
        lambda: Web3(get_provider_from_uri(args.provider_uri))),
    item_exporter=export_erc20_transfers_job_item_exporter(args.output),
    max_workers=args.max_workers,
    tokens=args.tokens)

job.run()
                    type=int,
                    help='The maximum number of workers.')
parser.add_argument('--ipc-path',
                    required=True,
                    type=str,
                    help='The full path to the ipc socket file.')
parser.add_argument('--ipc-timeout',
                    default=300,
                    type=int,
                    help='The timeout in seconds for ipc calls.')
parser.add_argument('-t',
                    '--tokens',
                    default=None,
                    type=str,
                    nargs='+',
                    help='The list of token addresses to filter by.')

args = parser.parse_args()

job = ExportErc20TransfersJob(
    start_block=args.start_block,
    end_block=args.end_block,
    batch_size=args.batch_size,
    web3=ThreadLocalProxy(
        lambda: Web3(IPCProvider(args.ipc_path, timeout=args.ipc_timeout))),
    output=args.output,
    max_workers=args.max_workers,
    tokens=args.tokens)

job.run()