Lessons from the Blockchain: What is Ethereum?

in #cryptocurrency6 years ago (edited)

what-is-ethereum-advanticle.com_.jpg

What is Ethereum, and why should I care?

So if you are new to the cryptocurrency scene you may have heard about Ethereum, and have been wondering what is Ethereum? When I first found myself in this space it was quite a while ago, and Ethereum was really still very new.

What is Ethereum?

Many people are aking this question, and they are also wondering if you need to be a crypto nerd to understand it? I don't think so, I'm not a crypto nerd, I don't understand hashes, trees, any of this nonsense. I really only understand private key and public key encryption, and I just trust that it works because very smart mathematicians say that it does. Much like I trust that the internet works because very smart people say that it does.

Is Ethereum Bitcoin?

The first question I get asked often is "Is it Bitcoin?" You may be very surprised how many people do get this incorrect. Ethereum is not Bitcoin, they do share some very similar properties. Their similarities include; having a blockchain. Both Bitcoin and Ethereum have what you would call a blockchain. Bitcoin has the Bitcoin blockchain, and Ethereum has the Ethereum blockchain.

They both use a sort of token to pay for the usage of that blockchain, or network. On Bitcoin, the token in Bitcoin, on Ethereum, the token is Ether. So they are somewhat similar in the way that they work at their very core.

Does Ethereum do all the things that Bitcoin does?

Almost. Not absolutely everything. But it's kind of safe to say 'yes' if you're looking at this from an application developers perspective, yes, it pretty much does all the things that Bitcoin does.

Is Ethereum an Altcoin?

Is it then one of these coins that aren't really that much different to Bitcoin in that it has some different properties that make it more useful for one thing rather than another? I would say that Ethereum is not an Altcoin.

Examples of Altcoins would be something like maybe, Litecoin, which until recently had no differences from Bitcoin, other than the block time. The main difference here is the speed at which new transactions can be sent to the network.

Dogecoin, may also be an Altcoin. Someone mentioned to me a few weeks back about the Vegan Initiative Coin, which did make my heart sink. But, if you're a Vegan and you want to join the Vegan Initiative blockchain there's a coin for you!

So what sets Ethereum apart from all these different blockchains?

What makes Ethereum worthy of all of your attention, and what makes Ethereum worth of an extensive blog post is that simply put, it's a computer. That's the easiest way to what Ethereum is in a very broad sense. It's a computer that does computing stuff.

What kind of computer is Ethereum?

Why is Ethereum any different to say, the laptop that you have in front of you right now? Why is it different to a big server somewhere? Or a big rack of servers? Ethereum is a 'singleton' which means there is only one instance of the computer.

So imagine you have a laptop, and then imagine everybody using the exact same laptop at the same time. That's Ethereum. Sounds like it's not going to be very useful, but just hodl on...

Ethereum is decentralized, so there is no one big rack of servers running Ethereum and we're all connecting to that one big rack of servers or one machine. It's being run concurrently by machines all over the world.

At the time of writing this, I'm currently running a version of the Ethereum computer on my computer. I'm currently running an instance of Ethereum right now. But there are thousands if not, hundreds of thousands of other instances of Ethereum being run on thousands of different machines all over the world right now. But we're all still running the same computer.

Ethereum is verifiable

What verifiable means is that given its current state and an input, you know what the output is going to be. That's really extremely useful because it means we know when the thing doesn't work.

Atomicity

Ethereum is also by nature atomistic, meaning that it never falls into a 'broken' state. It's impossible for you to leave the Ethereum computer with some corrupted memory, somewhere. Because either a transaction completely succeeds, and everything goes through and the state is updated. Or, the transaction gest a part of the way through, and a little bit of it fails, then the whole thing is rolled back. So there's no potential for leaving Ethereum in a broken state or having any problems arise because of that.

Ethereum is Multiuser

Ethereum is natively multiuser, which means there is no login, there is no one who is the gatekeeper to this system. There's nobody saying that one person can have an account and another can't. If you could run a very simple piece of code, a very simple algorithm to generate you a private key, you can have an account on Ethereum, you can start doing stuff, and interacting with projects; that's really cool!

And, of course, the best thing about computers is that they are programmable. There's no way that we would have ever got to where we are now without the ability to be able to program a computer. It's just not possible.

So, Ethereum is a giant, single instance of a computer that is basically running everywhere in the cloud all at once, and you can program it to do whatever you want it to do. That's insane!

