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.
Files changed (101) hide show
  1. blockchainkit/__init__.py +12 -0
  2. blockchainkit/_validation.py +44 -0
  3. blockchainkit/consensus/__init__.py +66 -0
  4. blockchainkit/consensus/core/__init__.py +25 -0
  5. blockchainkit/consensus/core/base.py +97 -0
  6. blockchainkit/consensus/systems/__init__.py +46 -0
  7. blockchainkit/consensus/systems/byzantine.py +91 -0
  8. blockchainkit/consensus/systems/catch_up.py +60 -0
  9. blockchainkit/consensus/systems/difficulty.py +74 -0
  10. blockchainkit/consensus/systems/finality.py +92 -0
  11. blockchainkit/consensus/systems/fork_choice.py +44 -0
  12. blockchainkit/consensus/systems/pbft.py +78 -0
  13. blockchainkit/consensus/systems/pos.py +53 -0
  14. blockchainkit/consensus/systems/pow.py +58 -0
  15. blockchainkit/consensus/systems/pricing.py +50 -0
  16. blockchainkit/consensus/systems/randomized.py +114 -0
  17. blockchainkit/consensus/systems/selfish.py +81 -0
  18. blockchainkit/consensus/systems/sortition.py +48 -0
  19. blockchainkit/consensus/systems/stake_games.py +44 -0
  20. blockchainkit/consensus/systems/synchrony.py +49 -0
  21. blockchainkit/consensus/visualizers/__init__.py +9 -0
  22. blockchainkit/consensus/visualizers/plots.py +80 -0
  23. blockchainkit/constants.py +66 -0
  24. blockchainkit/crypto/__init__.py +157 -0
  25. blockchainkit/crypto/core/__init__.py +21 -0
  26. blockchainkit/crypto/core/base.py +109 -0
  27. blockchainkit/crypto/systems/__init__.py +137 -0
  28. blockchainkit/crypto/systems/asymmetric.py +136 -0
  29. blockchainkit/crypto/systems/commitments.py +93 -0
  30. blockchainkit/crypto/systems/curves.py +205 -0
  31. blockchainkit/crypto/systems/discrete_log.py +156 -0
  32. blockchainkit/crypto/systems/hashing.py +95 -0
  33. blockchainkit/crypto/systems/lamport.py +65 -0
  34. blockchainkit/crypto/systems/mac.py +34 -0
  35. blockchainkit/crypto/systems/merkle_damgard.py +139 -0
  36. blockchainkit/crypto/systems/multisig.py +98 -0
  37. blockchainkit/crypto/systems/one_time_pad.py +42 -0
  38. blockchainkit/crypto/systems/puzzles.py +96 -0
  39. blockchainkit/crypto/systems/sharing.py +159 -0
  40. blockchainkit/crypto/systems/signatures.py +232 -0
  41. blockchainkit/crypto/utils/__init__.py +5 -0
  42. blockchainkit/crypto/utils/primes.py +39 -0
  43. blockchainkit/crypto/visualizers/__init__.py +9 -0
  44. blockchainkit/crypto/visualizers/plots.py +88 -0
  45. blockchainkit/network/__init__.py +70 -0
  46. blockchainkit/network/core/__init__.py +21 -0
  47. blockchainkit/network/core/base.py +149 -0
  48. blockchainkit/network/systems/__init__.py +54 -0
  49. blockchainkit/network/systems/addresses.py +126 -0
  50. blockchainkit/network/systems/broadcast.py +124 -0
  51. blockchainkit/network/systems/clocks.py +149 -0
  52. blockchainkit/network/systems/epidemics.py +111 -0
  53. blockchainkit/network/systems/gossip.py +201 -0
  54. blockchainkit/network/systems/kademlia.py +147 -0
  55. blockchainkit/network/systems/privacy.py +98 -0
  56. blockchainkit/network/systems/propagation.py +60 -0
  57. blockchainkit/network/systems/relay.py +123 -0
  58. blockchainkit/network/systems/replication.py +122 -0
  59. blockchainkit/network/systems/topology.py +238 -0
  60. blockchainkit/network/visualizers/__init__.py +14 -0
  61. blockchainkit/network/visualizers/plots.py +177 -0
  62. blockchainkit/py.typed +0 -0
  63. blockchainkit/structures/__init__.py +61 -0
  64. blockchainkit/structures/core/__init__.py +21 -0
  65. blockchainkit/structures/core/base.py +100 -0
  66. blockchainkit/structures/systems/__init__.py +45 -0
  67. blockchainkit/structures/systems/block.py +144 -0
  68. blockchainkit/structures/systems/bloom.py +81 -0
  69. blockchainkit/structures/systems/chain.py +131 -0
  70. blockchainkit/structures/systems/hash_chain.py +35 -0
  71. blockchainkit/structures/systems/headers.py +54 -0
  72. blockchainkit/structures/systems/ledger.py +87 -0
  73. blockchainkit/structures/systems/merkle.py +273 -0
  74. blockchainkit/structures/systems/mmr.py +112 -0
  75. blockchainkit/structures/systems/sparse_merkle.py +139 -0
  76. blockchainkit/structures/systems/transaction.py +116 -0
  77. blockchainkit/structures/systems/utxo.py +156 -0
  78. blockchainkit/structures/utils/__init__.py +6 -0
  79. blockchainkit/structures/utils/accounts.py +13 -0
  80. blockchainkit/structures/utils/encoding.py +11 -0
  81. blockchainkit/structures/visualizers/__init__.py +13 -0
  82. blockchainkit/structures/visualizers/plots.py +154 -0
  83. blockchainkit/vm/__init__.py +60 -0
  84. blockchainkit/vm/core/__init__.py +25 -0
  85. blockchainkit/vm/core/base.py +171 -0
  86. blockchainkit/vm/systems/__init__.py +40 -0
  87. blockchainkit/vm/systems/assembler.py +80 -0
  88. blockchainkit/vm/systems/expressions.py +91 -0
  89. blockchainkit/vm/systems/programs.py +143 -0
  90. blockchainkit/vm/systems/reentrancy.py +70 -0
  91. blockchainkit/vm/systems/script.py +268 -0
  92. blockchainkit/vm/systems/stack_machine.py +239 -0
  93. blockchainkit/vm/systems/turing.py +111 -0
  94. blockchainkit/vm/systems/verifier.py +81 -0
  95. blockchainkit/vm/visualizers/__init__.py +9 -0
  96. blockchainkit/vm/visualizers/plots.py +97 -0
  97. blockchainkit-0.2.0.dist-info/METADATA +195 -0
  98. blockchainkit-0.2.0.dist-info/RECORD +101 -0
  99. blockchainkit-0.2.0.dist-info/WHEEL +5 -0
  100. blockchainkit-0.2.0.dist-info/licenses/LICENSE +21 -0
  101. 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 | [![License](https://img.shields.io/github/license/cpoli/blockchainkit)](https://github.com/cpoli/blockchainkit/blob/main/LICENSE) [![CI](https://github.com/cpoli/blockchainkit/actions/workflows/ci.yml/badge.svg)](https://github.com/cpoli/blockchainkit/actions/workflows/ci.yml) [![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](#development) |
59
+ | Documentation | [![Docs](https://img.shields.io/badge/docs-cpoli.github.io%2Fblockchainkit-blue)](https://cpoli.github.io/blockchainkit/) |
60
+ | Code style | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) |
61
+ | Try it online | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/cpoli/blockchainkit/blob/main/notebooks/quickstart.ipynb) [![JupyterLite](https://jupyterlite.rtfd.io/en/latest/_static/badge.svg)](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
+ ![A Merkle proof, Nakamoto's double-spend probabilities, and a Lamport space-time diagram, all drawn with blockchainkit](https://raw.githubusercontent.com/cpoli/blockchainkit/main/docs/source/_static/images/readme_hero.png)
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
+ ![Scalar multiples on an elliptic curve, the SHA-256 avalanche, and the birthday bound](https://raw.githubusercontent.com/cpoli/blockchainkit/main/docs/source/_static/images/readme_crypto.png)
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
+ ![A Merkle proof, a fork in a block tree, and Bloom-filter false-positive rates](https://raw.githubusercontent.com/cpoli/blockchainkit/main/docs/source/_static/images/readme_structures.png)
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
+ ![Double-spend probabilities, selfish-mining revenue, and difficulty retargeting](https://raw.githubusercontent.com/cpoli/blockchainkit/main/docs/source/_static/images/readme_consensus.png)
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
+ ![A small-world graph, push and pull gossip, and Kademlia lookup hops](https://raw.githubusercontent.com/cpoli/blockchainkit/main/docs/source/_static/images/readme_network.png)
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
+ ![Stack height of two expressions, halting times of two-state Turing machines, and a reentrancy attack](https://raw.githubusercontent.com/cpoli/blockchainkit/main/docs/source/_static/images/readme_vm.png)
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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -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