Mastering Ethereum – Andreas M. Antonopoulos



Mastering Ethereum – Andreas M. Antonopoulos

Ethereum represents the gateway to a worldwide, decentralized computing paradigm. This platform enables you to run decentralized applications (DApps) and smart contracts that have no central points of failure or control, integrate with a payment network, and operate on an open blockchain. With this practical guide, Andreas M. Antonopoulos and Gavin Wood provide everything you need to know about building smart contracts and DApps on Ethereum and other virtual-machine blockchains.Discover why IBM, Microsoft, NASDAQ, and hundreds of other organizations are experimenting with Ethereum. This essential guide shows you how to develop the skills necessary to be an innovator in this growing and exciting new industry.Run an Ethereum client, create and transmit basic transactions, and program smart contractsLearn the essentials of public key cryptography, hashes, and digital signaturesUnderstand how „wallets” hold digital keys that control funds and smart contractsInteract with Ethereum clients programmatically using JavaScript libraries and Remote Procedure Call interfacesLearn security best practices, design patterns, and anti-patterns with real-world examplesCreate tokens that represent assets, shares, votes, or access control rightsBuild decentralized applications using multiple peer-to-peer (P2P) components Spis treści:PrefaceHow to Use This BookIntended AudienceConventions Used in This BookCode ExamplesUsing Code ExamplesReferences to Companies and ProductsEthereum Addresses and Transactions in this BookOReilly SafariHow to Contact UsContacting AndreasContacting GavinAcknowledgments by AndreasAcknowledgments by GavinContributionsSourcesQuick Glossary1. What Is Ethereum?Compared to BitcoinComponents of a BlockchainThe Birth of EthereumEthereums Four Stages of DevelopmentEthereum: A General-Purpose BlockchainEthereums ComponentsFurther ReadingEthereum and Turing CompletenessTuring Completeness as a FeatureImplications of Turing CompletenessFrom General-Purpose Blockchains to Decentralized Applications (DApps)The Third Age of the InternetEthereums Development CultureWhy Learn Ethereum?What This Book Will Teach You2. Ethereum BasicsEther Currency UnitsChoosing an Ethereum WalletControl and ResponsibilityGetting Started with MetaMaskCreating a WalletSwitching NetworksGetting Some Test EtherSending Ether from MetaMaskExploring the Transaction History of an AddressIntroducing the World ComputerExternally Owned Accounts (EOAs) and ContractsA Simple Contract: A Test Ether FaucetCompiling the Faucet ContractCreating the Contract on the BlockchainInteracting with the ContractViewing the Contract Address in a Block ExplorerFunding the ContractWithdrawing from Our ContractConclusions3. Ethereum ClientsEthereum NetworksShould I Run a Full Node?Full Node Advantages and DisadvantagesPublic Testnet Advantages and DisadvantagesLocal Blockchain Simulation Advantages and DisadvantagesRunning an Ethereum ClientHardware Requirements for a Full NodeSoftware Requirements for Building and Running a Client (Node)ParityInstalling ParityGo-Ethereum (Geth)Cloning the repositoryBuilding Geth from source codeThe First Synchronization of Ethereum-Based BlockchainsRunning Geth or ParityThe JSON-RPC InterfaceParitys Geth compatibility modeRemote Ethereum ClientsMobile (Smartphone) WalletsBrowser WalletsMetaMaskJaxxMyEtherWallet (MEW)MyCryptoMistConclusions4. CryptographyKeys and AddressesPublic Key Cryptography and CryptocurrencyPrivate KeysGenerating a Private Key from a Random NumberPublic KeysElliptic Curve Cryptography ExplainedElliptic Curve Arithmetic OperationsGenerating a Public KeyElliptic Curve LibrariesCryptographic Hash FunctionsEthereums Cryptographic Hash Function: Keccak-256Which Hash Function Am I Using?Ethereum AddressesEthereum Address FormatsInter Exchange Client Address ProtocolHex Encoding with Checksum in Capitalization (EIP-55)Detecting an error in an EIP-55 encoded addressConclusions5. WalletsWallet Technology OverviewNondeterministic (Random) WalletsDeterministic (Seeded) WalletsHierarchical Deterministic Wallets (BIP-32/BIP-44)Seeds and Mnemonic Codes (BIP-39)Wallet Best PracticesMnemonic Code Words (BIP-39)Generating mnemonic wordsFrom mnemonic to seedOptional passphrase in BIP-39Working with mnemonic codesCreating an HD Wallet from the SeedHD Wallets (BIP-32) and Paths (BIP-43/44)Extended public and private keysHardened child key derivationIndex numbers for normal and hardened derivationHD wallet key identifier (path)Navigating the HD wallet tree structureConclusions6. TransactionsThe Structure of a TransactionThe Transaction NonceKeeping Track of NoncesGaps in Nonces, Duplicate Nonces, and ConfirmationConcurrency, Transaction Origination, and NoncesTransaction GasTransaction RecipientTransaction Value and DataTransmitting Value to EOAs and ContractsTransmitting a Data Payload to an EOA or ContractSpecial Transaction: Contract CreationDigital SignaturesThe Elliptic Curve Digital Signature AlgorithmHow Digital Signatures WorkCreating a digital signatureVerifying the SignatureECDSA MathTransaction Signing in PracticeRaw Transaction Creation and SigningRaw Transaction Creation with EIP-155The Signature Prefix Value (v) and Public Key RecoverySeparating Signing and Transmission (Offline Signing)Transaction PropagationRecording on the BlockchainMultiple-Signature (Multisig) TransactionsConclusions7. Smart Contracts and SolidityWhat Is a Smart Contract?Life Cycle of a Smart ContractIntroduction to Ethereum High-Level LanguagesBuilding a Smart Contract with SoliditySelecting a Version of SolidityDownload and InstallDevelopment EnvironmentWriting a Simple Solidity ProgramCompiling with the Solidity Compiler (solc)The Ethereum Contract ABISelecting a Solidity Compiler and Language VersionProgramming with SolidityData TypesPredefined Global Variables and FunctionsTransaction/message call contextTransaction contextBlock contextaddress objectBuilt-in functionsContract DefinitionFunctionsContract Constructor and selfdestructAdding a Constructor and selfdestruct to Our Faucet ExampleFunction ModifiersContract InheritanceError Handling (assert, require, revert)EventsCatching eventsCalling Other Contracts (send, call, callcode, delegatecall)Creating a new instanceAddressing an existing instanceRaw call, delegatecallGas ConsiderationsAvoid Dynamically Sized ArraysAvoid Calls to Other ContractsEstimating Gas CostConclusions8. Smart Contracts and VyperVulnerabilities and VyperComparison to SolidityModifiersClass InheritanceInline AssemblyFunction OverloadingVariable TypecastingPreconditions and PostconditionsDecoratorsFunction and Variable OrderingCompilationProtecting Against Overflow Errors at the Compiler LevelReading and Writing DataConclusions9. Smart Contract SecuritySecurity Best PracticesSecurity Risks and AntipatternsReentrancyReal-World Example: The DAOArithmetic Over/UnderflowsReal-World Examples: PoWHC and Batch Transfer Overflow (CVE-201810299)Unexpected EtherFurther ExamplesDELEGATECALLReal-World Example: Parity Multisig Wallet (Second Hack)Default VisibilitiesReal-World Example: Parity Multisig Wallet (First Hack)Entropy IllusionReal-World Example: PRNG ContractsExternal Contract ReferencingReal-World Example: Reentrancy Honey PotShort Address/Parameter AttackUnchecked CALL Return ValuesReal-World Example: Etherpot and King of the EtherRace Conditions/Front RunningReal-World Examples: ERC20 and BancorDenial of Service (DoS)Real-World Examples: GovernMentalBlock Timestamp ManipulationReal-World Example: GovernMentalConstructors with CareReal-World Example: RubixiUninitialized Storage PointersReal-World Examples: OpenAddressLottery and CryptoRoulette Honey PotsFloating Point and PrecisionReal-World Example: EthstickTx.Origin AuthenticationContract LibrariesConclusions10. TokensHow Tokens Are UsedTokens and FungibilityCounterparty RiskTokens and IntrinsicalityUsing Tokens: Utility or EquityIts a Duck!Utility Tokens: Who Needs Them?Tokens on EthereumThe ERC20 Token StandardERC20 required functions and eventsERC20 optional functionsThe ERC20 interface defined in SolidityERC20 data structuresERC20 workflows: transfer and approve & transferFromERC20 implementationsLaunching Our Own ERC20 TokenInteracting with METoken using the Truffle consoleSending ERC20 tokens to contract addressesDemonstrating the approve & transferFrom workflowIssues with ERC20 TokensERC223: A Proposed Token Contract Interface StandardERC777: A Proposed Token Contract Interface StandardERC777 hooksERC721: Non-fungible Token (Deed) StandardUsing Token StandardsWhat Are Token Standards? What Is Their Purpose?Should You Use These Standards?Security by MaturityExtensions to Token Interface StandardsTokens and ICOsConclusions11. OraclesWhy Oracles Are NeededOracle Use Cases and ExamplesOracle Design PatternsData AuthenticationComputation OraclesDecentralized OraclesOracle Client Interfaces in SolidityConclusions12. Decentralized Applications (DApps)What Is a DApp?Backend (Smart Contract)Frontend (Web User Interface)Data StorageIPFSSwarmDecentralized Message Communications ProtocolsA Basic DApp Example: Auction DAppAuction DApp: Backend Smart ContractsDApp governanceAuction DApp: Frontend User InterfaceFurther Decentralizing the Auction DAppStoring the Auction DApp on SwarmPreparing SwarmUploading Files to SwarmThe Ethereum Name Service (ENS)History of Ethereum Name ServicesThe ENS SpecificationBottom Layer: Name Owners and ResolversThe Namehash algorithmHow to choose a valid nameRoot node ownershipResolversMiddle Layer: The .eth NodesVickrey auctionsTop Layer: The DeedsRegistering a NameManaging Your ENS NameCreating an ENS subdomainENS ResolversResolving a Name to a Swarm Hash (Content)From App to DAppConclusions13. The Ethereum Virtual MachineWhat Is the EVM?Comparison with Existing TechnologyThe EVM Instruction Set (Bytecode Operations)Ethereum StateCompiling Solidity to EVM BytecodeContract Deployment CodeDisassembling the BytecodeTuring Completeness and GasGasGas Accounting During ExecutionGas Accounting ConsiderationsGas Cost Versus Gas PriceNegative gas costsBlock Gas LimitWho decides what the block gas limit is?Conclusions14. ConsensusConsensus via Proof of WorkConsensus via Proof of Stake (PoS)Ethash: Ethereums Proof-of-Work AlgorithmCasper: Ethereums Proof-of-Stake AlgorithmPrinciples of ConsensusControversy and CompetitionConclusionsA. Ethereum Fork HistoryEthereum Classic (ETC)The Decentralized Autonomous Organization (The DAO)The Reentrancy BugTechnical DetailsAttack FlowThe DAO Hard ForkTimeline of the DAO Hard ForkEthereum and Ethereum ClassicThe EVMCore Network DevelopmentOther Notable Ethereum ForksB. Ethereum StandardsEthereum Improvement Proposals (EIPs)Table of Most Important EIPs and ERCsC. Ethereum EVM Opcodes and Gas ConsumptionD. Development Tools, Frameworks, and LibrariesFrameworksTruffleInstalling the Truffle frameworkIntegrating a prebuilt Truffle project (Truffle Box)Creating a truffle project directoryConfiguring truffleUsing truffle to deploy a contractTruffle migrationsunderstanding deployment scriptsUsing the Truffle consoleEmbarkOpenZeppelinZeppelinOSUtilitiesEthereumJS helpeth: A Command-Line Utilitydapp.toolsSputnikVMLibrariesweb3.jsweb3.pyEthereumJSweb3jEtherJarNethereumethers.jsEmerald PlatformTesting Smart ContractsOn-Blockchain TestingGanache: A Local Test BlockchainE. web3.js TutorialDescriptionweb3.js Contract Basic Interaction in a Nonblocked (Async) FashionNode.js Script ExecutionReviewing the Demo ScriptContract InteractionAsynchronous Operation with AwaitF. Short Links ReferenceSmart Contract SecurityTokensIndex


wymiar kartki a2, obrazy pastelami olejnymi, podkładka pod mysz ranking, galaretka z agrestu, mintaj mrożony, fairy po polsku, czekoladki adwentowe, melanie martinez płyta, kapsulki kawa, smaki piccolo, somersby mango gdzie kupić, plastik przezroczysty, jack cuba libre, serek wiejski z truskawkami, bianco cin cin, bols kamikaze lemon guarana, muszyna niegazowana, splat extra white