Can you detect that the addresses generated by an HD wallet came from a single wallet?

Can someone who is looking at the blockchain detect that 2 or more addresses generated by a single HD wallet are actually generated by that single seed/HD wallet ?

Can someone who does know that 2 or more addresses came from a single HD wallet derive the seed or any keys ?

I’m using Bitpay’s Copay app on Windows 10 mobile. It’s an HD wallet and it holds several addresses with a bitcoin balance. As I understand it a HD wallet generates new addresses from an initial seed which I have backed up.

Out of curiosity I transferred some bits to a new receiving address generated by the same wallet, and I noticed the wallet UI says I “moved” the bits, not “sent” or “received” them. I assume this is just the wallet being smart and letting me know the bits came from this same wallet, but this brings me to the question of, have I just linked these three (including change) addresses together for anyone on the blockchain to see ?

Recent Questions – Bitcoin Stack Exchange

How can I detect if a customer has made a payment using only one receiving address?

How can I detect if a customer has made a payment using only one receiving address?

Can I embed a unique special message in the QR code (like a nonce) which I’ll match against my database? Does it make any sense or is it too problematic (bitcoin client not embedding the message, unable to read the transaction message from the blockchain, etc..etc..)

Recent Questions – Bitcoin Stack Exchange

How to detect a fork with bitcoin-cli?

I’m keeping a simple log of blocks, and storing them in an array. When a new block arrives, I add it to the array.

Let’s say this is my block chain array:

E    <- tip D C B A 

Now, say a new block arrives, extending a branch:

     Z    <- new tip E    Y D    X    <- new branch start      C      B      A 

Now the blocks C and D have been replaced in the main chain by X and Y.

Questions:

  1. Is there a way to detect that the latest block has extended a branch?
    • In other words, how can I detect whether blocks lower down in the array need to be replaced?
  2. How frequently does this happen?

EDIT: Initial solution is to check if the previousblockhash of the new block is equal to the hash of the tip in the array. If not, update the old tip, and keep working down through the array updating each block until their is a match for the previousblockhash.

Recent Questions – Bitcoin Stack Exchange

Which data should be used in order to detect addresses to be used for fraud?

I’d like to analyse bitcoin blockchain in order to detect addresses used for fraud, like money laundering. Since I cannot get any addresses info that was really used for fraud, I need to analyse which kind of address have tendency to be used for fraud.

Now, I’m just wondering which parameters I should use. I’ve tried to use period of transactions and average of transactions’ amount, but it seemed not to make sense. If you have any idea, could you teach that?

Recent Questions – Bitcoin Stack Exchange