Why would you want any of this?

Now we will explore some of the differences between the Ethereum architecture, and the traditional architectures of computers.

In traditional systems, most of the logic you are interacting with, say if I go on Facebook and I type in my details and it spits out this feed; I don't know what Facebook has done to generate this feed? To me, it is as if they have just got that information and given it back to me, and I don't know what they have done with my information.

On Ethereum everything is auditable. All of the code that sits on the Ethereum computer, all of the programs on the Ethereum computer are by their nature open source. Not necessarily that you can see the source code, but you can see the bytecode. So you can follow the machine instructions and you should probably be able to presume that people will be able to reverse engineer it in the future. That's pretty cool, that's pretty interesting. So it means people cant really do ant sneaky things with your data.

In traditional systems, servers, or programs can just change their function without telling you. If you download a program onto your computer and it is permitted to install its automatic updates, next time it installs an update you've got no idea what's changed. You can read the changelog and it might tell you, but you don't actually know unless you read through all the source code.

On Ethereum that's not possible. If I deploy a program to the Ethereum computer it sits there forever. Unless I program in a way to kill it or shut it off, it sits there forever and it can be used forever. Once installed it cannot be changed. You can't go in an make an update, you can't change any lines of code to make it do anything different. It's not possible. All of the code that makes up your program sits there forever. The code can't be changed. Of course, you could have some things that let you change variables, but the code itself says the same.

In traditional systems, you pay with your data, usually. Let's go back to Facebook as an example; who do you know who pays money to use Facebook? Nobody, right? So how is Facebook making money? They are selling your data. You are the product.

In Ethereum, the users pay with 'gas' which is money. I'll go over 'gas' in a little while. The users can't change the state of the program unless they pay, they can still look at things, but they can't interact any deeper than that without paying. This greatly reduces the likelihood of spam attacks and the like.

In traditional systems, interoperability is often quite awful. If you are a developer and have dealt with APIs before, you'll no doubt agree. Multiple APIs in the same codebase is a pain because you have to get multiple API keys, you have to make sure they are all managed correctly, and all this kind of nonsense.

In Ethereum, that's not the case. Integration is really really easy because as soon as you deploy a piece of code to the Ethereum blockchain, as soon as you deploy a program, people can just use it. There's one standardized API, there are standard libraries you can use to interact with the Ethereum computer. Web 3, Ether's Logies, and a whole other bunch of them which mean that writing programs that use other Ethereum programs is really easy, and I think more people should get into it because it's super fun as well.

In traditional systems, most of the logic you are using is proprietary. So all of the algorithms that determine what you see on social media, or all of the search algorithms you use, they are all proprietary. You can't see them, you don't know what's going on, you've got no idea of how they are getting the results they are getting. And that can be a good thing, in terms of intellectual property, but it can also be a bad thing because you've got no idea of where all this data is coming from, and why it is being shown to you specifically. It might be different for some other guy halfway across the world, but why is that, we don't really know.

In Ethereum, that's not the case. Everything is inherently open source. You cant give a different result to someone else by virtue of being in a different physical location.

So, why is all of that useful? We have explored why it's different to traditional methodologies. Why is it useful and what makes it the kind of hype-machine that everyone is talking about, and going crazy about and throwing lots of money in?

what-is-ethereum-advanticle.com_-1 (1).jpg

Well, there are these things called DApps (Decentralized Apps). They are decentralized applications of which there are now an increasing number every day. To name a very select few, there is Golem which is a team from Europe who wants to build decentralized cloud computing. So, you donate a bunch of your spare processing cycles, and you get paid for it with the payment being sent out via the blockchain.

WeTrust is a company who want to build community finance applications on the Ethereum blockchain, taking informal social contracts where people put money into saving pools and then that money is used within the community to help it flourish.

WeTrust wants to take those informal rule sets and put them into smart contracts and put them on the blockchain. This will help develop credit scores for people who aren’t necessarily able to access banks.

Etherol and Edgeless are two gambling DApps where you can prove or verify that the house only has a 1% edge. Effectively, you only have a 49% chance of winning, but for some people that’s alright.

Gnosis and Augur are two interesting teams wanting to build prediction markets. Prediction markets have a history of being extremely good at predicting future events, and the outcomes of future events.

As a result, a few of them have been shut down because they were so good at predicting the outcome of sporting events. Gnosis and Augur are planning to build decentralized ones that can’t be shut down because there is no off switch.

