Differences from Hive
Compared with hived 1.28.7, the release Pixa forks. Checked against the Pixa code at tag v1.30.0, the gateway at commit 4a271e8 and the public nodes on 2026-10-05 and 2026-10-08.
Pixa runs Hive's code and speaks Hive's JSON-RPC, so Hive's documentation applies here with PIXA for HIVE and PXS for HBD. This page lists everything else that changes how you write code: the chain's identity, what the public API does to requests and responses, what Hivemind reports, and the protocol rules that differ. Every protocol value is on Chain Parameters; this page says what the values mean for a program.
Summary
| Area | What differs | Details |
|---|---|---|
| Identity | Chain ID, key prefix PIX, symbols PIXA and PXS |
Identity and assets |
| Public API | A gateway renames 28 field names in responses and 19 in requests, and routes social calls to Hivemind | The public API |
| Your own node | Hive's field names; Pixa's are ignored without an error | Talking to hived directly |
| Hivemind | Vote rshares a million times the chain's for votes before block 905,693; reputation not computed; 20 results per bridge call; community names start with portal- |
Hivemind |
| Protocol | No interest, no stake reward, restricted genesis accounts, a vote dust threshold a thousand times smaller than Hive's since hardfork 30 | Protocol rules that change code |
| Libraries | Hive libraries sign amounts with Hive's symbol bytes | Libraries |
Identity and assets
| Aspect | Hive | Pixa |
|---|---|---|
| Chain ID | beeab0de followed by zeros |
706978616772616d followed by zeros: the ASCII word pixagram |
| Public-key prefix | STM |
PIX |
| Liquid token | HIVE, @@000000021, 3 decimals |
PIXA, same NAI and decimals |
| Second token | HBD, @@000000013, 3 decimals |
PXS, same NAI and decimals |
| Staked unit | VESTS, @@000000037, 6 decimals |
same |
| Symbol bytes in the legacy wire format | STEEM, SBD |
PIXA, PXS |
| VESTS per liquid token | about 1,608, falling | about 1, flat |
- Write amounts with Pixa's symbols:
"1.000 PIXA","0.020 PXS","1000.000000 VESTS". A library that serializes Hive's symbol bytes produces signatures the chain rejects. hived checks a signature against both the legacy and the HF26 serialization of a transaction, so a client that signs the HF26 form, which identifies assets by NAI, avoids symbol bytes altogether. - Never hard-code Hive's VESTS ratio. On Pixa one VESTS is worth about one PIXA, against about 1,608 VESTS per HIVE on Hive, and the ratio stays flat because no issuance goes to stakers. Compute it from
total_vesting_fund_pixa ÷ total_vesting_shares(Pixa Power).
The public API
All six public nodes run the same gateway: Caddy, then an OpenResty configuration named Jussi, in front of hived and Hivemind (Chain Architecture).
Routing
| Calls | Answered by |
|---|---|
bridge.*, follow_api.*, tags_api.* |
Hivemind |
23 condenser_api calls: get_followers, get_following, get_follow_count, get_content, get_content_replies, get_discussions_by_trending, …_by_hot, …_by_created, …_by_promoted, …_by_blog, …_by_feed, …_by_comments, …_by_author_before_date, get_replies_by_last_update, get_blog, get_blog_entries, get_active_votes, get_reblogged_by, get_account_votes, get_trending_tags, get_post_discussions_by_payout, get_comment_discussions_by_payout, get_account_reputations |
Hivemind; of these, get_discussions_by_promoted and get_account_votes fail, because Hivemind has no promoted sort and no longer supports account votes (JSON-RPC Surface) |
Everything else: 139 methods in account_by_key_api, account_history_api, block_api, condenser_api, database_api, jsonrpc, market_history_api, network_broadcast_api, rc_api and reputation_api |
hived |
Not served by any of the six: websockets, wallet_bridge_api (needed by the CLI wallet) and transaction_status_api. To learn whether a transaction is in a block, call database_api.is_known_transaction, then condenser_api.get_transaction with its id once the block is irreversible; before that, get_transaction answers Unknown Transaction (Transaction Lifecycle). The whole surface is on JSON-RPC Surface.
Field renames
The gateway renames Hive's field names in every response, and the names marked both also in requests to hived. Requests to Hivemind are not renamed.
| Hive name | Pixa name | Direction |
|---|---|---|
hbd_balance |
pxs_balance |
both |
savings_hbd_balance |
savings_pxs_balance |
both |
hbd_seconds, hbd_seconds_last_update, hbd_last_interest_payment |
pxs_seconds, pxs_seconds_last_update, pxs_last_interest_payment |
both |
savings_hbd_seconds, savings_hbd_seconds_last_update, savings_hbd_last_interest_payment |
savings_pxs_seconds, savings_pxs_seconds_last_update, savings_pxs_last_interest_payment |
both |
reward_hbd_balance, reward_hive_balance, reward_vesting_hive |
reward_pxs_balance, reward_pixa_balance, reward_vesting_pixa |
both |
reward_hbd, reward_hive (in claim_reward_balance) |
reward_pxs, reward_pixa |
both |
percent_hbd (in comment_options and posts) |
percent_pxs |
both |
hbd_amount, hive_amount (in escrow operations) |
pxs_amount, pixa_amount |
both |
hbd_exchange_rate, last_hbd_exchange_update (witnesses) |
pxs_exchange_rate, last_pxs_exchange_update |
both |
hbd_interest_rate |
pxs_interest_rate |
both |
current_hbd_supply, init_hbd_supply |
current_pxs_supply, init_pxs_supply |
responses only |
hbd_print_rate, hbd_start_percent, hbd_stop_percent |
pxs_print_rate, pxs_start_percent, pxs_stop_percent |
responses only |
total_vesting_fund_hive, total_reward_fund_hive, pending_rewarded_vesting_hive |
total_vesting_fund_pixa, total_reward_fund_pixa, pending_rewarded_vesting_pixa |
responses only |
dhf_interval_ledger |
dpf_interval_ledger |
responses only |
Every other name stays Hive's. For example, author_reward operations keep hbd_payout and hive_payout, collateralized_convert_immediate_conversion keeps hbd_out, the treasury's funding operation is still called dhf_funding, and database_api.get_config still prints HIVE_ constants. Operation and API names are all Hive's.
Amounts inside responses. hived itself writes PIXA and PXS. The gateway also rewrites any amount followed by TESTS, TBD or HBD, such as "1.000 HBD", to PIXA or PXS wherever it appears in a response, text included.
Batches, ids and limits
| Aspect | Behaviour on 2026-10-05 |
|---|---|
| Batch requests | Allowed when every call goes to hived. The gateway routes a batch by its first call: a batch starting with a chain call fails its social calls with Could not find API bridge, and a batch starting with a social call fails with id required, because Hivemind takes one call per request. |
The id in replies |
hived returns it as sent; Hivemind returns it as a string ("7" for 7). |
| Request size | Up to about 1 MiB; larger requests get HTTP 413. Requests above about 10 KiB are passed to hived without routing or renaming, so a large bridge call fails and a large broadcast keeps its bytes. |
Results per bridge call |
limit 1 to 20; Hivemind rejects 21 (Feed and Discovery). |
| Browser access | Access-Control-Allow-Origin: * on every node. |
| Compression | zstd or gzip, as the client accepts. |
| Busy node | A call can fail with Unable to acquire database lock; retry it. |
Known issue: renames inside text
The gateway applies its renames to the whole body of a request or response, not only to field names. On 2026-10-05, a transaction whose post text contained pxs_balance reached hived from all six public nodes as hbd_balance.
- Writing. If any text you sign, whether a title, body,
json_metadata, memo orcustom_jsonpayload, contains one of the 19 Pixa names marked both above, and the request is under about 10 KiB, hived receives different bytes from the ones you signed. The transaction fails withmissing required posting authority(or active authority). Larger requests pass the gateway untouched, which is why artworks are unaffected. Until the gateway is fixed, keep these names out of signed text, or broadcast through a node without the gateway. - Reading. Text in responses that contains a Hive name from the table, or an amount followed by
TESTS,TBDorHBD, is shown renamed. A program that re-serializes a transaction from a response to check its signature can fail for the same reason.
Talking to hived directly
Your own node, including a witness node, has no gateway. hived reads and writes Hive's field names only, and it ignores a name it does not know without an error. Sent to hived directly, "percent_pxs": 5000 in a comment_options operation was read as the default 10000.
dpixa writes Pixa's names in five operations: claim_reward_balance, comment_options, escrow_transfer, escrow_release and witness_update. Sent to hived directly, those fields fall back to their defaults. That is harmless when a field holds its default anyway, such as pxs_interest_rate: 0 or percent_pxs: 10000; otherwise hived reconstructs a different transaction and rejects its signature. Broadcast these operations through a public node. Every other operation works either way.
Hivemind
- rshares are scaled for old votes. Hivemind multiplies the chain's
rsharesby one million for votes in blocks before 905,693, an inherited rule from Steem's early chain, and keeps the chain's value for later votes. One vote on 2026-10-05: 16,180,769,231,000,000 inbridge.get_ranked_postsandcondenser_api.get_active_votes, 16,180,769,231 in the chain'seffective_comment_voteoperation. The chain crossed block 905,693 on 2026-10-05 23:36 UTC, so until the posts voted before then pay out, Hivemind's Trending and Hot weigh those votes a million times the newer ones (Feed and Discovery). Do reward arithmetic with hived's values. - Reputation is not computed. Hivemind's reputation tracker does not run on the public nodes, so the
condenser_api.get_account_reputationsthat the gateway routes to Hivemind returns 0 for every account, andbridge.get_profileand the post lists return 25, the bottom of Hivemind's display scale, for everyone. hived'sreputation_api.get_account_reputationshas the real figures. - Twenty results per call.
bridge.get_ranked_postsand the other list calls acceptlimitup to 20, not Hive's 100. - Community names are
portal-followed by digits, where Hive useshive-(Communities). - Social methods are Hive's. Feeds, posts, communities and notifications use the same calls and shapes, with the renamed fields above.
Protocol rules that change code
| Rule | On Pixa | What it means for code |
|---|---|---|
| Interest on PXS | Always 0; witnesses cannot publish another value | Do not offer interest on savings. pxs_interest_rate is 0. |
| Reward for holding stake | None (Issuance) | VESTS do not grow in value. Rewards come from publishing, curating and producing blocks. |
| Content constant and dust | A vote loses 50,000 rshares since hardfork 30 (50,000,000 before), so a full-strength vote counts from 2.5 Pixa Power (Voting and Curation) | Compute rshares as mana spent − 50,000; a post still pays nothing under 0.020 PXS, about 1,000 Pixa Power of votes today. |
| Custom operation cost | Resource Credits grow with the payload since hardfork 30 (Chain Parameters) | Budget a 64 KiB custom_json at nine times a small one's execution cost. |
| Signatures | At most 1,000 per transaction since 1.30.0 | No real transaction approaches it. |
| Curation share | 40% of post rewards | Use 40%, not Hive's 50%, when estimating payouts. |
| Genesis accounts | pixa.rex and pixa.team can only transfer VESTS (System Accounts) |
A transfer can carry a VESTS amount, which Hive forbids. Parse VESTS in transfers. |
| Treasury | pixa.omnibus, paid in PXS; the return proposal is id 2 (DPF) |
Do not assume hive.fund or proposal id 0. |
| Hardfork quorum | Not Hive's fixed 17 of 21 (Protocol Upgrades) | Read hardfork_required_witnesses from get_witness_schedule; do not hardcode 17. |
| Size limits | Transactions up to the voted block size less 256 bytes, about 2 MiB; custom_json up to 64 KiB (sizes) |
An artwork fits in one comment operation; the public gateway stops at about 1 MiB per request. |
| Account creation fee | 20.000 PIXA median on 2026-10-08 | Read it from get_chain_properties. |
| Account recovery | Owner-key history is recorded since hardfork 30, block 949,330 (accounts) | A recovery can undo only owner-key changes made after 2026-10-07 12:00 UTC. |
Libraries
| Library | Reads | Signs operations without amounts | Signs operations with amounts |
|---|---|---|---|
@pixagram/dpixa 1.5.4 |
yes | yes | yes, through a public node |
@hiveio/dhive 1.3.2, with chainId and addressPrefix: "PIX" |
yes; helpers that parse amounts fail with Invalid asset symbol: PXS |
yes | no: it serializes Hive's symbol bytes |
cli_wallet in the node image |
yes | yes | yes; it uses Hive's field names, such as convert_hbd |
SDKs and Libraries has the details and the tests.
Sources
- Gateway:
jussi/nginx.confat commit4a271e8(unchanged since7e57cca): routing at lines 18-51, request renames at 63-85, response renames at 87-117, amount rewriting at 119-154, whole-body application at 189-193 and 219-233. Compression:ssl-proxy/Caddyfile. - Tests on 2026-10-05:
jsonrpc.get_methods, batch requests, request sizes, response headers andcondenser_api.get_transaction_hexwith a body containingpxs_balance, against all six public nodes;percent_pxssent to a local hived 1.29.0; rshares compared betweenbridge.get_ranked_postsand the voter'seffective_comment_voteincondenser_api.get_account_history. On 2026-10-08:bridge.get_profileagainstreputation_api.get_account_reputations;bridge.get_ranked_postswithlimit20 and 21;get_transactionon a reversible block; the rshares of votes before and after block 905,693. - Code at tag
v1.30.0for the hardfork-30 rules, through Chain Parameters; at commit48f75a2: asset symbols inasset_symbol.hpp:41-56; the witness property names the chain reads inhive_evaluator.cpp:160-188; everything else through Chain Parameters. - dpixa at commit
fddb47d: Pixa field names insrc/chain/serializer.ts. - Hive: developers.hive.io; Hive whitepaper (2020), §II.1 "Assets".