-
Code Your First Smart Contract on Ethereum | Beginner Tutorial
- https://remix.ethereum.org/#optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.7+commit.e28d00a7.js
- Gas Optimization
- Local dev blockchain vs. real blockchain
- DONE
Account types:
Smart Contract ETH official website
How Proof of Stakes work?
- Ethereum uses proof-of-stake, where validators explicitly stake capital in the form of ETH into a smart contract on Ethereum. This staked ETH then acts as collateral that can be destroyed if the validator behaves dishonestly or lazily.
CryptoZombie Class
- https://cryptozombies.io/en/course/
- View function in Solidity don’t cost gas (when called externally)
Chainlink Tutorial
- https://docs.chain.link/getting-started/deploy-your-first-contract
- https://etherscan.io/address/0x1e9ba790e14e3e7c0ffbdd9c81f21c5db4e101bc
- DONE
Q&A:
- Address vs. Address Payable diff
- https://ethereum.stackexchange.com/questions/64108/whats-the-difference-between-address-and-address-payable
- The splitting of addresses into address and address payable serves the latter purpose. It forces the smart contract programmer to think about whether an address should ever receive ether from the smart contract. If it should never receive Ether, the address type can be used. Compilation will fail with a type error if the programmer makes a mistake and tries to transfer Ether to that address.
- What’s “block.coinbase”
- https://docs.soliditylang.org/en/v0.8.16/units-and-global-variables.html
- block.coinbase (address payable): current block miner’s address
- DAPP
- Performance overhead – There is a huge performance overhead, and scaling is really hard. To achieve the level of security, integrity, transparency, and reliability that Ethereum aspires to, every node runs and stores every transaction. On top of this, proof-of-stake consensus takes time as well.
- Proof of stake
- Sharding
- Shard is a concept not so much related to the Proof-Of-Stake, but rather to the scalability improvement. The idea of ‘sharding’ is to split the space of possible accounts (contracts are accounts too) into subspaces, for example, based on first digits of their numerical addresses.
- Each shard gets its own set of validators (therefore PoS is a pre-requisite), and these validators will not normally need to validate all the shards. Messages (transactions) between the accounts within the same shard would work in the same way as they work today.
- Contracts wishing to communicate across multiple shards will need to employ some special techniques, based on the concept of transaction receipts. The crucial difference between calling a contract directly and verifying the receipts is that for direct call one needs to run the code of the contract you’re calling, but for verifying a receipt you only need to be sure that receipt cannot be produced by anything else than the transaction you want.
- For example, if you want to accept a payment in tokens managed by a different shard, you would generate the payment ID, give it to the payer, ask the payer to pay in the remote shard (with payment ID), and ‘bring you back’ the receipt.
- Sharding allows scaling Ethereum further, because not all nodes of the network will have to execute all of the transactions.
- Here is the DEVCON1 talk given by Vitalik Buterin explaining this: https://www.youtube.com/watch?v=-QIt3mKLIYU
- Solidity storage vs. memory variable