295 lines
18 KiB
HTML
295 lines
18 KiB
HTML
<!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&L: expense vs rewards, with accumulated net profit</figcaption>
|
||
</figure>
|
||
<p>So what does the final P&L look like then?</p>
|
||
<table class="ledger">
|
||
<thead>
|
||
<tr>
|
||
<th class="title" colspan="2">Mining experiment P&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>
|