Luke-Jr [ARCHIVE] on Nostr: 📅 Original date posted:2013-06-10 📝 Original message:On Monday, June 10, 2013 ...
📅 Original date posted:2013-06-10
📝 Original message:On Monday, June 10, 2013 9:09:13 PM Peter Todd wrote:
> # Protocol Work
This is basically done.
> Basic idea is the miner makes two connections, their pool, and a local
> bitcoind.
>
> They always (usually?) work on the subset of transactions common to both
> the pool's getblocktemplate and their local one. When they find a share
> if it doesn't meet difficulty they just hand it to the pool. Currently
> that is done by handing the whole block over, correct? I know the BIP
> says otherwise, but we should optimize this to just hand over tx hashes
> where possible.
The plan was to tell the pool it doesn't need to send transactions at all, and
only work on the ones from bitcoind. Currently, share submissions are just the
block header and coinbase transaction; in this case, however, the miner will
need to send merkle links also, possibly just once via a block proposal in
advance.
> If the share does meet difficulty, hand it to both the pool and the
> local bitcoind. Should hand it to the pool first though, because the
> pool likely has the fastest block propagation, then hand it to local
> bitcoind. An optimized version may want to have some record of measured
> bandwidth - this applies Bitcoin in general too, although also has other
> issues.
Currently, BFGMiner is doing submission to the pool, waiting for a response,
then submitting to a local bitcoind. This is because the pool might need to
receive/record the share before it processes the block on bitcoind, or you
could lose credit for it. The response from the pool is rather small (a single
TCP packet), so this shouldn't delay much longer.
> ## Reducing bandwidth
>
> How about for normal shares we just pass the block header, and have the
> pool randomly pick a subset of transactions to audit? Any fraud cancels
> the users shares. This will work best in conjunction with a UTXO proof
> tree to prove fees, or by just picking whole shares randomly to audit.
Might as well just use higher difficulty shares (each one audited) for the
same effect. Block proposals allow the miner to tell the pool its transaction
set once (per txset change) for any number of shares.
IF bandwidth becomes a real problem, I have a draft of a "GBT 2.0" that does
some more improvement in this area.
> # Pool work
>
> So does eliopool already accept arbitrary shares like this and do the
> correct accounting already? (IE adjust share amount based on fees?) What
> happens when the pool doesn't get the share directly, but does see the
> new block?
>
> + possible protocol extensions
I don't follow.
> # Miner work
>
> Basically we need code to merge the two block templates together to find
> commonality. I guess you probably want to implement this in bfgminer
> first, so add the code to libblkmaker first, then maybe python-blkmaker.
libblkmaker's API was designed for this from the start, so it should be fairly
easily implemented.
> We also want an automatic fallback to local solo mining if the pool
> can't be contacted.
>
> + possible protocol extensions
Failover already functions, but probably could use a rewrite...
Luke
Published at
2023-06-07 15:03:13Event JSON
{
"id": "2372044e11bff17f4a1d3f15ecf87e2d4ce3ce2afb454186fd8242670c68b243",
"pubkey": "6ac6a519b554d8ff726a301e3daec0b489f443793778feccc6ea7a536f7354f1",
"created_at": 1686150193,
"kind": 1,
"tags": [
[
"e",
"c38e7a8da7625c86416fe68c4e70b42114fb544f9c6e041a0fbee015ae13f188",
"",
"root"
],
[
"e",
"98ad12d384f9267f01a628dfab30ea31aa77834447090c854dd10f2cf731d5eb",
"",
"reply"
],
[
"p",
"daa2fc676a25e3b5b45644540bcbd1e1168b111427cd0e3cf19c56194fb231aa"
]
],
"content": "📅 Original date posted:2013-06-10\n📝 Original message:On Monday, June 10, 2013 9:09:13 PM Peter Todd wrote:\n\u003e # Protocol Work\n\nThis is basically done.\n\n\u003e Basic idea is the miner makes two connections, their pool, and a local\n\u003e bitcoind.\n\u003e \n\u003e They always (usually?) work on the subset of transactions common to both\n\u003e the pool's getblocktemplate and their local one. When they find a share\n\u003e if it doesn't meet difficulty they just hand it to the pool. Currently\n\u003e that is done by handing the whole block over, correct? I know the BIP\n\u003e says otherwise, but we should optimize this to just hand over tx hashes\n\u003e where possible.\n\nThe plan was to tell the pool it doesn't need to send transactions at all, and \nonly work on the ones from bitcoind. Currently, share submissions are just the \nblock header and coinbase transaction; in this case, however, the miner will \nneed to send merkle links also, possibly just once via a block proposal in \nadvance.\n\n\u003e If the share does meet difficulty, hand it to both the pool and the\n\u003e local bitcoind. Should hand it to the pool first though, because the\n\u003e pool likely has the fastest block propagation, then hand it to local\n\u003e bitcoind. An optimized version may want to have some record of measured\n\u003e bandwidth - this applies Bitcoin in general too, although also has other\n\u003e issues.\n\nCurrently, BFGMiner is doing submission to the pool, waiting for a response, \nthen submitting to a local bitcoind. This is because the pool might need to \nreceive/record the share before it processes the block on bitcoind, or you \ncould lose credit for it. The response from the pool is rather small (a single \nTCP packet), so this shouldn't delay much longer.\n\n\u003e ## Reducing bandwidth\n\u003e \n\u003e How about for normal shares we just pass the block header, and have the\n\u003e pool randomly pick a subset of transactions to audit? Any fraud cancels\n\u003e the users shares. This will work best in conjunction with a UTXO proof\n\u003e tree to prove fees, or by just picking whole shares randomly to audit.\n\nMight as well just use higher difficulty shares (each one audited) for the \nsame effect. Block proposals allow the miner to tell the pool its transaction \nset once (per txset change) for any number of shares.\n\nIF bandwidth becomes a real problem, I have a draft of a \"GBT 2.0\" that does \nsome more improvement in this area.\n\n\u003e # Pool work\n\u003e \n\u003e So does eliopool already accept arbitrary shares like this and do the\n\u003e correct accounting already? (IE adjust share amount based on fees?) What\n\u003e happens when the pool doesn't get the share directly, but does see the\n\u003e new block?\n\u003e \n\u003e + possible protocol extensions\n\nI don't follow.\n\n\u003e # Miner work\n\u003e \n\u003e Basically we need code to merge the two block templates together to find\n\u003e commonality. I guess you probably want to implement this in bfgminer\n\u003e first, so add the code to libblkmaker first, then maybe python-blkmaker.\n\nlibblkmaker's API was designed for this from the start, so it should be fairly \neasily implemented.\n\n\u003e We also want an automatic fallback to local solo mining if the pool\n\u003e can't be contacted.\n\u003e \n\u003e + possible protocol extensions\n\nFailover already functions, but probably could use a rewrite...\n\nLuke",
"sig": "2702afbb6175d7174bc272c8969de91ed9cb5382f21070e8597e3de88d88385f3b53a7f8affbffbb98f20e5182f84f073ad060ad05ad406973495c84451471f4"
}