hivecomb-beem
A beem-compatible API for Hive, implemented on hivecomb.
This distribution provides the beem, beemgraphenebase, beembase and beemapi
package names, and the beempy console script. Installing it in place of beem makes
existing import beem code and existing beempy invocations work unchanged, with the
defects catalogued in SECURITY_FINDINGS.md fixed underneath
and the post-HF25 operations beem never gained made available.
pip uninstall -y beem
pip install hivecomb hivecomb-beem
It deliberately shadows beem's package names, so do not install it alongside beem.
What you get for switching
Speed, measured on the same machine with both libraries signing identical operations,
pinned to one core, payload varied on every call (CPython 3.12, minimum of nine
interleaved one-second windows on a CPU clock, beem 0.24.26 on the cryptography
backend a default install selects):
| hivecomb-beem | beem 0.24.26 | ||
|---|---|---|---|
| sign a message | 70.2 µs | 20.2 ms | ~288× |
sign a custom_json |
89.3 µs | 20.6 ms | ~231× |
sign a transfer |
87.0 µs | 20.6 ms | ~237× |
| serialize and digest, no signing | 10.2 µs | 64.8 µs | ~6.3× |
beem is the least favourable comparison in the set, because it is unmaintained; the project's COMPARISON.md measures every Python, Rust and Node Hive library it names, including hive-nectar, where the gap is far smaller.
The signing rows are that wide because of which backend beem ends up on, not because
Python is slow. beem prefers secp256k1 and falls back to cryptography, and on the
fallback it derives each signature's recovery parameter by recovering the public key in
pure Python, inside a loop that retries until the signature is canonical. The
secp256k1 path would close most of the gap — but installed against a current binding
it raises AttributeError: 'PrivateKey' object has no attribute 'ctx', because beem was
pinned to an API that changed and has not been maintained since 2021. The fallback is
what you actually get.
The last row is the fair one: serialization alone, no cryptography, ~6×.
And correctness, which matters more. beem 0.24.26's known_chains["HIVE"] is the
all-zero pre-hardfork-24 chain id, so it signs against a chain that has not existed
since 2020 unless you override it. That and twenty-four other findings are catalogued
with file and line in
SECURITY_FINDINGS.md
— including one that turned out to be wrong, marked as retracted, because a
catalogue you cannot check is not worth much.
Full detail — what was fixed, what diverges on purpose, what was added, what is not implemented — is in MIGRATION.md.
Tests
python test_compat.py # beem's API, run unmodified
python test_cli.py # beempy, offline
Two things to know before switching
- Signing no longer contacts a node.
Hivecaches a block reference and refuses to serve a stale one. Callhive.refresh_block_ref()from a background task if you sign after long idle periods. repr()andstr()of a private key still return the secret, matching beem, because real code depends on it. SetCOMB_COMPAT_REDACT_KEYS=1once you have checked yours does not.
beempy
Every one of beem's commands is registered. The ten this layer does not provide say so and name an alternative rather than failing obscurely.
beempy commands lists everything; beempy commands --new lists the nine that have no
beem equivalent — recurrenttransfer, collateralizedconvert, mnemonic, bip38,
decodetx, virtualops, opsinblock, verifyauthority and commands itself.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hivecomb_beem-0.1.0.tar.gz.
File metadata
- Download URL: hivecomb_beem-0.1.0.tar.gz
- Upload date:
- Size: 84.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bc1b6061199f220e18d57336288a94d9ec860b33be96e930eb79976b34edfe4
|
|
| MD5 |
1a2a8349277a1017f53834dc56422156
|
|
| BLAKE2b-256 |
66051f1bbebf88acc1c8177d65f026a3ade473a036c103bc93ea629a831901b8
|
Provenance
The following attestation bundles were made for hivecomb_beem-0.1.0.tar.gz:
Publisher:
release.yml on flosolcher/hivecomb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hivecomb_beem-0.1.0.tar.gz -
Subject digest:
5bc1b6061199f220e18d57336288a94d9ec860b33be96e930eb79976b34edfe4 - Sigstore transparency entry: 2727277775
- Sigstore integration time:
-
Permalink:
flosolcher/hivecomb@5eb0972d7a572fe8128f18e37fc537d2add03b63 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/flosolcher
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5eb0972d7a572fe8128f18e37fc537d2add03b63 -
Trigger Event:
push
-
Statement type:
File details
Details for the file hivecomb_beem-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hivecomb_beem-0.1.0-py3-none-any.whl
- Upload date:
- Size: 96.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75aab079a8b0d1dbdfc5202404a87281c88a23125f229580ef45744d7e9082f5
|
|
| MD5 |
5b2c871441ff9baaf494bb79e71e367f
|
|
| BLAKE2b-256 |
7f0a6afa907292130e61404c060e005ed0788f057ea08489d0bea594a73a2cb8
|
Provenance
The following attestation bundles were made for hivecomb_beem-0.1.0-py3-none-any.whl:
Publisher:
release.yml on flosolcher/hivecomb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hivecomb_beem-0.1.0-py3-none-any.whl -
Subject digest:
75aab079a8b0d1dbdfc5202404a87281c88a23125f229580ef45744d7e9082f5 - Sigstore transparency entry: 2727277945
- Sigstore integration time:
-
Permalink:
flosolcher/hivecomb@5eb0972d7a572fe8128f18e37fc537d2add03b63 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/flosolcher
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5eb0972d7a572fe8128f18e37fc537d2add03b63 -
Trigger Event:
push
-
Statement type: