Install ethereum by following these instructions:
For example on Mac:
brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity
brew linkapps solidity
This installs geth an ethereum public node and solc the solidity compiler
IGNORE GETH STUFF, geth will take a long time to run and it takes up a lot of memory on your computer!!! Skip to testrpc for dev purposes
You will have to wait a while for the sync to happen because it is downloading a copy of the ethereum blockchain. The decentralization aspect of the blockchain means each peer has a copy of the blockchain.
Currently following this tutorial: https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2
For development purposes you can download test rpc via node package manager:
npm install ethereumjs-testrpc web3
This will download the packages into a local directory
Try starting testrpc by running: node_modules/bin/testrpc
If you get an error like this: $ testrpc /usr/lib/node_modules/ethereumjs-testrpc/node_modules/ethereumjs-vm/lib/index.js:29 function VM (opts = {}) { ^
SyntaxError: Unexpected token = at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:373:25) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object. (/usr/lib/node_modules/ethereumjs-testrpc/node_modules/ethereumjs-vm/lib/hooked.js:6:12) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10)
You'll need to update Node to version 6 like so: brew upgrade nodejs Look here for the solution:
I've found this tutorial works pretty well so far: https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2
However the instructions for compiling a contract do not work. You will need to compile the solidity contract into an ABI. You can do this using remix or solc See here for more information
To compile with solc use this command: solc --optimize --combined-json abi,bin,interface Test.sol > test.json
Then in node use JSON.parse(test.json) to read the abi interface
Once you have the abi parsed you will need to wait for the event to be emitted: https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e
You can set the event in the smart contract or you can wait for the contract to be mined. And once that happens you can make all sorts of calls that you want.