Ethereum addresses are composed of the prefix "0x", a common identifier for hexadecimal, concatenated with the rightmost 20 bytes of the Keccak-256 hash (big endian) of the ECDSA public key (the curve used is the so called secp256k1, the same as Bitcoin). In hexadecimal, 2 digits represents a byte, meaning addresses contain 40 hexadecimal digits. An example of an Ethereum address is 0xb794F5eA0ba39494cE839613fffBA74279579268. Contract addresses are in the same format, however they are determined by sender and creation transaction nonce.[34] User accounts are indistinguishable from contract accounts given only an address for each and no blockchain data. Any valid Keccak-256 hash put into the described format is valid, even if it does not correspond to an account with a private key or a contract. This is unlike Bitcoin, which uses base58check to ensure that addresses are properly typed.
The "Metropolis Part 1: Byzantium" soft[citation needed] fork took effect on 16 October 2017, and included changes to reduce the complexity of the EVM and provide more flexibility for smart contract developers. Byzantium also added supports for zk-SNARKs (from Zcash), with the first zk-SNARK transaction occurring on testnet on September 19, 2017.[citation needed]
Mining is a record-keeping service done through the use of computer processing power.[e] Miners keep the blockchain consistent, complete, and unalterable by repeatedly grouping newly broadcast transactions into a block, which is then broadcast to the network and verified by recipient nodes.[75] Each block contains a SHA-256 cryptographic hash of the previous block,[75] thus linking it to the previous block and giving the blockchain its name.[7]:ch. 7[75]
Transactions are defined using a Forth-like scripting language.[7]:ch. 5 Transactions consist of one or more inputs and one or more outputs. When a user sends bitcoins, the user designates each address and the amount of bitcoin being sent to that address in an output. To prevent double spending, each input must refer to a previous unspent output in the blockchain.[77] The use of multiple inputs corresponds to the use of multiple coins in a cash transaction. Since transactions can have multiple outputs, users can send bitcoins to multiple recipients in one transaction. As in a cash transaction, the sum of inputs (coins used to pay) can exceed the intended sum of payments. In such a case, an additional output is used, returning the change back to the payer.[77] Any input satoshis not accounted for in the transaction outputs become the transaction fee.[77]
Though transaction fees are optional, miners can choose which transactions to process and prioritize those that pay higher fees.[77] Miners may choose transactions based on the fee paid relative to their storage size, not the absolute amount of money paid as a fee. These fees are generally measured in satoshis per byte (sat/b). The size of transactions is dependent on the number of inputs used to create the transaction, and the number of outputs.[7]:ch. 8
^ Jump up to: a b c d e Joshua A. Kroll; Ian C. Davey; Edward W. Felten (11–12 June 2013). "The Economics of Bitcoin Mining, or Bitcoin in the Presence of Adversaries" (PDF). The Twelfth Workshop on the Economics of Information Security (WEIS 2013). Archived (PDF) from the original on 9 May 2016. Retrieved 26 April 2016. A transaction fee is like a tip or gratuity left for the miner.