Hacker News new | past | comments | ask | show | jobs | submit login

With all this fuss over ethereum security flaws, can someone explain to me the practical use case for these smart contracts? I just don't understand where the benefit comes in. It seems like any type of contract that would be useful requires a human to qualify the meaning of the terms since these contracts cannot autonomously measure the state of the world.

Even something as trivial as betting on sports requires deference to a trusted authority to say "this team won". What advantages does an ethereum smart contract provide over, say, some kind of trusted bitcoin escrow site?




I think the basic idea is that with Bitcoin, you sort of have to hack at it to achieve any unintended functionality. These things can and do exist in the Bitcoin world, but when you get down to it, Bitcoin is meant to be a currency; anything built on top of that is just a hack that happens to work. Ethereum and its smart contracts, on the other hand, are structured to handle these sorts of extensions by design. There's nothing that Ethereum can do that Bitcoin absolutely can't be used for in some hacky way AFAIK, but it's generally much easier to do complex things with Ethereum that aren't strictly transactions of currency.


This makes sense, but I guess I just don't see much practical utility beyond what is already achievable and less prone to security flaws with bitcoin. There just doesn't seem to be much useful code that can come out of "money as variables in a program" since just about everything related to how humans intend to distribute money hinges on the facts of the real world for which the program must rely on humans to input.


Contracts I'm working on include variants of anti-theft vaulting, blind auctions, crowdfunding, person-to-person gambling, currencies, exchanges, and a simple implementation of Bitcoin's Lightning. None of them require external data.

For those contracts that do, at least you're reducing the third-party trust to "provide accurate data" instead of "hold my funds without stealing them." To reduce trust in a single entity you can use various schemes that allow multiple independent parties to provide the data.


> anti-theft vaulting

Can you go into more details about this?

> blind auctions

Or this? How does the contract ensure that the winner of the auction receives what they have purchased?

> crowdfunding

In what respects beyond simply collecting funds? How does the contract judge that the terms of the funding are adhered to or ensure that the crowdfunders receive whatever it is they are entitled to as funders?

> person-to-person gambling

Any examples? In my post I gave the example of betting on a sports game but this requires a trusted 3rd party to officiate the outcome of the game.

> currencies, exchanges

These are vague descriptions and these things have already been done by bitcoin.

I'm not trying to nitpick, but I'm looking for specific practical examples that demonstrates the potential utility of ethereum.


So this gets into the difference between the rhetoric about smart contracts, and what they actually do. Obviously a smart contract can't ensure that an auction winner or crowdfunder gets the item. At best there could be some kind of reputation system. But to enforce something in the real world, you'd have to get an actual court involved. The smart contract removes the need to have an auctioneer running the auction and handling funds, that's all.

But that still means that, for example, when I'm trying to implement a new variant on crowdfunding, I can write the whole backend in several pages of code and just publish it, instead of renting servers, administering databases, signing up with a payment provider and having to comply with its terms of service.

An example of a vault is this scheme: http://hackingdistributed.com/2016/02/26/how-to-implement-se...

...which some researchers proposed for Bitcoin, saying it'd be "easy" to implement with a hard fork adding a new opcode. I implemented the same scheme in a smart contract and it took 20 minutes.

Sports betting needs third-party data, but casino games don't.


Thanks for the reply. I think I understand what you're getting at.


Stuff like blind auctions and gambling is somewhat constrained by the fact that Etherium applications have to be deterministic and their state information and transaction history has to be publicly visible.


Some simple use cases:

- a multisignature wallet, that requires more than one person to sign off on a transaction before it can happen.

- payment schedules or any kind of transaction that does not function exactly like a one time, full size payment (payments, debt, etc).

- more ambitious ideas, like the Slock.it ones, involve smart locks that hold funds while granting use to a resource, and only return them after access has been revoked

In all of the above the inputs are contained in the blockchain and therefore have no need for trusted oracles.


> a multisignature wallet, that requires more than one person to sign off on a transaction before it can happen.

This is possible with bitcoin isn't it? What does the added complexity of ethereum bring to the table?

> payment schedules or any kind of transaction that does not function exactly like a one time, full size payment

This also seems possible with bitcoin, but it's also a problem that has already been solved better by the traditional payment system (e.g. netflix debits my credit card every month, why would I use a cryptocurrency solution instead?)

> more ambitious ideas, like the Slock.it ones, involve smart locks that hold funds while granting use to a resource, and only return them after access has been revoked

Can you go into specifics here? I'm not really understanding. It sounds like you're describing a kind of autonomous collateral system, but I can't really think of any practical examples where this would be useful (without bringing human judgement into the mix).


> netflix debits my credit card every month, why would I use a cryptocurrency solution instead?

Presumably you trust Netflix enough to give them your credit card details, and you trust your credit card company enough to pay them when they present you with a list of transactions they claim you made.

That's fine for such big, entrenched players; presumably you wouldn't put as much trust in some unknown, anonymous online entity. (Although presumably trust in Ethereum isn't exactly high right now)


I suppose it depends on the product, the merchant, and the cost of the subscription. Certainly, it'd be foolish to give out a credit card to a merchant I do not entirely trust, however, it seems more risky to move cryptocurrency into a contract with a merchant I do not entirely trust (and a contract I probably don't fully understand, even if I take the time to read the code) since a credit card can protect me from fraudulent and erroneous charges that are forfeited if I opt for cryptocurrency.


