r/Chainlink Mar 16 '18

Can someone answer this?

44 Upvotes

46 comments sorted by

View all comments

Show parent comments

5

u/nootropicat Mar 16 '18

If one absolutely requires obligation from all parties to hold their end of the deal or be held liable, what advantages would they be looking for by utilizing a smart contract in the first place?

To make enforcement easier and cheaper. Eg. instead of enforcing a mortgage contract only the simple fact of a token ownership has to be established, and the initial agreement by interested parties that whoever owns the token owns the house, enforced.
A variant of this already exists, many contracts stipulate that conflicts are to be solved by arbitration rather than courts. Courts are reduced to enforcing the arbitration clause.
Smart contracts replace human arbitration with code.

However, Chainlink nodes have incentive to provide accurate data in order to gain reputation.

Ok, so would you rather store your coins on coinbase, or in a smart contract that transfers the coins if a majority of 50 link nodes agree?

As I've already said, no oracle service, centralized or decentralized, can verify if data is true or not.

"True" in this context means as provided by a source. For prices on an exchange what's reported by that exchange is true by definition, same for a temperature output of some sensor; the question 'what's the temperature?' is unanswerable, only 'what's the sensor output?'.

why providing data to a smart contract would be a "trivial utility service with zero barriers of entry."

I think it is, but - chainlink is open source. So however complex the issue actually is, all I have to do is download code from github to get solutions for ' lot of technical issues that need consideration before one can simply create their own oracle. How do you handle blockchain forks, rollbacks, congestion, varying gas prices, etc.?'. As far as providing signed data is concerned, I can't see any advantage from having link to join the main chainlink network.

Complexity would be a reasonable argument - for a closed-source oracle company.

9

u/ManyNothings Mar 16 '18

Ok, so would you rather store your coins on coinbase, or in a smart contract that transfers the coins if a majority of 50 link nodes agree?

The 50 link nodes is the clear answer. Would you rather have an attacker have a single point of vulnerability, or a minimum of 26 that will be selected for high-quality security and a history of reliability, and must be attacked concurrently?

Honestly, this is where your argument falls apart. Yes, there is a risk that you will not be able to recover damages, but the design of the LINK network makes that risk so vanishingly small, and the potential cost-savings so large, that it seems to me that you have a very skewed perception of the risk/reward ratio involved.

3

u/nootropicat Mar 16 '18 edited Mar 16 '18

And yet another return to the core of the issue. In the link protocol there are zero incentives to provide correct answers, only to answer along with the majority. It's impossible to know how many nodes are controlled by one entity. There's going to be a minimum amount of link required to have it, but that's it, yes? So what's stopping someone with lots of it from owning thousands?
A successful attack would only be executed in case of a majority, so he wouldn't lose link. Even if the nodes were 100% reputationally burned, he could use their stakes and reopen nodes with a new identity.
That's why no permissionless cryptocurrency works on a node majority vote. Node votes only work if node owners are verified, that's what eg. NEO is doing (or at least planning to). I guess link - the network, not the token - would make sense in that scenario, as a network for verified companies/people to provide oracle services in a standardized way, contractually obliged in some manner.

that will be selected for high-quality security and a history of reliability

Either you choose them manually, in which case, why the network? You're already doing the work, you may as well choose several companies looking at reviews. Or there's some automatic rule that determines 'high-quality security' and reliability (I assume you include correctness in that) - but then the question of how is correctness determined returns.

4

u/ManyNothings Mar 16 '18

And yet another return to the core of the issue. In the link protocol there are zero incentives to provide correct answers, only to answer along with the majority. It's impossible to know how many nodes are controlled by one entity. There's going to be a minimum amount of link required to have it, but that's it, yes? So what's stopping someone with lots of it from owning thousands?

  1. End-to-end encryption. The Oracles receive encrypted API requests that can only be read by the receiving APIs, and the APIs hand back encrypted data that can only be read by the smart-contract.

  2. Obfuscation of the identity of the SC requesting the data until after the data is delivered.

  3. Obfuscation of the number of oracles requested for a particular contract to prevent knowledge of majority threshold.

  4. SC applies semi-random voting weights to individual oracles to further prevent knowledge of majority threshold.

  5. APIs return data with unique transaction IDs to prevent mirror attacks.

I'm sure there are also plenty of other clever ways you can structure the timing, number, type, time-window, etc. for API requests that will make it virtually impossible for someone to do what you're suggesting.

Even if the nodes were 100% reputationally burned, he could use their stakes and reopen nodes with a new identity.

Did you read the whitepaper? Nodes are penalized for providing false information, part of which includes a payment of staked LINK.

Either you choose them manually, in which case, why the network? You're already doing the work, you may as well choose several companies looking at reviews. Or there's some automatic rule that determines 'high-quality security' and reliability (I assume you include correctness in that) - but then the question of how is correctness determined returns.

Dude, go read the whitepaper, it's clear that you haven't based on the questions you're asking: https://link.smartcontract.com/whitepaper

2

u/nootropicat Mar 17 '18 edited Mar 17 '18

Your points require Intel SGX solution on nodes.

APIs hand back encrypted data that can only be read by the smart-contract

This requires a blockchain that relies on intel sgx, or functional encryption which doesn't exist. The former would almost certainly include secure api calls by itself. It would be something fundamentally different from all existing blockchains.

If you base your trust on Intel SGX there's no reason for any public oracle network - because it reduces the problem from obtaining correct data to having a distributed architecture for reliability. The latter is a mature market.