Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
91c9969
feat: issue #8 project scaffolding
arunabha003 Feb 16, 2026
1a26ae7
feat(crypto): add Ed25519 identity and signature helpers
arunabha003 Feb 16, 2026
fce3e7a
test(crypto): cover keypair, address, and signature validation
arunabha003 Feb 16, 2026
15c67bd
feat(serialization): add canonical transaction and header encoding
arunabha003 Feb 16, 2026
313ee5d
test(serialization): add deterministic encoding coverage
arunabha003 Feb 16, 2026
58125c2
chore: fix serialization lint formatting
arunabha003 Feb 17, 2026
dcc3d23
feat: implement signed transaction model and verification
arunabha003 Feb 17, 2026
ca2fd8e
test: add transaction tamper and identity mismatch coverage
arunabha003 Feb 17, 2026
92e96a4
feat: add merkle root computation using blake2b
arunabha003 Feb 21, 2026
761eb20
test: add merkle root determinism and edge-case coverage
arunabha003 Feb 21, 2026
0b5b764
feat: add deterministic transaction id hashing
arunabha003 Feb 21, 2026
bd229ab
feat: implement block header hashing and merkle validation
arunabha003 Feb 21, 2026
a7b4f4b
test: add block hash and merkle-root coverage
arunabha003 Feb 21, 2026
aa7ea05
feat: implement account state transitions and atomic block apply
arunabha003 Feb 21, 2026
af35a69
test: add state transfer, nonce, and rollback coverage
arunabha003 Feb 21, 2026
1fb521f
feat: add configurable genesis block and state initialization
arunabha003 Feb 21, 2026
b930f7e
test: add genesis block creation and application coverage
arunabha003 Feb 21, 2026
42cba00
feat: implement proof-of-work mining engine
arunabha003 Feb 21, 2026
0783e6d
test: add pow validation and mining interruption coverage
arunabha003 Feb 21, 2026
3d723fd
feat: implement bounded difficulty adjustment
arunabha003 Feb 22, 2026
8a4d38b
test: add difficulty retarget scenarios
arunabha003 Feb 22, 2026
748a959
feat: add coinbase transaction validation and state handling
arunabha003 Feb 23, 2026
8f05a01
test: cover coinbase acceptance and rejection paths
arunabha003 Feb 23, 2026
17e53fb
feat: implement mempool queueing and mining selection
arunabha003 Feb 23, 2026
d5e8f92
test: add mempool dedup ordering and eviction coverage
arunabha003 Feb 23, 2026
e29ada4
feat: implement chain manager with fork reorg handling
arunabha003 Feb 23, 2026
387adf3
test: add chain extension and reorg coverage
arunabha003 Feb 23, 2026
834cbb0
feat: add candidate block construction for mining
arunabha003 Feb 23, 2026
9a153ac
test: cover block template assembly and mining flow
arunabha003 Feb 23, 2026
420a747
feat: implement sqlite persistence for blocks state and metadata
arunabha003 Feb 23, 2026
6bdb5cd
test: add sqlite roundtrip restart and atomicity coverage
arunabha003 Feb 23, 2026
d02843c
feat: implement node lifecycle orchestration and persistence
arunabha003 Feb 23, 2026
d73589d
test: add node startup mining and restart coverage
arunabha003 Feb 23, 2026
9762f65
feat: implement multi-command cli interface
arunabha003 Feb 23, 2026
cd064d7
test: add cli command flow coverage
arunabha003 Feb 23, 2026
72b961a
feat: implement peer discovery networking service
arunabha003 Feb 24, 2026
6debee4
test: add peer discovery integration coverage
arunabha003 Feb 24, 2026
b5ed620
feat: add transaction gossip protocol with dedup forwarding
arunabha003 Feb 24, 2026
4aaa08e
test: add three-node transaction gossip propagation coverage
arunabha003 Feb 24, 2026
59bc33c
feat: add block propagation protocol with dedup forwarding
arunabha003 Feb 24, 2026
6f8c171
test: add three-node block propagation integration coverage
arunabha003 Feb 24, 2026
7f9a9e3
feat: add chain synchronization protocol with range sync
arunabha003 Feb 24, 2026
984cdda
test: add two-node chain catch-up sync coverage
arunabha003 Feb 24, 2026
1ee5462
test: add multi-node convergence and fork reorg integration coverage
arunabha003 Feb 24, 2026
3ba5320
test: add double-spend rejection propagation scenario
arunabha003 Feb 24, 2026
7c72a44
chore: update cli verification flow in readme
arunabha003 Feb 24, 2026
e3f1c5e
chore: add detailed component implementation reference
arunabha003 Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: CI

on:
push:
branches: [main]
pull_request:

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e .[dev]
Comment on lines +20 to +23
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider adding pip dependency caching to speed up CI.

Each run currently re-downloads PyNaCl, pytest, and ruff from scratch. The cache key can use the hash of pyproject.toml.

⚡ Proposed addition for pip caching
       - name: Setup Python
         uses: actions/setup-python@v5
         with:
           python-version: "3.11"
+          cache: "pip"

       - name: Install dependencies
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ci.yml around lines 20 - 23, Add a pip cache step before
the "Install dependencies" step in the CI workflow: use actions/cache to cache
pip's download cache (e.g., ~/.cache/pip) and create a cache key that includes
the hash of pyproject.toml so cache invalidates when dependencies change, and
add sensible restore-keys; keep the existing "Install dependencies" run block
(python -m pip install --upgrade pip / python -m pip install -e .[dev])
unchanged so it benefits from the cache when available.

- name: Lint
run: make lint

- name: Run tests
run: make test
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,17 @@ pythontex-files-*/
# easy-todo
*.lod

# MiniChain local planning docs (do not commit)
issues.md
architectureProposal.md

# Python caches and virtualenvs
__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
.venv/

# xcolor
*.xcp

Expand Down Expand Up @@ -324,3 +335,6 @@ TSWLatexianTemp*
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib


docs/
21 changes: 21 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
PYTHON ?= python3

.PHONY: install dev-install test lint format start-node
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Add a clean target for hygiene.

A clean target removes generated artifacts that are already gitignored but may accumulate locally. This is a standard Makefile convention and also satisfies the checkmake minphony warning.

🧹 Proposed `clean` target
-.PHONY: install dev-install test lint format start-node
+.PHONY: install dev-install test lint format start-node clean
+
+clean:
+	find . -type d -name __pycache__ -exec rm -rf {} +
+	rm -rf .pytest_cache .ruff_cache
🧰 Tools
🪛 checkmake (0.2.2)

[warning] 3-3: Missing required phony target "all"

(minphony)


[warning] 3-3: Missing required phony target "clean"

(minphony)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` at line 3, Add a new clean target to the Makefile and include it in
the .PHONY list on the existing .PHONY: line so checkmake's minphony warning is
satisfied; implement clean to remove common generated/artifact directories that
are gitignored (e.g., node_modules, dist, build, .venv, .pytest_cache,
.mypy_cache, coverage files) using recursive removal so local artifacts are
purged without touching tracked files, and ensure the target is idempotent and
safe to run from the project root.


install:
$(PYTHON) -m pip install .

dev-install:
$(PYTHON) -m pip install -e .[dev]

test:
$(PYTHON) -m pytest

lint:
$(PYTHON) -m ruff check src tests

format:
$(PYTHON) -m ruff format src tests

start-node:
PYTHONPATH=src $(PYTHON) -m minichain --host 127.0.0.1 --port 7000
Loading