Ethereum: Get non-wallet transactions using bitcoin rpc (gettransaction)

Getting Non-Wallet Transactions from Ethereum Using “bitcoin-rpc”

When exploring the Bitcoin protocol with “Bitcoin-Qt”, you can leverage its API, specifically “bitcoin-rpc”, to retrieve non-wallet transactions. In this article, we will walk you through the process of retrieving all transactions for a given block and then extracting information from them.

Prerequisites

Before you proceed, make sure you have:

  • Bitcoin-Qt installed on your system.
  • A working connection to the Ethereum network (you can use bitcoin-rpc’s built-in client or external tools like geth).

Fetching All Blocks and Transactions

To get all blocks and their transactions, you can use a loop that continuously calls “getblockchaininfo” with the “raw” parameter set to “1”. This will retrieve a list of blocks in JSON format.

import bitcoinrpc

def get_blocks_and_transactions():

rpc = bitcoinrpc.RPC()

block_info = rpc.getblockchaininfo([1000])









get the first 1000 blocks

for block block_info['blocks']:

print(f"Block {block['hash']}:")

for tx in block['transactions']:

print (tx['hex'])

This code prints a list of transactions associated with each block.

Getting non-wallet transactions

If you want to get non-wallet (i.e. publicly available) transactions, you need to retrieve them using the “gettransaction” RPC call. This method is more complicated because it requires direct interaction with the Ethereum network.

Here is an example implementation in Python:

import bitcoinrpc

def get_non_wallet_transactions(block_hash):

rpc = bitcoinrpc.RPC()

tx_list = []

i in range(1, 100):

retrieve up to 99 transactions for demonstration purposes

try:

transaction = rpc.gettransaction(block_hash, i)['transaction']['hex']

if sender is not in transaction:

non-wallet transaction has no sender address

tx_list.append(transaction)

except exception like e:

print(f"Error retrieving transaction {i}: {e}")

return tx_list


Example usage

block_hash = "your_block_hash_here"

non_wallet_txs = get_non_wallet_transactions(block_hash)

for tx in non_wallet_txs:

print (tx)

This code will fetch up to 99 transactions for each block and print them.

Important Notes

When working with bitcoin-rpc, keep the following in mind:

  • The gettransaction method returns a list of transaction objects containing information such as “from”, “to”, and “value”, etc.
  • Non-wallet transactions typically do not have a “sender” address or other publicly available information. For this reason, this example will only fetch non-wallet transactions that are directly linked to the specified block hash.

Please note that these examples demonstrate basic usage of bitcoin-rpc and may require adjustments based on your specific requirements. Also, keep in mind that interacting with the Ethereum network can be resource-intensive; always ensure that you have sufficient connections, or consider more efficient methods such as caching or paging for large data sets.

上部へスクロール