Stack Exchange Network

Stack Exchange network consists of 175 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Visit Stack Exchange

Hot answers tagged

142

Here is an extremely simplified sketch of the problem, but it should give a pretty good idea of what the problem is. The data: This is the hash of the lastest block (shortened to 30 characters): 00000000000001adf44c7d69767585 These are the hashes of a few valid transactions waiting for inclusion (shortened). 5572eca4dd4 db7d0c0b845 And this the hash ...


62

The following is a description of the global, statistical gamble which is played every 10 or so minutes. The interval of the game is controlled by the difficulty which says how many "hashes" are needed per interval. In other words, the difficulty and target define the "odds of the house" against your chance of getting a winning SHA hash. The nonce is the ...


36

They try to find a random nonce (a little random data) that goes into a block and makes the block have a (SHA256) hash that (in binary) starts with a certain amount of 0's. The more zeroes the more rare hash is. A good hash' outcome is not predictable, and so you have to try a lot of times to find a good nonce. The amount of zeroes are based on how ...


34

I think the premise of the question is not correct. The work is not useless, it secures the transactions. The public hash chain ensures that Bitcoins can only be spent once. The mechanism piles computations on top of legitimate transactions so that the recipient knows that an attacker would need at least as much computing ability to "undo" the transaction. ...


34

Taking the sha256 hash of that hash gives 3b a3 ed fd 7a 7b .............. But the real transaction hash according to blockexplorer.com is .............. 7b 7a fd ed a3 3b The answer I was getting was correct, but bytewise reversed. I need to get used to Bitcoin using little-endian storage.


30

I guess you mean Vanitygen: https://bitcointalk.org/index.php?topic=25804.0 From that page: Vanitygen is a command-line vanity bitcoin address generator. Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys. Vanitygen's search is probabilistic, and the amount of time ...


28

The difficulty is already to the point where it requires over a quadrillion hashes to solve a block. 2^32 is only 4 billion. Fewer than one in a billion times will there be any nonce that makes the block valid. A miner simply has to try every possible nonce on a different block. He can vary the coinbase, the transaction set, and/or the block timestamp. Any ...


26

RIPEMD was used because it produces the shortest hashes whose uniqueness is still sufficiently assured. This allows Bitcoin addresses to be shorter. SHA256 is used as well because Bitcoin's use of a hash of a public key might create unique weaknesses due to unexpected interactions between RIPEMD and ECDSA (the public key signature algorithm). Interposing an ...


25

You're hashing the hexadecimal representation of the first hash. You need to hash the actual hash -- the binary data that the hex represents. Try this: $ echo -n hello |openssl dgst -sha256 -binary |openssl dgst -sha256


23

In each iteration, you concatenate two subsequent hashes of the previous level, and double-sha256 them. If there is an odd number of hashes, concatenate the last element with itself. This gives you a new list of hashes. Repeat, and stop when one hash remains. This is the merkle root. Assume you have tx hashes Ha1,Ha2,Ha3,Ha4,Ha5,Ha6,Ha7 First iteration: ...


23

It's just to get shorter addresses. Regular public keys are 65 bytes long, which is much too long to be convenient. Compressed public keys are 33 bytes and could potentially be used instead of hashes, though these are a little longer than 20-byte hashes. It also seems likely that Satoshi didn't know about compressed public keys or wasn't comfortable with ...


21

It means that there will be no significant speedup by implementing the algorithm in an ASIC, as compared to a CPU based implementation. This is usually achieved by requiring a lot of memory, which when implementing this on an ASIC, translates to needing lots of physical area on the chip. ASIC implementations derive their power from having many physically ...


20

Short answer: no. Long answer: Blocks are exactly 80 bytes long. When have you ever seen an 80 character password? Blocks start with a bunch of null bytes in the version field. Again, when have you seen that in a password? Each miner is mining a different block. You don't know the merkle root of what they're mining because that contains a hash of a secret ...


18

We don't know for sure, but the most popular theory is that a double hash was chosen to protect against length extension attacks.


18

The hashrate can be calculated from the expected rate of finding a block (144 a day), the actual rate of finding a block and the current difficulty. So let's calculate the average hash_rate for a single day: expected_blocks = 144 difficulty = 11187257.461361 # this is on May 22nd 2013 blocks_found = 155 # Also May 22nd 2013 hash_rate = (blocks_found/...


17

