13

Summary A block mined by a miner that sets their computer time ahead of the current "real" time will have their winning block rejected by other Ethereum nodes. Other miners on the Ethereum network will continue mining on the latest valid block. Details According to the code, from Github - Go Ethereum - consensus/ethash/consensus.go, lines 220-284: // ...


8

If a miner M sees a block B with a timestamp far in the future, here's what they would probably do: instead of building on B, they would publish their own block C with a more accurate timestamp. By doing this, M is likely to get rewarded since others will likely build upon C instead of B. As mentioned in the question, to build upon block B, a miner, such ...


3

Just to add to Rob's answer... I've variously seen this "2 hours" described in different places as different lengths of time, so I'd take it with a pinch of salt. (For example, here it's 900 seconds, which is 15 minutes.) Note that in the Yellow Paper, this imposed time limit is absent. The only stipulation is that the current timestamp is greater than ...


2

It's unlikely that the implementation details of something like the memory pool are part of the specification. It might mention "there's a pool of transactions", but implementation would likely be left as an exercise for the implementer. The important parts of the Geth implementation are in tx_pool.go (and for Parity it looks like the files in parity/miner/...


2

It says that RLP is simple unambiguous It's simpler than other algorithms because it doesn't define any data types other than bytes and arrays. It's unambiguous because the same input data is always serialized to the same sequence of bytes. In many languages key/value maps don't have explicit ordering. This means 2 entries: key1: value1 key2: value2 ...


2

Yes, contracts can send ETH to both contracts and Externally Owned Accounts.


2

People often say that the goal of mining is to get a certain number of "leading zeroes", because that is easy to visualize, but a more precise statement is that the goal is to find x such that int(SHA256(SHA256(x))) < T for some target T, where int( ) means we are interpreting the 256-bit hash as a 256 bit unsigned integer. This is almost equivalent to ...


2

It is important to understand that this is a block validation algorithm. When this section of the whitepaper talks about returning an error, this is at the block layer as opposed to the transaction layer. An error at the block validation level will not allow a block to be propagated to the network, as opposed to an error at the transaction layer, which will ...


1

Let us start with the concept of a file with contents, for reference, because I think we can all relate to what is going on in that case. In this context, the contents are the condition of the file, a.k.a. the "state" of the file. The file's state might change from time to time as someone or something edits the file. Each revision is a transition because ...


1

error correction: or if the total gas consumed in the block => or if the total gas consumed in the transaction In the case of block, block header's gasLimit must be bigger than the sum of gasLimit of transactions.


1

Yes, Contracts (Solidity code) can be used to send and receive ether from externally owned accounts. Solidity offers three methods to send ether from contract: Address.send(amount) address.transfer(amount) address.call.value(amount) Also, you can send ether to contract using Fallback Functions


1

In Bitcoin, SHA256(SHA256(x)) called Hash256 which produces a 256 bit output hashing the block in a merkle tree linking transaction outputs and inputs hash of the block header (and thus the proof of work and the link to the previous block) This is contiguous to the preserving of the consistent 128 bits of security throughout the protocol. From This Answer ...


1

Does this mean that if you send a message / transaction to an address that doesnt exist, it the call would succeed? Yes. How does the key management work? I'm not sure I understand the question. For Ethereum accounts, a private key is randomly generated, a public key is derived from that, and then an address is derived from that. If you have the private ...


1

Sending a transaction to a random address is equiavalent to 'burning' or 'destroying' the tokens. This is actually something that is already commonly done with the all '0' address, and 0x000000000000000000000000000000000000dEaD. Take a read here: Transaction recipient - Mastering Ethereum Ethereum does no further validation of this field. Any 20-byte ...


1

Miners record a block timeStamp with each discovered block. This value cannot be confirmed or disproved by observers without reference to an accurate external time source, which we do not want. TimeStamps are checked two ways. First, the clock should not jump too far into the future because that is highly unlikely owing to the predictable pace of block ...


1

The gas consumption is enforced at the protocol level. Every OP/activity has a gas cost associated to it. Sending a transaction will always cost a minimum of 21000 gas, writing a storage slot will be 20000, etc... You could modify your node's code to skip this check and try to broadcast the transaction to the network, but it will never get included in a ...


1

Taken from the documentation, you have the following axioms: if a string is 0-55 bytes long, the RLP encoding consists of a single byte with value 0x80 plus the length of the string followed by the string. The range of the first byte is thus [0x80, 0xb7]. And If the total payload of a list (i.e. the combined length of all its items being RLP encoded)...


1

It's not possible as of yet, but their are EIPs in the works (1 being currency and crypto abstraction, and 2 being account abstraction) that would allow this. It would really be up to the miners to decide whether they wanted to accept a tx where the gas is paid in a non-ETH erc20 like OMG or BAT. IMO it's unlikely that a very large portion of gas will be ...


1

The context of the problem is about a time when it's hard to run a full node due to the immense size of the blockchain data and only few organizations will be able to have full nodes. As I understand, If at least one honest full node exists it will provide a proof of invalidity to other nodes (everyone including light nodes) can verify it. So if other nodes ...


1

I think you do not understand how the Proof of Work algorithm works. The idea is that nodes have two different roles: the mining role, that is creating blocks containing transactions. the validation role, that is validating the block received is actually a well-formed block, and that it goes on top of the existing blockchain. To be sure that the consensus ...


1

It's counterproductive to have an unlimited number of potential tokens issued because potential investors are not incentivized to purchase in the short term. Limiting the number of tokens with a hard cap creates scarcity and incentive for people to purchase tokens immediately instead of waiting. With ICO's many people wait to see how the ICO performs ...


Only top voted, non community-wiki answers of a minimum length are eligible