Iconomi and Melonport want to build index funds on the blockchain. Iconomi is one which is a big centralized index fund, you give your money to the company, Iconomi, and they put it into all sorts of different things, and then there is a calculation of value and a determination on how much you are entitled to. This will be distributed back to you via the blockchain.

Melonport is a bit different, so if you think of yourself as an up and coming Warren Buffett, you can create a portfolio where people can follow your trades and see what you are doing. So if you are making a profit, they are making a profit. I think that is pretty cool.

First Blood is a competitive online gaming platform where the results of matches are more or less ‘verified’ using the blockchain. It’s like using multisig technology to verify the results of games.

Aragon is a company that wants to build decentralized organizations. These days it is becoming more common for businesses to not have a traditionally solid management structure.

People tend to come and go more now than before, and there is a need to change how the recruitment industry responds to market needs which have given rise to smaller contract positions where comparatively smaller pieces of work are done when compared to a fulltime position. Aragon offers a way to manage that in a decentralized futuristic way, and give people appropriate incentives for working on your project, instead of someone else’s.

All of these things can work together. There is nothing stopping all of these projects from working together. As soon as these are released into the wild, there is nothing stopping another project from coming in and build on top of what is already there. This is because a lot f the logic in this is wrapped up in smart contracts.

You can dig even deeper through State of the DApps which shows all of the submitted DApps that are on the Ethereum computer currently. I recommend that you go to this site and have a browse around. There was one I showed a few people last time I was on here that was really cool, but you do need to beware of possibly dubious schemes also.

So, Ethereum is really good at removing the middleman, taking the middleman out of the transactions and having everything purely peer to peer. You don’t need an escrow agent to hold funds for a transaction between two parties as you can use a smart contract to do that. It’s a very simple rule set, such as “if he gives me the thing, give him the money” so you don’t need someone trusted to do that.

Ethereum smart contracts can act as trusted third parties. Well, it’s just code, right? So, goodbye jobs. Lawyers, Escrow Agents, other middleman entities are all exposed to the changes that this technology is introducing. And when you couple that with AI there is an exponential opportunity to see amazing things.

Take Airbnb and Uber as examples; with Ethereum you don’t really need companies like that in the middle of transactions. If I want to rent my house to somebody, I should just be able to do that in a peer to peer way, and with Ethereum contracts I could.

There is a company called Slock It based out of Europe who wants to build locks which listen to transactions on the Ethereum blockchain. Effectively, you can just put it on your house, somebody can come to your house, scan a QR code, pay for access to rent your house and the lock will respond to the transaction and let them into your house.

I know that sounds scary, but that’s basically what you do with Airbnb anyway. You put a key in a lockbox, issue the code to the person who is renting the house from you, and they get access to the house. So it’s really no different.

With Uber, all they do is just match Drivers to people. You could do that in a contract if you wanted to.

IoT

So, what about the IoT (Internet of Things)? The lock example is a really good way of doing things, it’s a great example of how IoT can work more effectively. If Ethereum, or anyone, solves the scaling problem that applied to Ethereum, you can imagine it will be used for many IoT things.

I met a representative from Slock It at a conference last year, and he was talking about this grand vision of; “Hey, I’m in my electric car. I pull up to a set of lights where under the floor there is an induction plate, and I can push a button in my car that says ‘you should charge at any available induction plate’ and they charge a penny for any available induction plate you access. Effectively, it will pay via micro-transactions for every couple of joules of energy it got.

That's' very possible if the current problems we are facing with scaling are solved. Once we can figure out how the get blockchains to do hundreds of thousands of transactions per second, this can easily become reality. And it's really awesome, right?!

Questions from the audience

How do you get smart contracts to talk to each other? On the classic net you have APIs and integrations, so can smart contracts communicate?

Yes, smart contracts can communicate with each other. Basically, you just include the source code of the other smart contract in your application or its interface, and then you can instruct it to use a specific method on a specific contract.

Would each communication cost gas then?

Yes, but it's always the person creating the transaction who pays the gas, currently. There are things that might change that so the contracts can pay their own gas, but currently yes, if you want to interact with a contract, you pay the gas.

When is Casper coming?

I don't know. When it is ready.

What is Casper?

