security – Did pools verify constantly the ouput of createrawtransaction when they build their coinbase transaction?

Pools creates their own coinbase transaction to pay their selves, and they begin the PoW by hashing different Headers, what prevent a hacker from changing the createrawtransaction with different output (His bitcoin adress instaed of the pool bitcoin pool adress)?

How pools can know that the header they are providing for miners contains a merkle root which contains a coinbase transaction created with a valid ouput (Their bitcoin adress and not another adress)?

Thanks

mining pools – Who enforces new consensus rules in Bitcoin?

I have been reading at few places that miners will enforce new consensus rules. Examples:

https://twitter.com/BitMEXResearch/status/1391014115968274433

https://twitter.com/ajtowns/status/1390496379487744001

04:20 < AaronvanW> aj: I think “my” type of futures market could be combined with “your” type of futures market? My futures market would inform miners if the market wants them to activate or not, your futures market would inform them (post-activation) if they should enforce or not. I think the second futures market (enforce or not) would be kinda pointless in this context, since the market already told miners to activate (among other reasons), but hey if people want to bet on that they can. (And I think this should address Matt’s point/concern.)

04:32 < AaronvanW> the second futures market would have an asymmetric advantage in favor of enforcing, but I’d say that’s a good thing. (again, I think this futures market would be kinda pointless… just addressing concerns here.)

http://gnusha.org/taproot-activation/2021-05-04.log

According to my understanding:

  1. Devs code implementation for a BIP, followed by reviews and discussions

  2. MASF: Miners are asked to signal readiness, new consensus rules are activated if most miners are ready in time. Blocks that do not follow new consensus rules after activation are rejected by full nodes.

  3. UASF: Miners are informed about a deadline, new consensus rules are activated irrespective of miners readiness if enough miners fail to signal before deadline. Blocks that don’t follow new consensus rules after activation are rejected by full nodes. (In BIP 148 blocks are rejected that do not signal and BIP 8 has a MUST_SIGNAL phase and lockinontimeout)

In both cases, rules are ‘enforced‘ by full nodes.

Are miners “following” the new consensus rules after activation that they agreed to activate and signaled readiness or miners are “enforcing” new consensus rules? If they are enforcing new consensus rules, what is the role of full nodes? And if miners enforce new consensus rules can we consider miners signaling as voting?

mining pools – how to identify as soon as possible that a new block was mined

From the miner perspective: You have a worker, fetching data from a full-node with getblocktemplate to create a candidate block and push it to the miners, to effective mine it. As soon as your miner is done mining a candidate, it asks for more data. However if the block being mined now, was submitted by another miner, all miners should stop to work in the current block and pull data from worker.

How can the worker identify as soon as possible that a new block was mined? Monitor if the height on the results from getblocktemplate changed? Monitor if previous hash changed? Monitor if at least X confirmations happened?

mining pools – Stratum: How many shares should I submit per job?

I’m implementing a bitcoin CPU miner just for fun in python. I’ve been reading a lot about bitcoin and the protocol pools use for communication and coordinating workers but there is a key concept I haven’t explicitly found.

The problem (Stratum v1)

Jobs keep coming to the worker(which I store in a FIFO), and provided clean_jobs is set to false, when should I get to the next job? With nonce, extranonce, and version and time rolling seems like I would never need to change job(even with the fastest of ASICs). Or is it that once I found a share for a given job I must submit that only one share and proceed to the next job?

Once a share is found for a given job, should I keep mining it? Until when? Or should I submit that only one share for that job and proceed to the next job?

I’m guessing it is the latter, as the server can adjust the difficulty to prevent me from finding shares too fast(or too slow)

I would appreciate it if you added a source if possible(so I can learn more and see what else I’ve missed).

Mining pools repayment in a coinbase tx

Is it possible to add more outputs than one to the coinbase transaction? And if it is, can miners use them to repay users for renting hash to the pool?
I think in this case they know who to pay and this could prevent blocks from being found almost instantly and empty.

Check out VPS Resource Pools with DesiVPS! (Los Angeles/Netherlands)

VPS resource pools are a cool idea that a few hosts have offered.  You buy a set of resources (so many virtual cores, so many GBs of RAM, etc.) and then you get to decide how you want to carve them up.  Maybe you want a few big VPSes or many small VPSes or any combination you wish.  And of course, you can reconfigure any time, so you have the freedom to periodically move resources around.

Of course, you could just buy more VPSes, but the point with resource pools is that you can design plans that maybe aren’t the standard cookie-cutter “T-shirt sizes” that hosts offer.  It’s another level of flexibility.

If this sounds interesting, check out the offers below from DesiVPS.  We last featured them back on December 26, 2020 when they brought us some “standard” VPS plans.  Now they’re offering VPS resource pools as well!

Here’s a little about DesiVPS in their own words:

“DesiVPS is based in Mumbai with servers hosted in USA & Netherlands We don’t lease servers, we buy our own server hardware and co-locate them on various networks. To stand out in the IT industry compared to the many competitors, we rely above all on excellent customer service. From our headquarters in Mumbai, our experts will assist you with all matters relating to servers.

We have always tried to use the most modern technology available.

Therefore, if you are looking for VPS hosting for the site, at the same time reliable and for reasonable money – order from us.”

Their WHOIS is public. Their Terms of Service is available on their web site. They accept PayPal, cryptocurrency, Alipay, Credit card/debit card.

If you have been a customer of DesiVPS or you give them a try out now, please comment below.

Now read more to see the offers!

