Happy halving day
<< < (67/88) > >>
Michael_S:
Happy Halving Day!
And my best wishes to all the BTCTC community and to the bitcoin project, and to all the contributors to the bitcoin ecosystem!

("Halving Day" happened 6 hours earlier than what I had predicted even just two days ago - maybe some ASIC manufacturers have already started making test runs in real-world-conditions [or have changed their business models?!?  ;) ] and returned some share of the extra earnings in the form of extra-high transaction fees...)

For the friends of number mysticism:
It happened on day 333 of the year 2012 (although I don't believe in things like --> this...).The average duration between two generated blocks turned out to be 9.774 minutes, which is quite precisely the same number as the lowest gravity that exist anywhere on earth (near the equator at higher altitudes) when expressed in m/sē. One may interpret nice and positive things into this for the future... ;-)
For the friends of down-to-earth mathematics:
Here is the original forecast of bitcoin creation, given an ideal generation rate of 1 block per 10 minutes:
Code:

Time =        0 min =  3 Jan 2009:        0.00000000 Bitcoins exist. New block reward=50 BTC =5000000000 satoshis.
Time =  2100000 min =  1 Jan 2013: 10500000.00000000 Bitcoins exist. New block reward=25 BTC =2500000000 satoshis.
Time =  4200000 min = 28 Dez 2016: 15750000.00000000 Bitcoins exist. New block reward=12.5 BTC =1250000000 satoshis.
Time =  6300000 min = 26 Dez 2020: 18375000.00000000 Bitcoins exist. New block reward=6.25 BTC =625000000 satoshis.
Time =  8400000 min = 23 Dez 2024: 19687500.00000000 Bitcoins exist. New block reward=3.125 BTC =312500000 satoshis.
Time = 10500000 min = 20 Dez 2028: 20343750.00000000 Bitcoins exist. New block reward=1.5625 BTC =156250000 satoshis.
Time = 12600000 min = 18 Dez 2032: 20671875.00000000 Bitcoins exist. New block reward=0.78125 BTC =78125000 satoshis.
Time = 14700000 min = 15 Dez 2036: 20835937.50000000 Bitcoins exist. New block reward=0.39062 BTC =39062500 satoshis.
Time = 16800000 min = 12 Dez 2040: 20917968.75000000 Bitcoins exist. New block reward=0.19531 BTC =19531250 satoshis.
Time = 18900000 min = 10 Dez 2044: 20958984.37500000 Bitcoins exist. New block reward=0.097656 BTC =9765625 satoshis.
Time = 21000000 min =  7 Dez 2048: 20979492.18750000 Bitcoins exist. New block reward=0.048828 BTC =4882812 satoshis.
Time = 23100000 min =  4 Dez 2052: 20989746.09270000 Bitcoins exist. New block reward=0.024414 BTC =2441406 satoshis.
Time = 25200000 min =  2 Dez 2056: 20994873.04530000 Bitcoins exist. New block reward=0.012207 BTC =1220703 satoshis.
Time = 27300000 min = 29 Nov 2060: 20997436.52160000 Bitcoins exist. New block reward=0.0061035 BTC =610351 satoshis.
Time = 29400000 min = 26 Nov 2064: 20998718.25870000 Bitcoins exist. New block reward=0.0030518 BTC =305175 satoshis.
Time = 31500000 min = 24 Nov 2068: 20999359.12620000 Bitcoins exist. New block reward=0.0015259 BTC =152587 satoshis.
Time = 33600000 min = 21 Nov 2072: 20999679.55890000 Bitcoins exist. New block reward=0.00076293 BTC =76293 satoshis.
Time = 35700000 min = 18 Nov 2076: 20999839.77420000 Bitcoins exist. New block reward=0.00038146 BTC =38146 satoshis.
Time = 37800000 min = 16 Nov 2080: 20999919.88080000 Bitcoins exist. New block reward=0.00019073 BTC =19073 satoshis.
Time = 39900000 min = 13 Nov 2084: 20999959.93410000 Bitcoins exist. New block reward=9.536e-05 BTC =9536 satoshis.
Time = 42000000 min = 10 Nov 2088: 20999979.95970000 Bitcoins exist. New block reward=4.768e-05 BTC =4768 satoshis.
Time = 44100000 min =  8 Nov 2092: 20999989.97250000 Bitcoins exist. New block reward=2.384e-05 BTC =2384 satoshis.
Time = 46200000 min =  5 Nov 2096: 20999994.97890000 Bitcoins exist. New block reward=1.192e-05 BTC =1192 satoshis.
Time = 48300000 min =  2 Nov 2100: 20999997.48210000 Bitcoins exist. New block reward=5.96e-06 BTC =596 satoshis.
Time = 50400000 min = 31 Oct 2104: 20999998.73370000 Bitcoins exist. New block reward=2.98e-06 BTC =298 satoshis.
Time = 52500000 min = 28 Oct 2108: 20999999.35950000 Bitcoins exist. New block reward=1.49e-06 BTC =149 satoshis.
Time = 54600000 min = 25 Oct 2112: 20999999.67240000 Bitcoins exist. New block reward=7.4e-07 BTC =74 satoshis.
Time = 56700000 min = 23 Oct 2116: 20999999.82780000 Bitcoins exist. New block reward=3.7e-07 BTC =37 satoshis.
Time = 58800000 min = 20 Oct 2120: 20999999.90550000 Bitcoins exist. New block reward=1.8e-07 BTC =18 satoshis.
Time = 60900000 min = 17 Oct 2124: 20999999.94330000 Bitcoins exist. New block reward=9e-08 BTC =9 satoshis.
Time = 63000000 min = 15 Oct 2128: 20999999.96220000 Bitcoins exist. New block reward=4e-08 BTC =4 satoshis.
Time = 65100000 min = 12 Oct 2132: 20999999.97060000 Bitcoins exist. New block reward=2e-08 BTC =2 satoshis.
Time = 67200000 min =  9 Oct 2136: 20999999.97480000 Bitcoins exist. New block reward=1e-08 BTC =1 satoshi.
Time = 69300000 min =  7 Oct 2140: 20999999.97690000 Bitcoins exist. New block reward=0 BTC =0 satoshis.




Here is the adjusted forecast of bitcoin creation, given a generation rate of 1 block per 9.774 minutes (assuming that hash power will continue growing in a similar way as it did up to now, such that difficulty adjustments will continue lagging behind a bit):
Code:

Time =        0 min =  3 Jan 2009:        0.00000000 Bitcoins exist. New block reward=50 BTC =5000000000 satoshis.
Time =  2052540 min = 28 Nov 2012: 10500000.00000000 Bitcoins exist. New block reward=25 BTC =2500000000 satoshis.
Time =  4105080 min = 24 Oct 2016: 15750000.00000000 Bitcoins exist. New block reward=12.5 BTC =1250000000 satoshis.
Time =  6157620 min = 18 Sep 2020: 18375000.00000000 Bitcoins exist. New block reward=6.25 BTC =625000000 satoshis.
Time =  8210160 min = 13 Aug 2024: 19687500.00000000 Bitcoins exist. New block reward=3.125 BTC =312500000 satoshis.
Time = 10262700 min =  9 Jul 2028: 20343750.00000000 Bitcoins exist. New block reward=1.5625 BTC =156250000 satoshis.
Time = 12315240 min =  3 Jun 2032: 20671875.00000000 Bitcoins exist. New block reward=0.78125 BTC =78125000 satoshis.
Time = 14367780 min = 29 Apr 2036: 20835937.50000000 Bitcoins exist. New block reward=0.39062 BTC =39062500 satoshis.
Time = 16420320 min = 24 Mar 2040: 20917968.75000000 Bitcoins exist. New block reward=0.19531 BTC =19531250 satoshis.
Time = 18472860 min = 16 Feb 2044: 20958984.37500000 Bitcoins exist. New block reward=0.097656 BTC =9765625 satoshis.
Time = 20525400 min = 12 Jan 2048: 20979492.18750000 Bitcoins exist. New block reward=0.048828 BTC =4882812 satoshis.
Time = 22577940 min =  7 Dez 2051: 20989746.09270000 Bitcoins exist. New block reward=0.024414 BTC =2441406 satoshis.
Time = 24630480 min =  2 Nov 2055: 20994873.04530000 Bitcoins exist. New block reward=0.012207 BTC =1220703 satoshis.
Time = 26683020 min = 27 Sep 2059: 20997436.52160000 Bitcoins exist. New block reward=0.0061035 BTC =610351 satoshis.
Time = 28735560 min = 22 Aug 2063: 20998718.25870000 Bitcoins exist. New block reward=0.0030518 BTC =305175 satoshis.
Time = 30788100 min = 18 Jul 2067: 20999359.12620000 Bitcoins exist. New block reward=0.0015259 BTC =152587 satoshis.
Time = 32840640 min = 12 Jun 2071: 20999679.55890000 Bitcoins exist. New block reward=0.00076293 BTC =76293 satoshis.
Time = 34893180 min =  8 May 2075: 20999839.77420000 Bitcoins exist. New block reward=0.00038146 BTC =38146 satoshis.
Time = 36945720 min =  2 Apr 2079: 20999919.88080000 Bitcoins exist. New block reward=0.00019073 BTC =19073 satoshis.
Time = 38998260 min = 25 Feb 2083: 20999959.93410000 Bitcoins exist. New block reward=9.536e-05 BTC =9536 satoshis.
Time = 41050800 min = 21 Jan 2087: 20999979.95970000 Bitcoins exist. New block reward=4.768e-05 BTC =4768 satoshis.
Time = 43103340 min = 16 Dez 2090: 20999989.97250000 Bitcoins exist. New block reward=2.384e-05 BTC =2384 satoshis.
Time = 45155880 min = 11 Nov 2094: 20999994.97890000 Bitcoins exist. New block reward=1.192e-05 BTC =1192 satoshis.
Time = 47208420 min =  6 Oct 2098: 20999997.48210000 Bitcoins exist. New block reward=5.96e-06 BTC =596 satoshis.
Time = 49260960 min =  1 Sep 2102: 20999998.73370000 Bitcoins exist. New block reward=2.98e-06 BTC =298 satoshis.
Time = 51313500 min = 27 Jul 2106: 20999999.35950000 Bitcoins exist. New block reward=1.49e-06 BTC =149 satoshis.
Time = 53366040 min = 21 Jun 2110: 20999999.67240000 Bitcoins exist. New block reward=7.4e-07 BTC =74 satoshis.
Time = 55418580 min = 17 May 2114: 20999999.82780000 Bitcoins exist. New block reward=3.7e-07 BTC =37 satoshis.
Time = 57471120 min = 11 Apr 2118: 20999999.90550000 Bitcoins exist. New block reward=1.8e-07 BTC =18 satoshis.
Time = 59523660 min =  6 Mar 2122: 20999999.94330000 Bitcoins exist. New block reward=9e-08 BTC =9 satoshis.
Time = 61576200 min = 30 Jan 2126: 20999999.96220000 Bitcoins exist. New block reward=4e-08 BTC =4 satoshis.
Time = 63628740 min = 25 Dez 2129: 20999999.97060000 Bitcoins exist. New block reward=2e-08 BTC =2 satoshis.
Time = 65681280 min = 20 Nov 2133: 20999999.97480000 Bitcoins exist. New block reward=1e-08 BTC =1 satoshi.
Time = 67733820 min = 15 Oct 2137: 20999999.97690000 Bitcoins exist. New block reward=0 BTC =0 satoshis.




And finally, here is the code in case you want to generate these outputs for yourself (runs on Matlab or GNU Octave):
Code:

% Uncomment the PGP signature tags at the beginning and at the end of the file before verifying the signature

%-----BEGIN PGP SIGNED MESSAGE-----
%Hash: SHA1

function blockreward(Time_in_minutes_per_block)
% function blockreward()
% function blockreward(Time_in_minutes_per_block)
%
% Time_in_minutes_per_block = The average time that it takes the bitcoin network for generating one block.
% * Default (no argument)                                  : 10.000
% * Average till first block reward halving on 28 Nov 2012 :  9.774
%
% ---------------------------------------------------------------------------------------------------------
% This m-function calculates the bitcoin generation over time when assuming that the block genertion rate
% matches a fixed value of e.g. 10 minutes per block.
%   Note that in practice the actual block generation rate will likely be a little faster because the total
% hashing power of the bitcoin network increases continuously while the difficulty is only adjusted every
% 2016 blocks (=ca. 2 weeks) and therefore always lags behind the actual hashing power.
%   Therefore, for the time period from the start of the bitcoin network until the first halving of the
% block reward, it took only 3.90 instead of 3.99 years, corresponding to an average of 9.774 instead of
% 10.000 minutes per generated block.
% ---------------------------------------------------------------------------------------------------------
% According to the Bitcoin protocol:
%
% Every 210000 blocks the blockreward halfs.
%
% Average block generation rate = 1 block per 10 minutes,
% (difficulty adjusted every 2016 blocks = ca. every 2 weeks).
%
% Starting block reward = 50 BTCs.
%
% On 3 January 2009 at 18:15:05 UTC bitcoin block generation has started (creation of ths "genesis block"):
%     http://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
%     http://blockchain.info/block-height/0
% On 28 November 2012 at 15:24:38 UTC block number 210000 was generated, the first block with block
% reward halved to 25 BTC:
%     http://blockexplorer.com/block/000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e
%     http://blockchain.info/block-height/210000
%     http://blockchain.info/block-index/322335/000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e
%
% 1 day = 24*60 = 1440 minutes, and 1 year = 365.25 days in this file.
%
% The smallest unit is 1 satoshi = 1e-8 BTC.
%
% ----------------------------------------------------------------------------------------------------
% This script works with Matlab (tested with R2007b) and GNU Octave 3.0.0 (tested with version 3.0.0)
%
% Written on Planet Earth on 28 Nov 2012 = Day 333 of the year 2012,
% by Michael_S of bitcointalk.org (PGP key 0xCC7E7C99, bitcoin:14ajM1BHY7E8GJ4DGGvtFFGmE15hSSSRJR)
% ----------------------------------------------------------------------------------------------------

if nargin==0,
    Time_in_minutes_per_block =10.000;%  <-- Design value of the bitcoin protocol
    %Time_in_minutes_per_block = 9.774;% <-- avg. time till 1st block reward halving on 28 Nov 2012
end


%% 0 - Parameters:
Block_reward_start = 50;% =50
Block_nb_block_reward_halving = 210000;% =210000
satoshi = 1e-8;% smallest unit = 1 satoshi = 1e-8 BTC

block_generation_start_in_absolute_year = 2009.00756;% On 3 January 2009 at 18:15:05 bitcoin block generation has started.
% (http://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f)
% (http://blockchain.info/block-height/0)


%% 1 - Calculations:
Month{1}  = 'Jan'; NbDays = [31,28,31,30,31,30,31,31,30,31,30,31];
Month{2}  = 'Feb'; NbDaysAccu(1) = NbDays(1); NbDaysAccu(2) = NbDaysAccu(1)+NbDays(2);
Month{3}  = 'Mar'; NbDaysAccu(3) = NbDaysAccu(2)+NbDays(3);
Month{4}  = 'Apr'; NbDaysAccu(4) = NbDaysAccu(3)+NbDays(4);
Month{5}  = 'May'; NbDaysAccu(5) = NbDaysAccu(4)+NbDays(5);
Month{6}  = 'Jun'; NbDaysAccu(6) = NbDaysAccu(5)+NbDays(6);
Month{7}  = 'Jul'; NbDaysAccu(7) = NbDaysAccu(6)+NbDays(7);
Month{8}  = 'Aug'; NbDaysAccu(8) = NbDaysAccu(7)+NbDays(8);
Month{9}  = 'Sep'; NbDaysAccu(9) = NbDaysAccu(8)+NbDays(9);
Month{10} = 'Oct'; NbDaysAccu(10) = NbDaysAccu(9)+NbDays(10);
Month{11} = 'Nov'; NbDaysAccu(11) = NbDaysAccu(10)+NbDays(11);
Month{12} = 'Dez'; NbDaysAccu(12) = NbDaysAccu(11)+NbDays(12);

bitcoins_existing = 0;
reward_unrounded = 2*Block_reward_start; % starting value - will immediately be halfed in the while loop before everything starts
reward = reward_unrounded;
minutes = 0; % time counter in minutes

time_vector_min = [];
bitcoins_vector = [];
reward_vector = [];
while reward >= satoshi,
    reward_unrounded = reward_unrounded / 2;
    % round down to multiple of 1 satoshi = 1e-8 BTC:
    reward = floor(reward_unrounded/satoshi)*satoshi;
    %reward_unrounded = reward;% <-- this line makes no difference whether activated or commented out.
    time_vector_min = [time_vector_min; minutes];
    bitcoins_vector= [bitcoins_vector; bitcoins_existing];
    reward_vector = [reward_vector, reward];
    Current_Year = block_generation_start_in_absolute_year+minutes/60/24/365.25;
    CurrentDayOfYear = 365*(Current_Year-floor(Current_Year));
    CurrentMonth = find((NbDaysAccu-CurrentDayOfYear)>0, 1);
    if CurrentMonth==1,
        CurrentDayOfMonth = CurrentDayOfYear;
    else
        CurrentDayOfMonth = CurrentDayOfYear - NbDaysAccu(CurrentMonth-1);
    end
    CurrentDayOfMonth = min(NbDays(CurrentMonth), (max(1, round(CurrentDayOfMonth))));
    nb_of_leading_spaces = max(0, 9 - max(1, ceil(log10(minutes+1))));
    space_padding = repmat(' ',1,nb_of_leading_spaces);
    space_padding_day = repmat(' ',1, 2-ceil(log10(CurrentDayOfMonth+1)));
    be = bitcoins_existing;% temporary short variable
    be = round((be-(be-floor(be*1e4)/1e4))*1e8)/1e8;% remove numerical artifacts
    space_padding_be = repmat(' ',1, 8-ceil(log10(max(1,be)+1)));
    disp(['Time =',[space_padding, num2str(round(minutes),'%0.9g')],' min = ',[space_padding_day, num2str(CurrentDayOfMonth)], ...
        ' ',Month{CurrentMonth},' ',num2str(floor(Current_Year)),': ',...
        [space_padding_be, num2str(be,'%0.8f')],' Bitcoins exist. New block reward=',num2str(reward),' BTC =',num2str(reward/satoshi),' satoshis.']);
    %
    minutes = minutes + Block_nb_block_reward_halving*Time_in_minutes_per_block;
    bitcoins_existing = bitcoins_existing + reward*Block_nb_block_reward_halving; % this many new block were generated
end


%% 2 - Plot Diagrams:
time_vector_years = time_vector_min/60/24/365.25;
time_vector_year_absolute = time_vector_years + block_generation_start_in_absolute_year;
bitcoins_vector_remain = bitcoins_vector(end) - bitcoins_vector;


figure;
ha = plot(time_vector_year_absolute, bitcoins_vector/1e6,'b.-'); hold on;
hb = plot(time_vector_year_absolute, bitcoins_vector_remain/1e6,'r'); hold on;
%legend([ha,hb],'Bitcoins existing','Bitcoins pending','location','southeast');% <-- syntax incompatible with GNU Octave
legend('Bitcoins existing','Bitcoins pending','location','southeast');% <-- compatible syntax!
plot([time_vector_year_absolute(1), time_vector_year_absolute(end)], [bitcoins_vector(end),bitcoins_vector(end)]/1e6, 'k-'); hold on;

title(['Bitcoins in existence over time (one block per ',num2str(Time_in_minutes_per_block),' min)']);
xlabel('Year (e.g. year "2012.91" means 28 Nov 2012 = 91% into year 2012)');
ylabel('Bitcoins / millions');
grid on;
axis([floor(time_vector_year_absolute(1)), ceil(time_vector_year_absolute(end)), 0, 1+ceil(bitcoins_vector(end))/1e6]);


figure;
% fill the data with 200-times the same ... (roughly 1 dot per week)
y = reshape(repmat(reward_vector, 200, 1), 1, 200*length(reward_vector));
y = y(1:end-199);
dx = (time_vector_year_absolute(end)-time_vector_year_absolute(1))/(length(y)-1);
x = [time_vector_year_absolute(1):dx:time_vector_year_absolute(end)];

plot(x, y,'m.-'); hold on;
%semilogy(x, y,'m.-'); hold on;
title(['Block reward over time (one block per ',num2str(Time_in_minutes_per_block),' min)']);
xlabel('Year (e.g. year "2012.91" means 28 Nov 2012 = 91% into year 2012)');
ylabel('Block reward / BTC');
grid on;
axis([floor(time_vector_year_absolute(1)), ceil(time_vector_year_absolute(end)), 0, 1+ceil(reward_vector(1))]);

return;
%-----BEGIN PGP SIGNATURE-----
% Version: GnuPG v1.4.6 (GNU/Linux)
%
% iD8DBQFQtmkV3WH/l8x+fJkRAtz7AJ94mSlE+JUVK7Caah1NYh07k5sqpQCcCtAV
% UR1YRCUbixH5RGSfIC8dU1g=
% =c7Tv
% -----END PGP SIGNATURE-----

wareen:
Happy halving day to you all!

We had a nice after-halving get-together here in Vienna, because most people arrived late ;)

Bitcoin's usefulness as a measure of value might be debatable but it absolutely sucks as a measure of time - I hate nondeterministic appointments :D
FreeMoney:
Quote from: wareen on November 28, 2012, 09:07:54 PM

Happy halving day to you all!

We had a nice after-halving get-together here in Vienna, because most people arrived late ;)

Bitcoin's usefulness as a measure of value might be debatable but it absolutely sucks as a measure of time - I hate nondeterministic appointments :D


Flip a coin until you get 2845 streaks of more than 19 heads, that's when I'll arrive.
interlagos:
Today is definitely a special day!
Just look at the statistics on this forum (for those of you who pay attention to numbers :D):
Quote

Most Online Today: 1111.

LightRider:
One small step in the endeavor to end money.
Navigation
Message Index
Next page
Previous page