Lexiverse
Lexiverse - 영어 학습자를 위한 AI 기반 문맥 독해 엔진
blockchainkit은 암호학·블록체인 교육용 툴킷으로 12개 서브패키지를 포함
blockchainkit is a teaching toolkit for cryptography and blockchain systems, spanning 12 subpackages – from public-key cryptography and authenticated data structures to consensus, peer-to-peer netw...
교육Python · Jupyter NotebookGitHub @cpoli온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A Python toolkit for learning how blockchains work: 104 breakthroughs in cryptography, consensus, networking and smart contracts, from the one-time pad to Ethereum gas, each reproduced as a small, typed implementation with a figure and a runnable experiment.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗| Package | |
| Quality | |
| Documentation | |
| Code style | |
| Downloads | |
| Community | |
| Try it online |
Cryptography and blockchains, understood through experiments. blockchainkit is a Python toolkit for learning and teaching how blockchains work, from the one-time pad to Ethereum's gas. Each idea is followed from its history and mathematics to a small, typed, inspectable implementation, a figure, and an experiment you can change. Every subpackage's documentation walks through the field's breakthroughs in historical order, 120 of them in all, each linked to the code and the gallery example that reproduce it.
import blockchainkit loads only the standard library. Matplotlib and NumPy
are used only by each subpackage's visualizers.
pip install blockchainkit # Python 3.10+
Conventionally imported as bk:
import blockchainkit as bk
alice_key = 7 # A fixed teaching key: never use such a key for real money.
alice = bk.structures.address(bk.crypto.public_key(alice_key))
bob = bk.structures.address(bk.crypto.public_key(11))
payment = bk.structures.Transaction(bk.crypto.public_key(alice_key), bob, 25, 0)
payment = payment.signed(alice_key, signing_nonce=17) # Never reuse a signing nonce.
genesis = bk.consensus.mine(bk.structures.Block(difficulty=5)).block
chain = bk.structures.Blockchain(genesis, bk.structures.Ledger({alice: 100}))
block = bk.structures.Block(genesis.hash, (payment,), height=1, timestamp=1, difficulty=5)
chain.add(bk.consensus.mine(block).block)
assert chain.state.balances[bob] == 25
The quickstart notebook takes one payment from a signature to a mined block in about ten minutes. Open it in Colab using the badge above.
blockchainkit.crypto -- the one-time pad,
baby-step giant-step and Pohlig-Hellman, Merkle's puzzles, Diffie-Hellman and RSA, Shamir and Feldman
secret sharing, Lamport signatures, birthday attacks, commitments (hash and Pedersen), blind signatures,
elliptic curves, zero knowledge and Fiat-Shamir, Merkle-Damgård and length extension, HMAC, Schnorr
signatures, RFC 6979 nonces, and MuSig. 22 breakthroughs.
blockchainkit.structures -- double-entry
ledgers, Bloom filters, Merkle trees and proofs, hash chains, linked and batched timestamps, the UTXO and
account models, light clients, Bitcoin's duplicated-leaf bug, Certificate Transparency consistency proofs,
transaction malleability, Merkle mountain ranges, replay protection, sparse Merkle trees, and blocks with
cumulative-work fork choice. 15 breakthroughs.
blockchainkit.consensus -- the gambler's
ruin, Byzantine generals, Ben-Or and FLP, partial synchrony, PBFT, pricing functions and Hashcash, Nakamoto
consensus and its double-spend calculation, difficulty retargeting, GHOST, selfish mining, proof of stake,
nothing at stake, Casper FFG, and cryptographic sortition. 17 breakthroughs.
blockchainkit.network -- discrete-event
gossip, random, small-world and scale-free graphs, Lamport and vector clocks, epidemic rumor spreading,
Bracha's reliable broadcast, CAP, Kademlia, Sybil and eclipse attacks, inv/getdata relay, propagation and
forks, compact blocks, and Dandelion. 17 breakthroughs.
blockchainkit.vm -- a deterministic 256-bit
stack machine with gas and atomic failure, reverse Polish notation, Turing machines and the busy beaver,
structured programming, Forth, state-machine replication, smart contracts, bytecode verification, Bitcoin
Script with P2PKH and hash time-locked contracts, gas repricing, the DAO's reentrancy, and integer
overflow. 16 breakthroughs.
-- a world-state model of contracts calling contracts, with Floyd-Hoare proofs, symbolic execution, design by contract, Ricardian contracts, capabilities and , ERC-20 and its approval race, unchecked sends, gas denial of service, commit-reveal randomness, the two Parity wallet incidents, ERC-721, proxy storage collisions, CREATE2, Oyente and Echidna, and Beanstalk's flash-loan governance attack. 17 breakthroughs.
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest --cov=blockchainkit --cov-branch # 100% statement and branch coverage, enforced
pytest --doctest-modules blockchainkit --ignore-glob="*/tests/*"
ruff check . && ruff format --check .
mypy # strict
cd docs && MPLBACKEND=Agg make html && MPLBACKEND=Agg make doctest
The documentation build runs every gallery example and every code line in
the tutorials and exercise solutions, and treats warnings as errors. The README
figures are regenerated with python docs/make_readme_figure.py and
python docs/make_readme_subpackage_figures.py. See
CONTRIBUTING.md.
blockchainkit belongs to a family of teaching toolkits with the same architecture: mathematicskit, physicskit and chemistrykit.
MIT license; see LICENSE. To cite blockchainkit, see CITATION.cff.
blockchainkit.contractstx.originblockchainkit.economics -- incentives,
fees and markets: Schelling's focal points and SchellingCoin, Vickrey's and Myerson's auctions, Hanson's
market scoring rule, block rewards and the halving, Bitcoin without the subsidy, mining games, EIP-1559,
Dai and liquidation, Uniswap and impermanent loss, flash-loan oracle manipulation, priority gas auctions,
sandwich attacks, and proposer-builder separation. 16 breakthroughs.
blockchainkit.channels -- layer-2
scaling and interoperability: Reed-Solomon codes, Spilman's and duplex channels, Lightning's revocation,
Sprites and state channels, eltoo, watchtowers, balance probing, atomic swaps, BTC Relay, the Ronin and
Wormhole exploits, Plasma, OmniLedger sharding, zk and optimistic rollups, and data-availability
sampling. 16 breakthroughs.
blockchainkit.proofs -- zero-knowledge
and succinct proofs: the Schwartz-Zippel lemma, sum-check, IP = PSPACE, the PCP theorem, Kilian's and
Micali's arguments, KZG commitments, QAPs and Pinocchio, Zerocash, Groth16, trusted-setup ceremonies,
Bulletproofs, FRI, STARKs, PLONK, and Halo. 16 breakthroughs.
blockchainkit.fraud -- financial fraud on
and around blockchains: Ponzi's scheme, Benford's law, Maxwell's proof of reserves, Mt. Gox and the
malleability excuse, Provisions, deceptive verified sources, Ethereum's Ponzi contracts, ICO exit scams and
the DAICO, the Willy bot, BitConnect, honeypots, pump-and-dumps, the Squid Game rug pull, NFT wash trading,
ice phishing, FTX, and address poisoning. 17 breakthroughs.
blockchainkit.privacy -- anonymity and
confidentiality on public ledgers: Chaum's mix-nets, ring signatures, k-anonymity and anonymity sets, Tor,
linkable ring signatures and key images, address clustering, CryptoNote stealth addresses, CoinJoin,
Zerocoin, confidential transactions, RingCT, Mimblewimble, TumbleBit, Monero's traceability, and Tornado
Cash. 15 breakthroughs.
blockchainkit.wallets -- keys as users
actually hold them: BCH codes, Verhoeff's check digit, PBKDF2, scrypt, Base58Check addresses, P2SH
multisig, BIP32 HD wallets, BIP39 seed phrases, BIP44 paths, the brain-wallet drain, Bech32, threshold
ECDSA, Bech32m, social-recovery wallets, and ERC-4337 account abstraction. 15 breakthroughs.