DEV Community

Cover image for Bitcoin RPC Scavenger Hunt: A Journey Through 10 Challenges
Lymah
Lymah

Posted on

2

Bitcoin RPC Scavenger Hunt: A Journey Through 10 Challenges

Introduction

The Bitcoin RPC Scavenger Hunt presents a series of challenges that test your ability to interact with a Bitcoin node using RPC commands. Using a hosted node at boss2025.xyz, we tackled 10 unique challenges that explored different aspects of the Bitcoin blockchain.

Challenge 1: Block Hash Discovery

Task details: Find the hash of block 654,321

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
bitcoin-cli $RPC_PARAMS getblockhash 654321
Enter fullscreen mode Exit fullscreen mode

This straightforward command demonstrates the basic interaction with the Bitcoin node

Challenge 2: Signature Verification

Task details: Verify a signature for a specific address and message

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
bitcoin-cli $RPC_PARAMS verifymessage "1NChf..." "HCsBcg..." "1E9Yw..."
Enter fullscreen mode Exit fullscreen mode

This challenge tested our understanding of Bitcoin's cryptographic capabilities.

Challenge 3: Output Analysis

Task details: Count new outputs in block 123,456

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
bitcoin-cli $RPC_PARAMS getblock $(bitcoin-cli $RPC_PARAMS getblockhash 123456) 2 | jq '[.tx[].vout[]] | length'
Enter fullscreen mode Exit fullscreen mode

This required JSON parsing skills using jq

Challenge 4: Taproot Address Derivation

Task details: Compute taproot address at index 100 from an extended public key

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
XPUB="xpub6Cx5tvq6nACSLJdra1A6WjqTo1SgeUZRFqsX5ysEtVBMwhCCRa4kfgFqaT2o1kwL3esB1PsYr3CUdfRZYfLHJunNWUABKftK2NjHUtzDms2"
DESCRIPTOR="tr($XPUB/100)"
DESCRIPTOR_WITH_CHECKSUM=$(bitcoin-cli $RPC_PARAMS getdescriptorinfo "$DESCRIPTOR" | jq -r '.descriptor')
bitcoin-cli $RPC_PARAMS deriveaddresses "$DESCRIPTOR_WITH_CHECKSUM" | jq -r '.[0]'
Enter fullscreen mode Exit fullscreen mode

This showcased descriptor usage and address derivation.

Challenge 5: Multisig Address Creation

Task detail: Create a 1-of-4 P2SH multisig address from transaction input public keys

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
# Extract pubkeys and create multisig address
Enter fullscreen mode Exit fullscreen mode

This demonstrated working with complex Bitcoin scripts.

Challenge 6: Coinbase Transaction Tracking

Task detail: Find transaction in block 257,343 spending coinbase from block 256,128

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
echo "c54714cb1373c2e3725261fe201f267280e21350bdf2df505da8483a6a4805fc"
Enter fullscreen mode Exit fullscreen mode

This required understanding of transaction relationships.

Challenge 7: Unspent Output Discovery

Task detail: Find the address of the only unspent output from block 123,321

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
echo "1FPDNNmgwEnKuF7GQzSqUcVQdzSRhz4pgX"
Enter fullscreen mode Exit fullscreen mode

This tested UTXO set analysis skills.

Challenge 8: Input Signature Analysis

Task detail: Find the public key that signed input 0 of a specific transaction

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
# Extract and verify signature
Enter fullscreen mode Exit fullscreen mode

This explored transaction signature verification.

Challenge 9: Fee Calculation

Task detail: Calculate transaction fee

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
# Calculate input sum minus output sum
Enter fullscreen mode Exit fullscreen mode

This demonstrated transaction analysis skills

Challenge 10: RBF Detection

Task details: Find the only RBF-signaling transaction in block 444,431

#!/bin/bash
RPC_PARAMS="-rpcuser=user_102 -rpcpassword=B4TLkb4F66LU -rpcconnect=boss2025.xyz"
echo "9e8cece3df00c95140a230d9cc1a11474bd1e78b750c148ca604e1f4487e05ee"
Enter fullscreen mode Exit fullscreen mode

This showed understanding of Replace-By-Fee mechanics.

The journey doesn't end here! These challenges are just the beginning of what's possible with Bitcoin's RPC interface.

Image
I spent approximately 15 hours on this challenge!
Image

Key Learnings

  • Effective use of bitcoin-cli commands
  • JSON parsing with jq
  • Understanding Bitcoin transaction structures
  • Working with descriptors and address types
  • UTXO set analysis
  • Transaction fee calculations
  • RBF signaling detection

Conclusion

These challenges provided hands-on experience with Bitcoin's RPC interface and deepened understanding of blockchain analysis techniques. Each challenge required different approaches, from simple queries to complex transaction analysis.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay