Skip to main content

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

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_getBlockByHash
  • eth_getBalance, eth_getTransactionCount
  • eth_sendRawTransaction, eth_getTransactionReceipt
  • eth_call, eth_estimateGas
  • eth_getLogs, eth_subscribe, eth_unsubscribe
  • net_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

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanopy_chain-1.2.87.tar.gz (536.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanopy_chain-1.2.87-py3-none-any.whl (667.3 kB view details)

Uploaded Python 3

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

Hashes for nanopy_chain-1.2.87.tar.gz
Algorithm Hash digest
SHA256 614cbe7c2350d09e847077a50895af22f9a165153a3f6b09876016f91e5236ab
MD5 cc3beee26ee15bfbf6c876dbfa0134fd
BLAKE2b-256 9679cad6fa7a1b08fcc32b3bf68c589d651ccdec631f28816da8abdfcc047fbf

See more details on using hashes here.

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

Hashes for nanopy_chain-1.2.87-py3-none-any.whl
Algorithm Hash digest
SHA256 dd95d3ae30c35872e278e3b9dc4429e5a434340680cf65e0de30dd6f8b814f45
MD5 cc20252c789b4ca01e6c28db6a52cc40
BLAKE2b-256 f53436c7e649ce6c58b00180c43b1430e00e269462610c859af57f931a751241

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page