Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

CCD Explorer Fundamentals

This repository hosts the shared code used by many of the other repositories in the CCD Explorer Universe. The only way I knew how to make this work (locally and in Docker containers), is by publishing this repo as a Python package.

Most important modules in the repo are:

  • GRPCClient: this is the partial Python SDK that contains all relevant GRPC types and methods to request information from the GRPC endpoint from a node.
  • MongoDB: this module contains the connection to the MongoDB instance (or replicaset).
  • Tooter: this module is a light wrapper around Apprise, used to send notifications.
  • CIS: this module contains logic to decode CIS-2 events according to the CIS-2 Specifications. This module is used in token accounting.

Modules

GRPCClient

This module is implemented as a partial Python SDK for the GRPC endpoint for a node. As such, it needs to be updated regularly whenever new types and methods are added to the GRPC Protocol Documentation. It relies heavily on BetterProto, however only version 2.0.0b6 seems to work. Hence, run

pip install "betterproto[compiler]"==2.0.0b6

to install this version.

BetterProto takes the .proto files from the Concordium GRPC Api Repo and converts this into the neccesary classes. When an update is performed on the Concordium GRPC Api Repo, copy the new files to the same location and run the following command:

python -m grpc_tools.protoc -I. --python_out=. --pyi_out=. --grpc_python_out=. --python_betterproto_out=. service.proto

This will generate the new _pb2.py(i) files.

CCD_Types

When I started with this project, I didn't know the first thing about Protobuf. To be honest, I still don't, but I have found a way to manage this by creating my own classes, mirroring the classes as generated by the types.proto file . These classes are stored in a submodule called CCD_Types. This contains 165 classes and 55 type aliases.

Queries

The services in the service.proto file are mirrored in the queries submodule, where all relevant GRPC calls are built. These are the methods that other services call to retrieve specific information from the node.

For every call to the node, it calls grpc.channel_ready_future to check if the service is ready (the node is able to respond to queries). Is this somehow fails, the module tries to connect to a different node (as supplied in the ENV variables).

Getting Started

Almost none of the modules in this repo as useful as a standalone package, with the exception of the GRPC SDK.

ENV variables

NOTIFIER_API_TOKEN (API token for notifier bot)
API_TOKEN (API token for actual bot)
FASTMAIL_TOKEN (I use Fastmail to send email, leave blank, won't send email)
MONGO_URI (MongoDB URI)
ADMIN_CHAT_ID (Telegram admin chat ID)
MAILTO_LINK (I use Fastmail to send email, leave blank, won't send email)
MAILTO_USER (I use Fastmail to send email, leave blank, won't send email)
GRPC_MAINNET (A list of dicts with GPRC hosts) (Example: [{"host": "localhost", "port": 20000}, {"host": "my.validator.com", "port": 20000}])
GRPC_TESTNET (Same as GPRC_MAINNET)

Tests

The CIS module and GRPC module have associated tests.

Authors

  • explorer.ccd - Everything

License

This project is licensed under the Apache 2.0 License - see the LICENSE.md file for details.

Metadata

Release files for ccdefundamentals 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ccdefundamentals 0.1.6
File Size Uploaded
ccdefundamentals-0.1.6.tar.gz 166.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ccdefundamentals 0.1.6
File Interpreter ABI Platform
ccdefundamentals-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 368.0 kB

Release files / ccdefundamentals-0.1.6.tar.gz

Download URL ccdefundamentals-0.1.6.tar.gz
Size 166.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9e715e876f9ad737d1fdabcef51229d7b27a81924ee313b52c3e91abb79a58db
BLAKE2b-256 checksum
How to use checksums
79754d996c3670ce89780add1d845ea490edca2da35f313fed2fa626052a68a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.2

Release files / ccdefundamentals-0.1.6-py3-none-any.whl

Download URL ccdefundamentals-0.1.6-py3-none-any.whl
Size 201.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
af1ba9ef5211ab2a670fda0fef5534632f032ec12d9f4f30593c7dbe60c2c1b5
BLAKE2b-256 checksum
How to use checksums
7b2f9c8a5f0ec5efc531c8b831e39e94001a0c3d0e433ee4430f5f1eb301904a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page