RPC Components#

EVM-Specific components for interacting with EVM-based RPC APIs

EvmRpcClient#

RPC Client for interacting with ethereum procedures like:

get_block_number#

Get the current block height

async def run(rpc_uri, quantity):
    async with ConnectionPoolingEvmRpcClient(rpc_clients) as rpc_client:
        block_height = await rpc_client.get_block_number()

get_block#

Get a block by number

async def run(rpc_uri, quantity):
    async with ConnectionPoolingEvmRpcClient(rpc_clients) as rpc_client:
            transaction_receipt = await rpc_client.get_transaction_receipt(
                block.transaction_hashes[0]
            )

call#

Make a call against a smart contract

async def run(rpc_uri, quantity):
    async with ConnectionPoolingEvmRpcClient(rpc_clients) as rpc_client:
        (owner,) = await rpc_client.call(
            EthCall(
                from_=None,
                to=Address("0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab"),
                function=Erc721Functions.OWNER_OF_TOKEN,
                parameters=[1],
                block="latest",
            )
        )

get_logs#

Get event logs filtered by parameters

async def run(rpc_uri, quantity):
    async with ConnectionPoolingEvmRpcClient(rpc_clients) as rpc_client:
        logs = []
        async for log in rpc_client.get_logs(
            address=Address("0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab"),
            topics=[Erc721Events.TRANSFER.event_signature_hash.hex()],
            from_block=HexInt(6_000_000),
            to_block=HexInt(6_000_100),
        ):
            logs.append(log)

ConnectionPoolingEvmRpcClient#

A composite client that receives a pool of clients and uses them to make requests. This client allows for massively parallel processing as it can send requests to multiple connections adn, as a result, multiple providers. It only has a single strategy at this point which is round-robin. The methods available are the same as the EvmRpcClient.

Example:

async def run(rpc_uri, quantity):
    stats_service = StatsService()
    rpc_clients = [EvmRpcClient(rpc_uri, stats_service) for _ in range(quantity)]
    async with ConnectionPoolingEvmRpcClient(rpc_clients) as rpc_client:
        block_height = await rpc_client.get_block_number()

Complete Simple Example#

import asyncio

import click

from blockcrawler.core.stats import StatsService
from blockcrawler.core.types import HexInt, Address
from blockcrawler.evm.rpc import EvmRpcClient, ConnectionPoolingEvmRpcClient, EthCall
from blockcrawler.evm.types import Erc721Functions, Erc721Events


async def run(rpc_uri, quantity):
    stats_service = StatsService()
    rpc_clients = [EvmRpcClient(rpc_uri, stats_service) for _ in range(quantity)]
    async with ConnectionPoolingEvmRpcClient(rpc_clients) as rpc_client:
        block_height = await rpc_client.get_block_number()

        block = await rpc_client.get_block(HexInt(6_000_000), False)

        if block.transaction_hashes:
            transaction_receipt = await rpc_client.get_transaction_receipt(
                block.transaction_hashes[0]
            )

        (owner,) = await rpc_client.call(
            EthCall(
                from_=None,
                to=Address("0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab"),
                function=Erc721Functions.OWNER_OF_TOKEN,
                parameters=[1],
                block="latest",
            )
        )

        logs = []
        async for log in rpc_client.get_logs(
            address=Address("0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab"),
            topics=[Erc721Events.TRANSFER.event_signature_hash.hex()],
            from_block=HexInt(6_000_000),
            to_block=HexInt(6_000_100),
        ):
            logs.append(log)

        print("Block Height:", block_height)
        print("Block 6,000,000:", block)
        print("Transaction Receipt:", transaction_receipt)
        print("Owner:", owner)
        print("Logs:", logs)


@click.command()
@click.argument("RPC_URI")
@click.argument("QUANTITY", type=int)
def command(rpc_uri: str, quantity: int):
    """
    Provide the RPC URI for Websockets and the number of clients to process the example
    """
    asyncio.run(run(rpc_uri, quantity))


if __name__ == "__main__":
    command()

Executing the above example will result in something similar to following being displayed in the console:

Block Height: 0xff63aa

