<p>There's an option to fast-sync by downloading a snapshot of the datadir from a synced pruned node.</p>
<p>This involves a stronger trust assumption compared to the proposed <code>assumeutxo</code> (as well as of <code>assumevalid</code>) as you're giving away full control over your datadir. This may potentially open your node up to certain types of attacks - for example, a buffer overflow may be found that affects reading (expected to be previously verified) blocks from disk, but not when reading them from the P2P network. Or feeding your node with inconsistent database state that triggers some unexpected edge-case.</p>
<p>I'm aware of two distributors that publish pruned datadir snapshots:</p>
<ol>
<li><a href="https://prunednode.today/" rel="nofollow noreferrer">prunednode.today</a>, which is maintained by the Specter wallet developers and integrated into Specter</li>
<li><a href="https://docs.btcpayserver.org/Docker/fastsync/" rel="nofollow noreferrer">BTCPay's fastsync</a>, also integrated as an option into BTCPay. Instructions for downloading the snapshots are <a href="https://docs.btcpayserver.org/Docker/fastsync/#where-can-i-download-utxo-set-snapshots" rel="nofollow noreferrer">available here</a>.</li>
</ol>
<p>However, both of them are for mainnet. I'm not aware of testnet snapshot being available anywhere.</p>
<p>Using a snapshot could also be a good option if you already have a synced node and want to setup a new one on a new machine.</p>
<hr />
<p>In a project I'm working on, I integrated prunednode.today as a way to quickly setup a pruned node (+block explorer, electrum server and more). This one-liner gets everything up and running:</p>
<pre><code>docker run -it --rm --name ez -v ~/eznode:/data eznode/eznode TRUSTED_FASTSYNC=1
</code></pre>
<p>More information available at <a href="https://ezno.de/packages#fast-sync" rel="nofollow noreferrer">https://ezno.de/packages#fast-sync</a></p>

CC BY-SA 4.0
2022-12-25T01:07:05.290Z
is it impossible for Bitcoin core to add validation checks that are fast enough if you use a prune snapshot? wouldn't that be better solution then assumeutxo, since that requires additionally hard-coding of block hash in the source code with every release or so?
WhoIsNinja
CC BY-SA 4.0
2022-11-24T02:53:12.057Z
2022-11-24T02:53:12.057Z
shesek
<p>I created a copy of <code>prunednode.today</code>. I will host snapshots from all networks (mainnet, testnet and signet).</p>
<ul>
<li><a href="https://bitcoin-snapshots.jaonoctus.dev" rel="nofollow noreferrer">https://bitcoin-snapshots.jaonoctus.dev</a></li>
</ul>

CC BY-SA 4.0
2023-02-10T18:33:46.483Z
2024-05-27T10:14:48.067Z
2024-05-27T10:14:48.067Z
jaonoctus
<p>There is also the 2024-02-26 18:27:40 UTC snapshot (approx. 11 GB, pruned) available for download from Google Drive: <a href="https://drive.google.com/drive/folders/1xGNGngrcyOh4UZbXzpqx0fTZImioFLpc" rel="nofollow noreferrer">https://drive.google.com/drive/folders/1xGNGngrcyOh4UZbXzpqx0fTZImioFLpc</a> or <a href="https://spoo.me/51pVZm" rel="nofollow noreferrer">https://spoo.me/51pVZm</a></p>

CC BY-SA 4.0
2024-02-26T22:07:25.330Z
2024-02-26T22:07:25.330Z
Greg Tonoski
<p>Such a thing is not implemented in Bitcoin Core, though there is some work towards that (the &quot;assumeutxo&quot; project).</p>
<p>What assumevalid does is just assume that all <em>scripts/signatures</em> in blocks up to a certain point are valid. It doesn't let one skip processing those blocks in their entirety, it only means the signature checks can be skipped. But the goal of validation is to build up your local node's view of the UTXO set (basically the database of who owns which coins). In order to build up that database, you need to see all transactions, and that database is essential - without it, it's not possible to validate the blocks that come after it.</p>
<p>The assumeutxo project is an effort to add something like assumevalid, but for the outcome of building the UTXO set. In a potential future it may be possible to trust a particular hash of the UTXO set at some point in the past, fetch that precomputed UTXO set at that point from somewhere, and validate everything afterwards.</p>

