BlockchainDocumentLoader#

class langchain_community.document_loaders.blockchain.BlockchainDocumentLoader(contract_address: str, blockchainType: BlockchainType = BlockchainType.ETH_MAINNET, api_key: str = 'docs-demo', startToken: str = '', get_all_tokens: bool = False, max_execution_time: int | None = None)[source]#

Load elements from a blockchain smart contract.

See supported blockchains here: https://python.langchain.com/v0.2/api_reference/community/document_loaders/langchain_community.document_loaders.blockchain.BlockchainType.html

If no BlockchainType is specified, the default is Ethereum mainnet.

The Loader uses the Alchemy API to interact with the blockchain. ALCHEMY_API_KEY environment variable must be set to use this loader.

The API returns 100 NFTs per request and can be paginated using the startToken parameter.

If get_all_tokens is set to True, the loader will get all tokens on the contract. Note that for contracts with a large number of tokens, this may take a long time (e.g. 10k tokens is 100 requests). Default value is false for this reason.

The max_execution_time (sec) can be set to limit the execution time of the loader.

Future versions of this loader can:
  • Support additional Alchemy APIs (e.g. getTransactions, etc.)

  • Support additional blockchain APIs (e.g. Infura, Opensea, etc.)

Parameters:
  • contract_address (str) – The address of the smart contract.

  • blockchainType (BlockchainType) – The blockchain type.

  • api_key (str) – The Alchemy API key.

  • startToken (str) – The start token for pagination.

  • get_all_tokens (bool) – Whether to get all tokens on the contract.

  • max_execution_time (int | None) – The maximum execution time (sec).

Methods

__init__(contract_address[,Β blockchainType,Β ...])

param contract_address:

The address of the smart contract.

alazy_load()

A lazy loader for Documents.

aload()

Load data into Document objects.

lazy_load()

A lazy loader for Documents.

load()

Load data into Document objects.

load_and_split([text_splitter])

Load Documents and split into chunks.

__init__(contract_address: str, blockchainType: BlockchainType = BlockchainType.ETH_MAINNET, api_key: str = 'docs-demo', startToken: str = '', get_all_tokens: bool = False, max_execution_time: int | None = None)[source]#
Parameters:
  • contract_address (str) – The address of the smart contract.

  • blockchainType (BlockchainType) – The blockchain type.

  • api_key (str) – The Alchemy API key.

  • startToken (str) – The start token for pagination.

  • get_all_tokens (bool) – Whether to get all tokens on the contract.

  • max_execution_time (int | None) – The maximum execution time (sec).

async alazy_load() β†’ AsyncIterator[Document]#

A lazy loader for Documents.

Return type:

AsyncIterator[Document]

async aload() β†’ List[Document]#

Load data into Document objects.

Return type:

List[Document]

lazy_load() β†’ Iterator[Document]#

A lazy loader for Documents.

Return type:

Iterator[Document]

load() β†’ List[Document][source]#

Load data into Document objects.

Return type:

List[Document]

load_and_split(text_splitter: TextSplitter | None = None) β†’ List[Document]#

Load Documents and split into chunks. Chunks are returned as Documents.

Do not override this method. It should be considered to be deprecated!

Parameters:

text_splitter (Optional[TextSplitter]) – TextSplitter instance to use for splitting documents. Defaults to RecursiveCharacterTextSplitter.

Returns:

List of Documents.

Return type:

List[Document]

Examples using BlockchainDocumentLoader