Casper is Ethereum's upgrade to proof of stake. To explain what that means, currently the way that the vast majority of blockchains work, or the way that they validate transactions and block to make sure that nobody is stealing money is via this process called proof of work. Which is essentially proving that you've wasted a massive amount of electricity, roughly as much as is used per annum in Ireland I've read. What happens in a basic sense is that you say to the rest of the people on the network 'Hey, I've wasted this much electricity, and I say all these transactions are valid.' and they more or less say that 'We agree that you wouldn't have wasted that much electricity for nothing, so we believe you.'

That's essentially how it works. That's really very wasteful, as I'm sure you can understand, which is why Ethereum wants to transition to proof of stake, which instead of using just electricity, it would use peoples deposits. So you would put in say 1,000 Ether and you'd lock it up in a smart contract, and you would say 'Hey, I'm willing to validate blocks.' at which point the Ethereum network would call upon you yo validate blocks every once in a while, and you would say 'I think that these transactions can go in this block, and all is good.'

Now, you're not the only one doing this work at this time, so if you're found to be wrong, the network will confirm with others at the same time if they agree with your result. If the other results from the network say that you're 'lying' your deposit will be deleted, and you lose all your money. So, it's a very good way of making sure that people who are stakeholders in your system are being truthful.

That's the idea behind proof of stake. You would use nowhere near as much electricity, you could reduce latency times because you don't have to do a bunch of mining, which could effectively increase throughput as well.

So, what are the benefits? Is it just the fees that these stakeholders would be taking?

Yes, there would be fees. The fees are roughly from 2% to 3% that people currently are estimated to be claiming on staking each year.

Can you run a VM on the Ethereum virtual machine to give you access to your whole operating system? For example, say I wanted to run a whole, bunch of DApps on the Ethereum network, would that be possible, or would I have to write all of my smart contracts using Solidity or Vyper?

The reason why you possibly couldn't run a fully fledged VM on the Ethereum network is that you would have to pay for all the processing. The limitation on complexity is largely based on the limitation of how much you are willing to pay, and bot size, so it would be very unlikely that you could run a VM on a VM. It would be too expensive, however, you can write programs in languages other than Solidity if you wanted to, there's also Vyper, Bamboo, and LLL. But the challenge at this time is that none of them are as fully features as Solidity, or as supported. So if you if you do want to write programs, Solidity is the best way to do it. It's really very easy if you already know JavaScript.

Yes, I've been playing with Solidity, it's really straightforward, but the question was more coming from the perspective that there's already this infrastructure that we've all created on the centralised web, would be some way to pul it over to leverage some of that instead of having to build everything from the ground up?

You can absolutely leverage it through things like Oracles if you are using external APIs and passing that data back on to the blockchain. The question I have is 'Why would you want to?' The reason why so many people like this transition to a decentralized web, almost a web 3.0 is that we are taking out all of the middlemen which give us all of these services. People are kind of saying 'We don't want that anymore.' and they want to build their own systems, which is why more people want to know the answer behind 'What is Ethereum?'.

I guess the followup from that is that the reason you would want that is for reliability, so if availability was distributed, and I don't know how much availability can be guaranteed, or even transaction performance, for something that is business critical and you want to perform transactions for one element, you might want to communicate externally or leverage some of the existing infrastructures you choose, like production systems.

Yes, you're absolutely right, I would say that Ethereum is not ready to be used in production systems. It's just not scalable enough. If you want to put through 1,000 transactions a day as a business on Ethereum that could be iffy. 1,000 transactions a second, just not possible at this stage.

To achieve this you're going to need a private chain, your own which has been forked from Ethereum. Parity's proof of authority consensus algorithm is really good at that. People have built very high-performance blockchains just using that algorithm. The Ethereum Virtual Machine is incredibly powerful, the Ethereum public network is not so powerful.

Can you talk more about security, tell us about the difference between traditional transactions and Ethereum, why is it more secure?

Ethereum, the protocol itself, and the network has proven itself to be roughly half as secure as Bitcoin if you take its market cap as a measure of its security. There is an incentive to hack the protocol of Ethereum, and that is the however many billions of dollars are stored on it. The smart contract layer and the programs that run on top of Ethereum are a completely different kettle of fish. Because you are providing an interface for people to interact with the Ethereum blockchain, you are also providing an attack surface for them to maliciously modify the state.

The contracts themselves are the things which need to be audited, they are the things that need to be looked at and heavily scrutinized as to the level of security. You're probably aware of some of the more famous hacks that have happened on Ethereum. They are purely exploits to smart contracts. The protocol itself has not been exploited. It's purely smart contracts that have either been poorly written, or just not audited correctly, or not setup correctly that have been exploited.

