How is the auditing being done? Do nodes have an incentive to do a thorough check for errors?

I understand that every node audits the computational work done by the miners separately. If we want the computation speed to scale well, we cannot have each node doing every calculation himself. Instead, without any incentive, a node will just pass along a block without verifying the computation. However, if he has some incentive to find an error in the computation, then he can use a probabilistic method of finding errors quickly. Competition for finding errors will lead to almost certainty of no errors in the computations.

Is this being done already?

Comments

  • JasperJasper Eindhoven, the NetherlandsMember Posts: 514 ✭✭✭
    Note that full nodes dont really audit and tell people about it. They just reject the block as invalid if it is. 'Truth or invalid'. There is incentive to check, because if the block is not valid and others check, you live in a fork, and nothing you think you know is necessarily true.

    It will scale up reasonably far, as bitcoin shows. Instead it will just make those computations/storage relatively expensive. Scalability is number one of the hard problems. There is a presentation video on it too.

    Interestingly you can try tackle some problems with ethereum contracts. For instance a contract that accepts Merkle roots with blocks to them under some conditions. However have only really found 'Truth or Punish' solutions where people put stake a block having a Merkle root, and the Merkle paths could be used if someones else has the data and see an invalid part of it. However, the problem is that i dont have very decent ways to ensure the data is spread around. Just requiring random parties to show they have random parts, and perhaps a vote for 'i dont have this data'.

    Proof of invalidity, or the conclusion that people dont have the data would trigger a punishment in the form of some asset of the person who gave the block being taken. Simplest being a deposit ethers you put in. Of course, if it succeeds, it pays in some way.

    Of course the above is sort of a stopgap solution, contracts have to ask the help of clients to even get at data behind that Merkle root, and the Merkle paths do come at a cost themselves.. It would be nicer to simply have the thing practically fully scalable.
  • chris613chris613 Member Posts: 93 ✭✭
    No, but you're not the first person to point out that every node executing every contract is crazy. No solution has yet been formally proposed.
  • LukeDLukeD Member Posts: 23
    edited May 2014
    @Jasper I think I get it. Tell me if this is correct: The results of a block's code are not propagated through the nodes, only the block itself.

    If that is correct, then we can potentially speed things up by passing the results of the blocks along with the blocks themselves. However, then nodes need an incentive to immediately find and report errors. Unfortunately, I do not understand the blockchain well enough to know if such an incentive is possible.
  • JasperJasper Eindhoven, the NetherlandsMember Posts: 514 ✭✭✭
    First paragraph is correct.

    You cant incentivize reporting, firstly, because for the 'real blockchain' nothing happened. It has to register on the blockchain to be a thing there. Secondly, it is too easy to just come up with invalid blocks and then call those blocks invalid yourself, and rake in the reward.
  • LukeDLukeD Member Posts: 23
    edited May 2014
    Thank you. That answers my questions.
Sign In or Register to comment.