Block 6,000,000: EvmBlock(number=HexInt(‘0x5b8d80’), hash=HexBytes(‘0xbe847be2bceb74e660daf96b3f0669d58f59dc9101715689a00ef864a5408f43’), parent_hash=HexBytes(‘0x5d85a965cd1c00cbb7affb25371aeb2d7f610fda7207eb081c1ea2cb23254d5a’), nonce=HexBytes(‘0xb38c11380f0b72c3’), sha3_uncles=HexBytes(‘0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347’), logs_bloom=HexInt(‘0x800b000004742018800113013800401243200020280a002206a2210000080300000c0088440401102010100202412c0302002804490118901200404d01040020000000449800241984c2120c4000200005482604c00480a021934009d8202802802000484214310003104450040009042062002200840048080001522008200281500001002421048282158006ac00488000098162a1000002068064040221108080082000484000280408014082810601100d00201000225200800810042420240008060840010042980010200440400000401082c8080420500003004670231400200d0020010000000082804aa02402088080505408580040508000800200’), transactions_root=HexBytes(‘0x50115fbf29591a3505eabfac5c5a6a8585e1d1c064a04348f00af02ddf79b58e’), state_root=HexBytes(‘0xecd323023ea0c000b6370e884ecd16cbe37244102688fc5c2e8c8a73bc1b18e1’), receipts_root=HexBytes(‘0xd7adcb6c39b2aa65a8aa739e8638bdde4b3e01cd0ff1d0024fdca745ba3e6ea5’), miner=’0x829bd824b016326a401d083b33d092293333a830’, mix_hash=HexBytes(‘0xaed9520a8d287b8b459db916f2fe8e3337db07189fa8e8bb0f3e8e2cf5c7a988’), difficulty=HexInt(‘0xc6071524d8baa’), total_difficulty=HexInt(‘0x12950aa5d90bd65c91b’), extra_data=HexBytes(‘0xe4b883e5bda9e7a59ee4bb99e9b1bc’), size=HexInt(‘0x408e’), gas_limit=HexInt(‘0x7a214f’), gas_used=HexInt(‘0x79fab1’), timestamp=HexInt(‘0x5b524624’), transaction_hashes=[HexBytes(‘0x873c36283a164421e9c78f52439c709c12f96b5f81d4aa3a97fc67a73ff5574b’), HexBytes(‘0xa350a026a84ea6d2e20230c8ba215a1df034a84a0c8064708d4ff30539f89d8f’), HexBytes(‘0xbc4d20ed787799ab3ff2e4de98b8abca6e3efb5369aedcc877b83226c1f5b855’), HexBytes(‘0xa787b4b09c3dbba3c4e1b7910cfaf55e0c7d6ac69da8d3a1b9064d02b9df393a’), HexBytes(‘0xea55aae509250286c601c22b5b6090f5c985b1d11d3cdc6ea00b919bc4641ad2’), HexBytes(‘0x1f51f0bfaa988e14665dbb1d564821111ad2dc4784cd879c5058b5e8e5eaf491’), HexBytes(‘0x33a366a02a770004f941f445f84780ab85ae310f2377edd25fc9c4e579f3635b’), HexBytes(‘0x4c5db229e08cfcc54521cc05b01e9006ca913eafb89fd0c0689de2836f454647’), HexBytes(‘0xec3ffa26262809c6d0abd1348cc5420d80f94ef626f09a9bf4b5168fd55f5b88’), HexBytes(‘0x7b180f48ccf068c5a317fd2d7986bb8a4adf2689557ad36b1d200362ad1a965a’), HexBytes(‘0xb05a9812db7c5c298b78fb7d2a921cb7742eda8a4925d00e1d0c3a3158ae50c5’), HexBytes(‘0x94f571d1e80395ef0d996e59113104764b30df2018600299fd60bd06d92b06a6’), HexBytes(‘0xcce8ae3535d01fcea4bb9c16421bc23583b4a97e2d42d0a2ee086bfda5e1c2d6’), HexBytes(‘0x1547120bbc2092524c49441f824d0d6cf32393ca249ec31b68acc75d42da3382’), HexBytes(‘0xbb001ee3d7e1ecf92f8c459963aab2cb89a1a8f5f5bf6aece662e31836323680’), HexBytes(‘0x7785c7274a2b315f8188dd48813586674767fe868243af34179e36d566292e32’), HexBytes(‘0x22fc47c1f9a50af38ef50980f3fd32e13af9f7102525c10f8c969fca26efb186’), HexBytes(‘0xc7b7d131dd0df44693e0ba36b42bde7a3c41249ea3430b1d1c362de5e9246c20’), HexBytes(‘0x796fc5b7831a097a497f232dc217b435172fa911537f1bc4368ee5a81aea6888’), HexBytes(‘0x3ea5d51a299fd444965bf72912fbb7a1491d4bbaa08461855491107a6eec05da’), HexBytes(‘0xa8f2cf69e302da6c8100b80298ed77c37b6e75eed1177ca22acd5772c9fb9876’), HexBytes(‘0xc9e5e4d68474ea707d2cc1f298f3a5495bc94fc9442e11919aab7a1d75b35835’), HexBytes(‘0xdad9db6d969124760dc3e1c6b0aa99eb1a5a718aa556db0ece546896febfb33d’), HexBytes(‘0x77dd76f81b40d46970b38857e3e12f907b01cd1d61222d1afaeaf79c8294ad91’), HexBytes(‘0x035d6545fb2766ea5c53e758eea144732a366757e072b1acaf295a6abdd9446e’), HexBytes(‘0xe1d598411e5df6411045cc8503af4fc9742ab3175578897b0af354f669b6bdbc’), HexBytes(‘0xa3ce6acb3d6c4e3bc04db3072d3592e7a3304e7be41d500e983dba191cd4327f’), HexBytes(‘0x9336b6d0b35deae83816a70034fec36bd405a94c9f9ce043442bd3e9ccdcb648’), HexBytes(‘0x32c1abcd5bca9344f17dcba4d690de751750444f9113562abb8f22d6b5369fc4’), HexBytes(‘0xdee11db692cfa6063febc482e2c405702b94d569f388ca92ea89b063a5b23378’), HexBytes(‘0x926d31f9b307b0641b955d6ab0e557f0f508a9b6a0e5ec8c5b06029f967f78bb’), HexBytes(‘0x84f682b2dfdd71a488afecd18b0d69feebdd8fb4a604fdc5c558935862c75f04’), HexBytes(‘0xf1656b705b1d705b0bc9f6adc0f8584618ea4b6fe0de67fa8392768471197d17’), HexBytes(‘0x35d17a400d5c365cac9e8f35c6c106e8369bb7b8281c40f37b595ad340c58096’), HexBytes(‘0x0b5149d6487bc3bc57057f8d856badd23672eafcfba4bdc52908dfe56fb540f6’), HexBytes(‘0x6e80bb5f6a034e0221ad636ebeceb43bfec4c9084347fe789a60e6af1b6a50e6’), HexBytes(‘0x7161b3358e2abad95089905f39e7075513efefae00244d3f376292a87f39e95e’), HexBytes(‘0xe453348bfddf49357c098730bb060ae2d05af1fcefe54393489f80bd02a6e021’), HexBytes(‘0xecff250a3deaa6f1022f9bb2c596f7e94afe9e9fc28f5f4b736db2eb9d93b92f’), HexBytes(‘0x6382c984048d824c6bd5c0f5ce9cec59aea351e237c3344cae656da01abde778’), HexBytes(‘0xdae6e7e0cf6c411946e1bc5fddfcb4d206863b0385163b8e5f983c8616aeedc8’), HexBytes(‘0x267eb25ff558d66deb47ededbb3a5db9099727f2703ce4b871d77d9c4dc930b5’), HexBytes(‘0x586a7e7914231c10a9688285100eb5cbd5481969a959c51703b2082cb22faaf8’), HexBytes(‘0x884ae8e046e8d12a541788f4072e4ad7f0a3c3b806afa0abd67f711ba468c5f4’), HexBytes(‘0x65da526088a44f15e64e2e5dbcd028b1872a10a79f5d08129a22a4daf9e56167’), HexBytes(‘0x626590b434e06b79fdd2187b28a55569f6c0636c6806808beb6ce2c743e88188’), HexBytes(‘0x1dc8b0d33e73c0f80284fb27131123c37244927e4f3e293870ee3b19af73282f’), HexBytes(‘0xa2ac2861c0915a3141692150a285634603b5e43c8ff3aef6e866b497a44c522c’), HexBytes(‘0x489378ce9e3cc54073ab0ade85e3697f501894b8af0f73c369ca51c5524cecc8’), HexBytes(‘0xd630ac67d61bdcbab3be4014dfa89c926096842b678e9765cc271b4b012469c7’), HexBytes(‘0x2357e17cdf692e19cbfbfae1671f4dd35c6ce341bac24d0947c3bc6b1b551db8’), HexBytes(‘0x39591c58d9c72573289387bf9e1fb6d81965a16fbd5e81138f07de5459e0bce1’), HexBytes(‘0x179721c8676e58345a8407c803b5a592e7eca599169d08e1d7fcba6d031f623c’), HexBytes(‘0x889bffb9f1968a462643c8911835f84f1fdf9776b2400fc36169aafeca4ffe34’), HexBytes(‘0xa55b45862b67300ac4dc0300930aedef68e924a24e155b4cc53a2a265f1cf53f’), HexBytes(‘0x1b34b369260945025ae8980001f31aadfaca0227f20a8c978cf78de4e022b0fd’), HexBytes(‘0x5ba6ac3c507febfdeddb4ec6577ff6e88721d141cf200c781a1a87c961e894a9’), HexBytes(‘0xb9af2fe9bcbec66b884f74a306ee3ea3f777700688fb9561b9639c36dabc343c’), HexBytes(‘0x2a1e7f34d625cb2538397435eac6461ba4d3c5e707054c32a94305789404dfb7’), HexBytes(‘0x5d67c7010c5f52e59b05714a714ec32d765f3aef4333b15c6fa22ae777aeb7c0’), HexBytes(‘0x340fc20f05915b2503ea08fad6d0bc7236fa229185618600a7d71cd90cdb5d61’), HexBytes(‘0x1cb8f527a6fc26d375d98cc2f8fc5096bbdb5b682efa6025f540b6e99e65fd83’), HexBytes(‘0xe32191718c94cdde1d045f09ed4d24a3756f95f0619a411aea31bc844a1510a7’), HexBytes(‘0xa03e2326071621e7fbcedf87949f11612be84edaeaccad605cf1287668ba8296’), HexBytes(‘0xa70ff0263bbe7706f7a25ca63796c0e87d73c54877d29979b05c8a7292a83040’), HexBytes(‘0x191e7120ccd3e312d686576c546439cf33d21c8cafa6381bb8216ac9bd890fe4’), HexBytes(‘0x4e3ec63910d1374021de802dc8ce942b00a1130755f6981c21e85538c01f2a33’), HexBytes(‘0xbb1b29bbaddb27aa333ef4743d343a353a7c66952d404ebf86d9872c7235951e’), HexBytes(‘0xdc1ad99dfe1e6429f376e38922b4da9140e9d22cd3643d451b05cdccabc40765’), HexBytes(‘0xed447aaa503bd276a8acb149d524738a835d6a53c9d2192472b3f116802794cc’), HexBytes(‘0xd646270f37063a9a9f41efb5afb3d0dc77c8ae0100e20ab118251d08fc88d7f6’), HexBytes(‘0x8f27f5d5a4366fa29fdf6d9fe9ba473d1c226985e372c5d8cfea4deaf7359a5d’), HexBytes(‘0x9938c0ffd08f827d10e1e69765a13aacf5cc674b16edc194f1c2adb86efbf442’), HexBytes(‘0x8047ac1e769c410c98f5b57da01d376c84d4477d531ba8eb345c49d74d95b777’), HexBytes(‘0x58196eb8ee8a2e0c5821389caa83fbc2c03ddb55221911d6cfd10bd1342267a4’), HexBytes(‘0xfee6dfdaf66a812e098f223fb30faae38f526d404929e2e5380ab0aeae1444f9’), HexBytes(‘0xe9e8dc8e236408ecb8d218b8d5933b66cfe1cbb5fd26333bdc40196da49fbab5’), HexBytes(‘0xa1313febc40a4533292205cb407989540b275228b1d210c39816f1071b66e165’), HexBytes(‘0xc764e9479e61e20e4fbb2d25eece3ed5eaad661e3b55e1455722b110b124d9b4’), HexBytes(‘0x2d34a631b705d7e70fbe8448355453b26f3ff0a54122d9dacdd1f05ca498d15b’), HexBytes(‘0x7ecfa2f1d182d6ea73d8fb76bfeade5ff9b07d13d97f948f3f2e6108947227df’), HexBytes(‘0xc1941d3a1c4625f1fc6f6f22e9580b263c29de1f5e9b9076a935790b24150db5’), HexBytes(‘0xa45e23b983a9b1611208e0850dedb8dc19127c9d20a68202aa1f29aa0279bbf0’), HexBytes(‘0xcbd9d599d7157c3e47262f9cd33131dd6af34797c3da9bb7fa0d089b4d7ce157’), HexBytes(‘0x0ba2610e8a0066cf65da51f2ec89986b98b2add605e5d808f5fa3f1f6e4f32c8’), HexBytes(‘0x28e54617bad789e8d9218b63b4ed12de95a4655dcc64bc9320f976285f0942ea’), HexBytes(‘0x27369f13e9df5a35e11e1879b58e7399392053b362b3bedf8f4e89f7e3d59948’), HexBytes(‘0xf59b2953c1029b72f213e3b4ff3857f18b8137c3f41bc79147701925ce353f85’), HexBytes(‘0xc912d28ade0767d78a8cf38a8af3acdca3eb86c001d7b537cd8f6072f041aa3a’), HexBytes(‘0x7f022674e485bf86fe7a7164c838d320e9456a3338937979feceb58d9b937cf6’), HexBytes(‘0x259e9f80c74fee335f73f48b090fda399b4c8a952ccf80f2075cd717f73a4f88’), HexBytes(‘0x97f253c631d5fe16cb04c4a54faa0e4c73d1508888488fcbf4e58da10e13dd1b’), HexBytes(‘0x8afef5abff1c79472979b8136ce3b1ce6358c996ca89ffe80070839c2fd0da55’), HexBytes(‘0x89fe627f30cd1f8175bf0a4c1e54d29012182ca8f84e02c092f4346802b1476c’), HexBytes(‘0x40f8bc4c2ccc4a5a7cf841a3596f4a13e43086eb384f05c961afd21c2cc54289’), HexBytes(‘0x4084cfd43190b117e92f6d879542b6ae1538a84a9244a6c2a4fb35650e3d2a8d’), HexBytes(‘0xc68b8c3a047088b2adab9a2d453c97f67cba6101e50dbca169ed6aba673d196c’), HexBytes(‘0x26784c355b769af7690a74e198c0f56598a5cd2e196e5c183f51d3eec2a28e9f’), HexBytes(‘0x13ec5885782222aab31da63c9644474861c1a7fe41e69908c38baac2108451d4’), HexBytes(‘0xd0cfbc24e48fd208dd8b55812b5ec2390bf9dc8f31607e8aa6f5e50c790930be’), HexBytes(‘0x33143d6b766ce2993a29fd843c22c3117ff674a0533afdc3735ee0efb5f7a52e’)], uncles=[], transactions=None)

