6 ms·
You know Bitcoin is useful. One of the useful things in Bitcoin is that you can make a transaction conditional on a multiparty approval ("multisig"). This is us
by mbrock 9y ago
You know Bitcoin is useful. One of the useful things in Bitcoin is that you can make a transaction conditional on a multiparty approval ("multisig"). This is used by many organizations to control funds in a safe way. Ethereum lets you construct even more interesting types of transactions. For example you can easily implement the logic of a crowdfunding (unless X is raised by time Y everyone is refunded). In that context, "smart contract" is just a way of saying that you're not relying on the promise of a third party to perform the refund—it's automatic.
- staticelf 9y agoOk but that raises a lot of technical questions. Do I myself host that logic or is the logic itself distributed? While creating a crowdfunding contract, I am the host in my mind so assuming that the smart contract is hosted on my machines this must mean that when people are sending Ethereum to my wallet the logic does it's thing? Another version of that could be that the logic is sent out to all interested peers and they only actually send Ethereum to the correct wallet after the logic in the contract they got sent is executed. This is the parts of Ethereum that is so very confusing. People are simply swinging around with words like "smart contracts" but there are little to no actual description on how it actually works.
- ym705 9y agoNo the smart contract is on the blockchain and executed by the nodes. Never on your specific host alone
- jononor 9y agoThe logic exists on the block chain. It is executed on each and every machine that follows the chain. This is how executions are verified, 'everyone' has to agree on the outcome.
- staticelf 9y agoSorry for being so uninformed but what happens if there is an error in the logic? Doesn't that mean that it's not possible to update the smart contract?
- ym705 9y agoYes the block chain is by definition immutable. So no means to update the contract the only way if it is a ENORMOUS mistake would be to fork it: read about DAO hack FYI
- mbrock 9y agoBasically yes, and this is reasonable from a security perspective, otherwise every smart contract would basically have a trusted administrator. But in many cases you do want some ability to upgrade the code, and then you simply program in that ability by creating a repointable proxy with whatever authorization logic you want.
- na85 9y ago>what happens if there is an error in the logic? If you are a big name in the Ethereum community, they will soft fork Ethereum so that your mistake is rolled back.
- rst 9y agoThere have already been multiple incidents involving bugs in "smart contract" code being exploited to steal funds, one within the past few days[1]. A particularly nasty case involved something called "the DAO", which was an attempt to do something like a distributed VC fund, but had a bug which allowed any participant to steal all funds contributed. That one got backed out by a hard fork of the Ethereum blockchain, but that's obviously not a stable or scalable solution to dealing with these types of situations going forward. [1] https://www.theregister.co.uk/2017/07/20/us30_million_below_parity_ethereum_bug_leads_to_big_coin_heist/ https://www.theregister.co.uk/2017/07/20/us30_million_below_...
- mbrock 9y agoOf course there are a lot of technical questions. To answer this one, the logic is distributed and executed on every full node. It's like one big distributed database where a transaction can also create a stored procedure.
- decentralised 9y agoWhen you write a smart contract, the natural route is to deploy it into the Ethereum public network. Otherwise, your contract is only accessible to your own private channel and uses your own tokens (as opposed to Ether), etc. Some clarifications: Ethereum = the project or the foundation itself Ether = unit of (crypto)currency used in Ethereum
- mkagenius 9y ago> In that context, "smart contract" is just a way of saying that you're not relying on the promise of a third party to perform the refund—it's automatic What if the code is malicious, and instead of auto refund it steals the money? I mean, not everyone would read the code to see what it really does, so what happens in that case?
- maedha 9y ago> I mean, not everyone would read the code to see what it really does, so what happens in that case? This is true with real world contracts too, that's why people hire lawyers - they understand the "code" of contract law.
- nerdponx 9y agoBut real world contracts are never 100% clear, and can be modified retroactively in court when their terms violate the law, are vague, or are otherwise deemed unenforceable.
- throwanem 9y agoSo can "smart contracts".
- mannykannot 9y agoUnless the attacker is careless enough to reveal his identity, or puts his ill-gotten gains at risk of being hacked back, or the victims are Ethereum foundation members, your chances of restoration are slim to none.
- throwanem 9y agoSo I'm actually at a disadvantage here, compared to plain old contracts.
- 9y ago
- ericfrederich 9y agoJust shifting the problem. Okay, so the money is raised... you still never get your vaporware product.
- maneesh 9y agoYou could program a smart contract to say "unless greater than half of funders agree tbat the product was shipped, refund everyone's money" It's a programmable decentralized escrow
- pmoriarty 9y agoWhat incentive do the funders have to agree that the product was shipped? I mean, it's pretty obvious that such agreement on the part of the funders increases the likelihood that they will lose their money. So why agree? I guess the person shipping the product could hope that the funders aren't assholes or theives and actually will agree that the product was shipped when it ships, but isn't the smart contract supposed to make such human signs of good will unnecessary? Otherwise, why have a smart contract (or any contract, really), as you can just rely on the good will of the participants?