A contract on the Ethereum network can interact with other contracts within it without requiring any proof, because the system itself defines methods for cross-contract communication (SEND, CALL). Interacting with an Ethereum contract from a different network, though, requires you to carry proofs of the state of the Ethereum network. Those proofs are expensive and hard to implement, mostly due to Ethash.

Is there any alternative, simple way to convince another network about the state of a contract on the Ethereum network?

  • 1
    In theory, you can construct a merkle proof that would be quite easy to verify; this is how light clients work. Unfortunately, I don't know of any simple libraries for generating these proofs. – Tjaden Hess Mar 24 '17 at 16:50
  • But the merkle proof still require the other chain / light client to validate the whole sequence of block headers, which require ETHASH. That's what I'm trying to avoid. – MaiaVictor Mar 24 '17 at 16:51
  • 1
    Ah, yes, I didn't read your question fully. No, there's no good way of proving things about the state if you don't have a reliable source of block hashes – Tjaden Hess Mar 24 '17 at 16:53
  • I see - yet, I'm just wondering, couldn't zkSnarks or some similar "verifiable computation" algorithm be used to validate that "there is a sequence of blocks with accumulated work >= K, such that the final state is S"? If so, then the blockchain could just ask those compact proofs, instead of needing the whole thing. – MaiaVictor Mar 24 '17 at 16:56
  • 1
    It would be pretty hard to encode Ethash as a quadratic span program, so I don't know how practical zk-snarks would be. A better solution might be off-chain interactive proof verification a la Truebit – Tjaden Hess Mar 24 '17 at 16:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.