A lightweight Ethereum-compatible blockchain fork with P2P networking
Project description
NanoPy
The first Ethereum-compatible blockchain written entirely in Python.
"Web3 is the developer's sudoku - you solve crypto puzzles, consensus problems, smart contracts... A blockchain in Python? That's not serious! Well that's the point, who cares, it works and it's fun."
Why Python?
- Readable: Understand the entire blockchain in the world's #1 language
- Hackable: Modify consensus, EVM, or networking without recompiling
- Educational: Learn blockchain internals without C++/Rust complexity
Install
pip install nanopy-chain
Quick Start
# Run a node
nanopy-node
# Run on testnet
nanopy-node --testnet
# Run a validator (earn NPY rewards)
nanopy-validator --key YOUR_PRIVATE_KEY
# Generate a wallet
nanopy wallet
# Check balance
nanopy balance 0xYourAddress
Features
- 100% Python - No C extensions, pure Python
- Full EVM - Deploy Solidity contracts, use MetaMask, Hardhat, etc.
- Proof of Stake - 10,000 NPY minimum stake, ~12s blocks
- EIP-1559 - Dynamic fee market
- EIP-2930 - Access lists support
- libp2p - Production-grade P2P networking
- JSON-RPC - HTTP + WebSocket on same port
- eth_subscribe - Real-time events (newHeads, logs, pendingTx)
Networks
| Network | Chain ID | RPC URL | Status |
|---|---|---|---|
| Mainnet | 7770 | http://51.68.125.99:8545 | Coming soon |
| Testnet | 77777 | http://51.68.125.99:8546 | ✅ Active |
Add to MetaMask
- Network Name: NanoPy Testnet
- RPC URL: http://51.68.125.99:8546
- Chain ID: 77777
- Symbol: NPY
Layer 2: Turbo
NanoPy Turbo is our Go-based L2 for high-throughput applications.
| Network | Chain ID | RPC URL |
|---|---|---|
| Turbo Testnet | 777702 | http://51.68.125.99:8548 |
See blockchain-L2 repo.
JSON-RPC
Single port serves both HTTP and WebSocket:
# HTTP
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# WebSocket (same port)
wscat -c ws://localhost:8545
> {"jsonrpc":"2.0","method":"eth_subscribe","params":["newHeads"],"id":1}
Supported Methods
eth_blockNumber,eth_getBlockByNumber,eth_getBlockByHasheth_getBalance,eth_getTransactionCounteth_sendRawTransaction,eth_getTransactionReceipteth_call,eth_estimateGaseth_getLogs,eth_subscribe,eth_unsubscribenet_version,eth_chainId
Deploy a Contract
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('http://51.68.125.99:8546'))
# Deploy with your favorite tool: Hardhat, Foundry, or raw Web3
Architecture
nanopy/
├── nanolib/ # libp2p networking (Python port)
├── nanopy/
│ ├── core/ # Blockchain, blocks, transactions
│ ├── evm/ # Ethereum Virtual Machine
│ ├── consensus/ # Proof of Stake
│ ├── rpc/ # JSON-RPC server
│ └── p2p/ # Peer discovery, sync
└── contracts/ # Solidity contracts (DEX, NFT, Bridge)
Links
- PyPI: https://pypi.org/project/nanopy-chain/
- Webapp: https://github.com/Web3-League/dapp-nanopy
- L2 Turbo: https://github.com/Web3-League/blockchain-L2
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nanopy_chain-1.2.87.tar.gz.
File metadata
- Download URL: nanopy_chain-1.2.87.tar.gz
- Upload date:
- Size: 536.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
614cbe7c2350d09e847077a50895af22f9a165153a3f6b09876016f91e5236ab
|
|
| MD5 |
cc3beee26ee15bfbf6c876dbfa0134fd
|
|
| BLAKE2b-256 |
9679cad6fa7a1b08fcc32b3bf68c589d651ccdec631f28816da8abdfcc047fbf
|
File details
Details for the file nanopy_chain-1.2.87-py3-none-any.whl.
File metadata
- Download URL: nanopy_chain-1.2.87-py3-none-any.whl
- Upload date:
- Size: 667.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd95d3ae30c35872e278e3b9dc4429e5a434340680cf65e0de30dd6f8b814f45
|
|
| MD5 |
cc20252c789b4ca01e6c28db6a52cc40
|
|
| BLAKE2b-256 |
f53436c7e649ce6c58b00180c43b1430e00e269462610c859af57f931a751241
|