From an Investor's perspective, what potential do you see Ethereum having in the future?

I'm not here to give investment advice. I don't want to speculate on how valuable it is, or how valuable it should be, sorry.

Are smart contracts reliable? Is there a dispute resolution process?

Basically, smart contracts are as reliable as you code them to be. If you program really good A+ computer code, then it's reliable. You can get around dispute resolution by having something like multisig, where if you are doing a transaction between two parties, you just specify a third party who is trusted.

But you don't necessarily need them to complete a transaction with a third party because if the two parties who are in the transaction agree, they can just complete it themselves. You can have optional dispute resolution, as much as you can with PayPal, eBay, just as long as you know who that third part is. The dispute resolution mechanism is the Byzantine Fault Tolerant algorithm that is proof of work.

How do you implement something like continuous delivery or updates to your product in a way that all the users of your DApp are using the same version of the API?

By using a proxy, like a business logic contract, and on the front of that you have a front facing contract, where a user interacts with the front facing contract which uses whichever backend contract the Admin specifies.

So is the back end contract centralized in that case?

Presumably, if you are doing continuous integration you would want it to be.

So you described Ethereum as a computer, did you mean that in a hardware context or a networking context?

It's a virtual machine to be more specific. Ethereum is a piece of software, running on a bunch of other peoples computers, and it runs a virtual machine that processes bytecode in the same way on everyone's machine.

One virtual machine distributed across multiple hardware?

Correct.

And the communication between one virtual machine and another virtual machine?

It's TCPIP, a network layer.

Exploring the Code

Let's have a look at the concept of code. We're going to consider the function of a really simple escrow service, like PayPal. What escrow is mutual payment protection, basically when two parties want to transact, they want somebody in the middle to make sure that neither of them gets ripped off.

The seller asks for payment in escrow, effectively, give the money to a trusted third party, when they get the money I give you the thing, then they release the money to me once you confirm that I've given you the thing. This is a really simple explanation of an escrow, purely to give context to what we are exploring here in answering the question 'What is Ethereum?'.

Ethereum's programing language is called Solidity, and compared to the other languages out there this has more features and is much nicer to work with, and as you can see below it is much nicer to look at also. Despite the Developer Tools for Ethereum being around for about two years, they are still quite limited at this stage.

what-is-ethereum-advanticle.com_-2.jpg

This is an example of a simple contract, where there are normal variables. In the case of an escrow smart contract, there would be two variables at the top. There would also be the address of the Seller (their Ethereum wallet public key or address). There would also be a mapping, like an object of addresses to number on signages. These would tell us the address of any buyers, and how much money they have sent. This is followed by events which tell the outside world what has happened.

Next, there is a constructor, this is something that only ever runs once, and runs from the context of whoever deployed the contract. So, for example, it could be in this instance the seller, and we are saying that the seller is whoever deployed this contact.

There can be other functions which can be public, such as 'buy' which is payable, this means you can send money through this function. It logs that somebody has bought a 'thing' and then it puts the message.sender to the Buyer and says 'add the value that they sent to the Seller's balance' in the contract.

Then there is a final function called 'release' which makes sure that the release of funds is successful, and it says 'regarding this Seller, send them the money that the Buyer sent us.' The Buyer calls the release function, and it should be sending the money to the Seller that the Buyer has sent to this function.

When a contract is in development and testing you'll be working with the deployment of bytecode, which are simple machine instructions. This is what every VM looks at and interprets and runs. There is also an ABI, Application Binary Interface, for anyone who wants to interact with this contract from external libraries. This just tells that other library what functions the contract contains.

This would normally be run on a public testnet, on localhost, something like Coven, which is maintained by a proof of authority consensus algorithm, it is really quick with a block time of about 4 seconds, so you can send transactions really quickly and run demos to figure out if there are any issues. You could run this on a public main net, but you will be exposed to all of the other aspects of working out in the open online.

When testing the amounts will appear different as the VM only deals in integers (whole numbers), so 0.5 Ether, in this case, will appear as a value of 5. One Ether can be split down into one times ten to the eighteen units. Lots of tiny little units.

Once a contract is deployed, there is no way to change what is in it, regardless of which party you are in the transaction. The Buyer and the Seller have no capacity to change the code. The contract has full custody of the money, from a programming perspective, I have to tell the contract what to do with the money. I don't send the money from the contract to the other party, I program the contract and tell the contract I want it to send the money. The contract acts as the escrow agent in this transaction. It has custody of the funds.

