chain_harvester


Namechain_harvester JSON
Version 1.2.2 PyPI version JSON
download
home_pagehttps://github.com/blockanalitica/chain-harvester
SummaryA Python library designed to interface with various blockchain networks, enabling the retrieval of data.
upload_time2025-01-07 10:09:27
maintainerNone
docs_urlNone
author0xCommanderKeen
requires_python<4.0,>=3.11
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Chain Harvester

Chain Harvester is a utility for seamlessly interacting with Ethereum-like blockchains. It provides a comprehensive set of methods to fetch information from the blockchain, including blocks, events, and storage content of contracts.

- **Github repository**: <https://github.com/blockanalitica/chain-harvester/>

## Features

- **Web3 Integration**: Direct integration with the Web3.py library for querying Ethereum nodes.
- **Event Decoding**: Decode event logs and get events for specific contracts or topics.
- **Contract Storage**: Fetch storage content at specific positions for a contract.
- **Multicall Support**: Batch multiple contract calls into a single request.
- **Retry Mechanism**: Built-in retry mechanism for HTTP requests.
- **ABI Management**: Load and cache ABI (Application Binary Interface) data for contracts.

## Installation

To install Chain Harvester, simply use `pip`:

```
pip install chain-harvester
```

Make sure you have `pip` installed and are using a version of Python that is compatible with Chain Harvester.

## Supported Chains

Chain Harvester provides specific implementations for different blockchains and their respective versions or networks. Each chain is encapsulated in its own class, which inherits from the base `Chain` class. These chain-specific classes contain data and methods that are relevant to their respective blockchains.

### Ethereum Chains

- **Ethereum Mainnet**: Located in `networks.ethereum.mainnet`. This class, `EthereumMainnetChain`, interacts with the Ethereum mainnet.
  
  ```python
  from networks.ethereum.mainnet import EthereumMainnetChain
  
  eth_main = EthereumMainnetChain(rpc="YOUR_RPC_ENDPOINT")
  ```

- **Ethereum Goerli**: Located in `networks.ethereum.goerli`. This class is designed to interact with the Goerli testnet of Ethereum.

  ```python
  from networks.ethereum.goerli import EthereumGoerliChain
  
  eth_goerli = EthereumGoerliChain(rpc="YOUR_RPC_ENDPOINT")
  ```

### Gnosis Chains

- **Gnosis Mainnet**: Located in `networks.gnosis.mainnet`. This class is designed to interact with the Gnosis mainnet.

  ```python
  from networks.gnosis.mainnet import GnosisMainnetChain
  
  gnosis_main = GnosisMainnetChain(rpc="YOUR_RPC_ENDPOINT")
  ```


## Contributing

We welcome contributions from everyone! Here's how you can help:

1. **Fork and Clone**: Begin by forking the Chain Harvester repository to your GitHub account. Clone this forked repository to your local machine to start making changes.
2. **Set Up Environment**: Ensure you have the necessary dependencies installed. Follow the installation guide in the README to set up your environment.
3. **Make Changes**: Create a new branch for your changes. Make sure to write clean code and follow the project's coding standards. It's also a good practice to write tests for any new features or bug fixes.
4. **Commit and Push**: Once you've made your changes, commit them with a clear and descriptive commit message. Push your changes to your forked repository on GitHub.
5. **Submit a Pull Request (PR)**: Go to the Chain Harvester repository on GitHub and create a new pull request. Make sure to provide a detailed description of your changes. This will help the maintainers review your PR more efficiently.
6. **Review**: Maintainers and contributors will review your PR. They might suggest changes or improvements. Make sure to address any comments or feedback.
7. **Merge**: Once your PR is approved, it will be merged into the main codebase. Congratulations, and thank you for your contribution!

For any questions or discussions, please open an issue or join our community chat.

## Commit Message Convention

