Skip to main content

Chinilla proof of space plotting, proving, and verifying (wraps C++)

Project description

Chinilla Proof of Space

Build PyPI PyPI - Format GitHub

Total alerts Language grade: Python Language grade: C/C++

Chinilla's proof of space is written in C++. Includes a plotter, prover, and verifier. It exclusively runs on 64 bit architectures. Read the Proof of Space document to learn about what proof of space is and how it works.

C++ Usage Instructions

Compile

# Requires cmake 3.14+

mkdir -p build && cd build
cmake ../
cmake --build . -- -j 6

Static Compilation With glibc

Statically compile ProofOfSpace

mkdir -p build && cd build
cmake -DBUILD_PROOF_OF_SPACE_STATICALLY=ON ../
cmake --build . -- -j 6

Run tests

./RunTests

CLI usage

./ProofOfSpace -k 25 -f "plot.dat" -m "0x1234" create
./ProofOfSpace -k 25 -f "final-plot.dat" -m "0x4567" -t TMPDIR -2 SECOND_TMPDIR create
./ProofOfSpace -f "plot.dat" prove <32 byte hex challenge>
./ProofOfSpace -k 25 verify <hex proof> <32 byte hex challenge>
./ProofOfSpace -f "plot.dat" check <iterations>

Benchmark

time ./ProofOfSpace -k 25 create

Hellman Attacks usage

There is an experimental implementation which implements some of the Hellman Attacks that can provide significant space savings for the final file.

./HellmanAttacks -k 18 -f "plot.dat" -m "0x1234" create
./HellmanAttacks -f "plot.dat" check <iterations>

Python

Finally, python bindings are provided in the python-bindings directory.

Install

python3 -m venv .venv
. .venv/bin/activate
pip3 install .

Run python tests

Testings uses pytest. Linting uses flake8 and mypy.

py.test ./tests -s -v

ci Building

The primary build process for this repository is to use GitHub Actions to build binary wheels for MacOS, Linux (x64 and aarch64), and Windows and publish them with a source wheel on PyPi. See .github/workflows/build.yml. CMake uses FetchContent to download pybind11. Building is then managed by cibuildwheel. Further installation is then available via pip install chinillapos e.g.

Contributing and workflow

Contributions are welcome and more details are available in chinilla-blockchain's CONTRIBUTING.md.

The main branch is usually the currently released latest version on PyPI. Note that at times chinillapos will be ahead of the release version that chinilla-blockchain requires in it's main/release version in preparation for a new chinilla-blockchain release. Please branch or fork main and then create a pull request to the main branch. Linear merging is enforced on main and merging requires a completed review. PRs will kick off a GitHub actions ci build and analysis of chinillapos at lgtm.com. Please make sure your build is passing and that it does not increase alerts at lgtm.

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

chinillapos-1.0.12.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