Transaction Receipt: EvmTransactionReceipt(transaction_hash=HexBytes(‘0x873c36283a164421e9c78f52439c709c12f96b5f81d4aa3a97fc67a73ff5574b’), transaction_index=HexInt(‘0x0’), block_hash=HexBytes(‘0xbe847be2bceb74e660daf96b3f0669d58f59dc9101715689a00ef864a5408f43’), block_number=HexInt(‘0x5b8d80’), from_=’0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98’, cumulative_gas_used=HexInt(‘0x5208’), gas_used=HexInt(‘0x5208’), logs=[], logs_bloom=HexInt(‘0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000’), status=HexInt(‘0x1’), to_=’0xf50fcf9de1b62c329b3f8586b36611caac2f3267’, contract_address=None, root=None)

Owner: 0x5a4d185c590c5815a070ed62c278e665d137a0d9

Logs: [EvmLog(removed=False, log_index=HexInt(‘0x5f’), transaction_index=HexInt(‘0x39’), transaction_hash=HexBytes(‘0xbaea32a34415c3afa45f6eb12dea54fd02b7e0ff0dc2bec37cbb506355d09407’), block_hash=HexBytes(‘0xb5fc5650b0dc804ed2131d48a06d409645c4d4012fc3c8ecfb6e96762f673259’), block_number=HexInt(‘0x5b8db1’), data=HexBytes(‘0x’), topics=[HexBytes(‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000000000’), HexBytes(‘0x0000000000000000000000003bd2033271d136495aff74303e06b714397cae38’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000001a9f’)], address=’0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab’), EvmLog(removed=False, log_index=HexInt(‘0x62’), transaction_index=HexInt(‘0x39’), transaction_hash=HexBytes(‘0xbaea32a34415c3afa45f6eb12dea54fd02b7e0ff0dc2bec37cbb506355d09407’), block_hash=HexBytes(‘0xb5fc5650b0dc804ed2131d48a06d409645c4d4012fc3c8ecfb6e96762f673259’), block_number=HexInt(‘0x5b8db1’), data=HexBytes(‘0x’), topics=[HexBytes(‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000000000’), HexBytes(‘0x0000000000000000000000003bd2033271d136495aff74303e06b714397cae38’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000001aa0’)], address=’0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab’), EvmLog(removed=False, log_index=HexInt(‘0x64’), transaction_index=HexInt(‘0x39’), transaction_hash=HexBytes(‘0xbaea32a34415c3afa45f6eb12dea54fd02b7e0ff0dc2bec37cbb506355d09407’), block_hash=HexBytes(‘0xb5fc5650b0dc804ed2131d48a06d409645c4d4012fc3c8ecfb6e96762f673259’), block_number=HexInt(‘0x5b8db1’), data=HexBytes(‘0x’), topics=[HexBytes(‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000000000’), HexBytes(‘0x0000000000000000000000003bd2033271d136495aff74303e06b714397cae38’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000001aa1’)], address=’0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab’), EvmLog(removed=False, log_index=HexInt(‘0x66’), transaction_index=HexInt(‘0x39’), transaction_hash=HexBytes(‘0xbaea32a34415c3afa45f6eb12dea54fd02b7e0ff0dc2bec37cbb506355d09407’), block_hash=HexBytes(‘0xb5fc5650b0dc804ed2131d48a06d409645c4d4012fc3c8ecfb6e96762f673259’), block_number=HexInt(‘0x5b8db1’), data=HexBytes(‘0x’), topics=[HexBytes(‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000000000’), HexBytes(‘0x0000000000000000000000003bd2033271d136495aff74303e06b714397cae38’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000001aa2’)], address=’0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab’), EvmLog(removed=False, log_index=HexInt(‘0x68’), transaction_index=HexInt(‘0x39’), transaction_hash=HexBytes(‘0xbaea32a34415c3afa45f6eb12dea54fd02b7e0ff0dc2bec37cbb506355d09407’), block_hash=HexBytes(‘0xb5fc5650b0dc804ed2131d48a06d409645c4d4012fc3c8ecfb6e96762f673259’), block_number=HexInt(‘0x5b8db1’), data=HexBytes(‘0x’), topics=[HexBytes(‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000000000’), HexBytes(‘0x0000000000000000000000003bd2033271d136495aff74303e06b714397cae38’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000001aa3’)], address=’0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab’), EvmLog(removed=False, log_index=HexInt(‘0x6a’), transaction_index=HexInt(‘0x39’), transaction_hash=HexBytes(‘0xbaea32a34415c3afa45f6eb12dea54fd02b7e0ff0dc2bec37cbb506355d09407’), block_hash=HexBytes(‘0xb5fc5650b0dc804ed2131d48a06d409645c4d4012fc3c8ecfb6e96762f673259’), block_number=HexInt(‘0x5b8db1’), data=HexBytes(‘0x’), topics=[HexBytes(‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000000000’), HexBytes(‘0x0000000000000000000000003bd2033271d136495aff74303e06b714397cae38’), HexBytes(‘0x0000000000000000000000000000000000000000000000000000000000001aa4’)], address=’0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab’)]

Download the example and try it yourself.