Skip to content

Instantly share code, notes, and snippets.

View fjahr's full-sized avatar
🏠
Working from home

Fabian Jahr fjahr

🏠
Working from home
View GitHub Profile
@fjahr
fjahr / peer_ips.md
Last active January 28, 2023 13:40
Just a note for myself

Examples for getting a list of active peer IPs in the bitcoin network

From your own node

Get the list of IPs known to your node and save them to the file peers_ips.txt. Then count how many IPs are in the file.

$ src/bitcoin-cli getnodeaddresses 0 | jq -r '.[] | .address' > peer_ips.txt
$ wc -l peer_ips.txt
@fjahr
fjahr / asmap_release.md
Last active October 20, 2024 13:08
Thoughts on ASMap for Bitcoin Core releases

ASMap in Bitcoin Core releases/ASMap data sources

Background

To get a general overview/refresher of the ASMap project please (re)read the post from Gleb on the Bitmex blog [1]. What is described there is still the status of ASMap file data sources to my knowledge.

Some further questions of mine about the process were discussed in November 2021 in an IRC meeting [2]. It was discussed that fresh ASMap files will be generated for and shipped with every release. The historic files that are part of the releases should be available in a separate repository under the bitcoin core GitHub organization. It was also discussed where the tools used during the release process should be maintained.

Since then, my focus has been on what would be the best possible data sources and quality assurance process for the input data of the ASMap file, i.e., a prefix to AS mapping that most accurately reflect the reality of the internet and that stays up to date for as long as possible.

@fjahr
fjahr / bitcoin_v25_asmap.md
Last active February 7, 2023 13:44
Theoretical v25.0 deployment with ASMap
@fjahr
fjahr / assume_utxo_blocks.md
Last active May 17, 2023 14:29
Blocks for #24008

For discussion of https://github.com/bitcoin/bitcoin/pull/24008/commits/c14ae132c5a5204a9a755c84c6de05fb30459221

Conditions in GetChainstateForNewBlock

  • IF1: if(!m_snapshot_chainstate) => use ibd
  • IF2: if(m_blockman.LookupBlockIndex(blockhash) == nullptr) => use snapshot
    • This means we use the snapshot chainstate if we have not seen this block’s header yet, implied from it not being in m_block_index
  • IF3: if (!m_snapshot_chainstate->m_chain.Contains(pblock))) => use snapshot
    • This means we use the snapshot chainstate if the block header is not part of the current best chain (included in m_chain) which can mean we have not validated the full block yet or the block is not part of the best chain after validation
  • FB: fallback => use ibd