pablohere/public/writings/10-million-sats-into-mining.html
2026-06-16 11:36:41 +02:00

295 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html>
<head>
<title>Pablo here</title>
<meta charset="utf-8">
<meta viewport="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../styles.css">
<style>
table.ledger {
border-collapse: collapse;
width: fit-content;
min-width: 60%;
margin: 16px auto;
font-family: "Times New Roman", Times, serif;
font-size: 1.05em;
}
table.ledger th,
table.ledger td {
padding: 4px 16px;
border-bottom: 1px solid #ddd;
}
table.ledger .title {
text-align: center;
font-weight: bold;
font-size: 1.15em;
}
table.ledger .subtitle {
text-align: center;
font-style: italic;
font-weight: bold;
border-bottom: 2px solid #000;
padding-bottom: 4px;
}
table.ledger .amount {
text-align: right;
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
table.ledger .section th {
text-align: left;
font-weight: bold;
padding-top: 12px;
}
table.ledger .item td:first-child {
padding-left: 30px;
font-weight: normal;
}
table.ledger .subtotal td {
font-weight: normal;
}
table.ledger .subtotal .amount {
border-top: 1px solid #000;
}
table.ledger .total th {
text-align: left;
font-weight: bold;
border-bottom: none;
}
table.ledger .total .amount {
text-align: right;
border-top: 1px solid #000;
border-bottom: 3px double #000;
}
</style>
</head>
<body>
<main>
<h1>
Hi, Pablo here
</h1>
<p><a href="../index.html">back to home</a></p>
<hr>
<section>
<h2>10 million sats into mining</h2>
<p><em>Published: 2026-05-25</em></p>
<p>In my previous article <a href="my-first-petahash.html">My first petahash</a> I discussed my beginnings
with mining via rented hashrate from
<a href="https://hashpower.braiins.com">Braiins' Hashpower market</a> plus my own
<a href="https://github.com/OCEAN-xyz/datum_gateway">DATUM</a> gateway pointing to
<a href="https://ocean.xyz/">OCEAN</a>, with
<a href="https://github.com/counterweightoperator/hashbidder">hashbidder</a> to automate my bidding in
the hashmarket. I also mentioned that my starting plan was to put a total of 10 million sats into this
experiment then checkpoint how things were going. Well, the 10 million sats have gone through Hashpower
(and <em>partially</em> come back to me), so I'll deliver the checkpoint as I promised myself.</p>
<p>Before going into it, I want to share my rationale for writing and sharing this. Most stuff I fiddle and
tinker with, I don't write about publicly. But this experiment is different. Although simply setting this
up and mining is plenty of fun and pretty much justifies doing it by its entertaining nature, the reality
is that my interest in controlling hashrate goes beyond sweet weekend hacking fun. Truth is that the
<a href="https://bip110.org/">BIP110 softfork</a> is on the table, and its success will depend on people
adopting it and hashrate being deployed to support it. My node has been running with the BIP110 patch for
quite a bit, but I didn't control more than 1TH/s until I started this experiment.</p>
<p>I think just learning how to set up this system and pointing a few petahashes to support the softfork is
enough of a contribution for my paygrade. It's been long since I thought I should save the world.
Nowadays I'm happy doing what a pleb must do, which is tending to his garden and doing his humble
part.</p>
<figure style="width: 75%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/peaceful-life-meme.jpeg"
alt="It's a peaceful life meme">
</figure>
<p>Nevertheless: I wrote my previous article because I found there seems to be quite a bit of interest among
the plebs around renting hashrate, and so far I had not found much written about it beyond shit slinging
between knotzis and coretards. I'm writing this second part for the same reason, plus another specific
gap I've noticed. I see many plebs ask questions about how much money will you spend doing this, or what
amount of hashrate can you secure if you are willing to dedicate X sats per month to mining. And the
answers that come back are typically long rants on the different convoluted factors that influence the
answer. Not that those answers are wrong, for it is really a convoluted topic and it's hard to talk
specifics a priori. Hence why I want to write this article where I provide specific numbers on my
experience: so that it serves others as a very relatable and simple to understand report on how much
someone actually spent mining in a certain way. Hopefully it makes for a better data point to those who
find themselves on the fences of trying out.</p>
<p>The ultimate goal of it all is to spread knowledge, in the hopes people will be enlightened and motivated
by this and will take part instead of letting Foundry mine everything. My part will end here, and then
it's your turn to act.</p>
<p>I hope you find it interesting and useful. And I hope that, if you support BIP110, you'll roll your
sleeves and replicate this, adding the hashrate you can afford to the cause.</p>
<p>Now let's jump into the mud.</p>
<h3>Quick review of the system + how it performed</h3>
<p>I'm running Knots with the BIP110 patch, DATUM and hashbidder in a server I physically host myself. All
three services are hosted in a single VM. The DATUM endpoint is publicly reachable via a VPS I rent
(with sats), which then gets redirected to the DATUM process running in my server.</p>
<p>The uptime of this has been perfect. Any bit of downtime has been related to blips in my residential
networking or host downtime due to maintenance that is not related to the mining bit. None of the
Bitcoin/mining services have had any operational hiccup (hashbidder did stop working here and there, but
that was simply because I was always using the bleeding edge version and some bugs made it to
production). Resource consumption for this stack is a non-issue: stable and predictable, so the VM this
has been running on has had 99.86% uptime during the last couple of months.</p>
<p>I encountered a few small issues with Hashpower, but they were all trivial and didn't affect my
experience. The service has had a few outages of the API and web, yet as far as I can tell the actual
delivery of hashrate has been working constantly. If that failed at any time, it was brief enough to get
camouflaged as your usual hash delivery spikeyness.</p>
<p>I did face some issues with <a href="https://hashpower.braiins.com/api/">Hashpower's API docs</a> being
incorrect: some endpoints behaved differently than what they advertised in the documentation. I got in
touch with their support in mid April and they told me they would address the issue. I checked while
writing the article and the issue is still unsolved.</p>
<p>Regarding rejected shares, I think the setup has worked out great. I just checked, and the datum dashboard
indicates I'm sitting at 0.06% (0.0006). I wouldn't be able to judge the quality of this rate myself, but
others more experienced in mining have assured me it's great, so I'll parrot back that it's great.</p>
<p>When it comes to bidding, I can assure you it has been quite optimal. I've taken whatever prices existed in Hashpower and never said "no, I won't mine now because XYZ price is too high". But I did a pretty decent job at staying as close as possible to the cheapest price being served. It is common to see bids that are 10%/20%/50% above market price in Hashpower. In my case, I'm pretty confident I must have stayed constantly between 0-5% of the cheapest bid. I can't show you the data to back it up, and won't go into the details, but hashbidder just does a good job of doing that. You can try for yourself and verify.</p>
<h3>Facts, figures, performance</h3>
<p>Okay, now let's show some serious data. Let's begin with how much I mined:</p>
<figure style="width: 97.5%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/chart1_accumulated_hashrate.png"
alt="Accumulated hashes computed">
<figcaption>Total accumulated hashes computed over the experiment</figcaption>
</figure>
<figure style="width: 97.5%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/chart2_daily_hashrate.png"
alt="Daily average hashrate against the 5 PH/s target">
<figcaption>Daily average hashrate against the 5 PH/s target</figcaption>
</figure>
<p>After some initial fiddling, I decided I would settle for a goal of mining at ~5PH/s. I estimated this
would allow me to spend my 10 million sats over 6-8 weeks. I wanted to mine at least that long to have a
decent statistical chance to getting close to non-extreme luck streaks with OCEAN (either good or
bad).</p>
<p>You can see in the chart the first days were more unstable due to this. It also took me a bit of time to
get hashbidder properly implemented and operational, hence why I didn't really start tracking the target
hashrate great until early May.</p>
<p>Is this enough to amount to anything significant? Well, if I had solo mined at this pace, there is less
than 2.5% probability that I would have found a block in less than a year. There is also around a 2.5%
probability that if I had mined with the same weight in the network all the way to 2140, I would still
have not found a block. Thank God for pooled mining and for OCEAN to make it fair, simple and
transparent.</p>
<p>How much did I pay for this? Well, the actual exact amount of money I've spent is not exactly 10,000,000
sats, but rather 9,929,972 sats. The difference is mixed between mining fees I spent sending my money to
Braiins and some leftover sats I have still sitting on Hashpower because they're not enough to place an
order.</p>
<figure style="width: 97.5%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/chart3_cumulative_spend.png"
alt="Cumulative sats spent on rented hashrate">
<figcaption>Cumulative sats spent on rented hashrate</figcaption>
</figure>
<p>This is a chart showing how my expense accumulated slowly by the day. Unfortunately, it only shows some
days because the Braiins API doesn't give you back the full history, hence why you see that interpolated
bit at the start. Pretty boring. Stable hashrate, stable expense.</p>
<p>Although it's not a perfectly straight line! Prices do change quite a bit overtime in hashpower. The chart
of average sats per PH/s/d shows how the average price fluctuates over different days:</p>
<figure style="width: 97.5%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/chart4_price_per_ph.png"
alt="Average price per PH/s per day">
<figcaption>Average price per PH/s per day</figcaption>
</figure>
<p>As you can see, prices change significantly measured in sats. Differences of +-20% in a few days do
happen.</p>
<p>On the income side: this chart shows the earned rewards day by day (not to be confused with payouts).</p>
<figure style="width: 97.5%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/chart5_daily_rewards.png"
alt="Daily mining rewards earned">
<figcaption>Daily mining rewards earned, with the cumulative average</figcaption>
</figure>
<p>Extremely volatile, as you would expect due to the nature of
<a href="https://ocean.xyz/docs/tides">TIDES</a>, the protocol that OCEAN follows. Having said that, the
volatility of this also relates to the size of OCEAN: as they grow their share of the total difficulty,
they hit blocks most frequently and wild spikes of luck become less frequent.</p>
<p>This is the chart that should make it clear that mining with OCEAN nowadays for a brief window of time is
russian roulette. There are entire days where NOTHING is paid. If you have any hopes of having a stable
experience, plan to mine for months at least. The cumulative average line in the chart shows you how, as
you stay longer and longer, you start stabilizing on the average.</p>
<p>Finally, this chart sums up the financial performance, showing expense and reward day by day along with
the cumulative net loss:</p>
<figure style="width: 97.5%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/chart6_daily_pnl.png"
alt="Estimated daily P&L: expense vs rewards">
<figcaption>Estimated daily P&amp;L: expense vs rewards, with accumulated net profit</figcaption>
</figure>
<p>So what does the final P&amp;L look like then?</p>
<table class="ledger">
<thead>
<tr>
<th class="title" colspan="2">Mining experiment P&amp;L</th>
</tr>
<tr>
<th class="subtitle" colspan="2">(in sats)</th>
</tr>
</thead>
<tbody>
<tr class="section">
<th colspan="2">Expenses:</th>
</tr>
<tr class="item">
<td>Transaction fees</td>
<td class="amount">817</td>
</tr>
<tr class="item">
<td>OCEAN fees</td>
<td class="amount">93,218</td>
</tr>
<tr class="item">
<td>Rented hashrate</td>
<td class="amount">9,929,972</td>
</tr>
<tr class="subtotal">
<td>Total expense</td>
<td class="amount">10,024,007</td>
</tr>
<tr class="section">
<th colspan="2">Income:</th>
</tr>
<tr class="item">
<td>Mining rewards</td>
<td class="amount">9,321,406</td>
</tr>
<tr class="total">
<th>Net</th>
<th class="amount">702,601</th>
</tr>
</tbody>
</table>
<h3>What comes next</h3>
<p>So, I poured 10 million sats into this and got roughly 9.3 million sats out, thus spending 700K sats.</p>
<p>Surely it's time to stop, right?</p>
<figure style="width: 75%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/padme-meme.jpg" alt="And then you will stop, right? meme">
</figure>
<p>Unhosted Marcellus made
<a href="https://xcancel.com/oomahq/status/2023476291136037182#m">this reasoning I find great</a> that if
your bags are in Bitcoin, it is in your best interest to keep hash raining on the blockchain tip. He
changes the way of looking at mining as a "business" for miners, and rather as a maintenance expense for
users (and fees and miners are just a way to organize so that each user doesn't need to run an S21 in
their kitchen and risk divorce).</p>
<p>I think it's a good POV. And I'm going to stick to it. I think putting 0.1% of my network, on a yearly
basis, towards adding hash is valuable for me. Now that I've run this couple months experiment, I have a
good feel for what is the "loss" factor of cycling sats through hashpower, so I can crunch the numbers
and find out what is the hashrate I should aim for to spend 0.1% of my bags on a yearly basis.</p>
<p>Some fellow Bitcoiners are aware of my plan and have pointed out to me that my actions are pointless. That
I'm too small to make a difference in the mining scene. It must suck to have such a terrible low-agency
mentality. Pleasure should be found in doing the right things, even if they amount to little.</p>
<figure style="width: 75%; margin: 10px auto;">
<img width="100%" height="auto" src="../static/achilles-meme.jpeg"
alt="That's why no one will remember your nym meme">
</figure>
<p>And you? Will you mine? Why not?</p>
<hr>
<p><a href="../index.html">back to home</a></p>
</section>
</main>
</body>
</html>