Ethereum [Wallets]
A Blockchain Wallet is Software you use to communicate with your record of accounts and the blockchain. Including Spending or Receiving Tokens.
Wallets are often attached to the main client software.
The Ethereum Client
The Clients purpose is to allow everyone to verify that the protocol is unambiguous
There are multiple Ethereum clients and implementations across Operating Systems
The Client lets you download a copy of the entire Ethereum Blockchain.
Geth _> The most commonly used Ethereum Client
Solidity _> High Level Programming Language for Writing Smart Contracts on Ethereum
The Ethereum Virtual Machine [EVM]
The EVM is a sandboxed runtime environment for Smart Contracts1
EVM code:
This is a Stack Based Bytecode Language used to Write Ethereum Smart Contracts
Components:
Word Size (32bytes)
Paradigm _> Stack-Orientated Programming Model
Instruction Set _> Minimal, 256-bit words (Basic Data Type), Standard Operators
Global Variables _> Can only access the hashes of the most recent 256 Blocks2
Writing your own Contract:
(this will be covered in detail in Course 5)
Storing Data
Operations:
Message Calls _> Call another Contract, Depth Limit of 1024, (Loops preferred to Recursion)
Code Libraries _> Contracts can dynamically load code from other addresses
Logs _> Indexed Data Structure, accessible outside the blockchain, contracts can’t access it
Events _> Can use to implement blockchain explorer functionality
Removing Data _> Contract Self-Destruct Operation, storage/code removed from the state
Values:
Identifiers restricted to ASCII Character Set
String Variables are able to store UTF-8 encoded data
Structure:
Stack _> Where the Computations are Performed
Storage _> The Persistent Memory
Memory _> The Temporary Memory
Node Software
Mining Nodes
Miners have Control over the order of received transactions3
Miners can partially control block hashes and influence timestamps
Client Nodes
Static/Trusted/Boot Nodes _> Are peers that you set so that you always want to connect to
Full Nodes _> Full copy of the Ethereum Blockchain
Archive Nodes _> Can keep contract storage and code indefinitely
Wallet Software
All Ethereum based tokens work in every eth wallet automatically, but won’t appear unless the user configures their wallet to listen for the particular token contract by watching the Token Address.
Types:
Desktop, Web, Hardware, Paper
Centralized, Decentralized, Local
Official Wallet:
Mist/Ethereum Wallet _> Desktop, Meteor Based, Browse/Use Ethereum DAPPs (Dev-Only)
https://github.com/ethereum/mist
++ No official wallet for Mobile Devices ++
Popular 3rd Party Wallets:
Exodus Wallet _> Desktop, Multi-Asset Desktop Wallet
Jaxx _> Multi-Asset Desktop and Mobile Wallet by Anthony Diiorio, Co-Founder of Ethereum
Trezor _> Secure Hardware Wallet
Mining Ethereum
Incentive _> Miner ether = Securing the Network = Verifying Computation
Functions _> Creating, Verifying, Publishing, and Propagating Blocks in the blockchain.
Mining Checklist:
Block Rewards:
The only mode of issuing new ether, post launch, is from the block rewards from mining
Normal Block
Valid Uncles
Protocol:
Ethash4 _> memory hard, ASIIC resistant, difficulty set to produce blocks every 12 secs
Ethash DAG _> Directed acyclic graph
Hardware:
Designed for GPU Mining to be the most efficient way
1-2GB RAM per GPU
Software:
Eth++
ethminer with geth
ethminer with eth
GHOST Protocol
Greedy Heaviest Observed Subtree [GHOST]:
A New Policy for the selection of the main block in the tree
Uncles
Contains old data that was orphaned off of the main chain
The Convergence of History7:
All Nodes eventually adopt the same history
Introduction to Ethereum: Assignments Pt. 5
Basic Computer Science (how computers work)
Turing Machines, Programming Loops
https://solidity.readthedocs.io/en/v0.4.21/security-considerations.html
https://solidity.readthedocs.io/en/v0.4.21/
https://github.com/ethereum/wiki/wiki/Problems