Skip to content

Add PyBlock as a solo pool, fix Public Pool port, rm duplicate text#203

Merged
GitGab19 merged 3 commits into
stratum-mining:mainfrom
pavlenex:pypool-add
Jul 3, 2026
Merged

Add PyBlock as a solo pool, fix Public Pool port, rm duplicate text#203
GitGab19 merged 3 commits into
stratum-mining:mainfrom
pavlenex:pypool-add

Conversation

@pavlenex

Copy link
Copy Markdown
Contributor

This PR fixes #201 and also fixes the port for Public Pool.
Additionally, as we add more pools as options, the main call to action Continue is being pushed below the fold. That's why in this PR I applied short-term fix, by removing information from the initial screen that is duplicated and brings no benefit to the end user. All pools are alphabetically sorted.

Before

Screenshot 2026-06-30 at 20 21 56

This PR

Screenshot 2026-06-30 at 20 19 12

Comment thread src/lib/pools.ts
Comment thread src/lib/pools.ts
@plebhash

Copy link
Copy Markdown
Member

I'm trying to test but I think I'm hitting some edge case:

recently @GitGab19 introduced some behavior on tProxy where we validate whether 100% of the payout goes to the configured address (stratum-mining/sv2-apps#497)

but PyBlock reserves 0.9% of the payout to the pool:

image

so tProxy hits fallback after receiving a NewExtendedMiningJob withere the Coinbase Outputs are not allocating 100% to the user-configured address:

...
2026-06-30T22:18:23.394204882Z [translator] [stdout] 2026-06-30T22:18:23.393776Z  INFO translator_sv2::sv1::sv1_server: Downstream 1 registered successfully (channel will be opened after first message)
2026-06-30T22:18:23.412992007Z [translator] [stdout] 2026-06-30T22:18:23.412737Z  INFO translator_sv2::sv1::sv1_server: SV1 server: opening extended mining channel for downstream 1 after first message
2026-06-30T22:18:23.413037382Z [translator] [stdout] 2026-06-30T22:18:23.412838Z  INFO translator_sv2::sv2::channel_manager: Sending OpenExtendedMiningChannel message to upstream: OpenExtendedMiningChannel(request_id: 1, user_identity: bc1qpeg44hxkf2qv5a38xxvl7zqhr5uq385t3exzsh.miner1, nominal_hash_rate: 500000000000, max_target: U256(0000000000384b84d4713ac163c43e9b0dddd2725a1947c189b7d325336a7bb5), min_extranonce_size: 4)
2026-06-30T22:18:23.454843048Z [translator] [stdout] 2026-06-30T22:18:23.454457Z  INFO translator_sv2::sv2::channel_manager::mining_message_handler: Received: OpenExtendedMiningChannelSuccess(request_id: 1, channel_id: 2, target: U256(0000000000029f16b11c6d17315448c814142382689c6ce945b0730d62746e95), extranonce_size: 16, extranonce_prefix: B032(0100001b), group_channel_id: 1), user_identity: bc1qpeg44hxkf2qv5a38xxvl7zqhr5uq385t3exzsh.miner1, nominal_hashrate: 500000000000
2026-06-30T22:18:23.454901798Z [translator] [stdout] 2026-06-30T22:18:23.454644Z  INFO translator_sv2::sv1::sv1_server: Processing 3 queued Sv1 messages for downstream 1
2026-06-30T22:18:23.454907632Z [translator] [stdout] 2026-06-30T22:18:23.454703Z  INFO translator_sv2::sv1::sv1_server::downstream_message_handler: Received mining.configure from SV1 downstream
2026-06-30T22:18:23.454926798Z [translator] [stdout] 2026-06-30T22:18:23.454780Z  INFO translator_sv2::sv1::sv1_server::downstream_message_handler: Received mining.subscribe from Sv1 downstream
2026-06-30T22:18:23.454932882Z [translator] [stdout] 2026-06-30T22:18:23.454821Z  INFO translator_sv2::sv1::sv1_server::downstream_message_handler: Received mining.authorize from Sv1 downstream 1
2026-06-30T22:18:23.454937215Z [translator] [stdout] 2026-06-30T22:18:23.454830Z  INFO translator_sv2::sv1::sv1_server: Down: Handling mining.authorize after upstream channel is open
2026-06-30T22:18:23.497604923Z [translator] [stdout] 2026-06-30T22:18:23.496940Z  INFO translator_sv2::sv2::channel_manager::mining_message_handler: Received: NewExtendedMiningJob(channel_id: 2, job_id: 1, min_ntime: Sv2Option(None), version: 0x20000010, version_rolling_allowed: true, merkle_path: Seq0255<len=9: [e3d2b0887b5acb52c1db704668e8a9fcfeacb7c6fb59614fa0edab705bf83f40, c5869872a4cf0c809cfabe3cbac5511ff4767e47347cd167445c7ad662f32721, ... , d65b50909c51f2d18ad22519086391f6a59ef3ee417b4b170e601acf6d9d7917, a4bcda48973cb9379f2a1ac26185062d9ba28e4e842832c4056ab08d4215e013], coinbase_tx_prefix: B064K(02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2a03e4960e102f2f5079424c4f434b2d5356322f2f2f14), coinbase_tx_suffix: B064K(ffffffff03d7f22a000000000016001441da9da465cbf6879e2d817727c4ba49928dcb0d2b1e79120000000016001457bb5764d38ef7a2000c522d40a5a8f0340235400000000000000000266a24aa21a9ed2a27426f7e889727d57aae8a5b21b6f11d0da206ee8276deb27d5f7edc63bb9a00000000))
2026-06-30T22:18:23.497674298Z [translator] [stdout] 2026-06-30T22:18:23.497035Z ERROR translator_sv2::sv2::channel_manager::mining_message_handler: NewExtendedMiningJob failed payout verification: coinbase payout mismatch for bc1qpeg44hxkf2qv5a38xxvl7zqhr5uq385t3exzsh: expected 312742146 sats (100% of 312742146 spendable sats), found 309927467 sats
2026-06-30T22:18:23.497679840Z [translator] [stdout] 2026-06-30T22:18:23.497051Z  WARN translator_sv2::sv2::channel_manager: ChannelManager::handle_upstream_frame requested fallback error_kind=PayoutVerificationFailed("coinbase payout mismatch for bc1qpeg44hxkf2qv5a38xxvl7zqhr5uq385t3exzsh: expected 312742146 sats (100% of 312742146 spendable sats), found 309927467 sats")
2026-06-30T22:18:23.497698965Z [translator] [stdout] 2026-06-30T22:18:23.497090Z  WARN translator_sv2::sv2::channel_manager: ChannelManager: unified message loop exited.
2026-06-30T22:18:23.497829173Z [translator] [stdout] 2026-06-30T22:18:23.497103Z  INFO translator_sv2::sv2::upstream: Upstream: fallback triggered
2026-06-30T22:18:23.497832382Z [translator] [stdout] 2026-06-30T22:18:23.497108Z  WARN translator_sv2::sv2::upstream: Upstream: task shutting down cleanly.
2026-06-30T22:18:23.497835382Z [translator] [stdout] 2026-06-30T22:18:23.497116Z  INFO translator_sv2::sv1::monitoring: SV1 miner telemetry loop received fallback signal
2026-06-30T22:18:23.497840257Z [translator] [stdout] 2026-06-30T22:18:23.497122Z  INFO translator_sv2: SV1 miner telemetry task exited and signaled fallback coordinator
2026-06-30T22:18:23.497843340Z [translator] [stdout] 2026-06-30T22:18:23.497129Z  INFO translator_sv2: Monitoring server: fallback triggered.

@PyBLOCK-Bitcoin

Copy link
Copy Markdown

the Coinbase Outputs are not allocating 100% to the user-configured address

That's correct; it can never yield 100% for the user, as the pool fee is deducted.

312742146 Sats less the pool fee, equal to 309927467 Sats.

@GitGab19

GitGab19 commented Jul 1, 2026

Copy link
Copy Markdown
Member

I'm working on a PR to improve the payout checks on tProxy.

I will cross-reference it here once I open it.

@GitGab19

GitGab19 commented Jul 1, 2026

Copy link
Copy Markdown
Member

@plebhash @pavlenex @PyBLOCK-Bitcoin I opened a PR on sv2-apps which unblocks the PyBlock addition done here: stratum-mining/sv2-apps#589

@GitGab19
GitGab19 merged commit 42ae72a into stratum-mining:main Jul 3, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add PyBlock pool as solo pool option

4 participants