12 ms·
There's one point in particular that took me a while to grasp: while you can write code that runs on the Ethereum network, every single node has to process that
by mikenew 9y ago
There's one point in particular that took me a while to grasp: while you can write code that runs on the Ethereum network, every single node has to process that code.
So if, for example, you had a big 3d animation sequence that you wanted to have rendered, you would not just send that code off to the network to be processed. You would have to pay to have every single person on the network process that job for you, and it would be so big the network wouldn't even accept it. Rather, you would create a simple contract that says "if you render this animation for me and prove that you did it right, I'll pay you X amount of Ether". Someone would take the job and the Ethereum network would process your contract and handle the payment. You would end up paying that person to do work for you, and you'd pay the network (using something called gas) to process the contract.
You could use Ethereum to create all kinds of interesting contracts for financial purposes, voting systems, insurance, or whatever else. But it's not some giant compute cluster that will run some big program for you.
- bsmithers 9y agoThanks. In your example, how could one hope to prove they had rendered the animation correctly? Presumably each node must be able to verify the correctness of this in order to process the contract?
- mikenew 9y agoI think that's still an open problem. You could render a few random tiles from a few frames to build some confidence in the result. You could also build a reputation system, also running on ethereum, to establish who is trustworthy.
- ChrisClark 9y agoDefinitely a very constrained system to write in. For anyone who loves to write compact optimized code though, Solidity is very fun to write. Squeezing out every last little bit of gas. With the Viper language in development being even more low level there could be a good market for developers who can create solid contracts. VISA recently posted a job opening looking for a Solidity developer. I think with how rare those developers are, you would be in a really great place to negotiate your salary.
- RexetBlell 9y agoIf you want to do more intense computation, https://truebit.io/ https://truebit.io/ has a cool solution. It's exactly what you said, it allows you to pay someone to do the computation for you and publish the result to the contract. After the result was published, anyone can verify that it's correct by re-running the computation. If the published result is not correct, you can interactively prove this to the smart contract because the smart contract is able to simulate 1 step of the computation. If there are N steps in the computation, it is possible to prove to the contract that the original person who did the computation cheated with log(N) transactions. After the contract is convinced that the original person cheated, he would punished by destroying his deposit. Read the whitepaper and watch the videos if you want to learn more.
- MichaelGG 9y agoI only looked at it briefly. Very cool idea: Is it practical for heavy compute jobs though? Suppose a rendering takes 10 hours. If I don't know where the bug/difference is and just binary-search it, then they have to run at least 5 hours of computation to verify (out of the 2^^48 instructions, I'll start by asking for the 2^47th step). I guess that's solvable by requiring payment for verification runs and just splitting up your work into much smaller pieces.
- RexetBlell 9y agoYes, I think splitting up the work is a good idea. The authors already thought about how to incentivize verification runs. It's really cool. Check out this informative podcast with some of the team members: https://youtu.be/QY0OUTaIWIc https://youtu.be/QY0OUTaIWIc
- tech_man7 9y agoFor heavy compute, it's the Golem Network (golem.network)
- bpicolo 9y agoWhat's the benefit over throwing it at a cloud provider? There's an active downside of random people being able to see your data, not to mention randomly sized boxes and shoddy network connections (which is a big deal for the microservices which they are touting as a use case, and also for big data. Data transfer is one of the slowest bits of data science). Running a web service on random devices where keys, sessions, whatever end up in memory on some box would be a security nightmare. The government doesn't need a back door if all they need to do is host some compute nodes. Is it just that for some tasks that are very parallel and not sensitive it might end up cheaper?
- bstrom 9y agoSee also https://golem.network https://golem.network
- nullc 9y ago> There's one point in particular that took me a while to grasp: while you can write code that runs on the Ethereum network, every single node has to process that code. Yep. Unfortunately the creators of Ethereum marketed it heavily as a "world computer" on promotional roadshows, claiming it would replace Facebook and whatnot. Perhaps more interesting is that, in my view, Ethereum has it wrong: re-executing computation is a really foolish way to do what it can actually do-- which is conditionally allow changes only if a stated predicate holds. Check out this presentation by my colleague: Video: https://www.youtube.com/watch?v=TGE6jrVmt_I https://www.youtube.com/watch?v=TGE6jrVmt_I Slides: https://cyber.stanford.edu/sites/default/files/russelloconnor.pdf https://cyber.stanford.edu/sites/default/files/russelloconno... > contracts for financial purposes, voting systems, insurance, or whatever else. Many of these applications are severely harmed by the lack of privacy in the recompute-everything model.
- omarchowdhury 9y agoI'm curious to know what roadshows the Ethereum people were marketing in?
- herval 9y agoHow would Ethereum “replace Facebook”?
- uncle_d 9y agoWell, it can't in its present form, but there is a market (me, at least) for a distributed app framework that would be the basis for uncensored (and uncensorable) serverless p2p versions of all your favorite social media.
- Simon_says 9y agoI don't know about the serverless part, but wasn't this the promise of Diaspora?
- K0SM0S 9y agoCount me in as well. For about a decade I've argued that 'we' need a decentralized, encrypted, peer-to-peer way of communication wherein each user physically and legally owns their data (only granting temporary/revocable read rights to other users) and controls said rights on an ad-hoc basis. Including making it public as long as you damn please. Basically a digital metaphor that you own your 'space' (eg home) and grant other people a temporary right to come in and see/use an item or hear/participate in a conversation. Strong emphasis on the legal aspect since no gov or law enforcement should be able to peek inside without proper authorization (warrant, probable cause, etc). Diaspora indeed was an interesting idea in theory (good first step I'd say) but the execution sadly was flawed (too cumbersome to sell it to anyone, even free as in beer). As far as I'm concerned, no social solution satisfies these tenets yet, and so that's an open 'market' as we speak. Blockchain is conceptually a good basis for history/logging (I'd considered torrent to be a good candidate before that). Monetization of user data could be achieved on an individual basis by granting rights to commercial entities (eg Xbox, Spotify, clothing brand...) to monitor specific activities (eg my gaming metrics, my listening metrics etc). You'd have per-user contracts (eg Spotify authorized by x million people to monitor their musical habits, paying each a few cents per week possibly deducted from their bill if subscribed to the actual premium service). No middleman, or at least not necessary by design if you can in-house the whole monitoring/marketing (but agencies would likely appear, such as Google adword or Facebook ads operate currently). In this design, even Facebook or any social media would have to be granted rights to read your data, and could not hold/copy it beyond said authorization (in storage space, also in time). The whole point being to transfer physical and legal ownership back to users, thus able to revoke all rights to anyone, and operate solely on a peer-to-peer basis (maybe I just want to talk to a few people and that's it). Newsfeeds of sorts can also be envisioned on a per-user basis if said user runs some dedicated software which sorts and presents data this user has viewing rights to, hopefully in a much more customizable way than current Silicon tech monopolies. At least that's the idea. I'm pretty sure we'll eventually have something like that, we can't keep on digitalising our world with ever less control, it's a bit of a country without public space and no individual private space either, only corporations (not far from the ontology of fascism, although consensually accepted here since you're not obligated legally, only socially pressured into using said networks). But from this idea to actual execution, there is still a pretty huge gap, notably because any worthy solution needs to be actually adopted by a majority of users. It needs to be sellable to the highest extent (even if it were free), and thus provide actual value over existing solutions. Tooling, ease of use, clarity so as not to trick users, all aspects matter. Ten years ago I thought this would be long done by now. I evolved into thinking this is actually somewhat of a hard problem (per real-world constraints of all kinds, ie social, political, ethical, not strictly technically) that I want to actively try to tackle personally, whatever I can bring to a solution.
- gfody 9y agoEthereum isn't trying to be some sort of generic distributed computing platform. The notion of writing a dApp to do distributed 3D rendering is outrageously stupid. The idea is to program your money. Here's a dollar that can only be spent on healthy food. Give these to your kids for doing their chores or whatever.
- tech_man7 9y agoThe Golem Network is the generic decentralized computing platform. https://golem.network/ https://golem.network/
- rspeer 9y agoHow do you cryptographically, trustlessly verify that food is healthy?
- omarchowdhury 9y agoBasically the way people are thinking about blockchain business models right now, require everyone to migrate to the new platform for it to really work.
- acdha 9y agoBoth migrate and participate earnestly with no attempts at dishonesty. Most discussion of smart contracts or sales where abuse wasn't either ignored or differed to the same courts and trusted third parties everyone currently relies on, at which point the discussion goes from revolutionary change to minor incremental improvements.
- mbrock 9y agoThe ideology that everything has to be completely cryptoeconomic and trustless is hugely overblown. It's good that Ethereum eliminates the central trusted third party for the base layer, but then you are free to be flexible with how you define trust in your applications. Obviously you can't "cryptographically verify" a complex topic like health; you need to delegate decisions to intelligent actors.
- MichaelGG 9y agoThe difficulty is "prove you did it right". I'd guess that only works for cheap-to-verify (trapdoor"?) functions. However, Intel SGX does enable this. You would need an SGX-attested renderer, but the output would include a signature on the inputs in addition to the actual output image. You could verify this signature was made by the SGX-secured renderer code, then you'd know it executed as designed (i.e. the person didn't just draw an image in paint). SGX would also enable hidden contract data. Right now, you can't publish a contract like "guess my weight and win $100", because the guess code is public (has to be, for miners to exec it). With an SGX-enabled system, this is now totally doable. (Though, you must trust Intel, and assume hackers can't reverse engineer the Intel chips with magic physics or other breaks. So it's probably safe for a few millions but not billions of dollars. (Upper bound, for a few hundred billion you could acquire Intel and compromise SGX secrets.)) SGX is pretty exciting and I'm in the early stages of getting at least one project working with it. There's also research called "Town Crier" to enable TLS-retrieved website data into Ethereum contracts. For all the people that cry about SGX being big, bad, DRM, it really has its upsides. Too bad Intel requires special licensing to use it - it should just be enabled for all purposes. Maybe they're worried about malware backlash? Also, an SGX-enabled Ethereum, apart from the Intel/SGX trust issues, means you can skip the computation and just verify the result. It also means you could replace the proof-of-work multi-hash with a single iteration plus a sleep.
- m-j-fox 9y agoI don't know about SGX but worked on HDCP and maybe the license charge is for the same reason: lazy or malicious partners could leak a key and compromise the whole system. All the charges pay into the fund to pay damages to the injured if the system suddenly collapses like DVD encryption did.
- mtgx 9y agoThe moment SGX reaches 5% of the market, someone will already show how to hack it.
- rdl 9y agoThe costs to subvert SGX are unfortunately far below millions. Probably hundreds or thousands after you have some one time research. It is a viable additional client protection, especially against remote malware, software-only tampering (unless there are implementation bugs or backdoors), but not a viable server trust substitute.
- mrb 9y ago"using something called gas" gas is ETH. It is simply a term they chose to refer to the ETH fee paid to execute the code. I don't like their terminology. Calling it "gas" make it sound like it's a different currency. They should have just call it the "ETH fee".
- omarchowdhury 9y agoYeah. Gas, wei. They need it to KISS.
- flashmob 9y agoNo, gas is a synonym for fee. However, gas is its own unit, separate from ETH. Each op code in the EVM has a gas price, depending on the complexity of the instruction. Eg. A store op costs more gas than a comparison op. When you do a transaction, you specify how much ETH you will pay for one unit of gas. Typical transactions use 21k gas, but contracts need much more. More info about why it's like that:https://www.cryptocompare.com/coins/guides/what-is-the-gas-in-ethereum/ https://www.cryptocompare.com/coins/guides/what-is-the-gas-i... I often see 'gas required' 'gas limit' and 'gas price' terms confused, so careful what you read in the comments on the internet ;-)
- mrb 9y agoA much simpler terminology Ethereum should have picked instead of "gas" is the "cycle". Each operation takes a predefined number of cycles to execute. For example SLOAD takes 20 cycles, SSTORE 100 cycles, etc. Then a transaction defines the maximum number of cycles it will need, as well as the ETH per cycle it will pay as a fee. That's it. Basically: gasCost -> cycles gasLimit -> max cycles per transaction gasPrice -> ETH per cycle The fact you need so much text to explain gasCost, gasPrice, etc, perfectly illustrates my point that their "gas" metaphor is the wrong one. Also as xur17 said, "cost" and "price" are too confusable.
- xur17 9y agoThat is much easier to understand. I spent way too much time reading and converting units when trying to send my first transaction. GasCost and gasPrice sound too similar.
- accountyaccount 9y agoHow does one prove they did it "right"?
- RexetBlell 9y agoCheck out https://truebit.io/ https://truebit.io/
- elmigranto 9y agoSo instead of hiring professional animator with good reputation and fair pricing, you write a sophisticated program to check correctness of animations (what would that do?), try to come up with fair price in somewhat cryptic market, and hope someone somewhere will take up a challenge of both, figuring required specs from your contract source code and actually have an expertise to do a job in question. Revolutionary indeed.
- rhaps0dy 9y agoNo, you check the quality of the rendering. The rendering is already done by computers. The animators tell the computer what to render.
- elmigranto 9y agoHow are you checking? How is someone executing contract can be sure that you won't say "bad quality, won't pay", but use it anwywat. What is the point of ethereum in your concept?
- killerstorm 9y agoI might be somewhat biased on this, but I strongly prefer database metaphor over computing metaphor. Every blockchain is essentially a shared database. E.g. Bitcoin is a database which keeps track of address balances (as a first approximation) and enforces particular authorization rules. It's a fixed-functionality blockchain. On the other hand, Ethereum can serve as an arbitrary, user-defined database. Ethereum smart contracts are essentially like stored procedures in SQL databases -- they can be used to enforce arbitrary consistency rules. And the reason why transactions are quite expensive is that you're paying to update everyone's database. You can modify things locally for free, but if you need everyone to see your information, you gotta pay for it. And computation is there just for the sake of enforcing arbitrary constraints.
- kochthesecond 9y agoI also prefer the database metaphor. Bitcoin is a set of rules that lets everyone take part in (in fact this is required) the creation of a database of transactions that has happened. To make sure there are no mistakes, every single node runs the transactions to verify their validity.
- mettamage 9y agoI just wanted to thank you because while I viewed it this way I've never seen it so eloquently in words. My way of putting it into words was still a bit chaotic, so thank you!
- infogulch 9y agoInteresting. Can I ask for a description of the Etherium database from the perspective of someone shopping databases? Paradigms, features, transactions, distributed consensus, etc.
- killerstorm 9y agoOn a low level it consists of multiple key-value stores (one store per contract). Keys and values are 256-bit integers (or 32-byte byte strings). You never work with it directly, instead, you deploy a contract, which is sort of a collection of stored procedures. On the low level contracts are executed as imperative bytecode with special opcodes for reading/writing data to KV store. There are also high-level languages which compile to this bytecode. Particularly, Solidity lets you to develop contracts using object-oriented metaphor: contract is an object, its store is accessible via object's fields. Besides primitive types, it supports types like structs, arrays and associative arrays, which can be nested. Compiler takes care of mapping field access to raw key-value store operations, particularly, it relies on cryptographic hash functions for layout mapping instead of deterministic allocation. Contracts can also call each other, there is an opcode for it. Calls are done synchronously, so it looks exactly like OOP. Since this database exists in multi-user environment, access control is necessary. The system identifies users using cryptographic signatures and exposes this information to contracts via `msg.sender` field. Contracts can use it to implement custom authorization policies. The database is transactional, of course: a user-submitted transaction is either executed in its entirety (incl. all nested calls) or fails with all side-effects reversed). Transactions are executed serially, one at time. So high performance is not a feature of the system, it is more like "high security". Reading data can be done via "stored procedures" (well, I think technically you can read raw data from key-value store, if you want to). Also there is a separate "event log" mechanisms: contracts can generate custom event logs, which can be later read externally. Distributed consensus: Each node has a complete copy of the database, so adding more nodes doesn't increase scalability. Currently Ethereum uses proof-of-work consensus. That means that any (mining) node can propose a new block of transactions to be executed, and eventually they converge to a single chain. So it's stochastic. There are also "private Ethereum" systems which let you to use different consensus mechanisms. Typically they have Byzantine Fault Tolerant consensus, likely inspired by PBFT. It's kinda like Paxos but with more digital signatures.
- shriek 9y agoI'm failing to understand how this is different from say buying a compute power from AWS or GCE. Isn't it almost the same except the transaction is done through ether instead of traditional money?
- chx 9y ago> You could use Ethereum to create all kinds of interesting contracts for financial purposes, voting systems, insurance, or whatever else Perhaps you could but currently no one does. There's still not a single real world legal application that needs cryptocurrency. Much as with the pro-life debate (to name a bad phrase) or with global warming now renamed climate change (to name a good phrase) the name of the thing frames the discussion. Calling it a "currency" makes people think it's not a Ponzi or a scam when it's decidedly one of them.
- Tomis02 9y ago> global warming now renamed climate change Actually not true, the phrase 'climate change' has been coined more than half a century ago. The idea that there was a rebranding of the phenomenon is false beyond doubt, and actually hurtful to the process of acknowledging we have a big problem.
- Tomis02 9y agoHere's some random link to support my claim, since some people in the HN crowd prefer to downvote instead of discussing what makes them uncomfortable. https://thinkprogress.org/debunking-the-dumbest-denier-myth-climate-change-vs-global-warming-95dbb3aa65e2 https://thinkprogress.org/debunking-the-dumbest-denier-myth-...
- JasoonS 9y ago> currently no one does. Clearly you haven't done enough research. Have you looked at the ethereum token (ERC20: https://theethereum.wiki/w/index.php/ERC20_Token_Standard https://theethereum.wiki/w/index.php/ERC20_Token_Standard) launch contracts? They raise large amounts of money (its actually scary!) and securely and transparently tokens are distributed to participants. These tokens can then represent anything (really anything) from stock (blockchain capital etc), to voting rights in the organisation (districtOx), to a utility token (golem, basic attention token) to allow use for what ever protocol is being developed. There already are private secure voting systems being researched. Here for example: https://github.com/stonecoldpat/anonymousvoting https://github.com/stonecoldpat/anonymousvoting ZK-snarks is used to ensure privacy. You can see some of the other applications here: https://dapps.ethercasts.com/ https://dapps.ethercasts.com/ (most of these are just fun ideas, but you don't have to look far to see the potential in them). There is real utility to Ethereum, it is just very very young as a technology, and all the issues of scalability etc are a work in progress. But if you want to use the trust-less and secure computational power to execute your code (smart contract) you need to buy Ether first. Is that a Ponzi? I think you are unfairly grouping ethereum in the same category as a large number coins that very much are ponzis.
- ksteigerwald 9y agoYour right, but Golem will be. And golem is built on ETH.
- zyngaro 9y agoThe proof of work system imposes that and the fact that all the nodes compete to mine the blocks to earn coins. May proof of stake can make things more optimized.
- zyngaro 9y agoThe proof of work system imposes that and the fact that all the nodes compete to mine the blocks to earn coins. May proof of stake can make things more optimized.
- djrtwo 9y agoMy article on costs in the ethereum network cover this idea. https://hackernoon.com/ether-purchase-power-df40a38c5a2f?source=linkShare-d607259e3794-1499521924 https://hackernoon.com/ether-purchase-power-df40a38c5a2f?sou...
- ksteigerwald 9y agoThis is what Golem aims to do... and it's built on ethereum.
- Galaxeblaffer 9y agoCheck out https://golem.network https://golem.network or https://sonm.io https://sonm.io they are making a world computer on ethereum
- wcummings 9y agoIf you want a laugh, read the ethereum sharding document. https://github.com/ethereum/wiki/wiki/Sharding-FAQ https://github.com/ethereum/wiki/wiki/Sharding-FAQ
- puranjay 9y agoI'm very wary of buying ETH because I've seen it shilled VERY HARD on 4chan. I don't trust anything that 4chan is telling me to buy.
- ojr 9y agothe average 4chan user probably doesn't own a finney so I wouldn't worry about it, the development team for Ethereum is pretty solid I think that should be taken more into consideration before contributing money to a software project
- puranjay 9y agoThat's what I would buy it for really: as an investment into a software project, not because it can make me money.
- DennisP 9y agoI doubt that opinions on 4chan have a strong correlation to reality in either the positive or negative direction.