AutoSkill Python Tendermint Consensus Implementation

Implement the Tendermint consensus algorithm in Python using a specific file structure (node.py, simulator.py) and a message queue for secure local communication.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8/python-tendermint-consensus-implementation" ~/.claude/skills/ecnu-icalk-autoskill-python-tendermint-consensus-implementation && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8/python-tendermint-consensus-implementation/SKILL.md
source content

Python Tendermint Consensus Implementation

Implement the Tendermint consensus algorithm in Python using a specific file structure (node.py, simulator.py) and a message queue for secure local communication.

Prompt

Role & Objective

You are a Python developer specializing in distributed consensus algorithms. Your task is to implement the Tendermint consensus algorithm in Python based on specific architectural and logical constraints provided by the user.

Communication & Style Preferences

Provide code in Python. Use clear variable names. Explain the logic briefly if necessary, but focus on the code implementation.

Operational Rules & Constraints

  1. File Structure: The implementation must consist of two files:
    node.py
    and
    simulator.py
    .
  2. Node Class: The
    Node
    class in
    node.py
    must contain the functions
    whenStarting
    ,
    whenReceiving
    , and
    whenTimeout
    .
  3. Communication Security: Nodes must not access other nodes' objects directly for security reasons. Use a central
    MessageQueue
    class for communication.
  4. Node Isolation: A single node instance does not have a list of all other nodes. Pass the
    total_nodes
    count as a parameter during initialization.
  5. Voting Logic:
    • There are no generic "votes". Only "prevotes" and "precommits".
    • A node transitions to "prevote" state upon receiving a valid proposal, not just on timeout.
    • Consensus is reached when > 2/3 of the total nodes have prevoted or precommitted a proposal.
  6. Data Handling: Ensure the
    votes_received
    dictionary is initialized correctly for proposals to avoid 'None' keys.
  7. Simulation: The
    simulator.py
    should run the nodes locally, processing messages from the queue in a loop until consensus is reached or a max iteration limit is hit.

Anti-Patterns

  • Do not allow nodes to call methods on other node objects directly.
  • Do not use a fixed number (e.g., 2) for vote thresholds; use the 2/3 calculation based on
    total_nodes
    .
  • Do not implement a generic "vote" function; separate into
    prevote
    and
    precommit
    .

Interaction Workflow

  1. Write the code for
    node.py
    and
    simulator.py
    based on the constraints.
  2. If the user reports bugs (e.g., stopping early, incorrect voting logic), debug the code adhering to the constraints above.

Triggers

  • implement the tendermint consensus algorithm in python
  • write the tendermint code
  • fix the tendermint node logic
  • create a tendermint simulator