KVM-VPS-1GB

  • 1 CPU Cores
  • 1 GB RAM
  • 15 GB Pure SSD
  • 1000 Mbps Port
  • 1 IP Address
  • 2.5 TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • Free 1 Snapshot / Month
  • $15.00/Year
  • Location : LA, USA & The Hague, Netherlands
  • (ORDER)

KVM-VPS-2GB

  • 1 CPU Cores
  • 2 GB RAM
  • 30 GB Pure SSD
  • 1000 Mbps Port
  • 2 IP Addresses
  • 5 TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • Free 1 Snapshot / Month
  • $30.00/Year
  • Location : LA, USA & The Hague, Netherlands
  • (ORDER)

KVM-VPS-3GB

  • 2 CPU Cores
  • 3 GB RAM
  • 45 GB Pure SSD
  • 1000 Mbps Port
  • 3 IP Addresses
  • 7.5 TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • Free 1 Snapshot / Month
  • $45.00/Year
  • Location : LA, USA & The Hague, Netherlands
  • (ORDER)

KVM-VPS-4GB

  • 2 CPU Cores
  • 4 GB RAM
  • 60 GB Pure SSD
  • 1000 Mbps Port
  • 4 IP Addresses
  • 10 TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • Free 1 Snapshot / Month
  • $60.00/Year
  • Location : LA, USA & The Hague, Netherlands
  • (ORDER)

2x VPS Pool Special
VPS Resource Pool

  • 2GB RAM
  • 40 GB SSD
  • 1000 Mbps Port
  • 2 IP Address
  • 5TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • $5/Month
  • $50/Year
  • (ORDER)

4x VPS Pool Special
VPS Resource Pool

  • 4GB RAM
  • 80 GB SSD
  • 1000 Mbps Port
  • 4 IP Address
  • 10 TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • $10/Month
  • $100/Year
  • (ORDER)

6x VPS Pool Special
VPS Resource Pool

  • 6GB RAM
  • 120 GB SSD
  • 1000 Mbps Port
  • 6 IP Address
  • 15 TB Bandwidth
  • Virtualizor/KVM
  • Docker/Custom ISO
  • Free Ipv6
  • $15/Month
  • $150/Year
  • (ORDER)

NETWORK INFO:

  • Los Angeles, CA, USA
    • Test IP: 2.56.176.6
    • Test File: http://2.56.176.6/100MB.bin
    • Looking Glass: https://lg.desivps.com
  • The Hague, Nertherlands
    • Test IP: 41.216.181.2
    • Test File: http://41.216.181.2/100MB.bin
    • Looking Glass: https://nl.desivps.com

HOST NODE INFO:

  • Intel Dual E5-2690 Processors
  • 256 GB RAM
  • 4x 2TB Pure SSD’s
  • Hardware RAID10
  • 1 Gbps link

Please let us know if you have any questions/comments and enjoy!

raindog308

I’m Andrew, techno polymath and long-time LowEndTalk community Moderator. My technical interests include all things Unix, perl, python, shell scripting, and relational database systems. I enjoy writing technical articles here on LowEndBox to help people get more out of their VPSes.

bitcoin core – What algorithm do miners (mining pools) use the generate different blocks as they exhaust the nonce values

As I understand it, the building of a block goes something like this (please correct):

  1. Collect a bunch of new transactions.
  2. Hash all those transactions.
  3. Generate a coinbase transaction using the miner’s (mining pool) public address.
  4. Generate the Merkle root for all the transactions using an arbitrary order.
  5. Fill in the block header.
  6. Dispatch to mining hardware which will try all 2^32 nonce combinations.

Now, when the mining hardware says that there is no solution after trying all nonce combinations, it appears that it has the following options for generating new options to check:

  • Gather new transactions (or drop transactions), hash, and recalculate the Markle root.
  • Update the script (extranonce) field in the coinbase transaction (or the target address), hash, recalculate the Merkle root.
  • Update the timestamp in the header (what is the granularity on the timestamp).
  • Update the difficulty in the header (is this possible)??
  • Rearrange transaction order, and recalculate the Merkle root.

Are there any options I missed. What is the typical order that the mining pools do these things?

Thanks

storage – Unisphere dynamic pools. Does this mean I can lose more than 1 disk with a raid 5 configuration and 20 drives or how are spare space extents treated?

So emc has implemented dynamic pools which do away with hot spares and instead uses some drive extents as spare space on each drive.

When a drive fails, the contents are copied into this spare space (is it usable living on this spare space?).

When setting up a traditional system, you would normally have a couple hot spares so if a drive fails, it rebuilds onto these spares thus saving you a failure. (Raid 5 with a couple hot spares allows you to lose 3 drives at seperate times i believe).

With this dynamic pool, how does this work? If I have a 20 drive system and use raid 5 on a dynamic pool…what number of drives can I lose (at different times of course) and still be operational?

mining pools – Can one manually type the mined block on bitcoin core and broadcast it?

Yes. Bitcoin Core has a RPC submitblock, which, as the name implies, allows you to provide a block to be submitted to the Bitcoin network.

In fact, Bitcoin Core supports the getblocktemplate protocol which means you can solo mine with Bitcoin Core. Furthermore, pools are probably running Bitcoin Core in their backend and their pool software just uses the getblocktemplate protocol to get the transactions for a block and prepare the work that is sent out to the actual miners.

mining pools – What unconfirmed transactions in Mempool get into a block?

I have a question regarding picking unconfirmed transactions from the mempool. Let’s say, there are 1000 transactions in the mempool. Can I randomly select some transactions, say, transaction a, b, c, d from them, and work on the nonce and create a new block? Is there any criteria about what transactions need to be in the next block?