Sesi 1 - Materi Tambahan: Web3 Fundamentals Deep Dive
Daftar Isi
- Web Evolution Deep Dive
- Blockchain Technology Detailed
- Ethereum & EVM Architecture
- Wallet Technology & Cryptography
- Smart Contract Fundamentals
- Development Tools Deep Dive
- Real-World Use Cases
- Security Fundamentals
- Network Types & Testnet
- References & Further Learning
Web Evolution Deep Dive
Web1 (1990-2005): The Information Age
Technical Architecture
Web1 dibangun dengan teknologi sederhana yang fokus pada information sharing.
Core Technologies:
- HTML (HyperText Markup Language): Structure dokumen web
- HTTP (HyperText Transfer Protocol): Client-server communication
- CSS (Cascading Style Sheets): Basic styling (introduced 1996)
- JavaScript: Limited interactivity (introduced 1995)
Characteristics:
- Static Content: Information yang jarang berubah
- One-way Communication: Server ke client saja
- Limited Interactivity: Basic forms dan navigation
- Centralized Hosting: Single server untuk each website
Real Examples Web1
- Yahoo Directory (1994): Manual categorization of websites
- GeoCities (1994): Personal homepage hosting
- Altavista (1995): Early search engine
- Amazon (1994): Started as online bookstore dengan simple catalog
Web2 (2004-Present): The Platform Era
Technical Innovation
Web2 memperkenalkan dynamic content dan user interaction.
Key Technologies:
- AJAX (Asynchronous JavaScript and XML): Dynamic content updates
- APIs (Application Programming Interfaces): Service integration
- Cloud Computing: Scalable infrastructure
- Mobile Internet: Smartphone integration
- Social Media Platforms: User-generated content
Platform Economy Characteristics:
- Network Effects: Value increases dengan more users
- Data Collection: User behavior tracking untuk monetization
- Advertising Model: "Free" services funded by ads
- Walled Gardens: Platform-specific ecosystems
Web2 Success Stories
Google Search Engine:
- PageRank Algorithm: Revolutionary ranking system
- AdWords/AdSense: Advertising revenue model
- Data Utilization: Search data untuk targeted advertising
- Market Dominance: 92% global search market share
Facebook Social Network:
- Social Graph: Mapping human relationships
- News Feed Algorithm: Curated content delivery
- Advertising Platform: Precise demographic targeting
- Data Harvesting: Detailed user profiling
Amazon E-commerce:
- Recommendation Engine: Personalized product suggestions
- AWS Cloud Services: Infrastructure as a Service
- Marketplace Model: Third-party seller platform
- Prime Ecosystem: Subscription-based loyalty
Web2 Limitations & Problems
Privacy Issues:
- Data Collection: Extensive personal information gathering
- Surveillance Capitalism: Monetizing personal data
- Third-party Tracking: Cross-site user tracking
- Data Breaches: Centralized databases as attack targets
Platform Control:
- Content Censorship: Platform-controlled content moderation
- Algorithm Manipulation: Opaque content filtering
- Deplatforming: Account suspension without appeal
- Revenue Sharing: Platforms take significant cuts
Famous Data Breaches:
- Cambridge Analytica (2018): 87 million Facebook users affected
- Equifax (2017): 147 million personal records stolen
- Yahoo (2013-2014): 3 billion accounts compromised
Web3 (2008-Present): The Ownership Era
Foundational Principles
Decentralization:
- No Single Point of Failure: Distributed infrastructure
- Censorship Resistance: Difficult untuk block atau control
- Global Access: Internet connection sufficient untuk participation
- Permissionless Innovation: No gatekeepers untuk building
True Digital Ownership:
- Cryptographic Proof: Mathematical proof of ownership
- Transferable Assets: Move assets across platforms
- Programmable Money: Smart contracts untuk automation
- Self-Sovereign Identity: User-controlled digital identity
Web3 Technology Stack
Base Layer:
- Blockchain: Distributed ledger infrastructure
- Consensus Mechanisms: Proof of Work, Proof of Stake
- Cryptography: Public-key cryptography untuk security
Protocol Layer:
- Smart Contracts: Self-executing code
- Token Standards: ERC-20, ERC-721, ERC-1155
- Governance Protocols: Decentralized decision making
Application Layer:
- DeFi: Decentralized financial services
- NFTs: Non-fungible tokens untuk digital ownership
- DAOs: Decentralized autonomous organizations
- Web3 Games: Blockchain-based gaming
Web3 vs Web2 Comparison
Aspect | Web2 | Web3 |
---|---|---|
Data Ownership | Platform owns | User owns |
Identity | Platform-controlled | Self-sovereign |
Monetization | Advertising | Direct ownership |
Governance | Corporate | Community |
Censorship | Possible | Resistant |
Innovation | Permissioned | Permissionless |
Blockchain Technology Detailed
Cryptographic Hash Functions
SHA-256 Deep Dive
Secure Hash Algorithm 256-bit yang digunakan Bitcoin untuk mining dan data integrity.
Properties:
- Deterministic: Same input → same output
- Fixed Output: Always 256 bits (64 hex characters)
- Avalanche Effect: Small input change → dramatic output change
- Pre-image Resistance: Cannot reverse-engineer input
- Collision Resistance: Virtually impossible untuk find two inputs dengan same output
Example:
Input: "Hello World"
SHA-256: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
Input: "Hello world" (lowercase 'w')
SHA-256: 64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
Keccak-256 (Ethereum)
Ethereum menggunakan Keccak-256 untuk address generation dan data hashing.
Ethereum Address Generation:
1. Generate random private key (256-bit number)
2. Derive public key using elliptic curve multiplication
3. Hash public key dengan Keccak-256
4. Take last 20 bytes as Ethereum address
Merkle Trees
Structure & Purpose
Merkle trees enable efficient dan secure verification of large data structures.
Tree Construction:
Root Hash
/ \
Hash AB Hash CD
/ \ / \
Hash A Hash B Hash C Hash D
| | | |
Data A Data B Data C Data D
Benefits:
- Efficient Verification: Verify single transaction tanpa downloading entire block
- Data Integrity: Any tampering changes root hash
- Scalability: O(log n) verification complexity
Real-World Application: Bitcoin blocks use Merkle trees untuk efficiently verify transactions. Light clients dapat verify payment tanpa downloading full blockchain.
Blockchain Structure
Block Anatomy
Block Header:
{
"previousBlockHash": "0x742d35...",
"merkleRoot": "0x4a5e1e...",
"timestamp": 1640995200,
"difficulty": "0x170a395...",
"nonce": 2573394689
}
Block Body:
- Transaction list
- Transaction count
- Block size information
Transaction Structure (Ethereum)
{
"nonce": "0x42",
"gasPrice": "0x4a817c800",
"gasLimit": "0x5208",
"to": "0x8ba1f109551bD432803012645Hac136c34bcc36",
"value": "0xde0b6b3a7640000",
"data": "0x",
"v": "0x1c",
"r": "0x88ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0",
"s": "0x45e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33a"
}
Consensus Mechanisms
Proof of Work (PoW)
Mining Process:
- Collect Transactions: Gather unconfirmed transactions dari mempool
- Create Block: Build block header dengan transaction Merkle root
- Find Nonce: Try different nonce values until hash meets difficulty target
- Broadcast Block: Share valid block dengan network
- Network Verification: Other nodes verify dan accept block
Difficulty Adjustment:
- Bitcoin: Adjusts every 2016 blocks (~2 weeks)
- Target Block Time: 10 minutes for Bitcoin
- Hash Rate: Total computational power securing network
Security Model:
- 51% Attack: Requires controlling majority of hash power
- Cost: Extremely expensive untuk sustained attack
- Economic Incentive: Honest mining more profitable than attacking
Proof of Stake (PoS)
Validator Selection:
- Stake-based: Probability proportional ke stake size
- Randomization: Cryptographic randomness prevents predictability
- Rotation: Validators take turns proposing blocks
Economic Security:
- Slashing: Validators lose stake untuk malicious behavior
- Rewards: Honest validators earn staking rewards
- Capital Requirement: Significant stake required for participation
Ethereum 2.0 Implementation:
- Minimum Stake: 32 ETH untuk become validator
- Penalty System: Graduated penalties untuk various violations
- Finality: 2/3 validator agreement untuk finalization
Ethereum & EVM Architecture
Ethereum Network Structure
Node Types
Full Nodes:
- Complete Blockchain: Store entire blockchain history
- Transaction Validation: Verify all transactions
- Block Propagation: Relay blocks ke other nodes
- State Storage: Maintain current world state
Light Clients:
- Block Headers Only: Download headers tanpa full blocks
- SPV (Simplified Payment Verification): Verify transactions using Merkle proofs
- Resource Efficient: Suitable untuk mobile devices
- Trust Model: Rely on full nodes untuk data
Archive Nodes:
- Historical State: Store all historical states
- Development Support: Enable historical queries
- Resource Intensive: Require significant storage
- Infrastructure Role: Support dApps dan analytics
EVM (Ethereum Virtual Machine)
Virtual Machine Design
Stack-Based Architecture:
- 1024 Stack Limit: Maximum stack depth
- 256-bit Words: All operations use 256-bit values
- LIFO Operations: Last-in, first-out stack operations
Memory Model:
- Linear Memory: Byte-addressable memory space
- Volatile Storage: Cleared between external calls
- Gas Cost: Memory expansion costs increase quadratically
Storage Model:
- Key-Value Store: 256-bit keys mapped ke 256-bit values
- Persistent Storage: Survives between function calls
- Gas Costs: 20,000 gas untuk new storage, 5,000 untuk updates
Bytecode & Opcodes
Compilation Process:
Solidity Source → AST → Intermediate Code → EVM Bytecode
Common Opcodes & Gas Costs:
ADD (0x01): 3 gas - Addition operation
MUL (0x02): 5 gas - Multiplication operation
SLOAD (0x54): 2,100 gas - Load from storage
SSTORE (0x55): 20,000 gas - Store to storage (new)
CALL (0xF1): 700+ gas - External contract call
Example Bytecode:
PUSH1 0x60 // Push 0x60 to stack
PUSH1 0x40 // Push 0x40 to stack
MSTORE // Store 0x60 at memory position 0x40
Gas System
Gas Economics
Gas Price Determination:
- Base Fee: Algorithmic fee burned every block (EIP-1559)
- Priority Fee: Tip paid ke miners/validators
- Max Fee: Maximum fee user willing to pay
Gas Limit Considerations:
- Transaction Gas Limit: Maximum gas untuk single transaction
- Block Gas Limit: Maximum total gas untuk all transactions dalam block
- Gas Estimation: Predicting gas usage untuk transactions
Gas Optimization Strategies
Storage Optimization:
// Expensive: Multiple storage operations
contract Inefficient {
uint256 public value1;
uint256 public value2;
function update(uint256 _val1, uint256 _val2) external {
value1 = _val1; // 20,000 gas
value2 = _val2; // 20,000 gas
}
}
// Optimized: Packed storage
contract Efficient {
struct Values {
uint128 value1; // Pack into single slot
uint128 value2;
}
Values public values;
function update(uint128 _val1, uint128 _val2) external {
values = Values(_val1, _val2); // Single storage operation
}
}
Wallet Technology & Cryptography
Cryptographic Foundations
Elliptic Curve Cryptography (ECC)
secp256k1 Curve (used by Bitcoin & Ethereum):
y² = x³ + 7 (mod p)
where p = 2²⁵⁶ - 2³² - 2⁹ - 2⁸ - 2⁷ - 2⁶ - 2⁴ - 1
Key Generation Process:
- Private Key: Random 256-bit number (1 to n-1)
- Public Key: private_key × G (elliptic curve point multiplication)
- Address: Hash(public_key) untuk Ethereum address
Digital Signature Process (ECDSA):
1. Hash message with Keccak-256
2. Generate random nonce k
3. Calculate r = (k × G).x mod n
4. Calculate s = k⁻¹(hash + r × private_key) mod n
5. Signature = (r, s, v) where v is recovery parameter
Wallet Types & Architecture
Hierarchical Deterministic (HD) Wallets
BIP-44 Derivation Path:
m / purpose' / coin_type' / account' / change / address_index
Ethereum Example:
m/44'/60'/0'/0/0 (First Ethereum address)
m/44'/60'/0'/0/1 (Second Ethereum address)
m/44'/60'/1'/0/0 (First address of second account)
Seed Phrase Generation:
- Entropy: 128-256 bits of randomness
- Mnemonic: Convert entropy ke human-readable words (BIP-39)
- Seed: Derive master seed dari mnemonic + optional passphrase
- Master Key: Generate master private key dari seed
Wallet Implementation Types
Software Wallets:
- Hot Wallets: Connected ke internet
- Browser Extension: MetaMask, Rabby
- Mobile Apps: Trust Wallet, Coinbase Wallet
- Desktop Apps: Exodus, Atomic Wallet
Hardware Wallets:
- Cold Storage: Private keys stored offline
- Secure Element: Tamper-resistant hardware
- Popular Models: Ledger Nano, Trezor
- Transaction Signing: Sign transactions offline
Multi-Signature Wallets:
- Threshold Signatures: M-of-N signature requirements
- Shared Control: Multiple parties must approve transactions
- Security Enhancement: Reduces single point of failure
- Implementation: Gnosis Safe, multi-sig contracts
Account Types Deep Dive
Externally Owned Accounts (EOA)
Account State:
{
"nonce": 42,
"balance": "1000000000000000000",
"storageRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
}
Characteristics:
- Nonce: Prevents replay attacks
- Balance: ETH amount dalam wei
- No Code: codeHash is hash of empty string
- Transaction Origin: Can initiate transactions
Smart Contract Accounts
Contract Account Properties:
- Code Storage: Contains executable bytecode
- Internal State: Custom storage variables
- No Private Key: Controlled by code logic
- Passive: Cannot initiate transactions independently
Account Abstraction Benefits:
- Custom Logic: Programmable transaction validation
- Recovery Mechanisms: Social recovery, time-based recovery
- Batch Transactions: Multiple operations dalam single transaction
- Gas Abstraction: Pay gas dalam any token
Wallet Security Best Practices
Private Key Management
Security Principles:
- Never Share: Private keys should never be shared
- Offline Generation: Generate keys pada air-gapped device
- Secure Storage: Use hardware wallets atau encrypted storage
- Backup Strategy: Multiple secure backups of seed phrase
Common Vulnerabilities:
- Phishing Attacks: Fake websites stealing private keys
- Malware: Keyloggers dan clipboard hijacking
- Social Engineering: Manipulating users untuk reveal keys
- Physical Theft: Unsecured devices atau written keys
Seed Phrase Security
Best Practices:
- Physical Backup: Write down on paper or metal
- Multiple Locations: Store backups dalam different secure locations
- Verify Accuracy: Double-check transcription accuracy
- Passphrase Option: Add extra passphrase untuk additional security
Common Mistakes:
- Digital Storage: Storing seed phrases digitally
- Cloud Backups: Uploading ke cloud services
- Photos: Taking pictures of seed phrases
- Incomplete Backups: Missing words atau wrong order
Smart Contract Fundamentals
Smart Contract Theory
Concept & Properties
Definition: Smart contracts are self-executing contracts dengan terms directly written into code. They automatically execute when predetermined conditions are met.
Key Properties:
- Deterministic: Same input always produces same output
- Transparent: Code is publicly viewable on blockchain
- Immutable: Difficult atau impossible untuk change after deployment
- Autonomous: Executes automatically tanpa intermediaries
Contract Lifecycle
Development Phase:
- Requirements: Define business logic dan functionality
- Design: Architecture dan security considerations
- Implementation: Write Solidity code
- Testing: Unit tests, integration tests, security audits
- Deployment: Deploy ke blockchain network
Execution Phase:
- Deployment Transaction: Contract code deployed ke blockchain
- Address Assignment: Contract receives unique address
- State Initialization: Constructor sets initial state
- Function Calls: Users interact dengan contract functions
- State Updates: Contract state modified through transactions
Solidity Programming Fundamentals
Data Types & Variables
Value Types:
// Boolean
bool public isActive = true;
// Integers
uint256 public count = 0; // Unsigned integer
int256 public balance = -100; // Signed integer
// Address
address public owner = 0x1234567890123456789012345678901234567890;
address payable public recipient; // Can receive Ether
// Fixed-size bytes
bytes32 public hash;
bytes4 public selector;
// Enums
enum State { Waiting, Ready, Active }
State public currentState;
Reference Types:
// Arrays
uint256[] public dynamicArray;
uint256[10] public fixedArray;
// Mappings
mapping(address => uint256) public balances;
mapping(address => mapping(address => uint256)) public allowances;
// Structs
struct User {
string name;
uint256 age;
bool isActive;
}
User public user;
// Strings
string public name = "MyContract";
Functions & Modifiers
Function Syntax:
function functionName(
uint256 parameter1,
string memory parameter2
)
public
view
returns (uint256 result)
{
// Function body
return parameter1 + bytes(parameter2).length;
}
State Mutability:
// Pure: No state read or write
function add(uint256 a, uint256 b) public pure returns (uint256) {
return a + b;
}
// View: Read state but no modifications
function getBalance(address user) public view returns (uint256) {
return balances[user];
}
// Payable: Can receive Ether
function deposit() public payable {
balances[msg.sender] += msg.value;
}
Custom Modifiers:
modifier onlyOwner() {
require(msg.sender == owner, "Not the owner");
_; // Continue with function execution
}
modifier validAmount(uint256 amount) {
require(amount > 0, "Amount must be positive");
require(amount <= 1000, "Amount too large");
_;
}
function withdraw(uint256 amount)
public
onlyOwner
validAmount(amount)
{
// Function implementation
}
Events & Logging
Event Declaration & Emission:
// Event declaration
event Transfer(
address indexed from,
address indexed to,
uint256 amount
);
event Approval(
address indexed owner,
address indexed spender,
uint256 amount
);
// Event emission
function transfer(address to, uint256 amount) public {
// Transfer logic
balances[msg.sender] -= amount;
balances[to] += amount;
// Emit event
emit Transfer(msg.sender, to, amount);
}
Event Filtering:
// JavaScript - Filter events
const transferEvents = await contract.queryFilter(
contract.filters.Transfer(null, userAddress)
);
// Get specific event data
transferEvents.forEach(event => {
console.log(`Transfer: ${event.args.amount} tokens`);
});
Security Fundamentals
Common Vulnerabilities
Reentrancy:
// Vulnerable contract
contract VulnerableContract {
mapping(address => uint256) public balances;
function withdraw() public {
uint256 amount = balances[msg.sender];
// External call before state update (DANGEROUS!)
(bool success, ) = msg.sender.call{value: amount}("");
require(success, "Transfer failed");
balances[msg.sender] = 0; // Too late!
}
}
// Secure implementation
contract SecureContract {
mapping(address => uint256) public balances;
bool private locked;
modifier noReentrant() {
require(!locked, "No re-entrancy");
locked = true;
_;
locked = false;
}
function withdraw() public noReentrant {
uint256 amount = balances[msg.sender];
balances[msg.sender] = 0; // State update first
(bool success, ) = msg.sender.call{value: amount}("");
require(success, "Transfer failed");
}
}
Integer Overflow/Underflow:
// Solidity < 0.8.0 (Vulnerable)
contract VulnerableToken {
mapping(address => uint256) public balances;
function transfer(address to, uint256 amount) public {
balances[msg.sender] -= amount; // Can underflow
balances[to] += amount; // Can overflow
}
}
// Solidity >= 0.8.0 (Safe by default)
contract SafeToken {
mapping(address => uint256) public balances;
function transfer(address to, uint256 amount) public {
balances[msg.sender] -= amount; // Automatic overflow check
balances[to] += amount; // Automatic overflow check
}
}
Security Best Practices
Checks-Effects-Interactions Pattern:
function secureFunction() public {
// 1. Checks
require(condition1, "Condition 1 failed");
require(condition2, "Condition 2 failed");
// 2. Effects (State changes)
balance -= amount;
userBalance[msg.sender] += amount;
// 3. Interactions (External calls)
externalContract.someFunction();
payable(recipient).transfer(amount);
}
Access Control:
import "@openzeppelin/contracts/access/Ownable.sol";
contract MyContract is Ownable {
mapping(address => bool) public admins;
modifier onlyAdmin() {
require(admins[msg.sender] || msg.sender == owner(), "Not admin");
_;
}
function adminFunction() public onlyAdmin {
// Only admins can call
}
function addAdmin(address newAdmin) public onlyOwner {
admins[newAdmin] = true;
}
}
Development Tools Deep Dive
Node.js & NPM Ecosystem
Package Management
package.json Configuration:
{
"name": "web3-project",
"version": "1.0.0",
"description": "Web3 development project",
"main": "index.js",
"scripts": {
"compile": "hardhat compile",
"test": "hardhat test",
"deploy:local": "hardhat run scripts/deploy.js --network localhost",
"deploy:sepolia": "hardhat run scripts/deploy.js --network sepolia"
},
"dependencies": {
"ethers": "^5.7.2",
"@openzeppelin/contracts": "^4.8.0"
},
"devDependencies": {
"hardhat": "^2.12.6",
"@nomiclabs/hardhat-ethers": "^2.2.1",
"@nomiclabs/hardhat-waffle": "^2.0.3",
"chai": "^4.3.7"
}
}
NPM Commands:
# Install dependencies
npm install
# Install specific package
npm install --save ethers
npm install --save-dev hardhat
# Update packages
npm update
# Audit security vulnerabilities
npm audit
npm audit fix
Hardhat Framework
Project Structure
hardhat-project/
├── contracts/ # Solidity contracts
│ └── MyContract.sol
├── scripts/ # Deployment scripts
│ └── deploy.js
├── test/ # Test files
│ └── MyContract.test.js
├── hardhat.config.js # Configuration
├── package.json # Dependencies
└── .env # Environment variables
Configuration Deep Dive
hardhat.config.js:
require("@nomiclabs/hardhat-waffle");
require("@nomiclabs/hardhat-etherscan");
require("hardhat-gas-reporter");
require("solidity-coverage");
require("dotenv").config();
module.exports = {
solidity: {
version: "0.8.26",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
},
networks: {
hardhat: {
chainId: 1337,
accounts: {
count: 20,
accountsBalance: "10000000000000000000000" // 10k ETH
}
},
sepolia: {
url: process.env.SEPOLIA_RPC_URL,
accounts: [process.env.PRIVATE_KEY],
gasPrice: 20000000000, // 20 gwei
gas: 2100000,
timeout: 300000
}
},
etherscan: {
apiKey: process.env.ETHERSCAN_API_KEY
},
gasReporter: {
enabled: process.env.REPORT_GAS !== undefined,
currency: "USD"
}
};
Testing Framework
Example Test File:
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("MyContract", function () {
let myContract;
let owner;
let addr1;
let addr2;
beforeEach(async function () {
// Get signers
[owner, addr1, addr2] = await ethers.getSigners();
// Deploy contract
const MyContract = await ethers.getContractFactory("MyContract");
myContract = await MyContract.deploy();
await myContract.deployed();
});
describe("Deployment", function () {
it("Should set the right owner", async function () {
expect(await myContract.owner()).to.equal(owner.address);
});
it("Should assign initial supply", async function () {
const ownerBalance = await myContract.balanceOf(owner.address);
expect(await myContract.totalSupply()).to.equal(ownerBalance);
});
});
describe("Transactions", function () {
it("Should transfer tokens between accounts", async function () {
await myContract.transfer(addr1.address, 50);
expect(await myContract.balanceOf(addr1.address)).to.equal(50);
});
it("Should fail if sender doesn't have enough tokens", async function () {
const initialOwnerBalance = await myContract.balanceOf(owner.address);
await expect(
myContract.connect(addr1).transfer(owner.address, 1)
).to.be.revertedWith("Not enough tokens");
expect(await myContract.balanceOf(owner.address)).to.equal(
initialOwnerBalance
);
});
});
});
Git & Version Control
Git Workflow untuk Web3
Repository Structure:
.gitignore # Ignore sensitive files
README.md # Project documentation
contracts/ # Smart contracts
scripts/ # Automation scripts
test/ # Test files
docs/ # Additional documentation
deployments/ # Deployment artifacts
.gitignore for Web3:
# Dependencies
node_modules/
package-lock.json
# Environment variables (CRITICAL!)
.env
.env.local
.env.*.local
# Hardhat
artifacts/
cache/
typechain/
coverage/
# IDE
.vscode/
.idea/
*.swp
*.swo
# Operating System
.DS_Store
Thumbs.db
# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
Git Commands untuk Web3 Development:
# Initialize repository
git init
git add .
git commit -m "feat: initial project setup"
# Create feature branch
git checkout -b feature/smart-contract
# Commit with conventional commits
git commit -m "feat: add ERC20 token contract"
git commit -m "fix: resolve reentrancy vulnerability"
git commit -m "docs: update deployment instructions"
# Push to remote
git push origin feature/smart-contract
Alchemy Infrastructure
API Services
Endpoint Configuration:
// Ethereum Mainnet
const mainnetProvider = new ethers.providers.AlchemyProvider(
"homestead",
process.env.ALCHEMY_API_KEY
);
// Sepolia Testnet
const sepoliaProvider = new ethers.providers.AlchemyProvider(
"sepolia",
process.env.ALCHEMY_API_KEY
);
// Custom RPC URL
const customProvider = new ethers.providers.JsonRpcProvider(
`https://eth-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`
);
Enhanced APIs:
// Get transaction receipts dengan logs
const receipt = await provider.getTransactionReceipt(txHash);
console.log("Gas Used:", receipt.gasUsed.toString());
console.log("Logs:", receipt.logs);
// Get current gas prices
const gasPrice = await provider.getGasPrice();
console.log("Current Gas Price:", ethers.utils.formatUnits(gasPrice, "gwei"), "gwei");
// Estimate gas untuk transaction
const estimatedGas = await contract.estimateGas.functionName(params);
console.log("Estimated Gas:", estimatedGas.toString());
Network Configuration
Sepolia Testnet Details:
const sepoliaConfig = {
chainId: 11155111,
name: "sepolia",
rpcUrl: "https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY",
blockExplorer: "https://sepolia.etherscan.io",
faucets: [
"https://sepoliafaucet.com/",
"https://faucet.sepolia.dev/"
]
};
Real-World Use Cases
Decentralized Finance (DeFi) Basics
What is DeFi?
Decentralized Finance recreates traditional financial services using blockchain technology, eliminating intermediaries dan providing global access.
Core Principles:
- Permissionless: Anyone dengan internet dapat access
- Transparent: All transactions publicly verifiable
- Composable: Protocols dapat combined untuk new functionality
- Non-custodial: Users maintain control of their assets
Basic DeFi Building Blocks
Decentralized Exchanges (DEXs):
- Uniswap: Automated Market Maker dengan constant product formula
- SushiSwap: Community-driven DEX dengan additional features
- Balancer: Weighted pools untuk portfolio management
Lending Protocols:
- Compound: Algorithmic money markets
- Aave: Lending dengan flash loans
- MakerDAO: Collateralized debt positions
Yield Farming:
- Liquidity Mining: Earn tokens untuk providing liquidity
- Staking: Lock tokens untuk earn rewards
- Yield Optimization: Automated strategies untuk maximize returns
Real Example: Uniswap V2
How It Works:
- Liquidity Pools: Users deposit equal values of two tokens
- Automated Pricing: Price determined by ratio of tokens dalam pool
- Trading: Users swap tokens, paying 0.3% fee ke liquidity providers
- Arbitrage: Price differences corrected by arbitrageurs
Mathematical Model:
x × y = k (constant product formula)
Where:
- x = amount of token A dalam pool
- y = amount of token B dalam pool
- k = constant product
Price Impact:
price_impact = (new_price - old_price) / old_price × 100%
Non-Fungible Tokens (NFTs)
Understanding NFTs
What Makes NFTs Special:
- Uniqueness: Each token has unique identifier
- Provenance: Ownership history tracked on blockchain
- Programmability: Smart contracts dapat add functionality
- Interoperability: Work across different platforms
Technical Implementation:
// Basic NFT contract
contract MyNFT is ERC721 {
uint256 public tokenCounter;
constructor() ERC721("MyNFT", "MNFT") {
tokenCounter = 0;
}
function createNFT(string memory tokenURI) public returns (uint256) {
uint256 newTokenId = tokenCounter;
_safeMint(msg.sender, newTokenId);
_setTokenURI(newTokenId, tokenURI);
tokenCounter++;
return newTokenId;
}
}
Real-World NFT Applications
Digital Art:
- Beeple's "Everydays": Sold untuk $69.3 million at Christie's
- CryptoPunks: 10,000 unique pixel art characters
- Art Blocks: Generative art platform
Gaming:
- Axie Infinity: Play-to-earn game dengan NFT creatures
- The Sandbox: Virtual world dengan land ownership
- Gods Unchained: Trading card game dengan true ownership
Utility NFTs:
- ENS Domains: Ethereum Name Service domains
- Event Tickets: Verifiable, transferable tickets
- Certificates: Educational atau professional credentials
Decentralized Autonomous Organizations (DAOs)
DAO Fundamentals
What is a DAO: Decentralized Autonomous Organization adalah organization governed by smart contracts dan community voting rather than traditional management.
Key Components:
- Governance Token: Voting rights dalam organization
- Treasury: Shared funds managed by DAO
- Proposals: Suggestions untuk changes atau actions
- Voting Mechanism: How decisions are made
DAO Examples
MakerDAO:
- Purpose: Manage DAI stablecoin protocol
- Governance: MKR token holders vote pada parameters
- Treasury: Protocol fees accumulated untuk governance
- Impact: $8+ billion DAI dalam circulation
Uniswap DAO:
- Purpose: Govern Uniswap protocol development
- Governance: UNI token distribution ke users
- Proposals: Protocol upgrades dan fee distributions
- Community: Thousands of active participants
Investment DAOs:
- PleasrDAO: Collective ownership of cultural artifacts
- ConstitutionDAO: Attempted untuk buy original US Constitution
- MetaCartel: Fund early-stage DApps
Supply Chain & Transparency
Blockchain dalam Supply Chain
Benefits:
- Traceability: Track products dari origin ke consumer
- Transparency: All stakeholders dapat verify information
- Authenticity: Prevent counterfeiting dan fraud
- Efficiency: Reduce paperwork dan manual processes
Real Implementation: Walmart Food Safety
Problem: Food contamination outbreaks take weeks untuk trace source.
Solution:
- Product Tracking: Each product gets blockchain identifier
- Supply Chain Mapping: End-to-end visibility
- Real-time Updates: Temperature, location, handling data
- Consumer Access: QR codes untuk product verification
Results:
- 2.2 seconds: Time untuk trace contamination source
- Reduced Waste: Precise recalls instead of broad sweeps
- Consumer Trust: Verified product authenticity
Digital Identity & Credentials
Self-Sovereign Identity (SSI)
Problems dengan Current System:
- Centralized Control: Identity controlled by governments/corporations
- Data Breaches: Central databases are attractive targets
- Privacy: Over-sharing personal information
- Portability: Difficult untuk use identity across services
SSI Solution:
- User Control: Individuals own dan control identity
- Decentralized: No central authority required
- Privacy: Share only necessary information
- Interoperable: Work across different services
Estonia e-Residency
Digital Identity System:
- Digital ID Cards: Cryptographic identity untuk all citizens
- e-Services: 99% government services online
- Digital Signatures: Legally binding electronic signatures
- Blockchain Integration: KSI blockchain untuk data integrity
Global Impact:
- 100,000+ e-residents: From 170+ countries
- Digital Economy: Remote access ke Estonian services
- Legal Framework: Comprehensive digital rights
Security Fundamentals
Smart Contract Security
Security Mindset
Fundamental Principles:
- Assume Malicious Users: Expect attempts untuk exploit
- Fail Securely: Default ke safe state when errors occur
- Minimize Attack Surface: Reduce potential vulnerability points
- Defense in Depth: Multiple security layers
Common Attack Vectors
Reentrancy Attacks: Famous example - The DAO (2016):
- $50 million drained dari Ethereum's first major DAO
- Attacker exploited recursive calling vulnerability
- Led ke Ethereum hard fork (ETH vs ETC split)
Prevention:
// Use OpenZeppelin's ReentrancyGuard
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract SecureContract is ReentrancyGuard {
function withdraw() public nonReentrant {
// Safe withdrawal logic
}
}
Access Control Issues:
// Vulnerable - anyone dapat call
function emergencyWithdraw() public {
payable(owner).transfer(address(this).balance);
}
// Secure - only owner dapat call
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
function emergencyWithdraw() public onlyOwner {
payable(owner).transfer(address(this).balance);
}
Security Tools
Static Analysis:
- Slither: Python-based Solidity analyzer
- Mythril: Security analysis dengan symbolic execution
- Securify: Formal verification tool
Testing Tools:
- Hardhat: Built-in testing framework
- Waffle: Advanced testing matchers
- OpenZeppelin Test Helpers: Testing utilities
Audit Services:
- ConsenSys Diligence: Professional audit services
- Trail of Bits: Security research dan auditing
- OpenZeppelin: Security audits dan consulting
Wallet Security
Private Key Protection
Best Practices:
- Hardware Wallets: Store keys dalam dedicated hardware
- Cold Storage: Keep keys offline for long-term storage
- Multi-signature: Require multiple signatures untuk transactions
- Regular Backups: Secure backup of recovery phrases
Common Threats:
- Phishing: Fake websites stealing credentials
- Malware: Software capturing keystrokes atau clipboard
- Social Engineering: Manipulating users untuk reveal information
- Physical Theft: Stolen devices atau written keys
Transaction Security
Verification Steps:
- Check Recipient Address: Verify destination address
- Confirm Amount: Double-check transaction amount
- Review Gas Settings: Appropriate gas price dan limit
- Contract Interaction: Understand what contract functions are called
MEV (Maximal Extractable Value) Protection:
- Private Mempools: Submit transactions privately
- Flashbots Protect: MEV protection service
- Time Delays: Use time locks untuk important transactions
Network Types & Testnet Guide
Blockchain Network Types
Public Blockchains
Characteristics:
- Permissionless: Anyone dapat join dan participate
- Fully Decentralized: No central authority
- Transparent: All data publicly accessible
- Censorship Resistant: Difficult untuk block atau control
Examples:
- Bitcoin: First successful cryptocurrency
- Ethereum: Smart contract platform
- Binance Smart Chain: High-performance EVM-compatible chain
Private Blockchains
Characteristics:
- Permissioned: Controlled access
- Centralized: Single organization control
- Privacy: Data tidak publicly accessible
- Higher Performance: Fewer nodes, faster consensus
Use Cases:
- Enterprise Solutions: Internal company operations
- Supply Chain: Private consortium networks
- Government: Controlled public services
Consortium Blockchains
Characteristics:
- Semi-decentralized: Group of organizations
- Controlled Access: Pre-approved participants
- Shared Governance: Multiple stakeholders
- Industry Focus: Specific sector solutions
Examples:
- R3 Corda: Banking consortium blockchain
- Energy Web Chain: Energy sector blockchain
- IBM Food Trust: Food supply chain consortium
Testnet Deep Dive
Sepolia Testnet
Technical Specifications:
- Chain ID: 11155111
- Consensus: Proof of Stake
- Block Time: ~12 seconds
- Gas Limit: Similar ke Ethereum mainnet
Network Configuration:
const sepoliaNetwork = {
name: "sepolia",
chainId: 11155111,
rpcUrls: [
"https://sepolia.infura.io/v3/YOUR_PROJECT_ID",
"https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY"
],
blockExplorerUrls: ["https://sepolia.etherscan.io"],
nativeCurrency: {
name: "Sepolia Ether",
symbol: "ETH",
decimals: 18
}
};
Getting Testnet ETH:
- Sepolia Faucet: https://sepoliafaucet.com/
- Alchemy Faucet: https://sepoliafaucet.net/
- Chainlink Faucet: https://faucets.chain.link/sepolia
Other Testnets
Goerli (Being Deprecated):
- Chain ID: 5
- Status: Being phased out
- Migration: Move ke Sepolia atau Holesky
Holesky (New Testnet):
- Chain ID: 17000
- Purpose: Staking dan infrastructure testing
- Launch: September 2023
Polygon Mumbai:
- Chain ID: 80001
- Purpose: Polygon testing
- Faucet: https://faucet.polygon.technology/
MetaMask Configuration
Adding Custom Networks
Manual Network Addition:
- Open MetaMask
- Click network dropdown
- Select "Add Network"
- Enter network details:
- Network Name: Sepolia
- RPC URL: https://sepolia.infura.io/v3/YOUR_PROJECT_ID
- Chain ID: 11155111
- Currency Symbol: ETH
- Block Explorer: https://sepolia.etherscan.io
Programmatic Network Addition:
async function addSepoliaNetwork() {
try {
await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: '0xaa36a7', // 11155111 dalam hex
chainName: 'Sepolia',
rpcUrls: ['https://sepolia.infura.io/v3/YOUR_PROJECT_ID'],
nativeCurrency: {
name: 'Sepolia Ether',
symbol: 'ETH',
decimals: 18
},
blockExplorerUrls: ['https://sepolia.etherscan.io']
}]
});
} catch (error) {
console.error('Failed to add network:', error);
}
}
References & Further Learning
Academic & Research Papers
Foundational Papers
Bitcoin: A Peer-to-Peer Electronic Cash System (2008)
- Author: Satoshi Nakamoto
- Link: https://bitcoin.org/bitcoin.pdf
- Significance: Original Bitcoin whitepaper introducing blockchain
Ethereum: A Next-Generation Smart Contract and Decentralized Application Platform (2014)
- Author: Vitalik Buterin
- Link: https://ethereum.org/en/whitepaper/
- Significance: Introduced smart contracts dan world computer concept
The Byzantine Generals Problem (1982)
- Authors: Leslie Lamport, Robert Shostak, Marshall Pease
- Link: https://www.microsoft.com/en-us/research/publication/byzantine-generals-problem/
- Significance: Foundational distributed systems problem
Modern Research
Layer 2 Scaling Solutions:
- Plasma: https://plasma.io/plasma-deprecated.pdf
- State Channels: https://statechannels.org/
- Rollups: https://ethereum.org/en/developers/docs/scaling/
Consensus Mechanisms:
- Proof of Stake: https://github.com/ethereum/consensus-specs
- Practical Byzantine Fault Tolerance: http://pmg.csail.mit.edu/papers/osdi99.pdf
Technical Documentation
Ethereum Development
Official Documentation:
- Ethereum.org: https://ethereum.org/en/developers/
- Solidity Docs: https://docs.soliditylang.org/
- Web3.js: https://web3js.readthedocs.io/
- Ethers.js: https://docs.ethers.io/
Development Frameworks:
- Hardhat: https://hardhat.org/getting-started/
- Truffle: https://trufflesuite.com/docs/
- Foundry: https://book.getfoundry.sh/
- Remix: https://remix-ide.readthedocs.io/
Standards & EIPs
Ethereum Improvement Proposals:
- EIP Repository: https://eips.ethereum.org/
- ERC-20: https://eips.ethereum.org/EIPS/eip-20
- ERC-721: https://eips.ethereum.org/EIPS/eip-721
- ERC-1155: https://eips.ethereum.org/EIPS/eip-1155
Educational Platforms
Free Learning Resources
University Courses:
- MIT OpenCourseWare: https://ocw.mit.edu/
- 15.S12 Blockchain and Money
- Berkeley Blockchain: https://blockchain.berkeley.edu/courses/
- Stanford CS251: https://cs251.stanford.edu/
Online Tutorials:
- CryptoZombies: https://cryptozombies.io/
- Solidity by Example: https://solidity-by-example.org/
- Ethernaut: https://ethernaut.openzeppelin.com/
Paid Platforms
Structured Courses:
- Coursera Blockchain: https://www.coursera.org/specializations/blockchain
- edX Blockchain: https://www.edx.org/learn/blockchain
- Udemy: https://www.udemy.com/topic/blockchain/
Bootcamps:
- ConsenSys Academy: https://consensys.net/academy/
- Chainshot: https://www.chainshot.com/
- Alchemy University: https://university.alchemy.com/
Development Tools
Code Editors & IDEs
Visual Studio Code Extensions:
- Solidity: Juan Blanco's Solidity extension
- Hardhat for Visual Studio Code: Official Hardhat extension
- Ethereum Remix: Remix integration
Online IDEs:
- Remix: https://remix.ethereum.org/
- ChainIDE: https://chainide.com/
- Replit: https://replit.com/ (dengan blockchain templates)
Testing & Analysis
Security Tools:
- Slither: https://github.com/crytic/slither
- Mythril: https://github.com/ConsenSys/mythril
- Manticore: https://github.com/trailofbits/manticore
Testing Frameworks:
- Hardhat: Built-in testing
- Waffle: https://getwaffle.io/
- OpenZeppelin Test Helpers: https://docs.openzeppelin.com/test-helpers/
Community & News
Developer Communities
Forums & Discussion:
- Ethereum Stack Exchange: https://ethereum.stackexchange.com/
- Reddit r/ethdev: https://www.reddit.com/r/ethdev/
- Discord Communities: Ethereum, Developer DAO, BuildSpace
GitHub Repositories:
- Ethereum: https://github.com/ethereum
- OpenZeppelin: https://github.com/OpenZeppelin
- Hardhat: https://github.com/NomicFoundation/hardhat
News & Updates
Technical Blogs:
- Ethereum Foundation Blog: https://blog.ethereum.org/
- Vitalik Buterin: https://vitalik.ca/
- Week in Ethereum: https://weekinethereumnews.com/
Industry News:
- CoinDesk: https://www.coindesk.com/
- The Block: https://www.theblockcrypto.com/
- Decrypt: https://decrypt.co/
Practical Resources
Blockchain Explorers
Ethereum Networks:
- Etherscan: https://etherscan.io/ (Mainnet)
- Sepolia Etherscan: https://sepolia.etherscan.io/
- Beaconcha.in: https://beaconcha.in/ (Beacon Chain)
Multi-chain Explorers:
- Blockchair: https://blockchair.com/
- Blockchain.info: https://www.blockchain.com/explorer
Faucets & Test Resources
Testnet Faucets:
- Sepolia Faucet: https://sepoliafaucet.com/
- Chainlink Faucets: https://faucets.chain.link/
- Alchemy Faucet: https://sepoliafaucet.net/
Development Networks:
- Ganache: Local blockchain simulator
- Hardhat Network: Built-in local blockchain
- Anvil: Local blockchain dari Foundry
Career & Professional Development
Job Platforms
Web3-Specific:
- Web3 Jobs: https://web3.career/
- CryptoJobs: https://crypto.jobs/
- UseWeb3: https://www.useweb3.xyz/jobs
General Tech Platforms:
- AngelList: Startup jobs including Web3
- LinkedIn: Professional networking
- GitHub Jobs: Developer-focused positions
Skill Development
Certifications:
- ConsenSys Academy: Blockchain developer certification
- B9lab: Ethereum developer course
- Ivan on Tech Academy: Comprehensive blockchain education
Portfolio Building:
- GitHub: Showcase your code
- Personal Website: Document your projects
- Blog: Write tentang your learning journey
- Open Source: Contribute ke existing projects
Conclusion
Materi tambahan ini memberikan foundation yang comprehensive untuk memahami Web3 technology dari perspektif teoritis dan praktis. Dari evolusi internet hingga implementasi teknis blockchain, dari cryptography fundamentals hingga real-world applications, dokumentasi ini covers essential knowledge yang dibutuhkan untuk memulai journey dalam Web3 development.
Key Takeaways:
- Web3 Evolution: Understanding progression dari Web1 ke Web3 dan implications untuk digital ownership
- Technical Foundations: Blockchain, cryptography, dan EVM architecture sebagai building blocks
- Practical Development: Tools, frameworks, dan best practices untuk building pada blockchain
- Security Mindset: Importance of security dalam decentralized systems
- Real Applications: How Web3 technology solving real-world problems across industries
Learning Path Recommendations:
- Start dengan Fundamentals: Understand blockchain dan cryptography basics
- Hands-on Practice: Build simple contracts dan deploy ke testnet
- Explore Use Cases: Study successful Web3 applications
- Security Focus: Learn security best practices dari early stage
- Stay Updated: Follow community discussions dan technological developments
Dokumentasi ini serves sebagai reference material untuk deepen understanding concepts yang introduced dalam Sesi 1 bootcamp, providing theoretical background dan practical context untuk building strong foundation dalam Web3 development.
This supplementary material is designed untuk complement hands-on bootcamp activities dengan comprehensive theoretical understanding dan real-world context. Continue building, keep learning, dan welcome ke the decentralized future!