Blockchain Hyperledger
Blockchain technology offers a way for untrusted parties to reach consensus on a common digital history. A common digital history is important because digital assets and transactions are in theory easily faked and/or duplicated. Blockchain technology solves this problem without using a trusted intermediary.
This explainer will offer simple definitions and analogies for blockchain technology. It will also define Bitcoin, Bitcoin Cash, Ethereum, Litecoin, blockchain, and initial coin offerings. Along the way, we’ll highlight promising use cases for blockchain technology.
What is Ethereum?
- Introduction
- A Short History Lesson
- Link to Original Bitcoin White Paper
- What is Ethereum?
- Interfacing with Ethereum Networks
- Metamask Setup
- Ethereum Accounts
- Receiving Ether
- What's a Transaction?
- Basic Blockchains
- Block Time
- Smart Contracts
- The Solidity Programming Language
- Our First Contract
- Contract Structure
- Function Declarations
- Testing with Remix
- Redeploying Contracts
- Behind the Scenes of Deployment
- More on Running Functions Than You Want to Know
- Wei vs Ether
- Gas and Transactions
- Mnemonic Phrases
- Getting More Ether
- Smart Contracts with Solidity
- Solidity - Language of Smart Contracts
Installing Solidity & Ethereum Wallet
- Basics of Solidity by Example: Subcoin Smart Contract
- Layout of a Solidity Source File & Structure of Smart Contracts
- General Value Types (Int, Real, String, Bytes, Arrays, Mapping, Enum, address)
- Ether Units, Time Units
- Globally Available Variables & Functions
- Operators: Arithmetic, Logical & Bitwise Operators
- Control Structure (if-else, for, while, Do-While)
- Scoping and Declarations
- Input Parameters and Output Parameters
- Function Calls & Return Types
- Function Modifiers
- Fallback Function
- Abstract Contract
- Creating Contracts via "new" Operator
- Inheriting Smart Contracts
- Importing Smart Contracts & Compiling Contracts
- Events & Logging
- Exceptions
- Don't Skip! Node JS Versioning
- Contract Deployment
- Boilerplate Requirements
- Project File Walkthrough
- Syntax Highlighters
- Compiling Solidity
- The Compile Script
- Testing Architecture
- Running Windows?
- Installing Modules
- Web3 Versioning
- Web3 Providers
- Testing with Mocha
- Mocha Structure
- Fetching Accounts from Ganache
- Refactor to Async/Await
- Deployment with Web3
- Deployed Inbox Overview
- Asserting Deployment
- Web3 Version Fix
- Verifying the Initial Message
- Testing Message Updates
- Deployment with Infura
- Infura Signup
- Wallet Provider Setup
- Deployment to Rinkeby
- Observing Deployment on Etherscan
- Deployed Contracts in Remix
- Complete Example: Crowd Funding Smart Contract
- Complete Example: Voting Ballot Smart Contract
- Advanced Smart Contracts
- The Lottery Contract
- Lottery Design
- Basic Solidity Types
- Starting the Lottery Contract
- The Message Global Variable
- Overview of Arrays
- Overview of Mappings and Structs
- Big Solidity Gotcha
- Entering the Lottery
- Validation with Require Statements
- The Remix Debugger
- Psuedo Random Number Generator
- Selecting a Winner
- Sending Ether from Contracts
- Resetting Contract State
- Requiring Managers
- Function Modifiers
- Returning Players Array
- Contract Review
- New Test Setup
- Test Project Updates
- Test Helper Review
- Asserting Deployment
- Entering the Lottery
- Asserting Multiple Players
- Try-Catch Assertions
- Testing Function Modifiers
- End to End Test
Building Interactive Front-Ends
- Ethereum App Architecture
- Application Overview
- Getting Started with Create-React-App
- Multiple Web3 Instances
- Web3 Setup
- Deploying the Lottery Contract
- Local Contract Instances
- Rendering Contract Data
- Instance Properties
- Accessing More Properties
- The 'Enter' Form
- Form Setup
- Entering the Lottery
- Picking a Winner
- Project Review
Real Projects with Ethereum
- Solving Real Problems with Contracts
- Fixing Kickstarter's Issues
- Campaign Contract Design
- Campaign Constructor
- Contributing to the Campaign
- A Quick Test
- The Request Struct
- More on Function Modifiers
- Creating Struct Instances
- Instance Creation Syntax
- Storage and Memory
- More on Storage vs Memory
- Voting System Requirements
- The Wrong Voting System
- Issues with Arrays
- Mappings vs Arrays
- Basics of Mappings
- Refactoring to Mappings
- Refactoring Request Stucts
- More on Struct Initialization
- Approving a Request
- Testing Request Approvals
- Finalizing a Request
- Last Remix Test
- Thinking about Deployment
- Solution to Deployment
- Adding a Campaign Factory
- Testing the Factory
Ethereum Project Infrastructure
- Project Setup
- Directory Structure
- A Better Compile Script
- Single Run Compilation
- More on Compile
- Test File Setup
- Creating Campaign Instances
- Testing Warmup
- Accessing Mappings
- Requiring Minimum Contributinos
- Array Getters
- One End to End Test
- Deployment
- Refactoring Deployment
Advanced Multi-Page Front-Ends
- App Mockups
- CRA vs Next
- Next's Pages Architecture
- Basics of Next Routing
- Root Routes
- CampaignFactory Instance
- Getting a Test Campaign
- Fetching Deployed Campaigns
- Why Next.js?
- Server vs Client Web3 Instances
- GetInitialProps Function
- Semantic UI React
- Card Group Setup
- Rendering Card Groups
- Adding CSS
- Adding a Button
- The Need for a Layout
- The Layout Component
- Assembling a Header
- Constraining Content Width
- Two Column Layout
- Nested Routing
- Final CSS Fix
- Form Creation
- Input Change Handlers
- Form Submittal
- Testing Submittal
- Form Error Handling
- Button Spinners
- Routing Issues
- Next Routes Setup
- Automatic Navigation
- Header Navigation
- Routing to Campaigns
- Restarting the Server
- Route Mappings
- Planning CampaignShow
- Redeploying CampaignFactory
- CampaignShow's GetInitialProps
- Accessing a Campaign
- Summary Translation Layer
- Custom Card Groups
- One Card Per Property
- The Contribute Form
- Grid Layouts
- Form State
- Communicating the Campaign Address
- Making a Contribution
- Refreshing Contract Data
- Spinners and Error Handlers
- Listing Requests
- Grids vs Columns
- More Routing!
- Request Creation Form
- Creating a Request
- Form Polish
- Creating a Request
- Requests One by One
- Fancy Javascript
- Small Typo!
- Rendering a Table
- Request Row Component
- Request Row Content
- Approvers Count Cell
- Approving a Request
- Finalizing Requests
- Testing Finalization
- Row Status Styling
- Finishing Requests Index
Hyperledger Fabric Using Composer
- Introduction
- What is Hyperledger?
- Distributed Ledger Technology & its Challenges
- Hyperledger & Distributed Ledger Technology
Hyperledger Fabric & Composer Concepts
- Hyperledger Fabric : A DLT for Business Applications
- Hyperledger Fabric : DLT for Business
- Assets, Chaincode & Ledger
- Assets, Chaincode and Transactions
- Permissioned Network, Members & Membership Service Provider
- Permissioned Network, Member & Membership Services
- Nodes and Channels
- Hyperledger Fabric Composer Overview
Pre-Requisites for Fabric development
- Development Machine Specifications & IDE
- Composer Dev Tools Installation
- Exercise: Validate the Composer Development Environment
- Linux/Ubuntu & AWS: Setup of Fabric Development on Local & Cloud VM
Fabric Under the Hood (Concepts & Terminology)
- Ledger Implementation
- Dev Environment Walkthrough: Peer & CouchDB setup
- Ledger Implementation
- Peers Nodes : Anchors and Endorsers
- Anchor Peers & Endorsing Peers
- Clients Node: Endorsement Policies
- Client Peer & Endorsing Policies
- Orderer Nodes
- Membership Service Provider & Certification Authority
- Dev Environment Walkthrough: Orderer and CA Server
- Chaincode Development
Using Composer Tools for Application Development & Administration
- Fabric Composer Playground
- Composer Playground
- Yeoman Hyperledger Generators
- Yo Generators
- Participant Roles and Business Network Cards
- Participant Roles and Business Network Cards
- Composer CLI Tool - Deploying a Network Application
- Composer CLI Tool - Network Application Management
- Exercise: Create & Deploy Network Application
- REST Server Overview
- REST Server Security
- Skeleton Angular Application using Yo
- Composer SDKOverview
Business Network Application Modelling
- Case Study: ACME Airlines
- Modeling Language Files | Namespace
- Defining the Resources
- Support for Object Orientation
- Modeling Arrays
- Registries & Relationship between Resources
- Arrays, Registries & Relationships
- Adding the field Validations
- Field validations
- Resource Registries & Identities +Exercise
- Modeling the Transactions
- Exercise: Fix the code for generating the FlightId
- Exercise: Add a set of aircraft queries
- Managing identities for Network Applications
- Access Control Language (Part 1 of 2) Simple Rules
- Exercise: Simple Rule for ACMENetworkAdmin
- Access Control Language (Part 2 of 2) Conditional Rules
- Exercise: Conditional Rule for ACMEPersonnel
Composer SDK / API : Coding the Client Apps
- Business Network Card Management
- Card Storage API
- Admin Connection Class
- Business Network Connection Class
- Submitting a Transaction
- Registries
- Resources
- Querying the Registries
- Subscribing to Events
- Write a utility to create | delete test data for ACME Airline Model
Composer SDK / API : Coding the Transaction Processors
- Embedded Runtime for Testing
- Crash course in Mocha and Chai
- Writing Unit Test Cases for Network Applications
- Runtime API for Transaction Processing Functions
- Exercise: Define the Aircraft Assignment Transaction
- Query invocation in Transaction Processing Functions
- Implementing Programmatic Access Control
- Emitting events and Integrating with external systems
Developing Front End Applications for Network Applications
- Application Design Patterns
- Application Architecture Patterns
- Securing the REST server with Authentication Strategy
- Walkthrough: Applying OAuth2.0 Authentication Strategy to REST Server
- Working of Multi User Enabled REST Server
- Walkthrough - REST Server Multi User mode
- Create the Design Blueprint for the Fabric Application UI