Toggle Menu
Prev Up Next

# `langchain_community.document_loaders.blockchain`.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: Optional[int] = None)

  Load elements from a blockchain smart contract.

  The supported blockchains are: Ethereum mainnet, Ethereum Goerli testnet, Polygon mainnet, and Polygon Mumbai testnet.

  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 blockain 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 (Optional[int]) – 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: Optional[int] = None)
    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 (Optional[int]) – 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]

    Load data into Document objects.

    Return type

      List[Document]

  load_and_split(text_splitter: Optional[TextSplitter] = 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

- Alchemy

- get ALCHEMY_API_KEY from https://www.alchemy.com/