The concept that I want to get across is that once a contract is put on the blockchain it is unable to be modified. There is no way that anyone can change that it does anything. The Seller deploys the contract, the Buyer chooses to enter into it. After the Buyer enters into the contract they no longer control the funds. The fund can nowhere other than what was specified in the contract. The code is there and the code is there for good.

Questions from the audience

So does the code have a similar relationship inside Ethereum as a DApp or does it sit on top of Ethereum?

It's sitting inside the Ethereum Virtual Machine. It now occupies a part of that machines state, and it will forever if it does not have a 'kill function' included. This can present a problem if there is poorly written code as it can, among other things, clog up the public test net.

So why would you build on top of the Ethereum network?

Because you can do powerful things like those which we have discussed. You can build contracts that sit inside the Ethereum machine that cannot be modified once they are deployed, and anyone can access them.

Solidity object orientated code?

Yes.

So if that smart contract is there forever on the Ethereum blockchain, is that consuming computer resources, with Ethereum being a 'computer', and who is paying for the resources that that smart contract is consuming?

Is it consuming resources, kind of. Who is paying for the cost, whoever chooses to use the contract. If I choose to make the smart contract do some things, make it execute some code, change some storage, change some state, then I pay for that. I pay in Gas, which is the fuel or fee required to process a transaction on the Ethereum network. That fee goes to the Miners, they are the ones verifying the transactions. I pay a tiny bit of Ether which gets sent to the Miners, they are the ones verifying those transactions and they get all of those fees. That goes to them, as well as the block reward for finding a new block.

Is that a one-off payment, or is that a recurring payment?

Is it a one-off payment and that contract uses no more computing resources than when it is running. While it is running it is the only time that it is using the resources on the Ethereum network.

What is the security of the Ethereum network into the code?

Each of the transactions, all of the operations within those transactions are verified in exactly the same way that Bitcoin transaction is verified; by everybody else in the network. The output of that transaction is verified by everybody, in the same way, that a transaction of value is verified, for example, a transaction of Ether from me to somebody else. It's all verified in the same way.

So if you wanted to have recurring payments, how would you set that up?

You would write a script that sent transactions every now and then.

How would it know when to be sent, say on a subscription basis for periodic payments?

You could set the service up on a 'user pays' basis, so when the user has consumed what they have paid for and have not made another payment, you stop providing them with the said service until they pay again. So when they pay, you set a variable to 'true' so they can use the service for that period, and you set a 'last paid date'. Every time they use the service you check the 'last paid date' and if it has ticked over for a month and they are out of date you don't let them use the service.

So they have to manually pay every month?

Yes. Because people have custody of their own funds. You could lock it into a contract which the service provider would control and they would give themselves the money periodically, but, that kind of against the spirit of things. I wanted to stop using that service, I should just be able to stop paying for it.

But what about in scenarios where there are distributed payouts, you wouldn't want to have to make payments manually everytime?

No, which is why you would develop an application which would just pay them all.

So how do you feel about the news that China and South Korea are thinking about banning cryptocurrencies, and how do you feel about banks wanting to create their own cryptocurrencies?

It's not impossible to ban them, I'm sure that you could find a way to filter cryptocurrency transactions, or access to cryptocurrency networks and filter those out of your national internet traffic. I believe it's not going to happen though. These governments are going to realize that these things aren't going away. How long has Bitcoin been around? How long has Ethereum been around? These things aren't slowing down, they are picking up the pace.

There are now more Developers working on Ethereum, not to mention other projects, than there ever have been, and next week there will be even more. As more people understand 'What is Ethereum?' thed demand is increasing with the use case for Ethereum. This train is not stopping. If these governments want to remain relevant they will have to accept them, and they will have to find a way to utilize them and benefit from them instead of banning them. Banning them is completely foolish.

How do I feel about banks wanting to create their own cryptocurrencies and the effect that will have? There may be benefits about the access and speed, but until somebody figures out the scaling issue, the blockchain will not be able to do what the Visa network can currently do. You could have a private blockchain, but then that's no different than using your Visa card, and I don't know why you would do that. A private blockchain for a bank seems really really silly. A public blockchain for a bank is technically unfeasible right now. It will be interesting to see where it goes in the next 18 months, but I don't see a bank really having any impact on this space.

