13 ms·
Though I meet the criteria as stated (knowledge level wise - I'm a retired IT Exec/long time geek), yet this still is a bit too esoteric for me. As one of the
by canada_dry 9y ago
Though I meet the criteria as stated (knowledge level wise - I'm a retired IT Exec/long time geek), yet this still is a bit too esoteric for me.
As one of the 'killer apps' for ethereum is smart contracts, I'd like to see this explained in a 'for dummies' high level way, then decomposed into the finer technical chunks needed to make it happen.
- xj9 9y agoprofessional etherem devs haven't even gotten to the point where they can write correct contracts themselves. but the concept is pretty simple. a "smart contract" is a script that runs on a blockchain to execute terms and manage funds. the problem is that the tools that you use to make these are basically garbage. you don't write fin-tech in what amounts to javascript y'know?
- sillysaurus3 9y agoPeople were saying the same thing about non-C++ back in the day. "Web apps aren't written in scripting languages y'know?"
- saurik 9y agoI view this more as "web apps should not be written in C++ due to security issues that we have long come to understand" than "web apps should be written in C++ due to performance issues we are guessing at"... like, do you believe that in a few years people will decide "no, strongly typed and proof assisted languages were overkill for contracts: it was actually better to code them in a language that has weirdly fluid rules and type semantics for reasons they did not quite grok in 2017"?
- sillysaurus3 9y agoThis criticism doesn't apply to Ethereum. Solidity is compiled to a VM. You can write other languages that meet your criteria that still use Ethereum.
- saurik 9y agoI know, and I am very excited for those languages to exist and be usable, and thereby have been tracking a couple such efforts; until then, this is about as useful as pointing out that website development is theoretically possible using a computer. The person did not state that it would always be the case that smart contracts are hard: only that right now, on Ethereum, they are hard, and the comment even used "gotten to the point where" (indicating this is a temporary state) and specifically blamed the "tools", which is all absolutely true and is born out not just in theory but in practice; it doesn't even disagree with your own statements that other different tools would be better. Why are you so defensive about this commentary?
- sillysaurus3 9y agoI'm like a goalie. Defense is my game. Actually, I didn't mean to come across as defensive. I just like to nerd out about tech. Once you accept the inherent craziness of the proposal, and go "Ok, this is crazy. What now?" you end up concluding that the future is going to be very interesting. It'd be worth investing some amount (that you can afford to lose!) in ETH on the off-chance that it doesn't suffer a major disaster. There are quite a few interesting applications for this technology, and historically that's been a pretty solid bet.
- Emilia34444 9y agomÿ möthërs nëïġhböür ïs wörkïnġ pärt tïmë änd ävëräġïnġ $9000 ä mönth. ï'm ä sïnġlë müm änd jüst ġöt mÿ fïrst päÿċhëċk för $6546! ï stïll ċän't bëlïëvë ït. ï trïëd ït öüt ċäüsë ï ġöt rëällÿ dëspërätë änd nöw ï ċöüldn't bë häppïër. hërës whät ï dö, AMAZING JOBS ¦¦¦¦F¦O¦L¦L¦O¦W¦¦M¦E¦¦¦¦¦http://ow.ly/P0wk30aVXfN http://ow.ly/P0wk30aVXfN ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
- JasoonS 9y agoThe main thing to keep in mind at this point in time is that these contracts have very little tolerance for inefficiency, since inefficiency in this case costs money. Even solidity is very inefficient. Sure it would be great to write contracts in Haskell or Coq but can you insure O(1) or at most O(n) run time with little to no constant overhead? For example LLL (Low-Level Lisp-Like Language) produces 70% more efficient code than solidity [1] and thus it is the chosen language for the ENS (Ethereum Name Service) registry smart contract (who wouldn't want to pay 70 less for interacting with a contract?). But no doubt, better languages will come with time :) [1] https://media.consensys.net/an-introduction-to-lll-for-ethereum-smart-contract-development-e26e38ea6c23 https://media.consensys.net/an-introduction-to-lll-for-ether...
- flunhat 9y agoDifference being that a poorly written web app amounts to some leaked passwords and email addresses. A poorly written smart contract that handles real money, on the other hand...
- sillysaurus3 9y agoSo? It's their money to lose. Yes, it's crazy, but it's also happening.
- flunhat 9y agoAgreed, and the massive hacks and losses will continue as long as smart contracts are written in Solidity.
- guscost 9y agoThe EVM is Turing-complete, so this will be a risk with any language that compiles into a smart contract. Solidity doesn't appeal to me because its goal seems to be on-boarding JavaScript programmers. But new languages that compile to EVM can be easier to use "safely" and you will see several of these in the next few years. I'm really excited that a project to embed Turing-complete behavior in a blockchain has actually taken off. It's completely insane from one perspective, but completely awesome from another.
- adrianratnapala 9y agoThe EVM might be Turing complete but you can still have languages that compile down to only some tractable sub-set of the possible EVM programs. The interesting question is whether a language can be design which allows the important domain-relevant requirements to written down in an understandable way and also proved rigorously. So far neither lawyers nor programmers have done a very good job of this in their respective field. Watching people trying to do it in both fields simultaneously sounds like popcorn time to me.
- 9y ago
- feedjoelpie 9y agoSolidity's relationship to JavaScript is negligible and way overplayed in its marketing. Similarities are entirely superficial.
- jjn2009 9y agoI agree, the syntax being similar doesn't really mean much for similarity when it comes to actually solving problems.
- cslarson 9y agoThis 100%. I think this becomes evident almost as soon as one tries to do any smart contract coding. It's an entirely different paradigm with considerations that dwarf anything about language syntax and style. In fact I think these considerations are very non-trivial to grasp.
- Siecje 9y agoWhat would be an example of a "smart contract"?
- mianosm 9y agoBasic smart contract found here: https://blockgeeks.com/guides/smart-contracts/ https://blockgeeks.com/guides/smart-contracts/
- AlwaysBCoding 9y agoA kickstarter clone, that could be implemented in a few lines of code on top of Ethereum.. If there is > 1,000 Ether in this contract address before timestamp x then send the Ether to the project lead, else refund all the users.
- thomk 9y agoNice! Thank you. You know there are many different types of contracts, why didn't they just call it 'smart transactions'?
- Brianne88 9y agobuddy recently bought a fantastic yellow Toyota Camry just by part-time work from a home pc _________http://bit.do/dnRs5 http://bit.do/dnRs5
- fragsworth 9y agoBecause it's conceptually more like a contract. Someone writes the contract code, and then by uploading and depositing money into the contract it's as if they signed it. After that point it works without anyone needing to trust the signer. And they can include conditions about arbitrary information that is reported on the blockchain (weather data, stock prices, etc...) And multiple people can sign these things. They really are like contracts.
- JasoonS 9y agoTheir main use case is maintaining critical/sensitive state information that you want to protect via rules of interaction between multiple parties (that don't trust each other) without the need for a trusted intermediary. The contract is tamper proof and only via correctly and cryptographically signing messages/transactions intended for the smart contract will the state of the smart contract change, but only according to the rules defined in the smart contract. The (non-fintec) example I often hear about often is a voting system. (See: https://github.com/stonecoldpat/anonymousvoting https://github.com/stonecoldpat/anonymousvoting , here zk-snarks algorithm is introduced to ensure privacy) Essentially anything that requires co-ordination between parties that don't trust each other over a piece of data (a balance of money, the tally of a ballot) is a perfect use case for smart contracts. But since there is cost to running it on these secure networks it is important that they remain O(1) or at most O(n) time complexity, which for these kinds of applications is often totally enough. (eg. if (the message is signed by the 'owner') { send the funds } else { throw })
- kovrik 9y agoNormally, if you deal with money, then you try to be extremely careful, right? You have to care much about security, verify that your app is not vulnerable, make an audit etc. And I think that even beginners know that you can't trust users' input - you have to sanitize it. And under no circumstances you want to execute it! But here it is the opposite, isn't it? You basically give users ability to run any code within your application (blockchain). And you give them very insecure, confusing and badly designed language. To me it is an epitome of insecurity. It is like giving a shotgun to a child!
- Jabanga 9y agoUsers cannot run 'any code'. They can run contract code, which can only interact with the underlying application through a protocol. The multisig hack was not a case of the underlying application being compromised. The contract itself was compromised due to a vulnerability in its code. The only parties affected were those that trusted the contract. The rest of the contracts operating on the application were unaffected.
- xj9 9y agothe problem is that the tools don't facilitate writing correct contracts i don't know how to do this myself, mind your. to be broadly applicable the tech has to be accessible to people who would be writing contracts. a fucking professional using the state of the art for this shit has very little tooling support for checking that the contract actually operates in a particular fashion. something like an SQL query planner that helps you write contracts
- Jabanga 9y agoThat's a different subject. I was only addressing the notion that Ethereum the application is at risk from the code that users run on it. I completely agree that the tools and processes for writing and testing smart contracts need to improve.
- sandralisa88 9y ago
- max_ 9y agoA law can only can be as bug free as software? 100% bug free software is impossible! As long as they are written by humans? Their will always be bugs. Matter who is writting them.
- xj9 9y agoi'd like formally verified laws if i could
- zdkl 9y agoI dislike algorithms that I understand, and I distrust algorithms that I don't when it comes to stuff like social security or insurance. Smart contracts by composition would be really nice. Like a compile to EVM lisp!
- jpamata 9y ago> ethereum dev. how would you even get started for this kind of job? all of the ads popping up seem to be looking for somebody who already has significant experience
- zdkl 9y agoRTFM & Hack?
- deleted 9y ago[deleted]
- mpeg 9y agoI can write secure smart contracts in Solidity or straight in EVM assembly, it's really not that hard as long as you code it defensively.
- sillysaurus3 9y agoEthereum allows you to write a program that executes on the blockchain. State variables are synchronized the same way that a Bitcoin blockchain synchronizes sums. (This means it's impossible to have private state that's also synchronized via a blockchain, but in many applications private state isn't needed.)
- drexlspivey 9y agoWhat does the code have access to other than the blockchain? Can it access the internet? The node's computer?
- sillysaurus3 9y agoThis is a good question, and it's one I've wondered about. There's nothing stopping you from designing and deploying a blockchain similar to Ethereum that does allow access to those things. The problem is trust. It's helpful to remember that all the participants in an Ethereum network are adversarial. It doesn't matter how many bad actors there are as long as >50% of participants agree on the outcome. (This is a simplified explanation -- the real system is transitioning to proof of stake rather than proof of work.) If you allow solidity to access the internet or the system compilers, you can't guarantee determinism anymore. For example, if you increment a counter by the result of accessing https://some-value.com https://some-value.com (which returns a JSON value), you could program it to return a different result for everyone who accesses it. None of the nodes would agree what the true value of the counter should be. It'd also result in a central point of failure. These same problems exist if you let Solidity access the system software. You could program it to give different results, so no one would agree. The innovation of Solidity is that it's a set of operations where no matter what you do, the majority of nodes will converge to the same answer.
- binofbread 9y agoWould it not be possible to write a contract that has intentionally random results? Could you not use the timestamp or some other piece of data to flip a coin to determine the outcome? Does the EVM prevent this in some way? I did some searching but I'm not sure I know what to look for either.
- decentralised 9y agoMay I humbly suggest my Hello World tutorial for a quick overview of smart contracts in ethereum? https://steemit.com/ethereum/@decentralised/hello-world-revisiting-the-ethereum-greeter-tutorial-for-the-summer-of-17 https://steemit.com/ethereum/@decentralised/hello-world-revi...
- will_brown 9y agoyou and everyone else is going to love this but if you want a "smart contracts for dummies" look towards the law: thats right the very thing smart contracts are marketed to replace not only controls but defines smart contracts themselves. So far a few states (US) have passed laws regarding "blockchains", "smart contracts" and the like. For example, seeking to avoid any legal uncertainty surrounding blockchain transactions and smart contracts relating to certain digital assets, Arizona passed HB 2417, the following on point: - A very specific definition of “blockchain technology” as a “distributed, decentralized, shared and replicated ledger, which may be public or private, permissioned or permissionless, or driven by tokenized crypto economics or tokenless” and provides that the “data on the ledger is protected with cryptography, is immutable and auditable and provides an uncensored truth.” -A definition of “smart contracts” as an “event driven program, with state, that runs on a distributed, decentralized, shared and replicated ledger that can take custody over and instruct transfer of assets on that ledger.” Other states in various stages of legislation on point include: Maine, Illinois, Nevada, Delaware and Vermont. interesting notes: Arizona also passed a seperate law restricting the use of blockchain as "fire arm tracking technology", likely a pro gun rights lobbying effort. Delaware will likely be codifying by statute the right to issue stock on blockchains. Courts have begun accepting blockchain entries as business records under the rules of evidence.
- mbrock 9y agoImagine you and your friends are for some reason dissatisfied with the way you are able to deal with money among yourselves. For example, maybe you like to quickly reimburse each other for dinner, but you won't or can't use Facebook Messenger payments, perhaps because some of you aren't on Facebook, or you're not in the US. So you want to make your own little payments system. You might start with just setting up a simple server that tracks your debts, with a simple web app to log in and send funds. Suddenly it's much easier for you to pay each other! Once that works, you realize it would be really neat to have group payments, where you can automatically split a dinner bill, for example. And then maybe you'll even want to kind of crowdfund your dinners, so that any of you can put up a request that says "please send me 5$ each until tomorrow at 4 and I'll order food." You can see this becoming more and more complex. This is kind of the evolution of blockchain going from simple transactions towards arbitrary smart contracts. A contract on Ethereum is basically just an address that's associated with a little script in a stack machine bytecode. When you send a message to such a contract, you're actually signing a transaction that says "I hereby perform the instructions of this contract with these given parameters." For example, the bytecode of contract X might be: VALUE 2 DIV DUP <address-1> SEND <address-2> SEND (The SEND instruction doesn't actually exist; you'd use the CALL instruction, but it takes some parameters that would make the example less clear.) So this contract, when transacted with, would split the ETH value sent to it in half and send to "address 1" and "address 2". The neat thing about this blockchain thing, compared to a Messenger-style central server, is that you can federate the service in a P2P way, so several of the friends can run a node that verifies all the history, and nobody needs to be trusted with an admin password that can change history. The neat thing about having those smart contracts on the blockchain instead of as proprietary code is that each participant can (in principle) look at the contract's definition and know for sure what it does, and the contract can't be changed arbitrarily.
- zdkl 9y agoThat's a lot of effort to spare yourself a conversation about convention within your friends and a small money pot. Smart contracts fit really well for generally managing securities, developping auto hedging portfolios.
- globuous 9y agoI like to think of smart contracts as ways to program money. Imagine if you could program a dollar bill. Then there's lots of cool stuff that could be done :) If you could program money, you might not really need insurers anymore. You could just program insuree's money so it redistributed appropriately in case of flooding (for eg). No need to give you money to an entity and have a conflict of interest with your insurer. Smart contracts are ways to program money by sending it to special addresses. These addresses contain a script that will decide how to redistribute the money. It's like if you insurance was a program.
- zdkl 9y agoI'd argue most consumer insurance programs depend a lot on interpretation. You don't want to be exposed to Inadvertent Algorthmic Cruelty when you're in a situation where your civil insurance should kick in. IMO Smart contracts are a good way to model and trade securities, options or futures instead, leaving the underlying assets to be managed by real world humans who can make things happen out of the blockchain.
- erikpukinskis 9y agoYou'd still be able to rely on human interpreters, who would do all the on-the-ground work the insurance adjuster does. There would be a clearinghouse for those jobs, and contractors would do them. The incentives could be set up such that the cost of being caught straying from protocol would be higher than the fraud opportunity. Or you could just reply on network-of-trust. Brand loyalty, etc. Choose Aetna claim investigators! We Follow Protocol
- canoebuilder 9y agoIt's like if you insurance was a program. That's an interesting way to think about it, but how do you communicate to the program that a tree fell on your car and you need it to give you money for a new one? Basically what's the mechanism for communicating certain cases or conditions to the program, how does the program verify the claims you make to it, and how many of the scenarios where that works are practical for any real world applications?
- waltwalther 9y agoThis article mentions and briefly explains smart contracts in a way that really helped me understand. http://haseebq.com/a-hacker-stole-31m-of-ether/ http://haseebq.com/a-hacker-stole-31m-of-ether/
- erikpukinskis 9y agoEthereum would make a hell of a card game. It's naturally adversarial and the incentives are already balanced.