Replies: 3 comments 6 replies
-
Pools shouldn't set difficulty targets for downstream channels based solely on the hashrate that the downstream reports, because the downsteram could simply lie in order to get a low difficulty target and later send too many shares (which technically constitutes a form of spam). Instead, the pool should collect shares and slowly increase the difficulty target, just like it is currently done on |
Beta Was this translation helpful? Give feedback.
-
With regards to port standardization, here's a comprehensive list of ports currently used for listening by roles on our development setup:
Over Discord, @Sjors suggested the following:
Unfortunately I think @Sjors missed the JDC vs JDS split. So I'll take the liberty to shuffle things a bit while still following the overall idea. Here's a proposal for standardized SV2 ports:
Implementations should be free to choose different ports, but in case there's need for standardization or interoperability, they could follow this convention in favor of interoperability. Some production setups could potentially have multiple roles listening on the same port. For example:
We can highlight that on the guidelines. However, the guidelines also need to cover the most generic case, where each role has its own designated standard port. Note: I left Testnet3 out of the table, but it should also follow the same pattern 2884*. |
Beta Was this translation helpful? Give feedback.
-
Pools should be aware of protocol attack vectors over (consensus-valid) non-standard transactions. They have been historically documented, for example: https://bitcointalk.org/?topic=140078%7CCVE-2013-2292 I discussed this briefly with @Fi3 and @Sjors during BTC Prague 2024, and my takeaway is that a practical approach for pools (especially ones with an out-of-band service, like Mara's SplipStream) is to implement a filter based on preemptive timed execution. Such filter would attempt to execute each transaction arriving out-of-band, while timing such execution. If execution goes above some predefined limit, the transaction is deemed invalid and discarded, regardless of on-chain and out-of-band fees. This aligns with the pool's incentive to avoid introducing net-negative protocol behavior that would arise from blocks including such transaction, which would likely depreciate the value of BTC. A positive aspect of such approach is that it doesn't require diving into the design space of all possible scripts and playing whack-a-mole on execution paths. Especially with the potential introduction of |
Beta Was this translation helpful? Give feedback.
-
Stratum is agnostic with regards to many design decisions on pool and hasher side. Implementers are free to go in any direction they want.
However, while working on protocol specs and reference implementation, we are in a strategic position that allows us to see the mining landscape with a broader and deeper perspective when compared to individual players, which are often blindsighted by their own competitive strategies.
Therefore, it is desirable that the SRI community shares with the community what we see as good Implementation Guidelines and Best Practices.
This discussion aims to get consensus on ideas, which then will turn into actionable documentation items on #79
Beta Was this translation helpful? Give feedback.
All reactions