# I. Satoshi Nakamoto is a:

## 10. C Programmer

`/***************************************************************            * bwp-calc -- Calculations for the Bitcoin white paper        *    *                                                             *    * Author:   Lex Sheehan                                       *    *                                                             *    * Purpose:  Demonstration of Bitcoin white paper calculations *    *                                                             *    * Usage:    Click the <Execute> button and see Results below. *    *                                                             *    * Notes:    https://en.bitcoin.it/wiki/Bitcoin_whitepaper     *    *                                                             *    *           For a deep understanding of cryptocurrencies and  *    *           blockchain technology (including Ethereum) ...    *   *           Register at cryptocurrencies.developersclass.com  *   ***************************************************************/#include <stdio.h>#include <math.h>double AttackerSuccessProbability(double q, int z)   {       double p = 1.0 - q;       double lambda = z * (q / p);       double sum = 1.0;       int i, k;       for (k = 0; k <= z; k++) {           double poisson = exp(-lambda);           for (i = 1; i <= k; i++)               poisson *= lambda / i;           sum -= poisson * (1 - pow(q / p, z - k));       }       return sum; }int main() {   int num = 10;   int z;   double p;      double q = 0.1;   printf("q=%f\n", q);   for (z=0; z <= num; z++) {       p = AttackerSuccessProbability(q, z);       printf("z=%i  P=%f\n", z, p);   }      int zTimes5;   q = 0.3;   printf("\nq=%f\n", q);   for (z=0; z <= num; z++) {       zTimes5=z*5;       p = AttackerSuccessProbability(q, zTimes5);       printf("z=%i  P=%f\n", zTimes5, p);   }      puts("\nSolving for P less than 0.1%...\n");   q = 0.1;   puts("P < 0.001");   for (q=0.10; q <= 0.45; q+=0.05) {       p = 1;       for (z=0; p >= 0.001; z++) {           p = AttackerSuccessProbability(q, z);           //printf(">> q=%f  z=%i  p=%f\n", q, z, p);       }       // P is now >= 0.001, so take previous value of z       printf("q=%f  z=%i\n", q, z-1);   }}// share URL: jdoodle.com/a/CNb// embed URL: https://www.jdoodle.com/embed/v0/CNb`

# II. Error Discovered in Bitcoin Whitepaper

`blockHash = SHA256Hash(Version,                        hashPrevBlock,                       hashMerkleRoot,                        Time,                        Bits,                        Nonce)`
`00000000000000001588d80f3cb1d593cb198f485aef33ca926b58a62bcceda8`

# The Solution

Written by

## Lex Sheehan

#### B.S. in Computer Science (minor: Business) from Auburn University

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just \$5/month. Upgrade