Can a smart contract make a request for money rather than just accepting it?

Currently no. Currently, contracts can't ask people for money, or to pay them. They can only accept money when it is given to them.

So one of the main benefits of the blockchain is to remove the middleman, like Lawyers and Accountants, but when you create a contract you have to pay for Gas, so you are still paying a middleman effectively, right?

You pay for Gas when you interact with the smart contract, and the cost involved is only when you do something. And comparatively, it's also incredibly cheap right now. I would probably pay a couple of dollars to activate a smart contract compared to hundreds of times more than with a Lawyer or an Accountant, per se.

Do you have to pay Gas if you create the smart contract?

You have to pay Gas when you deploy the smart contract, and when you interact with it.

Is there a cost to the Miners to keep their doors open?

The Miners are paying for their electricity and hardware costs. Power supplies, CPUs, and graphics cards will need to be maintained and upgraded for the Miners to stay operational and profitable, and these come at a significant cost right now.

Is Solidity native to only Ethereum?

Possibly, but if the blockchain has an Ethereum Virtual Machine, or any Ethereum Virtual Machine, you could compile Solidity down to its bytecode. It's all in how you write the compiler.

Why is the blockchain not able to scale at this time?

The reason the blockchain is not able to scale currently is that the size of the blocks are increasing and the time that it takes to broadcast the block to the network is also increasing. So let's say I mine a really small block and sent that to the network, others can download it and verify it really quickly because it is tiny, say about 2 bytes, but if I mine a very large block with a lot of transactional data in it that is 8 megabytes in size, that takes a bit longer for people to download.

If I just want to keep scaling, and I say 'Hey, let's have a block that's a gigabyte in size, and we can include all the transactions that might be necessary' it is going to take people much much longer. When people don't have the current block, they are building on an old chain. When they build on an old chain and they then send the block to the network and they say 'Hey, this is actually the real chain.' the Miners who have the current block are going tto say 'No, it's actually not.' and their block is going to get rejected and they have wasted all that electricity mining on an old block when they could have been mining on a new block.

So for that reason, Miners probably wouldn't want to participate in a blockchain that was like that. They would most likely lose money. That's one reason, but there are tonnes of other that we don't need to get into. So solving the problem of scaling is quite difficult.

What's the difference between Gas and Ether?

Gas is a fixed unit. The bytecode you saw on the previous page for the illustrated contract, that bytecode is translated by the Ethereum Virtual Machine into machine code instructions. If you have never seen machine code instructions it's like interacting with memory directly.

Each of those instructions has a static Gas cost. So let's say an 'add' instruction costs 100 Gas, a 'multiple' instruction costs 1,000 Gas, that then creates the Gas cost, as a fixed Gas cost for a transaction. So if you're doing the same transaction over and over, it's going to cost the same in Gas. That Gas is related to Ether by a floating value called 'Gas Price' which is in a roundabout way set by Miners. The Miners say how much Ether by units of Gas they are willing to accept to mine a transaction. You can find out how much Gas is currently required per transaction on ETH Gas Station.

How complex can a smart contract be?

It can essentially be as complex as the block Gas limit. So there is a limit on the units of Gas that can currently go in a block on Ethereum, which I think is about 8 million Gas, if you build a contract that has a function that tries to use more than 8 million units of Gas, by virtue of all the machine code instructions that it is using, it can't execute.

Would it be fair to describe a DAO as a series of smart contracts, or is a DAO a distinctly different thing?

It wouldn't be fair to describe a DAO (Decentralised Autonomous Organisation) as a series of smart contracts, but you could make a DAO with a series of smart contracts. You can have a DAO without any smart contracts, but you can make one with a series of smart contracts. Linguistically it's not a series of smart contracts, but you can make one with a series of smart contracts.

Is Bitcoin riding on the Ethereum network?

No.

Can you kill a contract?

Yes, you just need to write in the suicide instruction into the code, then you have to call it. This needs to be done before you deploy the contract. You can't write a suicide instruction into a contract after it has been deployed. Once you have sent it out into the wild, it's out there in that form and is unchangeable, you can't update it after the fact. And that's good because if the suicide instruction is written into the contract and people can see that it could die at any point, they are less likely to experience a loss through unwittingly leaving money in it. If you don't write a suicide instruction into the contract it can never die, and that may be a good thing too. It depends on the purpose and the function of the contract.

