Auditor Role #1052
Replies: 4 comments 9 replies
-
Really great idea. The signing aspect is very smart. Let's look into the actual messages that contain the information we want to give to the auditors, starting with just the messages containing the submitted shares. Then we can lock down which roles would be involved, if the auditor should be a separate role, etc. Also, we could look into message hooks via |
Beta Was this translation helpful? Give feedback.
-
Shouldn't the pool be providing these signed share acks directly to the translator (via some extension?) so that the translator can indirectly switch to a fallback if the pool stops doing so? Just sending it to an auditor and switching to a fallback means we waste 8 hours of hashing until a human wakes up and intervenes. |
Beta Was this translation helpful? Give feedback.
-
This is going to be a fairly naive review of this idea but... IMHO this is far too complicated. First, I don't understand the need for blind signing at all. There's no secret information in shares. Nor key rotation. Why? Second, AFAIK StratumV2 doesn't validate block templates at all. Auditing of shares which may not become bitcoin blocks is not terribly useful. It makes me worry that e.g. shares submitted to a different pool might be submitted to the auditor, and the auditor wouldn't know. Maybe the signing is intended to replace validation of block templates, but this still enables a number of ways that the pool could cheat. Auditing only unverifiable claims of the Pool operator is not auditing if you don't trust your pool. I probably got all this horribly wrong, but I said I'd take a look at it... |
Beta Was this translation helpful? Give feedback.
-
This is a great idea. With the blind signatures you are halfway to ecash tokens. The only thing remaining is to make these credentials tradeable. There are a lot of cool benefits to creating a mining share free market. I am working on a design to do this with Sv2 and the cashu protocol. The high level architecture looks like this:
We can lean on the existing cashu mint and wallet implementations to do the blind signing and token storage. (We're calling mining share backed ecash tokens ehash.)1 The scheme only works with PPLNS or similar payouts. There are two flows that need to be nailed down:
Issuance is fairly straightforward. The wallet/proxy submits a blinded token using the mint's keyset with each share it finds. The pool/mint validates the share then signs the blinded token and sends the signature to the wallet/proxy where it is stored in the wallet database. To pay out mining rewards, each time the pool finds a block it should wait a few confirmations and then begin exchanging ehash tokens for bitcoin-backed ecash tokens, lightning payouts, or possibly on-chain payouts.2. Hashrate verification is a crucial piece of the puzzle for keeping the pools honest. For this reason the pool's auditor role should release it's data with each block mined including:
This data should be packaged up into some kind of a merkle tree or merkle sum tree for fast verification. This will be a lot of data4 so the pool will probably want to seed a torrent using the bittorent protocol to minimize this spiky bandwidth load. The pool should include an attestation to the cashu keysets in this merkle tree and and include the merkle hash in the coinbase output to prevent hashers from claiming shares with multiple pools at the same time. In this way it will be impossible to opaquely issue ehash tokens without the underlying proof of work required to mine a share. If the pool tries to cheat in this way anyone could prove it by demonstrating that the block header associated with any given ehash token does not meet the difficulty threshold or that there are duplicate ehash tokens issued for the same share. When it comes to miner submitted block templates the pool only really needs to validate the coinbase transaction. With a scheme like this one the pool can directly compensate miners for mining on more valuable block templates and incorporate this calculation into the ehash <-> ecash exchange rate. I am very happy to see independent developers take up the project of hashrate validation. It gives me conviction that this is a sound idea. Footnotes
|
Beta Was this translation helpful? Give feedback.
-
Goal: Outline a new role to enable auditing of shares.
Hopefully discussion of associated messaging and implementation for this role can be hashed out in this thread.
Within a mining operation there are many points at which auditing could be conducted, it is my belief that a separate role (daemon) can be run alongside existing roles and connected via protocol extensions and new message definitions. An Auditor role could be tied to any existing role but we will focus on two specific roles to narrow scope for a PoC implementation.
The protocol extension ideally is abstracted enough to support an Auditor opening messaging channels ("channel") with a variety of existing and future roles. However, this initial post will focus on an Auditor having two primary channels: 1. with the
pool
role 2. with thetranslator
role (mining-proxy
may also be appropriate).The mechanism for auditing will be similar to this Delving Bitcoin post but excludes details on how a Pool does the accounting.
x
) and pubkey from keyset from PoolIn this, the Pool knows of the shares and cryptographically attests to them via a blinded signing. Auditors know all of their own shares and all blinding factors. Auditors are able to verify that all published bShares match their own list. With collaboration, multiple Auditors can coordinate to ensure a complete list and accounting is done for every share submitted. In an exchange between Auditors, a number of shares could be exchanged at a minimum for verification (i.e. validated X number of shares), although a complete list of blindings factors correlated to shares would allow for each Auditor to comprehensively validate the published list of bShares.
This is just one perspective of how an Auditor might be used for hash rate shares.
Other use cases could be:
It is my belief that Sv2 provides an excellent framework and robust protocol to build out a transparent and auditable mining ecosystem beneficial to pleb miners as well as utility scale miners and everywhere in between.
Beta Was this translation helpful? Give feedback.
All reactions