# What is Smart Contract :::info NCKU GDSC Smart Contact study group ( Week 1 ) ::: [reference : 「在 2022 年,我們該如何寫智能合約」 on iThome ](https://ithelp.ithome.com.tw/users/20083367/ironman/5136) ## D1 - D10 Introduction to blockchain ( Ethereum ) ### D1 : What is `block` and `chain` - Feature : - can't by modify - decentralized - Block : - Transaction : A block contains many transaction . Transaction can be classcify by `Create` and `Execute` . - Action : - Create : Deployment of Smart Contract - Execute : - Recieving Ether - Interact with Samrt Contract - Properties : - Recipient : - Address ( The address of recipient ) - Value - Nonce : - Counter - Signature : Sign by private key of sender - Value : amount of Ether - data - The most important , send data to contract - Gas Limit - maxPriorityFeePerGas - maxFeePerGas - Chain : - The order of Transaction - if the - Connecting the block - Gas : - Why : Every transaction require computation resources . Base on `Fee-For-Service System` , the sender account has to pay the fee. - Gas ? : the Unit that describe computation resources ( describe the any operation cost running on `EVM (Ethereum Virtual Machine) ` ) - GasLimit : The max amount of gas that sender can pay in this transaction . ( Note that , if the GasLimit < the gas that the transaction needs , the transaction will fail( `revert` ) ) - Fee : - BaseFee : - Prioroty Fee : - Max Fee: - Max Fee = Fee per Gas - Fee per Gas = BaseFee + Priority Fee - The transaction tool will calculate itself - Total Fee : - Total Fee = Max Fee * Used Gas - Account : - Balance - Call - can interact with Smart Contract - EOA ( Externally-owned account ) : - just like our personal acount - Balance - Nonce - Is able to : - recive/sende Ether : - interact with Contract Account - Contract Account : - Balance - Nonce - Codehash - storageRoot / storageHash - Is able to : - recive/send Ether : - will only start by EOA - NetWork : - Chain ID : - equivalent to Network ID - MainNet - TestNet : - Goerli - Sepolia - Consensus : - Miner / Validator : - PoW : - PoS : - Intro to Ethereum Stack : - EIP ( Ethereum Improvement Proposals ) : - document that - ERC - ERC ( Ethereum Request for Comments ) - software interface standard - ERC-20 - Properties : - name - symbol ( optional ) - decimals - Smaller Unit - no float/double in solidity - totalSupply - balanceOf - balance of an address - transfer - transferFrom - approve - allowance - Events : - Transfer - Approval - Eg : - Stable Current : every coin has same value - BTC , ETH , USDT - Stock - ERC-721 - Non Fungible Token - Properites & Events : - unique TokenID - Metadata Extension : - encode json by base64 - enumeration extension : - for other functionalties - ERC-721A : - a new way to store tokenId and address - don't store the same owner name ( if continue ) - ERC-721R : - with time limit - ERC-1155 : - ERC-1155 = ERC-20 + ERC-721 - ERC-20 : - tokenId = 0 , amount = N - ERC-721: - tokenID = 1 , amount = 1 ; tokenID = 2 , amount = 1 ; ... - Example of Smart Contract