2

This question details sending a message with Ethereum :How do I send an arbitary message to an Ethereum address?. Say we have two parties P1 & P2 , if P1 sends a message to P2 how can P2 verify the message sent by P1 is what has been stored on the network/blockchain ?

Is this implicitly guaranteed by Ethereum ?

blue-sky
  • 261
  • 1
  • 10

1 Answers1

1

It's basically implicit.

P1 can provide a transaction hash, block number, or even just the address they sent it from. P2, or anyone else, can then look for that transaction in the canonical blockchain--if it's not there, it didn't happen in the blockchain by definition.

"Canonical blockchain" usually refers to the longest (that is, the one with the most work proved) chain available. There's significant amount of philosophy of what exactly this means (especially when you add hardforks, soft forks, microforks...). For almost all purposes, waiting a sufficient number of blocks and then looking in the chain is definitive.

Matthew Schmidt
  • 7,290
  • 1
  • 24
  • 35
  • so verifying a message is same philosophy as verifying a payment in bitcoin, wait for multiple nodes to verify the message/payment , as more more nodes provide verification , probability the message/payment is valid exponentially increases ? – blue-sky Dec 07 '16 at 19:37
  • I wouldn't say it's exponetial, but it is the same as in bitcoin. – Matthew Schmidt Dec 07 '16 at 23:49
  • I may be missing something here but what prevents the sender sending a transaction hash with a different message, what binds the message to the transaction hash ? – blue-sky Dec 08 '16 at 12:16
  • The transaction hash comes from hashing the entire transaction. Changing a single byte will result in a different hash. – Matthew Schmidt Dec 08 '16 at 16:53
  • i may not be phrasing this correctly. p1 sends a message to p2 and includes the transaction hash. So the message hash and transaction hash are sent ? – blue-sky Dec 08 '16 at 17:20
  • 1
    I'm not sure what you mean by message. The link in the question talks about putting a message in a transaction's data field. In that case, that message would be part of the transaction's hash. – Matthew Schmidt Dec 08 '16 at 22:29
  • The payload is definitely part of the transaction hash, then. If a single bit is changed, it'll be a different transaction. – Matthew Schmidt Dec 08 '16 at 22:46
  • ok, the data aka message is included in the transaction payload as further detailed here : http://ethereum.stackexchange.com/questions/1990/what-is-the-ethereum-transaction-data-structure/2097 but if the data is stored off-chain on a datastore such as ipfs, aws or dropbox then cannot verify the data, this question in this comment may not make sense as if the message is stored off chain then it's not being stored on the blockchain... – blue-sky Dec 08 '16 at 22:46
  • That's correct. You can use the blockchain to notarize that a given hash existed at a given time, but little more. – Matthew Schmidt Dec 08 '16 at 22:49