Table of Contents

Blockchain

General Notes

function MegaContract() public payable {

Security

To do anything that requires gas, either unlock the account beforehand with the password:

var address = "...";
var password = "...";
var web3 = new Web3();
var unlockAccountResult = await web3.Personal.UnlockAccount.SendRequestAsync(address, password, 120);
Assert.IsTrue(unlockAccountResult);

Or use the private key to create the Web3 object:

var privateKey = "...";
var web3 = new Web3(new Account(privateKey));

Questions

Tool Set Install

  1. Metamask Chrome extension.
  2. (Visual Studio Code)
  3. NodeJS
  4. [Admin PowerShell] Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  5. Chocolately
  6. [Admin PowerShell] choco install git -params "/GetAndUnixToolsOnPath"
  7. [Admin PowerShell] git config --system http.sslverify false
  8. [Admin PowerShell] npm install -g node-gyp
  9. [Admin PowerShell] npm install --global --production windows-build-tools
  10. [Admin PowerShell] npm install -g ethereumjs-testrpc
  11. [Admin PowerShell] npm install -g truffle

Commands

truffle init Set up project.
testrpc Start RPC.
truffle.cmd comp Compile everything.
truffle.cmd migrate Deploy everything.
truffle.cmd console Console mode (to interact with contract).
[Truffle Console] var hw Create a variable to reference our contract.
[Truffle Console] HelloWorld.deployed().then(function(deployed){hw=deployed;}); Get the reference (note that it is async).
[Truffle Console] hw.SayHello.call() Call a read-only method on the contract.
[Truffle Console] hw.sendCoin('0x8...', 100) Call a modifying method on the contract.
[Truffle Console] .exit Exit console mode.

Implementations of Ethereum blockchange

Implementation Language Pruning Notes
Geth Go Yes
Parity Rust Yes
EthereumJ Java Yes
Eth C++ No Reference implementation is meant for developers only.
PyEthApp Python No

Glossary

ABI Application Binary Interface. Is basically how you call functions in a contract and get data back. Like a WSDL or .h file in C.

VS Code

Use the Solidity extension.

Nethereum

Start with Nethereum.Web3.

Tutorial

Video is here.

  1. [VS Code] Write contract
  2. [VS Code] Compile contract
  3. [Command Line] Start Geth
  4. [VS] Create unit test project.
  5. [VS] NuGet install Nethereum.Web3 + dependencies.

Dev VM

Geth's encrypted accounts key store files can be found in %APPDATA%/Ethereum.

Run Geth

  1. Open a separate DOS ConEmu.
  2. [ConEmu DOS] Run the command, C:\Users\TallGuy-DevVm\Dev\Geth\startgeth.bat
  3. Open a separate Admin PowerShell ConEmu.
  4. [ConEmu PowerShell] Run the command, (Get-Process geth).PriorityClass = "BelowNormal"