We follow the [Conventional Commits](https://www.conventionalcommits.org/) specification for our commit messages. This leads to more readable messages that are easy to follow when looking through the project history.

### Format

Each commit message consists of a **header**, a **body**, and a **footer**. The header has a special format that includes a **type**, an optional **scope**, and a **description**:

```
<type>(<scope>): <description>

[optional body]

[optional footer]
```

For example:

```
fix(server): fix crash on start-up

The application crashed on start-up due to an environment variable missing. This commit ensures that the application checks for the environment variable before start-up.
```

### Types

We primarily use the following commit types:

- **fix**: Patches a bug in your codebase.
- **feat**: Introduces a new feature to the codebase.
- **BREAKING CHANGE**: An API change that breaks backward compatibility.
- **chore**: Regular code maintenance.
- **docs**: Documentation only changes.
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc).
- **refactor**: A code change that neither fixes a bug nor adds a feature.
- **perf**: A code change that improves performance.
- **test**: Adding missing tests or correcting existing ones.

For more details, visit the [Conventional Commits website](https://www.conventionalcommits.org/).


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/blockanalitica/chain-harvester",
    "name": "chain_harvester",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": null,
    "author": "0xCommanderKeen",
    "author_email": "f91289621+0xCommanderKeen@users.noreply.github.com",
    "download_url": "https://files.pythonhosted.org/packages/09/f6/a66219e39142774b00c30ba780fcfde030f111038c138a26f7293a16f471/chain_harvester-1.2.2.tar.gz",
    "platform": null,
    "description": "# Chain Harvester\n\nChain Harvester is a utility for seamlessly interacting with Ethereum-like blockchains. It provides a comprehensive set of methods to fetch information from the blockchain, including blocks, events, and storage content of contracts.\n\n- **Github repository**: <https://github.com/blockanalitica/chain-harvester/>\n\n## Features\n\n- **Web3 Integration**: Direct integration with the Web3.py library for querying Ethereum nodes.\n- **Event Decoding**: Decode event logs and get events for specific contracts or topics.\n- **Contract Storage**: Fetch storage content at specific positions for a contract.\n- **Multicall Support**: Batch multiple contract calls into a single request.\n- **Retry Mechanism**: Built-in retry mechanism for HTTP requests.\n- **ABI Management**: Load and cache ABI (Application Binary Interface) data for contracts.\n\n## Installation\n\nTo install Chain Harvester, simply use `pip`:\n\n```\npip install chain-harvester\n```\n\nMake sure you have `pip` installed and are using a version of Python that is compatible with Chain Harvester.\n\n## Supported Chains\n\nChain Harvester provides specific implementations for different blockchains and their respective versions or networks. Each chain is encapsulated in its own class, which inherits from the base `Chain` class. These chain-specific classes contain data and methods that are relevant to their respective blockchains.\n\n### Ethereum Chains\n\n- **Ethereum Mainnet**: Located in `networks.ethereum.mainnet`. This class, `EthereumMainnetChain`, interacts with the Ethereum mainnet.\n  \n  ```python\n  from networks.ethereum.mainnet import EthereumMainnetChain\n  \n  eth_main = EthereumMainnetChain(rpc=\"YOUR_RPC_ENDPOINT\")\n  ```\n\n- **Ethereum Goerli**: Located in `networks.ethereum.goerli`. This class is designed to interact with the Goerli testnet of Ethereum.\n\n  ```python\n  from networks.ethereum.goerli import EthereumGoerliChain\n  \n  eth_goerli = EthereumGoerliChain(rpc=\"YOUR_RPC_ENDPOINT\")\n  ```\n\n### Gnosis Chains\n\n- **Gnosis Mainnet**: Located in `networks.gnosis.mainnet`. This class is designed to interact with the Gnosis mainnet.\n\n  ```python\n  from networks.gnosis.mainnet import GnosisMainnetChain\n  \n  gnosis_main = GnosisMainnetChain(rpc=\"YOUR_RPC_ENDPOINT\")\n  ```\n\n\n## Contributing\n\nWe welcome contributions from everyone! Here's how you can help:\n\n1. **Fork and Clone**: Begin by forking the Chain Harvester repository to your GitHub account. Clone this forked repository to your local machine to start making changes.\n2. **Set Up Environment**: Ensure you have the necessary dependencies installed. Follow the installation guide in the README to set up your environment.\n3. **Make Changes**: Create a new branch for your changes. Make sure to write clean code and follow the project's coding standards. It's also a good practice to write tests for any new features or bug fixes.\n4. **Commit and Push**: Once you've made your changes, commit them with a clear and descriptive commit message. Push your changes to your forked repository on GitHub.\n5. **Submit a Pull Request (PR)**: Go to the Chain Harvester repository on GitHub and create a new pull request. Make sure to provide a detailed description of your changes. This will help the maintainers review your PR more efficiently.\n6. **Review**: Maintainers and contributors will review your PR. They might suggest changes or improvements. Make sure to address any comments or feedback.\n7. **Merge**: Once your PR is approved, it will be merged into the main codebase. Congratulations, and thank you for your contribution!\n\nFor any questions or discussions, please open an issue or join our community chat.\n\n## Commit Message Convention\n\nWe follow the [Conventional Commits](https://www.conventionalcommits.org/) specification for our commit messages. This leads to more readable messages that are easy to follow when looking through the project history.\n\n### Format\n\nEach commit message consists of a **header**, a **body**, and a **footer**. The header has a special format that includes a **type**, an optional **scope**, and a **description**:\n\n```\n<type>(<scope>): <description>\n\n[optional body]\n\n[optional footer]\n```\n\nFor example:\n\n```\nfix(server): fix crash on start-up\n\nThe application crashed on start-up due to an environment variable missing. This commit ensures that the application checks for the environment variable before start-up.\n```\n\n### Types\n\nWe primarily use the following commit types:\n\n- **fix**: Patches a bug in your codebase.\n- **feat**: Introduces a new feature to the codebase.\n- **BREAKING CHANGE**: An API change that breaks backward compatibility.\n- **chore**: Regular code maintenance.\n- **docs**: Documentation only changes.\n- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc).\n- **refactor**: A code change that neither fixes a bug nor adds a feature.\n- **perf**: A code change that improves performance.\n- **test**: Adding missing tests or correcting existing ones.\n\nFor more details, visit the [Conventional Commits website](https://www.conventionalcommits.org/).\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python library designed to interface with various blockchain networks, enabling the retrieval of data.",
    "version": "1.2.2",
    "project_urls": {
        "Documentation": "https://blockanalitica.github.io/chain-harvester/",
        "Homepage": "https://github.com/blockanalitica/chain-harvester",
        "Repository": "https://github.com/blockanalitica/chain-harvester"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1f491d44535bf4e649ec1a5918b525cfdec18773adc34cb775dd6495055a8144",
                "md5": "2ec78578ae2737ebddd9a0f895435262",
                "sha256": "c354e510a56a0ec359a3244ea0e82a463e1238c68568d132551138fe439afe08"
            },
            "downloads": -1,
            "filename": "chain_harvester-1.2.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2ec78578ae2737ebddd9a0f895435262",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 67401,
            "upload_time": "2025-01-07T10:09:21",
            "upload_time_iso_8601": "2025-01-07T10:09:21.251260Z",
            "url": "https://files.pythonhosted.org/packages/1f/49/1d44535bf4e649ec1a5918b525cfdec18773adc34cb775dd6495055a8144/chain_harvester-1.2.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "09f6a66219e39142774b00c30ba780fcfde030f111038c138a26f7293a16f471",
                "md5": "3b2281c1eef7021db6f89372746257a1",
                "sha256": "30f3d1af388f064ed46751bea98bb0910d904d83c0977bb171dd2b020f5d12cf"
            },
            "downloads": -1,
            "filename": "chain_harvester-1.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "3b2281c1eef7021db6f89372746257a1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 55913,
            "upload_time": "2025-01-07T10:09:27",
            "upload_time_iso_8601": "2025-01-07T10:09:27.599063Z",
            "url": "https://files.pythonhosted.org/packages/09/f6/a66219e39142774b00c30ba780fcfde030f111038c138a26f7293a16f471/chain_harvester-1.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-07 10:09:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "blockanalitica",
    "github_project": "chain-harvester",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "chain_harvester"
}
        
Elapsed time: 0.52277s