DEV Community

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

Posted on

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.

Top comments (0)