Glossary · ethereum

Glossary

  • Computational infeasibility: a process is computationally infeasible if it would take an impracticably long time (eg. billions of years) to do it for anyone who might conceivably have an interest in carrying it out. Generally, two 80 computational steps is considered the lower tied for computational infeasibility.
  • Hash: a hash function (or hash algorithm) is a process by which a chunk of data of arbitrary size (could be anything; a lump of text, a picture, or even a list of other hashes) is processed into a puny lump of data (usually thirty two bytes) which looks entirely random, and from which no meaningful data can be recovered about the document, but which has the significant property that the result of hashing one particular document is always the same. Additionally, it is crucially significant that it is computationally infeasible to find two documents that have the same hash. Generally, switching even one letter in a document will downright randomize the hash; for example, the SHA3 hash of “Saturday” is c38bbc8e93c09f6ed3fe39b5135da91ad1a99d397ef16948606cdcbd14929f9d , whereas the SHA3 hash of Caturday is b4013c0eed56d5a0b448b02ec1d10dd18c1b3832068fbbdc65b98fa9b14b6dbf . Hashes are usually used as a way of creating a globally agreed-upon identifier for a particular document that cannot be forged.
  • Encryption: encryption is a process by which a document (plaintext) is combined with a shorter string of data, called a key (eg. c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4 ), to produce an output (ciphertext) which can be “decrypted” back into the original plaintext by someone else who has the key, but which is incomprehensible and computationally infeasible to decrypt for anyone who does not have the key.
  • Public key encryption: a special kind of encryption where there is a process for generating two keys at the same time (typically called a private key and a public key), such that documents encrypted using one key can be decrypted with the other. Generally, as suggested by the name, individuals publish their public keys and keep their private keys to themselves.
  • Digital signature: a digital signing algorithm is a process by which a user can produce a brief string of data called a “signature” of a document using a private key such that anyone with the corresponding public key, the signature and the document can verify that (1) the document was “signed” by the proprietor of that particular private key, and (Two) the document was not switched after it was signed. Note that this differs from traditional signatures where you can scribble extra text onto a document after you sign it and there’s no way to tell the difference; in a digital signature any switch to the document will render the signature invalid.

  • Address: an address is essentially the representation of a public key belonging to a particular user; for example, the address associated with the private key given above is 0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826 . Note that in practice, the address is technically the hash of a public key, but for simpleness it’s better to overlook this distinction.
  • Transaction: a transaction is a digitally signed message authorizing some particular act associated with the blockchain. In a currency, the superior transaction type is sending currency units or tokens to someone else; in other systems deeds like registering domain names, making and fulfilling trade offers and coming in into contracts are also valid transaction types.
  • Block: a block is a package of data that contains zero or more transactions, the hash of the previous block (“parent”), and optionally other data. Because each block (except for the initial “genesis block”) points to the previous block, the data structure that they form is called a “blockchain”.
  • State: the set of data that a blockchain network stringently needs to keep track of, and that represents data presently relevant to applications on the chain. In a currency, this is simply balances; in more elaborate applications this could refer to other data structures that the application in question needs to keep track of (eg. who has what domain name, what is the status of a given contract, etc). The post-state of a block is the state after executing all transactions in the ancestors of the block beginning from the genesis going up to and including the transactions in that block itself.
  • History: the past transactions and blocks. Note that the state is a deterministic function of the history.
  • Account: an account is an object in the state; in a currency system, this is a record of how much money some particular user has; in more complicated systems accounts can have different functions.
  • Proof of work: one significant property of a block in Bitcoin, Ethereum and many other crypto-ledgers is that the hash of the block must be smaller than some target value. The reason this is necessary is that in a decentralized system anyone can produce blocks, so in order to prevent the network from being flooded with blocks, and to provide a way of measuring how much consensus there is behind a particular version of the blockchain, it must in some way be hard to produce a block. Because hashes are pseudorandom, finding a block whose hash is less than 1e56 takes an average of Four.Trio billion attempts. In all such systems, the target value self-adjusts so that on average one knot in the network finds a block every N minutes (eg. N = ten for Bitcoin and one for Ethereum).
  • Proof of work nonce: a meaningless value in a block which can be adjusted in order to attempt to please the proof of work condition
  • Mining: mining is the process of repeatedly aggregating transactions, constructing a block and attempting different nonces until a nonce is found that pleases the proof of work condition. If a miner gets fortunate and produces a valid block, they are granted a certain number of coins as a prize as well as all of the transaction fees in the block, and all miners commence attempting to create a fresh block containing the hash of the freshly generated block as their parent.
  • Stale: a stale is a block that is created when there is already another block with the same parent out there; stales typically get discarded and are wasted effort.
  • Fork: a situation where two blocks are generated pointing to the same block as their parent, and some portion of miners see one block very first and some see the other. This may lead to two blockchains growing at the same time. Generally, it is mathematically near-certain that a fork will resolve itself within four blocks as miners on one chain will eventually get fortunate and that chain will grow longer and all miners switch to it; however, forks may last longer if miners disagree on whether or not a particular block is valid.
  • Dual spend: a deliberate fork, where a user with a large amount of mining power sends a transaction to purchase some product, then after receiving the product creates another transaction sending the same coins to themselves. The attacker then creates a block, at the same level as the block containing the original transaction but containing the 2nd transaction instead, and starts mining on the fork. If the attacker has more than 50% of all mining power, the dual spend is assured to succeed eventually at any block depth. Below 50%, there is some probability of success, but it is usually only substantial at a depth up to about 2-5; for this reason, most cryptocurrency exchanges, gambling sites and financial services wait until six blocks have been produced (“six confirmations”) before accepting a payment.
  • Light client – a client that downloads only a puny part of the blockchain, permitting users of low-power or low-storage hardware like smartphones and laptops to maintain almost the same ensure of security by sometimes selectively downloading petite parts of the state without needing to spend megabytes of bandwidth and gigabytes of storage on utter blockchain validation and maintenance.
  • Serialization: the process of converting a data structure into a sequence of bytes. Ethereum internally uses an encoding format called recursive-length prefix encoding (RLP), described here
  • Patricia tree (or trie): a data structure which stores the state of every account. The trie is built by beginning from each individual knot, then splitting the knots into groups of up to sixteen and hashing each group, then making hashes of hashes and so forward until there is one final “root hash” for the entire trie. The trie has the significant properties that (1) there is exactly one possible trie and therefore one possible root hash for each set of data, (Two) it is very effortless to update, add or liquidate knots in the trie and generate the fresh root hash, (Trio) there is no way to modify any part of the tree without switching the root hash, so if the root hash is included in a signed document or a valid block the signature or proof of work secures the entire tree, and (Four) one can provide just the “branch” of a tree going down to a particular knot as cryptographic proof that that knot is indeed in the tree with that exact content. Patricia trees are also used to store the internal storage of accounts as well as transactions and ommers. See here for a more detailed description.
  • Uncle: See Ommer, the gender-neutral alternative to aunt/uncle.
  • Ommer: a child of a parent of a parent of a block that is not the parent, or more generally a child of an ancestor that is not itself an ancestor. If A is an ommer of B, B is a nibling (niece/nephew) of A.
  • Uncle inclusion mechanism: Ethereum has a mechanism where a block may include its uncles; this ensures that miners that create blocks that do not fairly get included into the main chain can still get rewarded.
  • Account nonce: a transaction counter in each account. This prevents replay attacks where a transaction sending eg. Twenty coins from A to B can be replayed by B over and over to continually drain A’s balance.
  • EVM code: Ethereum virtual machine code, the programming language in which accounts on the Ethereum blockchain can contain code. The EVM code associated with an account is executed every time a message is sent to that account, and has the capability to read/write storage and itself send messages.
  • Message: a sort of “virtual transaction” sent by EVM code from one account to another. Note that “transactions” and “messages” in Ethereum are different. A “transaction” in Ethereum parlance specifically refers to a digitally signed chunk of data, originating from a source other than executing EVM code, to be recorded in the blockchain. Every transaction triggers an associated message, but messages can also be sent by EVM code, in which case they are never represented in data anywhere.
  • Storage: a key/value database contained in each account, where keys and values are both 32-byte strings but can otherwise contain anything.
  • Externally possessed account: an account managed by a private key. Externally wielded accounts cannot contain EVM code.
  • Contract: an account which contains, and is managed by, EVM code. Contracts cannot be managed by private keys directly; unless built into the EVM code, a contract has no holder once released.
  • Ether: the primary internal cryptographic token of the Ethereum network. Ether is used to pay transaction and computation fees for Ethereum transactions.
  • Gas: a measurement harshly equivalent to computational steps. Every transaction is required to include a gas limit and a fee that it is willing to pay per gas; miners have the choice of including the transaction and collecting the fee or not. If the total number of gas used by the computation spawned by the transaction, including the original message and any sub-messages that may be triggered, is less than or equal to the gas limit, then the transaction processes. If the total gas exceeds the gas limit, then all switches are reverted, except that the transaction is still valid and the fee can still be collected by the miner. Every operation has a gas expenditure; for most operations it is

