2017 My first steps into Ethereum world
Of course I’m referring to the first telephone conversation, illustrating what I felt when I managed to send a custom coin to somebody (actually: from one of my test accounts to another) for the first time.
And of course you are smart enough to notice that this is a false analogy, as I have not invented Ethereum, just started to play with it.
Anyway, it was a big relief, when I succeeded after several hours of failed attempts — which you can actually spare for yourself (more on these attempts later).
When you start thinking about blockchain programming, you should bear in mind, that
there are two different stages, which are very different in complexity: writing smart contracts, and creating distributed applications.
1. The easier adventure: writing and running smart contracts.
Smart contracts describe the business logic of your applications, eg how you want to issue a custom coin, what actions with your coin you want to support for its holders, etc. Or the rules of a marketplace or a voting system. The contracts can be written eg in the Solidity language, which is a variant of JavaScript.
The contracts can be deployed with existing applications, like the Ethereum Wallet to the test Ethereum blockchain for testing, or to the live Ethereum blockchain for live usage.
In order to start playing with smart contracts, you don’t need anything more than that.
If you are proficient in JavaScript, you just need to read through the syntax rules of Solidity, and you are good to go.
If not, but you are familiar with any other programming language (like me with Python), you will be able to get by quickly by analogy, after putting some effort into understanding the basics of JavaScript.
(If you are not familiar with any programming language altogether, I cannot help you, you should start a crash course on JavaScript. It’s easy, and very useful for other purposes anyway. In other situations I would recommend Python as a first programming language to learn, but if you are into Ethereum, JavaScript is the right choice.)
In any way, it is good practice to start with fully functional contract examples, which you can copy + paste modularly.
You can find tutorials on the Ethereum web page, which guide you through the process of building different kinds of contracts from the basic “minimum viable” versions to quite complex setups:
. They have a tutorial for issuing a new currency.
. Another one shows you how to set up a crowd sale platform.
. And here is a third one on how to create a voting system aka DAO (= Distributed Autonomous Organization).
When you start reading forums, eg on the Ethereum web page, you will surely see posts very soon suggesting you deploy your contracts with an application called testrpc (RPC standing for Remote Procedure Call) to the test blockchain, and create distributed web apps to interact with them using the Truffle framework.
Don’t start with this.
Believe me, it adds unnecessary complexity to your initial steps towards understanding the basic mechanics of smart contracts.
Been there, done that — more on that later.
You should do the following instead:
In this way, you will also have your “Mr Vitalik .. come here, I want to see you” moment, eg when you send coin from one of your account to another, very soon.
The Ethereum Wallet is just the first step. If you want to get a lot of users who use your Ethereum based system, you will have to build apps (so called distributed apps of DApps) for them as an interface. More on that later.