blockchainkit 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- blockchainkit/__init__.py +12 -0
- blockchainkit/_validation.py +44 -0
- blockchainkit/consensus/__init__.py +66 -0
- blockchainkit/consensus/core/__init__.py +25 -0
- blockchainkit/consensus/core/base.py +97 -0
- blockchainkit/consensus/systems/__init__.py +46 -0
- blockchainkit/consensus/systems/byzantine.py +91 -0
- blockchainkit/consensus/systems/catch_up.py +60 -0
- blockchainkit/consensus/systems/difficulty.py +74 -0
- blockchainkit/consensus/systems/finality.py +92 -0
- blockchainkit/consensus/systems/fork_choice.py +44 -0
- blockchainkit/consensus/systems/pbft.py +78 -0
- blockchainkit/consensus/systems/pos.py +53 -0
- blockchainkit/consensus/systems/pow.py +58 -0
- blockchainkit/consensus/systems/pricing.py +50 -0
- blockchainkit/consensus/systems/randomized.py +114 -0
- blockchainkit/consensus/systems/selfish.py +81 -0
- blockchainkit/consensus/systems/sortition.py +48 -0
- blockchainkit/consensus/systems/stake_games.py +44 -0
- blockchainkit/consensus/systems/synchrony.py +49 -0
- blockchainkit/consensus/visualizers/__init__.py +9 -0
- blockchainkit/consensus/visualizers/plots.py +80 -0
- blockchainkit/constants.py +66 -0
- blockchainkit/crypto/__init__.py +157 -0
- blockchainkit/crypto/core/__init__.py +21 -0
- blockchainkit/crypto/core/base.py +109 -0
- blockchainkit/crypto/systems/__init__.py +137 -0
- blockchainkit/crypto/systems/asymmetric.py +136 -0
- blockchainkit/crypto/systems/commitments.py +93 -0
- blockchainkit/crypto/systems/curves.py +205 -0
- blockchainkit/crypto/systems/discrete_log.py +156 -0
- blockchainkit/crypto/systems/hashing.py +95 -0
- blockchainkit/crypto/systems/lamport.py +65 -0
- blockchainkit/crypto/systems/mac.py +34 -0
- blockchainkit/crypto/systems/merkle_damgard.py +139 -0
- blockchainkit/crypto/systems/multisig.py +98 -0
- blockchainkit/crypto/systems/one_time_pad.py +42 -0
- blockchainkit/crypto/systems/puzzles.py +96 -0
- blockchainkit/crypto/systems/sharing.py +159 -0
- blockchainkit/crypto/systems/signatures.py +232 -0
- blockchainkit/crypto/utils/__init__.py +5 -0
- blockchainkit/crypto/utils/primes.py +39 -0
- blockchainkit/crypto/visualizers/__init__.py +9 -0
- blockchainkit/crypto/visualizers/plots.py +88 -0
- blockchainkit/network/__init__.py +70 -0
- blockchainkit/network/core/__init__.py +21 -0
- blockchainkit/network/core/base.py +149 -0
- blockchainkit/network/systems/__init__.py +54 -0
- blockchainkit/network/systems/addresses.py +126 -0
- blockchainkit/network/systems/broadcast.py +124 -0
- blockchainkit/network/systems/clocks.py +149 -0
- blockchainkit/network/systems/epidemics.py +111 -0
- blockchainkit/network/systems/gossip.py +201 -0
- blockchainkit/network/systems/kademlia.py +147 -0
- blockchainkit/network/systems/privacy.py +98 -0
- blockchainkit/network/systems/propagation.py +60 -0
- blockchainkit/network/systems/relay.py +123 -0
- blockchainkit/network/systems/replication.py +122 -0
- blockchainkit/network/systems/topology.py +238 -0
- blockchainkit/network/visualizers/__init__.py +14 -0
- blockchainkit/network/visualizers/plots.py +177 -0
- blockchainkit/py.typed +0 -0
- blockchainkit/structures/__init__.py +61 -0
- blockchainkit/structures/core/__init__.py +21 -0
- blockchainkit/structures/core/base.py +100 -0
- blockchainkit/structures/systems/__init__.py +45 -0
- blockchainkit/structures/systems/block.py +144 -0
- blockchainkit/structures/systems/bloom.py +81 -0
- blockchainkit/structures/systems/chain.py +131 -0
- blockchainkit/structures/systems/hash_chain.py +35 -0
- blockchainkit/structures/systems/headers.py +54 -0
- blockchainkit/structures/systems/ledger.py +87 -0
- blockchainkit/structures/systems/merkle.py +273 -0
- blockchainkit/structures/systems/mmr.py +112 -0
- blockchainkit/structures/systems/sparse_merkle.py +139 -0
- blockchainkit/structures/systems/transaction.py +116 -0
- blockchainkit/structures/systems/utxo.py +156 -0
- blockchainkit/structures/utils/__init__.py +6 -0
- blockchainkit/structures/utils/accounts.py +13 -0
- blockchainkit/structures/utils/encoding.py +11 -0
- blockchainkit/structures/visualizers/__init__.py +13 -0
- blockchainkit/structures/visualizers/plots.py +154 -0
- blockchainkit/vm/__init__.py +60 -0
- blockchainkit/vm/core/__init__.py +25 -0
- blockchainkit/vm/core/base.py +171 -0
- blockchainkit/vm/systems/__init__.py +40 -0
- blockchainkit/vm/systems/assembler.py +80 -0
- blockchainkit/vm/systems/expressions.py +91 -0
- blockchainkit/vm/systems/programs.py +143 -0
- blockchainkit/vm/systems/reentrancy.py +70 -0
- blockchainkit/vm/systems/script.py +268 -0
- blockchainkit/vm/systems/stack_machine.py +239 -0
- blockchainkit/vm/systems/turing.py +111 -0
- blockchainkit/vm/systems/verifier.py +81 -0
- blockchainkit/vm/visualizers/__init__.py +9 -0
- blockchainkit/vm/visualizers/plots.py +97 -0
- blockchainkit-0.2.0.dist-info/METADATA +195 -0
- blockchainkit-0.2.0.dist-info/RECORD +101 -0
- blockchainkit-0.2.0.dist-info/WHEEL +5 -0
- blockchainkit-0.2.0.dist-info/licenses/LICENSE +21 -0
- blockchainkit-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: blockchainkit
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Cryptography and blockchain breakthroughs, explained through reproducible Python experiments.
|
|
5
|
+
Author-email: Charles Poli <cpoli374@gmail.com>
|
|
6
|
+
Maintainer-email: Charles Poli <cpoli374@gmail.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/cpoli/blockchainkit
|
|
9
|
+
Project-URL: Issues, https://github.com/cpoli/blockchainkit/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/cpoli/blockchainkit/blob/main/CHANGELOG.md
|
|
11
|
+
Project-URL: Documentation, https://cpoli.github.io/blockchainkit/
|
|
12
|
+
Keywords: blockchain,cryptography,education,simulation,consensus,merkle-tree,proof-of-work,proof-of-stake,elliptic-curves,digital-signatures,gossip-protocol
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Education
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
24
|
+
Classifier: Typing :: Typed
|
|
25
|
+
Classifier: Topic :: Education
|
|
26
|
+
Classifier: Topic :: Security :: Cryptography
|
|
27
|
+
Classifier: Topic :: Scientific/Engineering
|
|
28
|
+
Requires-Python: >=3.10
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Requires-Dist: matplotlib>=3.6
|
|
32
|
+
Requires-Dist: numpy>=1.24
|
|
33
|
+
Provides-Extra: test
|
|
34
|
+
Requires-Dist: pytest>=7; extra == "test"
|
|
35
|
+
Requires-Dist: pytest-cov>=4; extra == "test"
|
|
36
|
+
Requires-Dist: hypothesis>=6; extra == "test"
|
|
37
|
+
Provides-Extra: docs
|
|
38
|
+
Requires-Dist: sphinx>=7; extra == "docs"
|
|
39
|
+
Requires-Dist: pydata-sphinx-theme>=0.15; extra == "docs"
|
|
40
|
+
Requires-Dist: sphinx-gallery>=0.17; extra == "docs"
|
|
41
|
+
Requires-Dist: sphinx-design>=0.6; extra == "docs"
|
|
42
|
+
Requires-Dist: myst-parser>=2; extra == "docs"
|
|
43
|
+
Requires-Dist: jupyterlite-sphinx>=0.17; extra == "docs"
|
|
44
|
+
Requires-Dist: jupyterlite-pyodide-kernel>=0.4; extra == "docs"
|
|
45
|
+
Requires-Dist: pillow>=9; extra == "docs"
|
|
46
|
+
Provides-Extra: dev
|
|
47
|
+
Requires-Dist: blockchainkit[docs,test]; extra == "dev"
|
|
48
|
+
Requires-Dist: ruff==0.16.6; extra == "dev"
|
|
49
|
+
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
50
|
+
Requires-Dist: pre-commit>=3.7; extra == "dev"
|
|
51
|
+
Requires-Dist: build>=1; extra == "dev"
|
|
52
|
+
Dynamic: license-file
|
|
53
|
+
|
|
54
|
+
# blockchainkit
|
|
55
|
+
|
|
56
|
+
| | |
|
|
57
|
+
|:--|:-:|
|
|
58
|
+
| Quality | [](https://github.com/cpoli/blockchainkit/blob/main/LICENSE) [](https://github.com/cpoli/blockchainkit/actions/workflows/ci.yml) [](#development) |
|
|
59
|
+
| Documentation | [](https://cpoli.github.io/blockchainkit/) |
|
|
60
|
+
| Code style | [](https://github.com/astral-sh/ruff) |
|
|
61
|
+
| Try it online | [](https://colab.research.google.com/github/cpoli/blockchainkit/blob/main/notebooks/quickstart.ipynb) [](https://cpoli.github.io/blockchainkit/lite/lab/) |
|
|
62
|
+
|
|
63
|
+
**Cryptography and blockchains, understood through experiments.**
|
|
64
|
+
blockchainkit is a Python toolkit for learning and teaching how blockchains
|
|
65
|
+
work, from the one-time pad to Ethereum's gas. Each idea is followed from its
|
|
66
|
+
history and mathematics to a small, typed, inspectable implementation, a
|
|
67
|
+
figure, and an experiment you can change. Every subpackage's documentation
|
|
68
|
+
walks through the field's breakthroughs in historical order, 87 of them in
|
|
69
|
+
all, each linked to the code and the gallery example that reproduce it.
|
|
70
|
+
|
|
71
|
+

|
|
72
|
+
|
|
73
|
+
- **For students:** recover a private key from a reused signing nonce, find
|
|
74
|
+
hash collisions at the birthday bound, watch a fork undo a payment, mine
|
|
75
|
+
selfishly, eclipse a node, and drain a DAO-style contract, in a few lines
|
|
76
|
+
each.
|
|
77
|
+
- **For instructors:** five subpackages, one consistent API, 88 gallery
|
|
78
|
+
examples (each downloadable as a notebook or runnable in the browser),
|
|
79
|
+
exercise pages with worked solutions, and cross-cutting tutorials.
|
|
80
|
+
- **Honest about its limits:** tiny keys, variable-time arithmetic and
|
|
81
|
+
simplified formats keep the mathematics visible. Every adaptation is marked
|
|
82
|
+
on its history entry and specified in the
|
|
83
|
+
[model boundaries](https://cpoli.github.io/blockchainkit/protocol.html).
|
|
84
|
+
This is teaching software, not a wallet or a node.
|
|
85
|
+
|
|
86
|
+
`import blockchainkit` loads only the standard library. Matplotlib and NumPy
|
|
87
|
+
are used only by each subpackage's `visualizers`.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pip install blockchainkit # Python 3.10+
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Conventionally imported as `bk`:
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
import blockchainkit as bk
|
|
97
|
+
|
|
98
|
+
alice_key = 7 # A fixed teaching key: never use such a key for real money.
|
|
99
|
+
alice = bk.structures.address(bk.crypto.public_key(alice_key))
|
|
100
|
+
bob = bk.structures.address(bk.crypto.public_key(11))
|
|
101
|
+
|
|
102
|
+
payment = bk.structures.Transaction(bk.crypto.public_key(alice_key), bob, 25, 0)
|
|
103
|
+
payment = payment.signed(alice_key, signing_nonce=17) # Never reuse a signing nonce.
|
|
104
|
+
|
|
105
|
+
genesis = bk.consensus.mine(bk.structures.Block(difficulty=5)).block
|
|
106
|
+
chain = bk.structures.Blockchain(genesis, bk.structures.Ledger({alice: 100}))
|
|
107
|
+
block = bk.structures.Block(genesis.hash, (payment,), height=1, timestamp=1, difficulty=5)
|
|
108
|
+
chain.add(bk.consensus.mine(block).block)
|
|
109
|
+
assert chain.state.balances[bob] == 25
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The [quickstart notebook](https://github.com/cpoli/blockchainkit/blob/main/notebooks/quickstart.ipynb)
|
|
113
|
+
takes one payment from a signature to a mined block in about ten minutes.
|
|
114
|
+
Open it in Colab using the badge above.
|
|
115
|
+
|
|
116
|
+
## Subpackages
|
|
117
|
+
|
|
118
|
+
- [`blockchainkit.crypto`](https://cpoli.github.io/blockchainkit/api/gallery/crypto/) -- the one-time pad,
|
|
119
|
+
baby-step giant-step and Pohlig-Hellman, Merkle's puzzles, Diffie-Hellman and RSA, Shamir and Feldman
|
|
120
|
+
secret sharing, Lamport signatures, birthday attacks, commitments (hash and Pedersen), blind signatures,
|
|
121
|
+
elliptic curves, zero knowledge and Fiat-Shamir, Merkle-Damgård and length extension, HMAC, Schnorr
|
|
122
|
+
signatures, RFC 6979 nonces, and MuSig. 22 breakthroughs.
|
|
123
|
+
|
|
124
|
+

|
|
125
|
+
|
|
126
|
+
- [`blockchainkit.structures`](https://cpoli.github.io/blockchainkit/api/gallery/structures/) -- double-entry
|
|
127
|
+
ledgers, Bloom filters, Merkle trees and proofs, hash chains, linked and batched timestamps, the UTXO and
|
|
128
|
+
account models, light clients, Bitcoin's duplicated-leaf bug, Certificate Transparency consistency proofs,
|
|
129
|
+
transaction malleability, Merkle mountain ranges, replay protection, sparse Merkle trees, and blocks with
|
|
130
|
+
cumulative-work fork choice. 15 breakthroughs.
|
|
131
|
+
|
|
132
|
+

|
|
133
|
+
|
|
134
|
+
- [`blockchainkit.consensus`](https://cpoli.github.io/blockchainkit/api/gallery/consensus/) -- the gambler's
|
|
135
|
+
ruin, Byzantine generals, Ben-Or and FLP, partial synchrony, PBFT, pricing functions and Hashcash, Nakamoto
|
|
136
|
+
consensus and its double-spend calculation, difficulty retargeting, GHOST, selfish mining, proof of stake,
|
|
137
|
+
nothing at stake, Casper FFG, and cryptographic sortition. 17 breakthroughs.
|
|
138
|
+
|
|
139
|
+

|
|
140
|
+
|
|
141
|
+
- [`blockchainkit.network`](https://cpoli.github.io/blockchainkit/api/gallery/network/) -- discrete-event
|
|
142
|
+
gossip, random, small-world and scale-free graphs, Lamport and vector clocks, epidemic rumor spreading,
|
|
143
|
+
Bracha's reliable broadcast, CAP, Kademlia, Sybil and eclipse attacks, inv/getdata relay, propagation and
|
|
144
|
+
forks, compact blocks, and Dandelion. 17 breakthroughs.
|
|
145
|
+
|
|
146
|
+

|
|
147
|
+
|
|
148
|
+
- [`blockchainkit.vm`](https://cpoli.github.io/blockchainkit/api/gallery/vm/) -- a deterministic 256-bit
|
|
149
|
+
stack machine with gas and atomic failure, reverse Polish notation, Turing machines and the busy beaver,
|
|
150
|
+
structured programming, Forth, state-machine replication, smart contracts, bytecode verification, Bitcoin
|
|
151
|
+
Script with P2PKH and hash time-locked contracts, gas repricing, the DAO's reentrancy, and integer
|
|
152
|
+
overflow. 16 breakthroughs.
|
|
153
|
+
|
|
154
|
+

|
|
155
|
+
|
|
156
|
+
## Learn
|
|
157
|
+
|
|
158
|
+
- [Start here](https://cpoli.github.io/blockchainkit/start_here.html): the ideas, with one imaginary
|
|
159
|
+
payment and no prerequisites.
|
|
160
|
+
- [Guided course](https://cpoli.github.io/blockchainkit/tutorials/course.html): seven lessons in
|
|
161
|
+
prerequisite order.
|
|
162
|
+
- Tutorials across subpackages: [life of a payment](https://cpoli.github.io/blockchainkit/tutorials/life_of_a_payment.html),
|
|
163
|
+
[nonces everywhere](https://cpoli.github.io/blockchainkit/tutorials/nonces_everywhere.html),
|
|
164
|
+
[hashes everywhere](https://cpoli.github.io/blockchainkit/tutorials/hashes_everywhere.html), and
|
|
165
|
+
[who do you trust?](https://cpoli.github.io/blockchainkit/tutorials/who_do_you_trust.html)
|
|
166
|
+
- [Exercises](https://cpoli.github.io/blockchainkit/exercises/index.html): worked solutions, checked by
|
|
167
|
+
every documentation build.
|
|
168
|
+
- [History](https://cpoli.github.io/blockchainkit/history/index.html): the breakthroughs, each with
|
|
169
|
+
plain-language explanation, mathematics, primary references, and its own experiment.
|
|
170
|
+
|
|
171
|
+
## Development
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
python -m venv .venv && source .venv/bin/activate
|
|
175
|
+
pip install -e ".[dev]"
|
|
176
|
+
pytest --cov=blockchainkit --cov-branch # 100% statement and branch coverage, enforced
|
|
177
|
+
pytest --doctest-modules blockchainkit --ignore-glob="*/tests/*"
|
|
178
|
+
ruff check . && ruff format --check .
|
|
179
|
+
mypy # strict
|
|
180
|
+
cd docs && MPLBACKEND=Agg make html && MPLBACKEND=Agg make doctest
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
The documentation build runs every gallery example and every code line in
|
|
184
|
+
the tutorials and exercise solutions, and treats warnings as errors. The README
|
|
185
|
+
figures are regenerated with `python docs/make_readme_figure.py` and
|
|
186
|
+
`python docs/make_readme_subpackage_figures.py`. See
|
|
187
|
+
[CONTRIBUTING.md](CONTRIBUTING.md).
|
|
188
|
+
|
|
189
|
+
blockchainkit belongs to a family of teaching toolkits with the same
|
|
190
|
+
architecture: [mathematicskit](https://github.com/cpoli/mathematicskit),
|
|
191
|
+
[physicskit](https://github.com/cpoli/physicskit) and
|
|
192
|
+
[chemistrykit](https://github.com/cpoli/chemistrykit).
|
|
193
|
+
|
|
194
|
+
MIT license; see [LICENSE](LICENSE). To cite blockchainkit, see
|
|
195
|
+
[CITATION.cff](CITATION.cff).
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
blockchainkit/__init__.py,sha256=Wpow4gcEKzHngWdHTPpD9AbJ52EIA8TqvnkZG_WEFZM,363
|
|
2
|
+
blockchainkit/_validation.py,sha256=uExXf6ySQAwXpShDd4cddK5d24k8n0a6V0urefuN308,1749
|
|
3
|
+
blockchainkit/constants.py,sha256=Lk-NZ2QSitrZIYrnPg-VdcpdODHAaT8pZ0D1KyWY9ow,2457
|
|
4
|
+
blockchainkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
blockchainkit/consensus/__init__.py,sha256=pJRp-kwNEDJfQweVAueY9BtRfxZnjny_7HDJqNEth8w,2130
|
|
6
|
+
blockchainkit/consensus/core/__init__.py,sha256=i01Z4aevZCYflT2BH-46YRUtfft_KhFFtNaDgZKpIhI,477
|
|
7
|
+
blockchainkit/consensus/core/base.py,sha256=n_fZ7fWIy4DeqApMh6mL7qK9UnNK7jiKA2B3h4NEzFc,2286
|
|
8
|
+
blockchainkit/consensus/systems/__init__.py,sha256=LTCPiVa_wkUOovbnjPsCkuAI7SMyvfTUop0oMIz_dKs,1707
|
|
9
|
+
blockchainkit/consensus/systems/byzantine.py,sha256=lrJzIZ23mKmRKn7-YuYzI0NJzJ-mYHyBZzbdUFKKyXc,3322
|
|
10
|
+
blockchainkit/consensus/systems/catch_up.py,sha256=351yHR6getbhVlni1UO8Wm9X_RLdXFwelufTyNM_KCk,2400
|
|
11
|
+
blockchainkit/consensus/systems/difficulty.py,sha256=zc-ptYgrvxbL39BV2bbx8OERhhtRKrY-BeVJNn_Bn3A,2742
|
|
12
|
+
blockchainkit/consensus/systems/finality.py,sha256=BpTI5l66qw5xHNqSZ89dZLPahF2Y-tNWBQLIIw--f-Q,3400
|
|
13
|
+
blockchainkit/consensus/systems/fork_choice.py,sha256=U4kjBkUehoPHNHauGkUWNWEgJKXAFrcUBCFkpe_kfkE,1747
|
|
14
|
+
blockchainkit/consensus/systems/pbft.py,sha256=sWb8gYcP6XD9zyhMU7vEtwGpvCZ_ujiG50HatkLkOi4,3012
|
|
15
|
+
blockchainkit/consensus/systems/pos.py,sha256=lsCVBEp25UjCHcqLzKARpBM3UHx6zdEP_DV-MdQKrXE,2098
|
|
16
|
+
blockchainkit/consensus/systems/pow.py,sha256=2QR-lsvHcXLxSSw8cPQWp16HBJWoYTT0Bl4vjH8Divo,2106
|
|
17
|
+
blockchainkit/consensus/systems/pricing.py,sha256=QgDLgh_i4Zx44rbaH2bO35h2-g792xiNp6HC7HOZrXE,1985
|
|
18
|
+
blockchainkit/consensus/systems/randomized.py,sha256=6l5Y-gg51fQfQXIzURNHs3gpxg3KtcPj2p287sMl3aQ,4372
|
|
19
|
+
blockchainkit/consensus/systems/selfish.py,sha256=obb6OXrfNXrwNxoy5BfqTl39aSLa6BqbFWjYeEeU8xs,3148
|
|
20
|
+
blockchainkit/consensus/systems/sortition.py,sha256=hBJDrJoWthPRjhTtlQ5uMSI2MDB_gW__rjyjoW8a648,2104
|
|
21
|
+
blockchainkit/consensus/systems/stake_games.py,sha256=DvayO_YyGCJcdXfZVchlfzns794ZbnzUSKAPHrGO2NA,1529
|
|
22
|
+
blockchainkit/consensus/systems/synchrony.py,sha256=leO-HOmBV-XBrJAC1hotcEyGOJEhhe-ShtE4zoibj_0,1907
|
|
23
|
+
blockchainkit/consensus/visualizers/__init__.py,sha256=XqzjtNeYMmfpL9QGFvoOb2_VJCg3HsJkjaipTW4sRnk,356
|
|
24
|
+
blockchainkit/consensus/visualizers/plots.py,sha256=dkZyFbsDr1V-i5Y25jOWN3n4rwy8KnaIL4RCehwbo04,2716
|
|
25
|
+
blockchainkit/crypto/__init__.py,sha256=EgpIsYTGz7gix3H0ALNB0BC2_hgj5-XtDuCsFvcrKZc,3297
|
|
26
|
+
blockchainkit/crypto/core/__init__.py,sha256=Pci9WGwzBe2RXsybuPJD1rZtDjNBMyEVWIb4Sqd7Tw0,416
|
|
27
|
+
blockchainkit/crypto/core/base.py,sha256=gtNonevC8GLnh19p7bUT0TTuYt0pNBY4K1y897AAnS0,2660
|
|
28
|
+
blockchainkit/crypto/systems/__init__.py,sha256=vzjEtiuTuiWZjFreaPKkN5ipm14pXav9RF30FzxhDE0,2867
|
|
29
|
+
blockchainkit/crypto/systems/asymmetric.py,sha256=C7jAhd9ORGyqQMDLbgaXtZE94gVBoAot1dpVgc84Pok,4712
|
|
30
|
+
blockchainkit/crypto/systems/commitments.py,sha256=BUVgF1zEa67XRp3o0T4FK1DrBJO2MS0RIuVMsQUB0g8,3683
|
|
31
|
+
blockchainkit/crypto/systems/curves.py,sha256=ISJOuo8_cTpY8MPSAU3GpJYHBZu03bSQA81jUv6l5Y0,7046
|
|
32
|
+
blockchainkit/crypto/systems/discrete_log.py,sha256=kWsar6e4lnxW4oS3hTC7RKYmuUfPIyVGbeup38WdDCo,5855
|
|
33
|
+
blockchainkit/crypto/systems/hashing.py,sha256=VwQk5ggZpM27N7yhlDs7t_uCo5HbLJAdPETe3XMN_4c,3210
|
|
34
|
+
blockchainkit/crypto/systems/lamport.py,sha256=OVqKV5UT9Wdq653klaqkssILzgfUKIsVP68h3pXDxYo,2682
|
|
35
|
+
blockchainkit/crypto/systems/mac.py,sha256=p6wK1GnpPdFsmS2RW6TQSkY3bOzRJmg7PbW58jLT0Sw,1356
|
|
36
|
+
blockchainkit/crypto/systems/merkle_damgard.py,sha256=p05n_HS-qzPpBy3MXTs9qxDU4c3NNgjGwXmcMSm_YLQ,5779
|
|
37
|
+
blockchainkit/crypto/systems/multisig.py,sha256=kDWP-keivxa6vxllA5j8FiGEwePYAUil8moFEntx5Bw,3974
|
|
38
|
+
blockchainkit/crypto/systems/one_time_pad.py,sha256=i2vGBND0CWxHb2v239yGJP0sf9SLSw8Hx6xqFvjYjrk,1582
|
|
39
|
+
blockchainkit/crypto/systems/puzzles.py,sha256=OzefeiIggWcO9t9zVZvrGOHBNA1zsAwFAUDmNWzzFGI,3478
|
|
40
|
+
blockchainkit/crypto/systems/sharing.py,sha256=LPiI7yfeOrQazN4mMkGYQb_L8tAeT8RlGAICibgfIWc,5794
|
|
41
|
+
blockchainkit/crypto/systems/signatures.py,sha256=-qH9JGrUjVCPMcgAgPFk80Akr5puOBC4brZLbrO9uAE,8249
|
|
42
|
+
blockchainkit/crypto/utils/__init__.py,sha256=d4Hm6ftrb6ms-fptUPKrP274WBvhr1ZiGxhFz8Ek-b4,151
|
|
43
|
+
blockchainkit/crypto/utils/primes.py,sha256=-BIuNKXp4UdVTBM58-m2GNn7bCwODZFZ1qGPLminpAs,1253
|
|
44
|
+
blockchainkit/crypto/visualizers/__init__.py,sha256=OTqJyTk0a1OlIpSKDC4fHbiUcqbspgoi2QfgOd9pwqA,355
|
|
45
|
+
blockchainkit/crypto/visualizers/plots.py,sha256=XdBpfmsIb8MmLfsgWjMQtv53ZxHa_w8TwJDtPh7MuRY,3187
|
|
46
|
+
blockchainkit/network/__init__.py,sha256=Hd54B01taG1JgLF_MZCWopdy-DZInoorcvH5k883MaE,1994
|
|
47
|
+
blockchainkit/network/core/__init__.py,sha256=0cbAIceWdDtC0EKgWNo2EVXEMt9GFsTbHjMe0Zrae9U,363
|
|
48
|
+
blockchainkit/network/core/base.py,sha256=EcL6qdJf5y5YoF9Dsne2DYjHIqrec1QalH8Miihqjw0,3621
|
|
49
|
+
blockchainkit/network/systems/__init__.py,sha256=oKh5hzAcl9BC2qrnC4PIePNP8I9LkKg59JTT_yll9k4,1680
|
|
50
|
+
blockchainkit/network/systems/addresses.py,sha256=6W-gSxBD31oqX1a8VW0AtPPukfhrndxcg2rdRvbEaUU,5053
|
|
51
|
+
blockchainkit/network/systems/broadcast.py,sha256=7z8KLeKGE6hrBfVx5hdoSxCKTW5yCJ0el73FT3Yajz8,5201
|
|
52
|
+
blockchainkit/network/systems/clocks.py,sha256=z-5290xL4e9mq6TpZQ_FrbFc-soQpjuRVbMZ7UOR5zI,6091
|
|
53
|
+
blockchainkit/network/systems/epidemics.py,sha256=XlF_1XVzc0DopObhtDysFFbXdeM79DFMW_5agYEVlS0,3796
|
|
54
|
+
blockchainkit/network/systems/gossip.py,sha256=GVk221K6oTbhABJSGzCzLqSUBBDxX8-B33P0W_pJ4s4,8087
|
|
55
|
+
blockchainkit/network/systems/kademlia.py,sha256=N6gOS17LgyRzA1791YT3YCGMI61Pw0ea7lk0YuhQ6QA,5572
|
|
56
|
+
blockchainkit/network/systems/privacy.py,sha256=W-72aBKyL3lY1kG0n_Ryt02gsEGdToAtDUt293KG0Ec,3879
|
|
57
|
+
blockchainkit/network/systems/propagation.py,sha256=IABykGLf9tuldCYeY2_Y0x2rmLmyrakkG7qPS7AcPaA,2199
|
|
58
|
+
blockchainkit/network/systems/relay.py,sha256=36QEamb50FczJhSOelkSleBOKWArJB8w3bpCiV1Ls20,5054
|
|
59
|
+
blockchainkit/network/systems/replication.py,sha256=1pwBayeabpXQLB2cLB_wNmk8cnJ8h43M5D4iB3xYxwk,5205
|
|
60
|
+
blockchainkit/network/systems/topology.py,sha256=fw6l200jCqeKqWaD1C8Clsrin0W1mIu6kbg_8GhGJUE,9037
|
|
61
|
+
blockchainkit/network/visualizers/__init__.py,sha256=orf0xzRFiBK_eyFQbiISIS8FvxwOZzf7K5cT9vyyKCA,437
|
|
62
|
+
blockchainkit/network/visualizers/plots.py,sha256=xLh1E-36ax9rGSkFdYO35F4TsKJaPUKOta66W6FSR9E,6537
|
|
63
|
+
blockchainkit/structures/__init__.py,sha256=C0a3AgP7YLuc7--9GmWXn5J9uYAi-XlNMWDZO6mz5k0,1787
|
|
64
|
+
blockchainkit/structures/core/__init__.py,sha256=u9cfrm72flNrov7jcktWl4DzaxBgrtD4Td_QfUalscU,355
|
|
65
|
+
blockchainkit/structures/core/base.py,sha256=LK32cFXAsG80eS-JNkuSENKa2O6sQjyubuwPhjK0IPc,2510
|
|
66
|
+
blockchainkit/structures/systems/__init__.py,sha256=TzJN-LmAS0OWUeGj5DFG6O8C1Bm01ith5a0abIGygt0,1483
|
|
67
|
+
blockchainkit/structures/systems/block.py,sha256=nxS_t7RcuF34TtK0SZQLm7gB196sT42HAn5dbxroVkk,5194
|
|
68
|
+
blockchainkit/structures/systems/bloom.py,sha256=hKmSZV9p-2kHbmZi-xXzzszOwkSGan-mmBVaN8Djgeo,2791
|
|
69
|
+
blockchainkit/structures/systems/chain.py,sha256=57kiqc8PpRwk0C_UJU4jOls80XREfvI83gLlcWQTyYo,5505
|
|
70
|
+
blockchainkit/structures/systems/hash_chain.py,sha256=6A0O1_4-G8dj5ndrzmBG2dtahrK_3CKFZasFJNDlgn0,1311
|
|
71
|
+
blockchainkit/structures/systems/headers.py,sha256=zEpA2pP8KQRY1Pzgu6F9dNEQ6sL8jqo5UpIE8wjjBHk,1957
|
|
72
|
+
blockchainkit/structures/systems/ledger.py,sha256=cYeHH7V6z837kbfJhcO1ZIGF00DC699AGBVD-JPSD38,3651
|
|
73
|
+
blockchainkit/structures/systems/merkle.py,sha256=1qe3TkMDMKpV4kLdh293G2B0xq763iEkqoGy6qaAKb4,10775
|
|
74
|
+
blockchainkit/structures/systems/mmr.py,sha256=nWcRt3Wo26VAJuvtQyQAflul1OokaBfOYZdeHySmdTw,4743
|
|
75
|
+
blockchainkit/structures/systems/sparse_merkle.py,sha256=olGPz5COwyoG0N6fWXa9UV_gTmNGlBOJuNpzGMvszts,5573
|
|
76
|
+
blockchainkit/structures/systems/transaction.py,sha256=9nQVzEfvq_muQtnDCIzONe2Y5sQApP3iwv8eJuGT0fQ,4484
|
|
77
|
+
blockchainkit/structures/systems/utxo.py,sha256=LN1ZICC2itYEnPl8ssW76J32eKW_9CzfIaVxQdV7p4w,6411
|
|
78
|
+
blockchainkit/structures/utils/__init__.py,sha256=TPUirj3zl1XSNvd0uBPkDW5Vp4tYsJLyeetFxyTPqPA,267
|
|
79
|
+
blockchainkit/structures/utils/accounts.py,sha256=Sow_qi9dCuEjwsvV6sGKUewZuJkHTrUBajmJDG-Tu5U,472
|
|
80
|
+
blockchainkit/structures/utils/encoding.py,sha256=KmyKlvqLAT_Syzd1ZiyzSTFbBMt5ydyGs8nj2FBepiA,388
|
|
81
|
+
blockchainkit/structures/visualizers/__init__.py,sha256=CYdW4PTNqU8quxDVEzZXQ1KtAlX9lBQB-CQ-b1Ln7B8,406
|
|
82
|
+
blockchainkit/structures/visualizers/plots.py,sha256=gTjz_ANQook7pN5CdA5PfkoA7SoYp7OjsvP9QiYdtZ8,5900
|
|
83
|
+
blockchainkit/vm/__init__.py,sha256=rcfWsQsRQxFs6yQbvqQOonl2sbM-n8oklMBG1miBYeQ,1584
|
|
84
|
+
blockchainkit/vm/core/__init__.py,sha256=5wIbP5I-GVvpoqtKFp5UGdBA6W4dl49pEPX8p9UGWIc,466
|
|
85
|
+
blockchainkit/vm/core/base.py,sha256=E4PKlLKxTN0VfSXPSdT9iCXQDZUsBfDYKRTYui5v5Us,4306
|
|
86
|
+
blockchainkit/vm/systems/__init__.py,sha256=9a3cwm1jtBPPsZ4F1uBzbmOod9QWImezOVhrFegVJA8,1180
|
|
87
|
+
blockchainkit/vm/systems/assembler.py,sha256=duyVe1Lnu_tyRMZGLYlNKGDmOybjlBwQQFZVnnWyTSs,2578
|
|
88
|
+
blockchainkit/vm/systems/expressions.py,sha256=FTd1tPzlNcMyn1fGneSt9O9JIFHJE5PpzdWhDHdWJCM,3504
|
|
89
|
+
blockchainkit/vm/systems/programs.py,sha256=SEM9P2e6GYQ18UF4T1HnGRDx_YceIXbLLnPJe0ngIfU,4686
|
|
90
|
+
blockchainkit/vm/systems/reentrancy.py,sha256=JhSC1C2XiTRS4oylnkMY_5mKKlhVg5SMKGPB1zgmiMg,2800
|
|
91
|
+
blockchainkit/vm/systems/script.py,sha256=v4y43MGdiqPmBdHV6F8cgU7VftkfGmB4-PXrysQxIjQ,9190
|
|
92
|
+
blockchainkit/vm/systems/stack_machine.py,sha256=sSXKTgfzWjgQD8DI3gKaxU54FsiM9dbj2PorXxeb20E,8502
|
|
93
|
+
blockchainkit/vm/systems/turing.py,sha256=OrIk-tbkT2SYbiuSftijfa-PVV-b7i0STlNyME8j7pI,4665
|
|
94
|
+
blockchainkit/vm/systems/verifier.py,sha256=dj7YiGBPVfnAiiD1N703FKrhaL7PLHWDkKAG5k6rvjg,3291
|
|
95
|
+
blockchainkit/vm/visualizers/__init__.py,sha256=5ueagvnUz3V01o3Dl7AgWw5nAgSUF0yB71NojvCvd1A,339
|
|
96
|
+
blockchainkit/vm/visualizers/plots.py,sha256=JFLE0aPoFwj6yuY1RJGGy57E9z7sWfFSv1SUQdIsqCI,3014
|
|
97
|
+
blockchainkit-0.2.0.dist-info/licenses/LICENSE,sha256=tB2zouMIXT25S9CMv-ynwizt9QFcDzMbRG-6CHexGzs,1069
|
|
98
|
+
blockchainkit-0.2.0.dist-info/METADATA,sha256=UW2twKzOvVlpu5OM_wzgisIhs8MJkuEMOCq2JSC8KAI,11409
|
|
99
|
+
blockchainkit-0.2.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
100
|
+
blockchainkit-0.2.0.dist-info/top_level.txt,sha256=jdLYQCUCm-saRT3czrEi9qeWUQuKrRPCMR1yAmbiueY,14
|
|
101
|
+
blockchainkit-0.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Charles Poli
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
blockchainkit
|