3-10, albeit some expensive operations have expenditures up to seven hundred and a transaction itself has an expenditure of 21000.

Glossary · ethereum

Glossary

  • Computational infeasibility: a process is computationally infeasible if it would take an impracticably long time (eg. billions of years) to do it for anyone who might conceivably have an interest in carrying it out. Generally, two 80 computational steps is considered the lower roped for computational infeasibility.
  • Hash: a hash function (or hash algorithm) is a process by which a lump of data of arbitrary size (could be anything; a lump of text, a picture, or even a list of other hashes) is processed into a puny chunk of data (usually thirty two bytes) which looks downright random, and from which no meaningful data can be recovered about the document, but which has the significant property that the result of hashing one particular document is always the same. Additionally, it is crucially significant that it is computationally infeasible to find two documents that have the same hash. Generally, switching even one letter in a document will fully randomize the hash; for example, the SHA3 hash of “Saturday” is c38bbc8e93c09f6ed3fe39b5135da91ad1a99d397ef16948606cdcbd14929f9d , whereas the SHA3 hash of Caturday is b4013c0eed56d5a0b448b02ec1d10dd18c1b3832068fbbdc65b98fa9b14b6dbf . Hashes are usually used as a way of creating a globally agreed-upon identifier for a particular document that cannot be forged.
  • Encryption: encryption is a process by which a document (plaintext) is combined with a shorter string of data, called a key (eg. c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4 ), to produce an output (ciphertext) which can be “decrypted” back into the original plaintext by someone else who has the key, but which is incomprehensible and computationally infeasible to decrypt for anyone who does not have the key.
  • Public key encryption: a special kind of encryption where there is a process for generating two keys at the same time (typically called a private key and a public key), such that documents encrypted using one key can be decrypted with the other. Generally, as suggested by the name, individuals publish their public keys and keep their private keys to themselves.
  • Digital signature: a digital signing algorithm is a process by which a user can produce a brief string of data called a “signature” of a document using a private key such that anyone with the corresponding public key, the signature and the document can verify that (1) the document was “signed” by the proprietor of that particular private key, and (Two) the document was not switched after it was signed. Note that this differs from traditional signatures where you can scribble extra text onto a document after you sign it and there’s no way to tell the difference; in a digital signature any switch to the document will render the signature invalid.
  • Address: an address is essentially the representation of a public key belonging to a particular user; for example, the address associated with the private key given above is 0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826 . Note that in practice, the address is technically the hash of a public key, but for plainness it’s better to disregard this distinction.
  • Transaction: a transaction is a digitally signed message authorizing some particular activity associated with the blockchain. In a currency, the superior transaction type is sending currency units or tokens to someone else; in other systems deeds like registering domain names, making and fulfilling trade offers and coming in into contracts are also valid transaction types.
  • Block: a block is a package of data that contains zero or more transactions, the hash of the previous block (“parent”), and optionally other data. Because each block (except for the initial “genesis block”) points to the previous block, the data structure that they form is called a “blockchain”.
  • State: the set of data that a blockchain network stringently needs to keep track of, and that represents data presently relevant to applications on the chain. In a currency, this is simply balances; in more sophisticated applications this could refer to other data structures that the application in question needs to keep track of (eg. who has what domain name, what is the status of a given contract, etc). The post-state of a block is the state after executing all transactions in the ancestors of the block embarking from the genesis going up to and including the transactions in that block itself.
  • History: the past transactions and blocks. Note that the state is a deterministic function of the history.
  • Account: an account is an object in the state; in a currency system, this is a record of how much money some particular user has; in more elaborate systems accounts can have different functions.
  • Proof of work: one significant property of a block in Bitcoin, Ethereum and many other crypto-ledgers is that the hash of the block must be smaller than some target value. The reason this is necessary is that in a decentralized system anyone can produce blocks, so in order to prevent the network from being flooded with blocks, and to provide a way of measuring how much consensus there is behind a particular version of the blockchain, it must in some way be hard to produce a block. Because hashes are pseudorandom, finding a block whose hash is less than 1e56 takes an average of Four.Trio billion attempts. In all such systems, the target value self-adjusts so that on average one knot in the network finds a block every N minutes (eg. N = ten for Bitcoin and one for Ethereum).
  • Proof of work nonce: a meaningless value in a block which can be adjusted in order to attempt to please the proof of work condition
  • Mining: mining is the process of repeatedly aggregating transactions, constructing a block and attempting different nonces until a nonce is found that pleases the proof of work condition. If a miner gets fortunate and produces a valid block, they are granted a certain number of coins as a prize as well as all of the transaction fees in the block, and all miners begin attempting to create a fresh block containing the hash of the freshly generated block as their parent.
  • Stale: a stale is a block that is created when there is already another block with the same parent out there; stales typically get discarded and are wasted effort.
  • Fork: a situation where two blocks are generated pointing to the same block as their parent, and some portion of miners see one block very first and some see the other. This may lead to two blockchains growing at the same time. Generally, it is mathematically near-certain that a fork will resolve itself within four blocks as miners on one chain will eventually get fortunate and that chain will grow longer and all miners switch to it; however, forks may last longer if miners disagree on whether or not a particular block is valid.
  • Dual spend: a deliberate fork, where a user with a large amount of mining power sends a transaction to purchase some product, then after receiving the product creates another transaction sending the same coins to themselves. The attacker then creates a block, at the same level as the block containing the original transaction but containing the 2nd transaction instead, and starts mining on the fork. If the attacker has more than 50% of all mining power, the dual spend is assured to succeed eventually at any block depth. Below 50%, there is some probability of success, but it is usually only substantial at a depth up to about 2-5; for this reason, most cryptocurrency exchanges, gambling sites and financial services wait until six blocks have been produced (“six confirmations”) before accepting a payment.
  • Light client – a client that downloads only a puny part of the blockchain, permitting users of low-power or low-storage hardware like smartphones and laptops to maintain almost the same assure of security by sometimes selectively downloading petite parts of the state without needing to spend megabytes of bandwidth and gigabytes of storage on utter blockchain validation and maintenance.
  • Serialization: the process of converting a data structure into a sequence of bytes. Ethereum internally uses an encoding format called recursive-length prefix encoding (RLP), described here
  • Patricia tree (or trie): a data structure which stores the state of every account. The trie is built by kicking off from each individual knot, then splitting the knots into groups of up to sixteen and hashing each group, then making hashes of hashes and so forward until there is one final “root hash” for the entire trie. The trie has the significant properties that (1) there is exactly one possible trie and therefore one possible root hash for each set of data, (Two) it is very effortless to update, add or eliminate knots in the trie and generate the fresh root hash, (Trio) there is no way to modify any part of the tree without switching the root hash, so if the root hash is included in a signed document or a valid block the signature or proof of work secures the entire tree, and (Four) one can provide just the “branch” of a tree going down to a particular knot as cryptographic proof that that knot is indeed in the tree with that exact content. Patricia trees are also used to store the internal storage of accounts as well as transactions and ommers. See here for a more detailed description.
  • Uncle: See Ommer, the gender-neutral alternative to aunt/uncle.
  • Ommer: a child of a parent of a parent of a block that is not the parent, or more generally a child of an ancestor that is not itself an ancestor. If A is an ommer of B, B is a nibling (niece/nephew) of A.
  • Uncle inclusion mechanism: Ethereum has a mechanism where a block may include its uncles; this ensures that miners that create blocks that do not fairly get included into the main chain can still get rewarded.
  • Account nonce: a transaction counter in each account. This prevents replay attacks where a transaction sending eg. Twenty coins from A to B can be replayed by B over and over to continually drain A’s balance.
  • EVM code: Ethereum virtual machine code, the programming language in which accounts on the Ethereum blockchain can contain code. The EVM code associated with an account is executed every time a message is sent to that account, and has the capability to read/write storage and itself send messages.
  • Message: a sort of “virtual transaction” sent by EVM code from one account to another. Note that “transactions” and “messages” in Ethereum are different. A “transaction” in Ethereum parlance specifically refers to a digitally signed chunk of data, originating from a source other than executing EVM code, to be recorded in the blockchain. Every transaction triggers an associated message, but messages can also be sent by EVM code, in which case they are never represented in data anywhere.
  • Storage: a key/value database contained in each account, where keys and values are both 32-byte strings but can otherwise contain anything.
  • Externally wielded account: an account managed by a private key. Externally wielded accounts cannot contain EVM code.
  • Contract: an account which contains, and is managed by, EVM code. Contracts cannot be managed by private keys directly; unless built into the EVM code, a contract has no possessor once released.
  • Ether: the primary internal cryptographic token of the Ethereum network. Ether is used to pay transaction and computation fees for Ethereum transactions.
  • Gas: a measurement toughly equivalent to computational steps. Every transaction is required to include a gas limit and a fee that it is willing to pay per gas; miners have the choice of including the transaction and collecting the fee or not. If the total number of gas used by the computation spawned by the transaction, including the original message and any sub-messages that may be triggered, is less than or equal to the gas limit, then the transaction processes. If the total gas exceeds the gas limit, then all switches are reverted, except that the transaction is still valid and the fee can still be collected by the miner. Every operation has a gas expenditure; for most operations it is

3-10, albeit some expensive operations have expenditures up to seven hundred and a transaction itself has an expenditure of 21000.

Related video:

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *