Hacker News new | ask | show | jobs
by brbsix 1888 days ago
Yes, absolutely. I'm not sure why I have been downvoted for this, as I haven't exactly said anything revelatory.

However I just want to give an obligatory caution that this is a very contrived answer. In the real world it can be difficult, there are typically many inputs and outputs to a transaction (and we are rarely able to associate names with addresses). There exists an entire field devoted to this called blockchain analysis or chainanalysis.

You can see for yourself. Choose any address on the BTC blockchain. See the transactions it has been involved in. You can inspect inputs and outputs. Here is an example: https://www.blockchain.com/btc/address/1CUTyyxgbKvtCdoYmceQJ...

1 comments

Your link contradicts what you're arguing for. Note that the block explorer only shows "total sent", "total received", and "final balance", not which specific coins.

If your wallet has 10 BTC in it and you send someone 1 BTC, there is no way to know which one of the 10 Bitcoins was sent. It is literally not part of the implementation of Bitcoin.

I have Electrum open, with the "Coins" tab visible. I see a lengthy list of unspent transaction outputs (UTXOs) which I am referring to as coins. These are coins that I have received. I can very easily craft a transaction with specific coins. I can select the coins that my friend Bob sent me last year and send those specific coins to my friend Dylan. https://bitcoinelectrum.com/how-to-spend-specific-utxos-in-e...

Admittedly that link was a terrible example. Block Explorer only shows the address associated with the transaction input but if you want to see the origin of specific coins regardless of whether an address is being reused, you can get the information from the "list of inputs" field in the raw transaction.

In this overly contrived example with single input transactions, if Dylan wants to recurse up tx inputs to the tx between Bob and me in order to verify that he received some of the same coins, he can do the following:

    uptx(){
        curl -sS "https://api.blockcypher.com/v1/btc/main/txs/$1" | jq -r .inputs[0].prev_hash
    }

    uptx "$(uptx f57cd4acc4b67d819f78d6cd7f17d1dded436735a6c7765afe40269581d2098a)"
    > 32c8f56bbee2b79f71b285697f3b41990091ddc37b667aeb4cb83c1d7be2a847