Is there a limit to the number of smart contracts you can put onto Ethereum?

Probably, technically no. It would depend on the capacity of people's storage that the blockchain is stored on. Currently, the Ethereum blockchain, if you download all of it, is about 160 gigabytes, maybe more. That's a full node with all of the ancient blocks, however, a lot of the node software does include this thing called 'pruning' which means you only need to store the last 20 or 30 states of the blockchain. If you need to go through the archives you can, but it's heavily pruned so the instant access is only for the last 20 states.

Why would I write a smart contract if the money goes to the Miners? In my smart contract disrupts, for example, Uber, if I don't get paid for writing the smart contract, why do it?

This is exactly the reason why tokens and ICOs (Initial Coin Offerings) exist. People build a token, they make it integral to that smart contract, they make it so that you cannot use that smart contract without that token, and then they sell it to a bunch of people and they make a lot of money. That's kind of how to distinguish between a good token model and a bad token model as well. The use case is very important. The token needs to be required to use the platform, and the platform needs to be necessary and useful.

But someone could still take my idea and copy it, market it really well and effectively steal my idea?

They could steal your idea, but a lot of these are built on network effects, which is that 'We have the best Developers. We have all of the people that are going to make this thing a success. You should trust us and buy our token instead of someone else's.' So the reason they would trust your company is for the network effects.

There's nothing really stopping someone doing that?

Correct. There's nothing stopping someone using the same tech as Uber and releasing it, but you would use Uber because it has more Drivers.

Is there a way to stop a smart contract, say if someone hires a Hitman or an Assassin, how can you stop that. Can Developers do something?

Developers can't stop a 'bad' smart contract. This is where it gets kind of crazy-interesting I suppose, good and bad are concepts, right? Miners technically could blacklist transaction to that address and they could refuse to mine them. It's not in their best interests to do so, because someone using the network to hire a hitman may be prepared to pay a lot of money to get somebody killed. The thing is with blockchain is that you have to tell them what the truth is.

I was at a talk of Vitalik Buterin's where somebody asked him a similar question, and what he said was 'If somebody put a hit on me, I would just go to the Police and say 'Hey, Policeman, will you just say to this smart contract that I'm dead, and then we'll just split the money?'. Smart contracts don't know what is happening in the real world, you have to tell them. So you could just find someone who is willing to pretend that you're dead, and you split the money.

Is Ethereum's value proposition that you can build on top of it?

Pretty much, yes.

A bank can reverse a transaction after it has been transmitted, whereas Ethereum can't, so what happens in a case of 'error', can you transmit a second contract that will make the first one redundant?

No, once you have transmitted a contract it cannot be undone.

Why is the price of Ether going up?

I can't give financial advice, if we had to speculate, I would say 'speculation'.

Is there a hard limit on the number of Ether?

Not technically a hard limit, there is a theoretical limit of 118 million or something like that, but there have been conversations around having an inflation policy because if we want to use Ether for anything useful then it would be handy if it stayed stable, and it didn't keep jumping in price and the Gas doesn't keep jumping in price. Yes, there is no hard limit, there is a sort of soft limit, but there are also talks to have inflation. It may or may not happen. No one really knows.

How would inflation happen?

Inflation would happen by a hard fork, changing the protocol. There would simply be more coins added. Hopefully, this helps you understand the answer to your question 'What is Ethereum?'

This was originally posted on my blog at TechMagy and shared here to add value to the Steemit Community.

Fore more articles in the cryptocurrency space, check out the following:

Sort:  

You have a minor misspelling in the following sentence:

Is there a way to stop a smart contract, say if someone hires a Hitman or an Assasin, how can you stop that.
It should be assassin instead of assasin.

All fixed potato head bot thingy, thanks again.

I think you should avoid using the word 'Nazi' as it is offensive to Germans who have been born long after WWII, and to those who were against what was happening in that time. I've been present when this term used loosely in conversation with Germans who have emigrated to Australia and are in their late 20s who are affected by this, as if they themselves were to blame for the actions of previous generations. They have expressed that they feel slighted by this part of the history of their country, and are condemned to pay for the actions of others indefinitely.

We do need to keep in mind that this was an unacceptable thing, but we also need to let the wounds heal and not use a term that hurts others in the process, otherwise, we are no better ourselves. Maybe you should change your name to 'grammarpolice' instead...

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.034
BTC 63453.92
ETH 3283.73
USDT 1.00
SBD 3.89