chinillapos-1.0.12-cp311-cp311-win_amd64.whl (265.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

chinillapos-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (387.8 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

chinillapos-1.0.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (361.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

chinillapos-1.0.12-cp311-cp311-macosx_11_0_arm64.whl (208.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

chinillapos-1.0.12-cp311-cp311-macosx_10_14_x86_64.whl (228.3 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

chinillapos-1.0.12-cp310-cp310-win_amd64.whl (265.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

chinillapos-1.0.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (361.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

chinillapos-1.0.12-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (363.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

chinillapos-1.0.12-cp310-cp310-macosx_11_0_arm64.whl (208.7 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

chinillapos-1.0.12-cp310-cp310-macosx_10_14_x86_64.whl (228.3 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

chinillapos-1.0.12-cp39-cp39-win_amd64.whl (265.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

chinillapos-1.0.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (361.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

chinillapos-1.0.12-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (363.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

chinillapos-1.0.12-cp39-cp39-macosx_11_0_arm64.whl (208.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

chinillapos-1.0.12-cp39-cp39-macosx_10_14_x86_64.whl (228.3 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

chinillapos-1.0.12-cp38-cp38-win_amd64.whl (265.1 kB view details)

Uploaded CPython 3.8 Windows x86-64

chinillapos-1.0.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (361.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

chinillapos-1.0.12-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (362.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

chinillapos-1.0.12-cp38-cp38-macosx_11_0_arm64.whl (234.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

chinillapos-1.0.12-cp38-cp38-macosx_10_14_x86_64.whl (228.2 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

chinillapos-1.0.12-cp37-cp37m-win_amd64.whl (265.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

chinillapos-1.0.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (365.9 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

chinillapos-1.0.12-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (365.1 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

chinillapos-1.0.12-cp37-cp37m-macosx_10_14_x86_64.whl (227.8 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

File details

Details for the file chinillapos-1.0.12.tar.gz.

File metadata

  • Download URL: chinillapos-1.0.12.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.15

File hashes

Hashes for chinillapos-1.0.12.tar.gz
Algorithm Hash digest
SHA256 27a9aaea4d5b5fb2ac20f0f47cd0ebe30fab05c0eeac7effdc9069bcd9d01e84
MD5 029a8cf66fb708c989c3e1a3788f9e63
BLAKE2b-256 b59dc46a1e16b7662d5dcce8be96b38c6a51817e539906ec36e20db0ade806cb

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b59858dd834ed5547daf019600ffc40c5934b766ddd0930192b6f4c6e9c7e181
MD5 adbf50c495b5e45366cef51399f040af
BLAKE2b-256 dedfbe7e919c678013f61fd810bf09540216191ea03795822110ec90d26c1004

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e24c8c686de6ff8943665c6be10c365b9804113f8881499ec2789036dc209197
MD5 e72e08277139025c02c7aa5c0377ad61
BLAKE2b-256 503f21f36a48842fbc06aeafc7ca9c4b750813846cf443d2ca6fe2740ee79de0

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 16d5dc162ec0fbce82345eea03176bdaed620a31ec2df8ce8a1eb775538c35e2
MD5 627de454d359eecde14a52a5d69eea43
BLAKE2b-256 c7eede10bee0018e2d20befdf2e639b40a5fe258a3dfe4c2c05b4653c05fdf8e

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d7e5d76e333bfebd94395d4c09ce75aebe5c4a67369fbb5379234e09469c229
MD5 9021b4b6b1ebb285f9baadc2e8dbf8da
BLAKE2b-256 bb840b5b2e41e7539d3b5f494038bc0e18db7190c42e5ef924d5fecb2def3204

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 1e2c04c9a9ffaf64e702f4b78047ed0443e08851b5286966170a0ac74e65b109
MD5 835e299c18d38c8a6cd1dd7894d81f03
BLAKE2b-256 8d2a789e6fe9049392efe643f47de5c5c11831ed67299d57f912bf09ce51701c

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1a4536875a6d36ee7042b2c781a0227171341864e1f0233d45b57321fcf24e9c
MD5 5aca6d02af08a68d123b9f841d043d98
BLAKE2b-256 2d2a01c6edcc38a2f1de79b1b056e54422e4635bcf7795ef62068f942773ec8a

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d4204a77fcc5a990e2f3824f2cbe2d8f38d032bcb61fcf4cf9b0c79a1b775015
MD5 9a01a4bf1c3025c7094eb6b6d0c8a4c4
BLAKE2b-256 e6905e628f33e041be708a4d9dda6113eba4646d96340b6e80255946002f10ed

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 370cbe76d1dd12c6fc042a520a1e5df0fa6177ebc002233326ccbfb1385fc6b9
MD5 a4e7b3f951943b34782a5c804630a977
BLAKE2b-256 91d9db82c74b12540bf813f50c18e48d1fb58ee65f46d264feb27f9bd02371d8

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d71c8ef9e4065efb9987f877b24c27f46377cb3d24c6d004dea74f8874a8ed91
MD5 b3f72a2d05ca0d4449736663c9755660
BLAKE2b-256 df602e6a9b905c94fa76a95ac7335e3357377699cac652f3527cfa72389b9b62

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c38c7ec1f720510b121c14df3c60d71a284f44e818dbc1fa146c92461a3651d4
MD5 0820a4a1b2e978303864e77e8440f7eb
BLAKE2b-256 c8fce686547e7bc915edfa974e7e9cc1799f19f30e8044b275a41aeb10a1dbfa

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 112b1cd78b2bfaf3b01c8ad0d0c5556cc69da644b188a116ff2596d8b126c533
MD5 8623395aa0aad2da016ed60f83c8f3ff
BLAKE2b-256 dfa8ff12eb0c94c70ef8291bf49f6edc17f138b02c631f526418b0c9bdaebbb5

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 87484fa064fab7e37558adf99aa3076417b96db4f75a0ee81771ef91ae2d044a
MD5 f7a1e3684c0cc7a1200a9d4ddc028efe
BLAKE2b-256 db99b60a8f2d50425e1b9a2e3eac29f8785b2eb181a49c634b68197ed5236068

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 aa60a0263e596a21825fa898cdfc41233acf9d6fef0a76ce7a0206639741b545
MD5 25e16cb2faada1876dbbeb0d6c6f39e3
BLAKE2b-256 24bfe273dd1481f848ba03ee15542c3a0352c8e7da80556469d18db36ef8012a

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 508a1735f652fb488b25aa65ea14c040b5659961a1df349b21fd6bf59451c2af
MD5 94b53499a061e7921248845928f2c917
BLAKE2b-256 55e55af479f6ed01525931d15e2cebd3bf98d78a205a416383ab0b0345a1c0a8

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 394b31b63148acb2cce3a2c8d0b8b3308d999ab882245384f918c16af93cecba
MD5 80666f40d8b178c72994ee6bd254467c
BLAKE2b-256 0076c7b52b5daa0aace520cffe657e36c2d6775a0e4ceaf6448a5b04c6b3b407

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 949e40f71644a6c12d14df388bf0e816ee88b52f1d6c66cd318dc68055a0bc43
MD5 38cc0eff0e707e5ddc36b2c21ca9870e
BLAKE2b-256 91ccbc3a18e185a8ca320aafedf8b5126e700a1f443bebafca5df1e5cd79753d

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ecc1ee254fe32099c5e247804f9394966ce5bd338c542c0882d8c13f8f182167
MD5 8e56ea99c8cc5a00d6073d1c26f53219
BLAKE2b-256 6af629306bddbea844db0de4ab30e5aeb25409aa84e33259dcb66c1fe0427826

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 2ae0f50e44a00b9d87cb9a27f7a099700ff493d61475fb2ef7036f77c961fbcf
MD5 6d18dd0ca419d074731751aec3e81c1a
BLAKE2b-256 d13b8dac153d6abc72710d5de250bfdfeeaecc5bf141c7583ca3f1df2e809083

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 116f220d8aefdd0fb510284c0a93a76cb824ac9ff224a0ef7d134ed404025a62
MD5 7434dd23f37c7add83bf838ec0538751
BLAKE2b-256 26c6a68e4a87ee79a39d5e7b77c96d5e7921d2511e75f045a6341fdd8754d557

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c124f9dd7b9d4d0a4be1c9e760581d4748eea665f779dba2da144ca8386bbd81
MD5 19dd122b50f59ab125b629c863689be7
BLAKE2b-256 67a089c1c9cddaf77ea50342700fe7888b5c07ae6b9f7190d41ee73c3e494405

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 338f33b409d588374b270fe33f23d1ab4631f5f07bb56e0e2c1b227b7a651989
MD5 5f2226bc2456e34e11246ce3db2bbeae
BLAKE2b-256 d96787fe9fb52f0fbb7f9d4bc3bf9b572301a036130114ad0a4078f1581b0720

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 85c96d9fbe325dd41e4e0ca32ae10578aff3b4d32774a3052ed70f1a8b940cfb
MD5 7fac0b002021166a1d859ebb4b045e25
BLAKE2b-256 ccd62f9a2524dfe24009ef53076b2cf6a8f2081d3d0c2e83b554b447b900b4db

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 28ade3bde26e89d82498a61e842699421b663e3000aeaf109679208237a2a938
MD5 45c2ce200d8cbe9d07016ed7c2a2dae3
BLAKE2b-256 124e4f16f5fd31acd44657e1b6984d517a44843326c94ed263b0621798e2aebf

See more details on using hashes here.

File details

Details for the file chinillapos-1.0.12-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for chinillapos-1.0.12-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 5a5afcf6a65a814b2436f6113c5ebaf79988baab8e45d75b1c95d92ea8115f9f
MD5 b750f06e7d0479ddddeacac48eeb162b
BLAKE2b-256 483fd9b9dc00b592d3f09a4a654b433561bcef978152cb5ea5302fd9e70fc6f4

See more details on using hashes here.

Supported by

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