Doing Smart-Contracts with Ethereum
						  
				
				
						 Ethereum
						  
						 An open software platform based on blockchain technology that enables developers to build and deploy decentralized applications.
				
				
						 Blockchain blocks
		        	 
				
				
						 There are two types of accounts in Ethereum
						 
								 - EOA: An account controlled by a private key that has the ability to send ether and message from it.
- Smart contract: An account that has its own code, and is controlled by code.
What are Smart-Contracts?
						 Exchange money, property, shares, or anything of value in a transparent, conflict-free way while avoiding the services of a middleman
						  
				
				
						 What are the Advantages?
						 
				         - Accuracy
- Transparency
- Clear Communication
- Speed
- Security
- Efficiency
- Paper Free
- Savings (no intermediaries)
- Trust
Smart Contracts and Blockchain Nodes
					What's executed and when?!
					Every node has to verify the results of a transaction which invokes a smart contract. The result is that at least every full node will execute the code.
				
				
					When a node gets a transaction, it only does a few basic checks first, such as:
					    
						- 1) is the signature valid?
- 2) does the sending account have enough Ether to pay for the gas?
- 3) is the gas below the block gas limit?
Solidity
						   
							 Solidity is a contract-oriented programming language for writing smart contracts.
							 Which is like JavaScript and has .sol as a file extension
				
				
						 Truffle
		        	 
							Development framework for Ethereum.
				
				
						 Genach
						 	 
							 Local blockchain for development.
				
				
						 Metamask
							  
							 Browser plugin: Brings Ethereum to your browser
				
				
					   Action: Smart-Contracts Labs
	  			       
               - 1) Debugging a smart contract
- 2) Pet-shop Dapp
- 3) Robust smart contracts with Openzeppelin - Protocol standard ERC20 (bonus)
What is the difference between smart contracts and dApps?
					    
						- dApps (Decentralized apps) are basically blockchain enabled websites/platforms.
- Smart contracts act like a logic brick that empowers dApps to connect with Blockchain.
Dapp diagram
					  
				
        
					 Lab 1: smart contract
			     	http://truffleframework.com/tutorials/debugging-a-smart-contract
				
				
					 Lab 2: our first dApp
					 	http://truffleframework.com/tutorials/pet-shop
				
				
					 Lab 3: bonus
					 	http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin