Short chit-chat about Ethereum
Solidity is a programming language based on contracts as opposed to objects and is the backbone for making applications that run on the Ethereum blockchain. Ethereum is (during the time of writing), the second most popular cryptocurrency after Bitcoin.
If Bitcoin is a speculative gold currency, Ethereum is the up-and-comer hoping to fulfill the original dream of decentralization.
Writing programs in Solidity and producing decentralized applications is not an easy feat. Ethereum was created in 2015 which is extremely young for a technology. Bitcoin, by comparison, was made in 2008, however it currently can only handle simple programming scripts.
What this means for Ethereum is that any tutorials written for it get outdated extremely fast. Already certain important tools like Testrpc that emulate the blockchain for private testing have been renamed to Ganache.
Thinking in terms of blockchain applications is complicated. Even the traditional Hello World becomes confusing in Solidity. Writing the code is simple, seeing the Hello World in action is not.
Some terms for my own memory and maybe yours (and potentially to keep updating):
|Solidity||A contract-based programming language similar to C/C++ (has structs and the like.) Most popular contract language at the moment. You can make your own defined coins and immediately compare it to Ether.|
|Dapp||A decentralized application running on top of the Ethereum blockchain is the common explanation, but it doesn’t have to be Blockchain or Ethereum based.|
|Ether||The actual crypto money used in Ethereum that you can exchange, mine and watch on the market.|
|Gas||Here’s where the complexity of Ethereum begins to add up. Gas is a seperate, monetary calculation to pay out the blockchain as a thank you for running your Dapp. Helps allocate resources and hamper spam on the Blockchain network.|
|Gwei||The smallest denomination of Ether you can get. Equivalent to the idea of a penny.|
|Vyper||A competing contract similar to Python that has some interesting differences.|
|Ganache||Formerly TestRPC, now part of the Truffle suite of frameworks. A blockchain emulator that spits out premade Ethereum addresses for testing and mimicks mining and other blockchain activities.|
|Geth||Another blockchain/ethereum node emulator but implemented in Golang. Maintained by Ethereum.|
|Truffle||A popular framework that generates, compiles and migrates solidity contracts, testing framework and other extras.|
|Drizzle||A collection of front end frameworks for better visualizing contract information and interaction to make a user friendly Dapp. Uses Redux and can integrate with React applications.|
|Drizzle box||A useful box that unpacks a fully functioning Dapp using Drizzle and Truffle for better clarity of how Dapps work.|
|List of Dapps||A useful website that showcases Dapps for better understanding of current use.|
Hopefully this list clears up some terms and gives out some useful links.
Back to the Solidity Documentation.
Setting up Solidity for bug fixing on a Windows machine was maybe less frustrating than most projects. There’s a very nice building from source explanation for Solidity developers that really cleanly spelled out the setup for all environments. Personally would recommend doing the building from Command Prompt, except maybe for the git commands.
The issues began mostly during the contributing part, where they go into running compiler tests and such.
Ran into a few Yak shaving issues on this section that hopefully either I would open an issue or they will fix themselves:
- Would be nice to split those command into Linux and Windows (and Mac if needed) sections.
- scripts/tests.sh has this error via Git Bash for Windows:
$ scripts/tests.sh Running commandline tests... /d/solidity Checking that the bug list is up to date... /usr/bin/env: ‘python2’: No such file or directory Commandline tests FAILED
Properly installing Python 2.7 doesn’t fix this issue. If I find the answer to this, I will update the post.
The command that is supposed to run the tests without any extra application installs is a shell based file:
./scripts/soltest.sh --no-ipc --no-smt
Meaning Windows can’t run it. Haven’t tried it with Cygwin installed but running it on Git Bash fails and gives this error:
$ ./scripts/soltest.sh --no-ipc --no-smt ./scripts/soltest.sh: line 43: /d/solidity/scripts/../build/test/soltest: No such file or directory
I was unable to fully understand why shell scripts don’t run on Git Bash because that file certainly does exist, at least in the Solidity folder at that path location.
Here’s How Windows Developers can run the Solidity tests
You have to use the Soltest generated by the Cmake in order to run it.
Git Bash for Windows Soltest command:
./build/test/RelWithDebInfo/soltest.exe -- --no-ipc --no-smt
Windows Command Prompt Soltest command:
.\build\test\RelWithDebInfo\soltest.exe -- --no-ipc --no-smt
Hopefully this extra information will shave off a little more of the Yak for Windows Solidity developers.
The Doc pull request is located here.