This might sound funny in light of recent events, but the idea is that a smart contract requires no trust in a 3rd party as the rules are specified within the contract and the Ethereum platform guarantees proper execution of the contract.


I understand how it works, I just don't see how it is useful in this instance. How is a smart contract helpful in the case of an online subscription service like netflix? A credit card is less work because I don't have to "refill" the contract every month and it's safer because of the added protection from fraud and erroneous charges that a credit card company guarantees.


For example, a smart contract might withhold $100 from an account, and grant whoever owns the private key to that account access to open a lock. When the user is done using the resource (say, a shared car or apartment or locker), he can request his money back (minus a fee for using the resource) which would render him unable to use the resource anymore (i.e. open the lock).

Basically the equivalent of a credit card collateral on a rental, minus the credit card company.


> Basically the equivalent of a credit card collateral on a rental, minus the credit card company.

I just don't see how a smart contract is helpful here since you're still relying on the owner of the resource to relinquish your funds when they are satisfied that you have returned their property in the condition they rented it to you. Whether you use cash, credit card, bitcoins or eth the power dynamics remain the same because it's ultimately up to the owner to say "ok, everything looks good, you can have your deposit back now".


Yeah, basically any time a smart contract involves anything that isn't a digital commodity (currency or otherwise) on the same platform, you run into that kind of problem, AFAICT.


So it seems to me as well, and even when you're dealing with most kinds of digital commodities, I don't see how a smart contract is helpful. Say I bought some software from valve or microsoft or whoever; I pay (with fiat or crypto) download, install and run, if it does not function or is totally different from what is advertised, I can ask for a refund and either the merchant will honor my request or they won't, but a smart contract cannot codify this type of arrangement.

I don't want to sound like a hater, and I think as a developer it seems pretty cool that you can start receiving funds on the web without relying on a 3rd party gatekeeper, but it seems like smart contracts have pretty limited uses (not that they are useless, just very specialized)


A locker wouldn't have that problem, as there is nothing to break. Public bikes in many big cities don't have that problem either (i.e. there's no assessment of the returned bike). A smart car doesn't have to have it either (sensors in the car could detect crashes, for example, and interiors could be built to be tough, like many public cars already - see Paris' AutoLib).


> A locker wouldn't have that problem, as there is nothing to break.

There is also no need for collateral or a smart contract in this scenario.

> Public bikes in many big cities don't have that problem either (i.e. there's no assessment of the returned bike).

How does a smart contract improve over the current system?

> A smart car doesn't have to have it either (sensors in the car could detect crashes, for example, and interiors could be built to be tough, like many public cars already - see Paris' AutoLib)

How does a smart contract help?

In all of your examples a smart contract doesn't add anything to the equation because the merchant (or the merchant's automated centralized systems) already have the authority and capability to relinquish deposited funds.


>Can you go into specifics here? I'm not really understanding.

It sounds like a security deposit, of a type. For example, I had to leave one of my shoes at the front counter of a store that hosted a small gaming LAN in the back.


If that's the case then I'm confused as to where the cryptocurrency comes in. A security deposit works just as well with fiat cash as it does with cryptocurrency and in your example there is no money exchanged at all.


Money is only a token of value.

What if you were unable to accept cash (for example, you are on vacation)?

Wouldn't it be useful to make a deposit on a car, right before you use it?

What hasn't been explained here, are what guarantees the depositor receives.


I just don't see how ethereum (or even bitcoin) is useful here. If you make a deposit on a rental vehicle then the deposit will be returned when you return the vehicle as it was given to you. Why is a smart contract needed?


When you do not want to be there to physically collect the deposit?


Certainly a smart contract is not necessary for that.


Can you link to such an implementation?


I'm not really sure what you're asking for. If you're looking for a system capable of accepting payment without an attendant there are many. Here is just one example:

http://bw-2e2c4bf7ceaa4712a72dd5ee136dc9a8-bwcore.s3.amazona...

If this is not the type of device you're talking about please be more specific.


I was thinking of a system that would let you place a deposit immediately before rental (imagine a rental car in a public lot) and then automatically receive your deposit back when you are done with the car (which was possibly even left in a different lot). I'm thinking the car would use its sensor system to detect if any damage might have occurred and if not, it could trigger the return of a deposit as soon as the vehicle is locked.


The system you describe is already possible today without the need for a smart contract.


Can you link to an implementation?

Admittedly, I don't really understand the distinction of a "smart contract". I am only describing the function of the system that there was some confusion over.


Ok. What I'm saying is that the ability to accept and relinquish an automated security deposit does not require a decentralized technology such as ethereum or even bitcoin.

A machine (like the one I linked above) can accept money and dispense money at the discretion of the business rules that determine the appropriate criteria for these operations (via car sensors or whatever).


Yes, but that requires a fixed machine (or a cash lock box on every vehicle?).

Shouldn't I be able to just leave the car anywhere in a city?


> Yes, but that requires a fixed machine (or a cash lock box on every vehicle?).

Of course not. Do it exactly like how rentals work today except in an app instead of in person. Put in your bank card info, a hold is placed on your card, when the vehicle is returned the hold is released and the service fee is charged.


In the scenario you gave, the trusted oracle never needs access to the funds. This is important for legal/regulatory reasons. This would not be possible without smart contracts.

Yes, its not 100% trustless, but its far more trustless than the alternative.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: