比特幣編程難度
❶ 天河二號超級計算機挖礦多久可以挖一個比特幣2100萬個需要多久
告訴你,家用PC挖的話計算力太低。按照現在9億多的運算編程難度講家用PC的算力一般在100M到600M之間,去挖的話一個月掙的錢連電費的十分之一都不夠,所以需要礦機。現在市面上專門針對比特幣生成計算演算法而優化製造的機器就是礦機。一台礦機每秒能處理600GHash數據運算,不間斷的話能夠在大約10天的時間生成一個比特幣,對電腦的配置要求好高的。
你說的一天能挖100個並不是沒可能,確切的來說不需要一天,只需要幾秒不到就可以拿下,前提是你拿得下世界排名第一的「天河二號」。
❷ 為什麼比特幣總量是2100萬枚
比特幣有爭議的屬性之一就是它的固定的供應量。當前每10分鍾又25個新的比特幣被生產出來,並且這一數字每4年減半。總的來講,不會有超過2100萬個比特幣的存在>。另一方面,每個比特幣可以被劃分成1億份(每份叫做1「聰」),如果一美分都足夠買輛車的話,用美元來交易就麻煩重重了,但比特幣就算升值到和上面假設的美元的>狀況,也不會遇到那樣的問題。因此,總之,將永遠存在的貨幣單位的總數字是2,100,000,000,000,000,也就是2100萬億,或者說250.899。在選擇這個數值的方>面,中本聰比大多數人意識到的要幸運的多或者說聰明的多。首先,這個數字遠小於264-1,這是一台計算機裡面可以以標准整數形式存放的最大整數,超過那個值的話,>數值將像里程錶那樣歸零。
其次,然而,還有一個總「聰」數要設法低於的更小的閾值:可以用浮點的格式表示的可能的最大整數。整數不是計算機可以存儲的唯一一種數字;為了處理小數,計算機>使用一種做浮點表示法的格式。浮點表示法本質上就是一個科學記數法的二進製版本。舉個例子,下面是一個在你學習物理學的時候會遇到的值:
地球的質量: 5.972 1024 kg
太陽的質量: 1.989 1030 kg
光速: 2.998 108 m/s
一光年: 9.460 1015 m
質子的質量: 1.672 10-27 kg
普朗克長度: 1.616 10-35 m
我們可以注意到,科學記數法是如何使得你可以在合理的精度下表示所有的這些數值,盡管它們的大小相差極大。浮點表示法本質上就是二進制的科學記數法;當你存儲數>字9.625的時候,你的計算機存放的是「1.001101
* 1011」(或者說,它存放的是01000000 00100011 01000000 00000000 00000000 00000000
>00000000
00000000,這是高精度序列形式的同樣一回事)。在這個高精度形式中,系數(也就是不是指數的那部分)有52位(52bits)。這意味著高精度(更加精>確的說法是「雙精度」)浮點數足以存貯高達253的數字,但不能再高了,如果超過了,你就得開始砍掉末尾的數字。比特幣的250.9這一以指數形式表現的總「聰」數,剛>好低於這個最大值。
如果我們有了整數,我們為什麼還要關心浮點值呢?因為更多的高階編程語言(比如說Javascript)並不開放低階的「浮點」和「整數表示法」,而只給程序員提供「數」的>概念
– 當然以浮點的形式提供。如果中本聰當時選擇了2億1千萬而不是2100萬這個值的話,用很多語言里比特幣編程就會比現在要麻煩得多了。
注意,Stefan Thomas不幸的在他寫BitcoinJS的時候沒有及時留意到這個,以至於那個庫使用了一個專門的『大數big
number』對象,而不是一個普通數來存儲教程輸出值;我自己分叉的的BitcoinJS(同時還加入了其他的改進)使用了普通數。