<p dir="ltr">Den 1 okt 2015 05:38 skrev "ianG" <<a href="mailto:iang@iang.org">iang@iang.org</a>>:<br>
><br>
> Thought experiment.<br>
><br>
> The blockchain [0] provides a way to do verifiable computing [1].<br>
><br>
> Popularly under the tag of "smart contracts" these little scripts can be executed on every node, and the ability of the nodes to come together and find consensus on the state or results provides a way to not only compute, but also know that we have verifiably computed.</p>
<p dir="ltr">[...]</p>
<p dir="ltr">> If we have verifiable computing finally in the blockchain - a thesis - does this mean we now have a trustworthy computing platform?</p>
<p dir="ltr">[...]</p>
<p dir="ltr">> In practical terms, if I run a personal blockchain on my laptop, home computer, TV, android tablet, iPhone, and xWatch, have I created a trustworthy computing platform?  In the process, has the hardware-I-Don't-Trust conundrum been solved?<br>
><br>
> Or, for a more hypothetical example, if I have an EPA-tester running on the blockchain calculating in turn over the various cars that are providing the nodes, does this solve the VW problem?</p>
<p dir="ltr">Yes and no. </p>
<p dir="ltr">It does nothing useful in the VW case. Their problem was insufficient data from testing, no amount of trustworthiness in the processing can fix that. You need trustworthy measurements in the right places. </p>
<p dir="ltr">The blockchain can provide some assurances that some chain of computations were done correctly. But with what limits? </p>
<p dir="ltr">First of all, Bitcoin is essentially a shared fully public state machine with version control - you're free to rewind it at will locally and try again. It is *your* brain in a jar. The primary purpose of the construction is to approximate a global concensus well enough to be practically useful (majority proof-of-work chain wins). It isn't made for keeping secrets or as an impenetrable C&C platform (for malware OR for your home), or for providing guarantees about the trustworthiness of input data. </p>
<p dir="ltr">It was made to let the public collectively track the ownership history of digital tokens, through using game theory to ensure there's a strong incentive for a majority to cooperate. Essentially it is a big Access Control List for digital money, and works because your digital signature proves you are you, because it has a practical distribution method (mining rewards) and because users are assumed to ensure they're connected to the majority network, and therefore likely won't be fooled by acting on false assignments of tokens. </p>
<p dir="ltr">Maybe you've seen the Enigma blockchain is using homomorphic encryption and threshold key sharing to enable keeping secrets? But that's really just a clever way of letting strangers perform Multiparty Computation for you, with what that entails - if any majority of them is hacked or infiltrated or collude, all secrets can be recovered. But maybe you happen to trust it won't be compromised while you still need the inputs to remain secret? </p>
<p dir="ltr">There are Zero-knowledge proofs and homomorphic encryption with proofs of correctness (see Zerocoin, Monero and others). Their limitation is that they only proves the rules were followed ONCE, not that nobody ever performed other computations as well on the inputs. It doesn't reveal bruteforce attempts. If all you need to show is that the output was computed correctly, that's fine. But if you're protecting a game with the protocol, you can't stop the other player from evaluating the results of other moves. </p>
<p dir="ltr">If you have a set of networked devices that trust each other internally, you have a number of options. </p>
<p dir="ltr">You can move from proof-of-work to a notary network with you as a gatekeeper (the Ripple model). </p>
<p dir="ltr">Then, first of all, your devices can log all their actions and decisions, sign it together with the last block hash, and checkpoint it in a shared blockchain (git?). All devices would only trust a chain signed by the other trusted devices. This can be used to send commands, send alerts and to provide a degree of verifiability of past actions. It can also be used for other kinds of coordination.</p>
<p dir="ltr">If you make the blockchain be THE real world that matters for your own devices, forced to iterate forwards without forks because all your devices enforce that collectively, then you can extend the range of verifiable actions. Just like how the Bitcoin blockchain (with majority proof-of-work) is THE definition of who has control of what Bitcoins, your blockchain would be the system that control all of your network's access controls and capabilities. Make every action that matters be verified collectively. But the caveats above still apply - hacked devices can test multiple choices internally to see what outcome is more desirable. </p>
<p dir="ltr">(More comments will come later. Gonna look up some other sources on what kind guarantees these constructions could provide.) </p>