6. • startGas = gas limit
• startGas is the term in the Ethereum White Paper
• gasLimit is the term in the Ethereum Yellow Paper,
• software, such as Geth and web3.js, simply uses the term “gas”.
• gas Price
- Gas
https://media.consensys.net/ethereum-gas-fuel-and-fees-3333e17fe1dc
73. Metropolis
• Vitaliks latest thinking on transition to PoS:
• PoW -> PoW with PoS "on top" -> Hybrid PoW/PoS -> PoS
• Stages:
• 1. PoS would finalize blocks after PoW has de facto finalized them anyway.
• 2. After a couple of month: implement clients that favor PoS.
• 3. Cut down PoW block reward, increase PoS validator reward.
• 4. Hybrid PoS scheme parametrize between PoW and PoS at 0-100 scale
75. Metropolis
EIP 86 (“abstraction”)
• Make the protocol as simple as possible
• Any account in the call execution chain can pay for gas
• Instead of only the account that sent the transaction
• A recipient, or middle account, could pay the gas cost
• Helps anonymization, instead of needing to use only one account to pay for gas
EIP 98 (removal of intermediate state roots)
• Goal: Make it easier to process transactions in parallel
EIP 96 (EVM-ification)
• Try to make light clients more secure
EIP 100 (target block time including uncles)
• Security upgrades
EIP 101 (big integer precompile)
• Make it easier to verify certain types of cryptography
• Ethereum supports elliptic curve cryptography
• RSA encryption is used by others, and is currently computationally inefficient to verify in Ethereum
EIP 116 (STATIC_CALL)
• Under consideration
• Can call a contract and be sure you’re not changing anything; not writing to the state
EIP 195 (Pure call)
• Even more static version of STATIC CALL
• Can’t write or read
EIP 140 (throw opcode)
• Throws an exception without consuming all remaining gas
EIP 141 (invalid opcode)
76. Metropolis
EIP 86 (“abstraction”)
• Make the protocol as simple as possible
• Any account in the call execution chain can pay for gas
• Instead of only the account that sent the transaction
• A recipient, or middle account, could pay the gas cost
• Helps anonymization, instead of needing to use only one account to pay for gas
EIP 98 (removal of intermediate state roots)
• Goal: Make it easier to process transactions in parallel
77. Metropolis - Byzantium fork ( 10 )
• Geth 1.7 – Megara
• EIP 98: Removal of intermediate state roots from receipts (#14750).
• Expanded by EIP 658: Embedding transaction return data in receipts (#15014).
• EIP 100: Change difficulty adjustment to target mean block time including uncles (#14733).
• EIP 198, EIP 212 (197) and EIP 213 (196): Precompiled contracts for modular exponentiation; elliptic curve addition, scalar
multiplication and pairing (#14959, #14993).
• EIP 214 (116): Expanding the EVM with static contract calls (#14978).
• EIP 211: Expanding the EVM with dynamically sized return data (#14981).
• EIP 206 (140): Expanding the EVM with cheap state revertals (#14983).
• EIP 649: Delaying the difficulty bomb and reducing the block reward (#15028).
• EIP 684: Preventing overwriting contracts (Byzantium prep) (#15039).
https://blog.ethereum.org/2017/09/14/geth-1-7-megara/
78. Serenity
serenity, Ethereum 2.0, with 4 primary research directions:
1. casper, the proof-of-stake algorithm.
2. scalability, by processing transactions in parallel and moving away
from the paradigm where every node in the network has to
absolutely process every transaction.
3. zkSNARK, addressing privacy.
4. Upgrading the evm (Ethereum Virtual Machine).
96. // fnv is an algorithm inspired by the FNV hash, which in some cases is used as
// a non-associative substitute for XOR. Note that we multiply the prime with
// the full 32-bit input, in contrast with the FNV-1 spec which multiplies the
// prime with one byte (octet) in turn.
func fnv(a, b uint32) uint32 {
return a*0x01000193 ^ b // ^ == xor
}
// fnvHash mixes in data into mix using the ethash fnv method.
func fnvHash(mix []uint32, data []uint32) {
for i := 0; i < len(mix); i++ {
mix[i] = mix[i]*0x01000193 ^ data[i]
}
}
FNV (Fowler/Noll/Vo) is a fast, non-cryptographic hash algorithm with good dispersion
FNV hashes are designed to be fast while maintaining a low collision rate. The FNV speed allows one to quickly hash lots of data while
maintaining a reasonable collision rate. The high dispersion of the FNV hashes makes them well suited for hashing nearly identical strings such as URLs,
hostnames, filenames, text, IP addresses, etc.
Appendix - fnv ( FNV hash )
97. -
Prev Hash : (parent hash)
Nonce : 64 ,
Timestamp : time()
Uncles Hash(ommer hash) : SHA-3 (256 ) / ommer " "
Uncle
Beneficiary : (fees) 160
Logs Bloom : ( )
( )
Difficulty :
Extra Data : Block Num Gas
Limit Gas Used
Mix Hash : 256
State Root : (SHA-3 )
Transaction Root : (SHA-3
)
Receipt Root : (SHA-3
)