CC BY-SA 4.0
2022-11-18T19:41:12.250Z
2022-11-18T19:41:12.250Z
Pieter Wuille
<p>I'm trying to run a light bitcoind node for testing purposes on mainnet, with minimum startup time.</p>
<pre><code>./bin/bitcoind \
-prune=550 \
-txindex=0 \
-assumevalid=00000000000000000004c176952213ad9a228ced92f883fb4a472f20b474ca7a \
-checkblocks=0 \
-checklevel=0 \
-disablewallet=1
</code></pre>
<p>blockheader synchronization is quite fast (&lt;5min) but I'm not being able to start the IBD from a certain block or block height, it always starts from <code>block=1</code>.</p>
<p>is there any way to skip the IBD verification until certain block height/block hash (thought that was what <code>assumevalid</code> does, but I could be wrong!).</p>

<synchronization><pruning><assume-valid><assume-utxo>
Skip IBD on pruned node?
Carlos
# Skip IBD on pruned node?

(Asked by: username_0 on 2022-11-18)

I'm trying to run a light bitcoind node for testing purposes on mainnet, with minimum startup time.

```
./bin/bitcoind \
-prune=550 \
-txindex=0 \
-assumevalid=00000000000000000004c176952213ad9a228ced92f883fb4a472f20b474ca7a \
-checkblocks=0 \
-checklevel=0 \
-disablewallet=1

```

blockheader synchronization is quite fast (<5min) but I'm not being able to start the IBD from a certain block or block height, it always starts from `block=1`.

is there any way to skip the IBD verification until certain block height/block hash (thought that was what `assumevalid` does, but I could be wrong!).

**Tags:** synchronization, pruning, assume-valid, assume-utxo


---

## 4 answers

### Answer by username_5 on 2022-11-18. Score: 10 | Accepted answer

Such a thing is not implemented in Bitcoin Core, though there is some work towards that (the "assumeutxo" project).

What assumevalid does is just assume that all *scripts/signatures* in blocks up to a certain point are valid. It doesn't let one skip processing those blocks in their entirety, it only means the signature checks can be skipped. But the goal of validation is to build up your local node's view of the UTXO set (basically the database of who owns which coins). In order to build up that database, you need to see all transactions, and that database is essential - without it, it's not possible to validate the blocks that come after it.

The assumeutxo project is an effort to add something like assumevalid, but for the outcome of building the UTXO set. In a potential future it may be possible to trust a particular hash of the UTXO set at some point in the past, fetch that precomputed UTXO set at that point from somewhere, and validate everything afterwards.


---

### Answer by username_1 on 2022-11-24. Score: 4

There's an option to fast-sync by downloading a snapshot of the datadir from a synced pruned node.

This involves a stronger trust assumption compared to the proposed `assumeutxo` (as well as of `assumevalid`) as you're giving away full control over your datadir. This may potentially open your node up to certain types of attacks - for example, a buffer overflow may be found that affects reading (expected to be previously verified) blocks from disk, but not when reading them from the P2P network. Or feeding your node with inconsistent database state that triggers some unexpected edge-case.

I'm aware of two distributors that publish pruned datadir snapshots:

1. [prunednode.today](https://prunednode.today/), which is maintained by the Specter wallet developers and integrated into Specter
2. [BTCPay's fastsync](https://docs.btcpayserver.org/Docker/fastsync/), also integrated as an option into BTCPay. Instructions for downloading the snapshots are [available here](https://docs.btcpayserver.org/Docker/fastsync/#where-can-i-download-utxo-set-snapshots).

However, both of them are for mainnet. I'm not aware of testnet snapshot being available anywhere.

Using a snapshot could also be a good option if you already have a synced node and want to setup a new one on a new machine.

---

In a project I'm working on, I integrated prunednode.today as a way to quickly setup a pruned node (+block explorer, electrum server and more). This one-liner gets everything up and running:

```
docker run -it --rm --name ez -v ~/eznode:/data eznode/eznode TRUSTED_FASTSYNC=1

```

More information available at <https://ezno.de/packages#fast-sync>

> **Comments:**
> **username_2**: is it impossible for Bitcoin core to add validation checks that are fast enough if you use a prune snapshot? wouldn't that be better solution then assumeutxo, since that requires additionally hard-coding of block hash in the source code with every release or so?  

---

### Answer by username_3 on 2023-02-10. Score: 2

I created a copy of `prunednode.today`. I will host snapshots from all networks (mainnet, testnet and signet).

* <https://bitcoin-snapshots.username_3.dev>


---

### Answer by username_4 on 2024-02-26. Score: 0

There is also the 2024-02-26 18:27:40 UTC snapshot (approx. 11 GB, pruned) available for download from Google Drive: <https://drive.google.com/drive/folders/1xGNGngrcyOh4UZbXzpqx0fTZImioFLpc> or <https://spoo.me/51pVZm>


---

