Explicit error for broadcast_package, current mainnet sync snapshot, throttling note

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
davideandClaude Sonnet 5.5 committed 2026-10-23 16:28:37 +02:00
1 parent fc2672c898
commit a123bebdd4
5 files changed
+13 -8

No files matched your search

+2 -1
View File
@@ -238,7 +238,8 @@ From another machine, `nc -zv <public IP> 50001` must succeed if the server is m
| log: connection refused / cannot connect to `palladiumd:2332` | the node is stopped or still starting; check that the node container is running | | log: connection refused / cannot connect to `palladiumd:2332` | the node is stopped or still starting; check that the node container is running |
| log: `401`/authorization errors | wrong `PLM_RPC_USER` / `PLM_RPC_PASSWORD` in `.env`; the credentials must be the ones in the node's `palladium.conf` | | log: `401`/authorization errors | wrong `PLM_RPC_USER` / `PLM_RPC_PASSWORD` in `.env`; the credentials must be the ones in the node's `palladium.conf` |
| errors mentioning `txindex` | `txindex=1` is missing in `palladium.conf` (an index added later is built while the node runs, which takes time) | | errors mentioning `txindex` | `txindex=1` is missing in `palladium.conf` (an index added later is built while the node runs, which takes time) |
| `blockchain.outpoint.subscribe` is refused, or package broadcast returns a daemon error | expected: Palladium Core does not have the RPCs they need (`gettxspendingprevout`, `submitpackage`) | | `blockchain.outpoint.subscribe` or `blockchain.transaction.broadcast_package` return an error | expected: Palladium Core does not have the RPCs they need (`gettxspendingprevout`, `submitpackage`) |
| a client is disconnected, log says `disconnected whilst throttled` or `closing session over res usage` | expected: the server limits the cost of the requests of each client and IP (for example listing the UTXOs of an address with thousands of outputs); raise `COST_SOFT_LIMIT` / `COST_HARD_LIMIT` for your own trusted clients (see `docs/environment.rst`) |
| the server stays at an old height | the node is not synced; ElectrumX only follows the node | | the server stays at an old height | the node is not synced; ElectrumX only follows the node |
| clients cannot connect from outside | port not published/forwarded, firewall, or `SERVICES` does not list that protocol | | clients cannot connect from outside | port not published/forwarded, firewall, or `SERVICES` does not list that protocol |
| container stops at once, log says `ERROR: ... is not writable` | the data directory belongs to another user (or to root, if Docker created it): `chown -R $(id -u):$(id -g) ~/.plm-electrumx`, or set `PLM_UID`/`PLM_GID` | | container stops at once, log says `ERROR: ... is not writable` | the data directory belongs to another user (or to root, if Docker created it): `chown -R $(id -u):$(id -g) ~/.plm-electrumx`, or set `PLM_UID`/`PLM_GID` |
+1 -1
View File
@@ -92,7 +92,7 @@ When merging upstream, resolve modify/delete conflicts on these files by keeping
- Palladium Core has no `getindexinfo`, `txospenderindex` (`gettxspendingprevout`) or `submitpackage` RPCs, - Palladium Core has no `getindexinfo`, `txospenderindex` (`gettxspendingprevout`) or `submitpackage` RPCs,
so the daemon version/index checks are disabled for `COIN=Palladium`, and so the daemon version/index checks are disabled for `COIN=Palladium`, and
`blockchain.outpoint.subscribe` is refused with an explicit error (`Coin.DAEMON_HAS_TXO_SPENDER_INDEX`) `blockchain.outpoint.subscribe` is refused with an explicit error (`Coin.DAEMON_HAS_TXO_SPENDER_INDEX`)
and `blockchain.transaction.broadcast_package` returns the daemon error to clients. and `blockchain.transaction.broadcast_package` returns an explicit error to clients.
- The daemon must run with `txindex=1`. - The daemon must run with `txindex=1`.
- Same genesis blocks as Bitcoin (mainnet, testnet3, regtest), 80-byte headers, sha256d PoW. - Same genesis blocks as Bitcoin (mainnet, testnet3, regtest), 80-byte headers, sha256d PoW.
- Parameters (address prefixes, ports, genesis hashes) were taken from the Palladium Core chain parameters. - Parameters (address prefixes, ports, genesis hashes) were taken from the Palladium Core chain parameters.
+5 -3
View File
@@ -14,13 +14,15 @@ First release of the Palladium fork. Based on a snapshot of upstream ElectrumX 2
bech32/bech32m decoder let ``electrumx_rpc query`` read ``plm1``, ``tplm1`` and ``rplm1`` addresses. bech32/bech32m decoder let ``electrumx_rpc query`` read ``plm1``, ``tplm1`` and ``rplm1`` addresses.
* Palladium Core has no ``getindexinfo``, ``txospenderindex`` or ``submitpackage`` RPCs: the daemon version/index * Palladium Core has no ``getindexinfo``, ``txospenderindex`` or ``submitpackage`` RPCs: the daemon version/index
checks are disabled, ``txindex=1`` is required, ``blockchain.outpoint.subscribe`` is refused with an explicit checks are disabled, ``txindex=1`` is required, ``blockchain.outpoint.subscribe`` is refused with an explicit
error (``Coin.DAEMON_HAS_TXO_SPENDER_INDEX``) and ``blockchain.transaction.broadcast_package`` returns the error (``Coin.DAEMON_HAS_TXO_SPENDER_INDEX``) and ``blockchain.transaction.broadcast_package`` returns an
daemon error to clients. explicit "not supported" error to clients.
* fixed: ``mempool.get_info`` (protocol 1.6) failed with the Palladium daemon, whose ``getmempoolinfo`` has no * fixed: ``mempool.get_info`` (protocol 1.6) failed with the Palladium daemon, whose ``getmempoolinfo`` has no
``incrementalrelayfee`` (it is read from ``getnetworkinfo``), and ``blockchain.transaction.testmempoolaccept`` ``incrementalrelayfee`` (it is read from ``getnetworkinfo``), and ``blockchain.transaction.testmempoolaccept``
failed because the daemon does not report ``wtxid``. failed because the daemon does not report ``wtxid``.
* new: integration tests (``tests/integration``) against a Palladium node in regtest mode, run in Docker, with * new: integration tests (``tests/integration``) against a Palladium node in regtest mode, run in Docker, with
a ``integration`` job in CI. an ``integration`` job in CI for LevelDB and RocksDB. They cover the protocol versions 1.4 to 1.7, SSL, reorgs and
the daemon limits.
* new: a mainnet taproot transaction among the test fixtures.
* removed: all other coins, their transaction deserializers, session/daemon/block processor classes, tests, * removed: all other coins, their transaction deserializers, session/daemon/block processor classes, tests,
pip extras and ``contrib`` files. pip extras and ``contrib`` files.
* new: ``Dockerfile`` and ``docker-compose.yml`` to run next to the Palladium node container, with automatic * new: ``Dockerfile`` and ``docker-compose.yml`` to run next to the Palladium node container, with automatic
+3 -3
View File
@@ -271,7 +271,7 @@ class Palladium(Coin):
Its daemon has no 'txospenderindex', 'getindexinfo' or 'submitpackage', so Its daemon has no 'txospenderindex', 'getindexinfo' or 'submitpackage', so
'blockchain.outpoint.subscribe' is refused (DAEMON_HAS_TXO_SPENDER_INDEX) and 'blockchain.outpoint.subscribe' is refused (DAEMON_HAS_TXO_SPENDER_INDEX) and
'blockchain.transaction.broadcast_package' will return a daemon error to clients. 'blockchain.transaction.broadcast_package' returns an explicit error to clients.
The daemon needs 'txindex=1'. The daemon needs 'txindex=1'.
""" """
NAME = "Palladium" NAME = "Palladium"
@@ -288,8 +288,8 @@ class Palladium(Coin):
DAEMON_HAS_TXO_SPENDER_INDEX = False DAEMON_HAS_TXO_SPENDER_INDEX = False
RPC_PORT = 2332 RPC_PORT = 2332
# snapshot (UpdateTip tx= count), only used for sync ETAs # snapshot (UpdateTip tx= count), only used for sync ETAs
TX_COUNT = 661_421 TX_COUNT = 662_327
TX_COUNT_HEIGHT = 542_032 TX_COUNT_HEIGHT = 542_786
TX_PER_BLOCK = 2 TX_PER_BLOCK = 2
PEERS = [] PEERS = []
+2
View File
@@ -2240,6 +2240,8 @@ class ElectrumX(SessionBase):
error, = e.args error, = e.args
message = error['message'] message = error['message']
self.logger.info(f"error submitting package: {message}") self.logger.info(f"error submitting package: {message}")
if error.get('code') == -32601: # method not found
raise RPCError(BAD_REQUEST, 'the daemon does not support package submission (submitpackage)')
raise RPCError( raise RPCError(
BAD_REQUEST, BAD_REQUEST,
f'the tx package was rejected by network rules.\n\n{message}.', f'the tx package was rejected by network rules.\n\n{message}.',