NooShare is an idea for: a decentralised ledger similar to Bitcoin with the novel feature that its proofs of work are iterations of essentially arbitrary Markov-Chain Monte-Carlo (MCMC) chains, the scheduling of which can be purchased using the currency itself. It is a novel economic basis for sharing fallow computational resources. I don't know ...


16

Short answer: difficulty = hashrate / (2^256 / max_target / intended_time_per_block) = hashrate / (2^256 / (2^208*65535) / 600) = hashrate / (2^48 / 65535 / 600) = hashrate / 7158388.055 (where hashrate is expressed in hashes/s) Longer answer: there is no direct relation between the actual network hashrate and the ...


15

BitCoin is futureproof, because in the event that processing power (or more relevantly, mathematical advances) make its algorithms weak or obsolete, the protocol can simply be upgraded. Copied from Stack Overflow: Upgrades to the Bitcoin protocol that break compatibility are implementable by social mechanisms but not by any technical process, which is by ...


15

I can see that you are talking about the mining process and the SHA hashing algorithm. From what I understand that function needs to be: Scalable - one needs to be able to precisely adjust how much work needs to be put in for a desired amount. This is done through the use of Target/Difficulty and uniformity of the output of the SHA function (it produces ...


15

(If I may repeat myself a bit...) Mining is like having a lot of people throwing weighted coins (such that 1 millionth of the time it comes up heads) and telling you when they hit a heads. If one such "heads" is reported every 10 minutes (600 seconds), you can make a very accurate estimation of how many times per second the coins are being flipped. In this ...


14

The problem is that no one has come up with a proof-of-work system based on useful work that also: Generates easily verifiable solutions Can have the difficulty of finding a solution adjusted For example, if the system were searching for prime numbers, the solutions would take a long time to verify as being prime. The difficulty of finding the next prime ...


13

From Zooko's answer provided in Crypto StackExchange: SHA-256(SHA-256(x)) was proposed by Ferguson and Schneier in their excellent book "Practical Cryptography" (later updated by Ferguson, Schneier, and Kohno and renamed "Cryptography Engineering") as a way to make SHA-256 invulnerable to "length-extension" attack. They called it "SHA-256d".


13

The wiki answers this. TLDR: to prevent against birthday attacks. Bitcoin is using two hash iterations (denoted SHA256^2 ie "SHA256 function squared") and the reason for this relates to a partial attack on the smaller but related SHA1 hash. SHA1's resistance to birthday attacks has been partially broken as of 2005 in O(2^64) vs the design O(2^80). While ...


13

Bitcoin uses double hashing almost everywhere it hashes in one of two variants: RIPEMD160(SHA256(x)) called Hash160 which produces a 160 bit output hashing the public key to generate part of a Bitcoin addresses SHA256(SHA256(x)) called Hash256 which produces a 256 bit output generating the checksum in a Bitcoin address hashing the block in a merkle tree ...


13

An ASIC is another way of running a program or calculation or what have you (in our case mining) using a PCB/Hardware instead of Software running on a general purpose computer. GPUs are technically ASICs, their application being graphics processing and output. ASIC resistance means your crypto is more fairly distributed because their is no centralization ...


13

I believe that the use of the term "pointer" in the this sentence is not referring to the low-level data type, such as int *pointer_to_int; would be in C. I think it's more referring to a "pointer" as a key into a data structure or database table. In this sense, the hash is a pointer/key used to retrieve the information you are looking for. For example, ...


13

How to calculate the target from bits Let's start with a block-header, always 80-bytes that looks like this: 04000000b9e2784a84e5d2468cee60ad14e08d0fee5dda49a37148040000000000000000e9dd2b13157508891880ef68729a1e5ecdde58062ebfa214a89f0141e5a4717faefd2b577627061880564bec From the 80-bytes, the bits are actually the 72nd to 76th byte: ...


12

Mining provides a way to reach consensus on what the transaction ledger should look like and know that nobody is cheating. That's the non-technical definition of mining. What exactly is Mining? The "authority" for double spending is the blockchain. The blockchain consists of the history of all blocks in the blockchain plus the next block of transactions. ...


11

Network hashrate calculated using formula: H ~= h / t , where t is time that took to find X number of blocks and h is approximate number of hashes it should have taken to solve X number of blocks, h = X * (D * 2**256 / (0xffff * 2**208)) Wiki:Difficulty Bitcoin network hashrate stats available at bitcoinwatch.com and bitcoincharts.com .


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