精通比特幣貪心演算法
❶ 2100萬個比特幣(BTC)挖完以後怎麼辦
大家都知道,比特幣的總量是2100萬枚。當一個塊被成功算出,幣就會以挖礦獎勵的形式發放給成功「爆塊」的礦工。比特幣的稀缺性也拉升了它的價值。但是,比特幣網路是一個由礦工組成的,通過挖礦他們獲得巨大的獎勵,很多人就在想如果所有比特幣都被挖出來之後會發生什麼事情?
但假設真的到了那一天,比特幣的區塊獎勵機制已經無法提供豐厚的代幣回報時,礦工就不會挖礦了嗎?事實上,挖礦成本是不固定的,單獨計算爆塊獎勵也是不科學的。加密數字貨幣的挖礦難度雖然只增不減,但會受全網算力的增長速度快慢,影響調整周期長短。如果挖的人多,成本自然高,挖的人少,成本自然就降低了。其次,不同地區的電費成本不一樣,有的地方甚至能拿到接近免費的電,功耗成本基本就可以忽略不計了。所以,我們要明確一個原則,只要仍有利潤可圖,挖礦就不會停止。
其實,從比特幣的發展歷程來看,真正影響礦工是否繼續挖礦的因素,並非是否有礦可挖,而是挖礦的收益如何。在比特幣交易量增加、手續費升高;或者比特幣價格升高的情況下,挖礦收益可觀,礦工們的投入熱情都會相應高漲。那麼,只要比特幣價值還在,不管何時挖礦都會有利潤,總有礦工不會關停手中的機器。
很多人之所以會有「2100萬枚比特幣挖完就沒收益」這種顧慮,主要是誤以為礦工收益的唯一來源是「爆塊」獎勵。但實際上,礦工的挖礦收入包括兩個部分,一部分是區塊獎勵,從最初打包一次交易開始,每四年減半一次。而另一部分則來自交易手續費。
為了保證自己的交易能夠盡快被礦工確認,交易者們通常會額外付給他們一筆手續費,手續費越高,交易被優先打包的可能性越大。而手續費的存在一方面可以提高轉賬門檻,防止區塊鏈中充斥垃圾交易;另一方面,也可以激勵礦工競爭記賬,使他們在比特幣全部被挖出之後,還能夠繼續為比特幣網路的安全提供算力保障。這一點在中本聰的比特幣白皮書中,關於激勵機制的描述中也可以找到原文:「只要既定數量的電子貨幣已經進入流通,那麼激勵機制就可以逐漸轉換為完全依靠交易費。」也就是說,就算所有的比特幣都發行完畢,只要有足夠多的交易需求,礦工們就有理由繼續挖礦,並能從中獲得收益。
現在,新的區塊被挖出之後,礦工會獲得區塊的獎勵,這包括獲得新幣和手續費。這些獎勵激勵礦工維護和保護網路。
(1000T算力七個月挖出7枚比特幣,咨詢kaiye910323)
如果比特幣都被挖出之後,沒有區塊獎勵,單單依靠手續費,可以維持網路的運轉嗎?如果不能,是否會讓礦工離開,而導致網路崩潰。下面的走勢圖,我們可以看出到2030年,手續費收入會高過區塊獎勵。一旦手續費超過收入的50%以上,礦工們就可以過度到通過收取手續費存活下來。
手續費是否足以激勵礦工?
這個問題暫時沒有人可以完全確定出答案。但是,目前的證據表明,通過手續費收入是足以維持礦工和比特幣網路的。畢竟,隨著比特幣價格的上漲,手續費也在上漲。有人擔心過高的手續費是否會阻止人們使用比特幣。然而,現在的手續費仍然要低於世界國家間的法幣轉賬。我們現在只需要考慮耗電和房屋的租金。正如專家指出的:買賣一套房子的成本是2%,即8000美元。我敢肯定,如果個人買賣成本只需要50美元。
目前,很多礦工習慣性以當前幣價為參考計算挖礦收益。有一些礦池甚至採用貪心演算法,一直把算力集中來挖「最有利可圖的幣」,也就是目前兌換美元價值最高的幣。但是事實證明這種貪心演算法並沒有比一直挖一種幣的好到哪裡去。為什麼呢?因為挖礦本來就不是一個一次性的游戲,幣是可以儲存的,也就是說,每個礦工都有自己對於加密數字貨幣前景的判斷。即便今天比特幣跌到1美元,認為只要有礦工相信未來比特幣依然能夠漲回去,那麼他們就不會在乎眼下的虧損,而是會繼續的挖下去,待其未來幣價暴漲時,眼下投入的成本完全是九牛一毛了。
❷ 交易及記賬(上) | 小白學比特幣之二
在 精讀「Mastering Bitcoin」1 中, 提到比特幣不僅是一個 電子現金 (系統),也是一個公開的賬本,這賬本上記錄了每筆交易的信息。用比特幣交易,其實就跟我們用人民幣或者美元交易買賣東西一樣。作者給比特幣交易行為的定義是:
那麼,在比特幣系統里,是以什麼樣的形式將這些交易記錄下來的呢?
跟傳統記賬一樣,在比特幣系統中也對交易採用復式記賬的方法 (double-entry bookkeeping ledger),直白點翻譯就是雙入口記賬。復式記賬,簡單理解就是以下兩點 [1] :
每一筆交易都要至少在兩個賬戶上進行記錄 ,在會計記賬中有三個基本賬戶也就是資產賬戶、負債賬戶以及所有者權益賬戶,跟會計等式 資產(Assets) = 負債 (Liabiliteis) + 所有者權益 (Equity) 是一一對應的。那麼單獨每個賬戶又是以怎麼樣的方式呈現出來的呢?方法是每個賬戶都需要記錄這個賬戶的debits和credits(見上圖):
說完復式記賬,再回到《Mastering Bitcoin》(精通比特幣) ,在書中,作者給出的記賬例子如下面那張截圖;一筆交易中可以包含多個Input和output。這里的Input和output如何理解呢?
總結一下:
通過作者這句話, 可以看到比特幣系統其實執行的是價值交易。更進一步地,可以理解為價值的輸入和輸出。
上筆交易和下筆交易之間會形成一個「無形的鏈」:
作者用一張圖形象的說明了什麼是「交易鏈」。
對於同一個地址而言,上一筆交易中的output將會作為下一筆交易的輸入,這樣就形成了一個交易鏈。
在上面的交易截圖中,我們可以看到這幾筆交易里有 spent 、 unspent 和 change 。 change 為找零地址,為什麼會有找零地址呢?
比特幣系統中的找零概念和平時用現金交易的找零概念是一樣的,如果你要買一個1塊錢的包子,但是你身上只有一張20塊錢的紙幣,這個時候就需要包子鋪老闆找給你19元零錢。
在比特幣系統中,每一個input就相當於一定面值的紙幣。如果一筆交易中只包含一個Input,為20個BTC,當這個地址向其他地址支付1個BTC時候,就需要對方找還19個BTC。不同的是,比特幣不像紙幣那樣只有幾種面值固定的紙幣,比特幣系統可以隨時創建「新面值」。
出於保護隱私的考慮,找零地址沒必要跟原先的付款地址一樣,通常錢包會生成一個新的找零地址。
在真實應用中,並不會在找零地址旁邊標注 change 的字樣,如下圖顯示(截圖來自blockchain.info上的某筆交易),
比特幣系統可以隨時創建「新面值」來用於找零,而且這「零錢」可以用於下次交易。在每個輸出(output)記錄里,可消費的比特幣數量會被標記成 unspent ,這樣的輸出有一個專門的名字叫做 Unspent Transaction Outputs (UTXO)。可以把unspent的輸出理解為面值不同的、可用於下次消費的紙幣,就好像10元面值紙幣、100元面值紙幣那樣。
[1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook
[2] http://learnmeabitcoin.com
❸ 《精通比特幣第2版(影印版)》epub下載在線閱讀全文,求百度網盤雲資源
《精通比特幣 第2版(影印版)》(Andreas M. Antonopoulos)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1zurT4uVTcWLSIFJfhtjOcA 提取碼: 7aqm
書名:精通比特幣 第2版(影印版)
作者:Andreas M. Antonopoulos
豆瓣評分:8.7
出版社:南京東南大學出版社
出版年份:2018-7-1
頁數:369
內容簡介:
Join the technological revolution that's taking the world of finance by storm. Mastering Bitcoin is your guide through the seemingly complex world of bitcoin, providing the knowledge you need to participate in the internet of money. Whether you're building the next killer app, investing in a startup, or simply curious about the technology, this revised and expanded second edition provides essential detail to get you started.
Bitcoin, the first successful decentralized digital currency, is still in its early stages and yet it's already spawned a multi-billion dollar global economy. This economy is open to anyone with the knowledge and passion to participate. Mastering Bitcoin provides the knowledge. You simply supply the passion.
The second edition includes:
A broad introction to bitcoin--ideal for non-technical users, investors, and business executives
An explanation of the technical foundations of bitcoin and cryptographic currencies for developers, engineers, and software and systems architects
Details of the bitcoin decentralized network, peer-to-peer architecture, transaction lifecycle, and security principles
New developments such as Segregated Witness, Payment Channels, and Lightning Network
Improved explanations of keys, addresses and wallets
User stories, analogies, examples, and code snippets illustrating key technical concepts
作者簡介:
Andreas is a passionate technologist, who is well-versed in many technical subjects. He is a serial tech-entrepreneur, having launched businesses in London, New York, and California. He has earned degrees in Computer Science and Data Communications and Distributed Systems from UCL. With experience ranging from hardware and electronics to high level business and financial systems technology consulting and years as CTO/CIO/CSO in many companies — he combines authority and deep knowledge with an ability to make complex subjects easy to understand. More than 200 of his articles on security, cloud computing and data centers have been published in print and syndicated worldwide. His expertise includes Bitcoin, crypto-currencies, Information Security, Cryptography, Cloud Computing, Data Centers, Linux, Open Source and robotics software development. He also has been CISSP certified for 12 years.
As a bitcoin entrepreneur, Andreas has founded three bitcoin businesses and launched several community open-source projects. He often writes articles and blog posts on bitcoin, is a permanent host on Let』s Talk Bitcoin and prolific public speaker at technology events. Andreas serves on the advisory boards of several bitcoin startups.
❹ 能介紹幾本關於比特幣和區塊鏈的書嗎
1.《比特幣白皮書:一種點對點的電子現金系統》,作者中本聰。先把這份白皮書看完再考慮其他的內容。
2《Fortran95程序設計》,作者是彭國倫。
3《Fortran77和90/95編程入門》,作者是丁澤軍。
4. 《失控:機器、社會與經濟的新生物學》
5.《必然》,作者是凱文·凱利,提到了未來20年的12種必然趨勢。
6.《精通比特幣》,本書會為你提供必備知識,引導你進入比特幣世界。
7.《區塊鏈革命》,講述了比特幣底層技術如何改變貨幣、商業和世界,作者是唐塔普斯科特、亞力克斯·塔普斯科特
8.《區塊鏈新經濟藍圖及導讀》,作者梅蘭妮·斯萬
9.《區塊鏈:量子財富觀》,作者韓鋒/張曉玫
10.《金融的邏輯》,作者是陳志武。作品深入淺出地從財富的文化和制度基因談起,從而告訴讀者金融的邏輯是什麼。
相關書籍還有《經濟學原理》《區塊鏈:技術驅動金融》《區塊鏈革命 : 比特幣底層技術如何改變貨幣、商業和世界》《區塊鏈技術指南》《圖說區塊鏈》《區塊鏈將如何重新定義世界》《數字貨幣:比特幣數據報告與操作指南》《區塊鏈:從數字貨幣到信用社會》《智能時代》等,說實在的,區塊鏈作為一個熱點資源還是比較多的。主要是判斷(是否有價值)和行動(要入早點入)。
再推薦一個區塊鏈相關的APP,叫金色財經,推薦一個公眾號,叫寬客在線。文章資料豐富;
❺ 《精通比特幣》攻讀首篇
幣乎真的是一個好的平台,在這個平台上面還有無限的想像力可以發揮,進入幣圈跌跌撞撞也有一年的時間了,關於區塊鏈的一些基礎概念也都懂一些,但是不深入,很久之前也有一個想法,想好好的讀一讀關於比特幣或者區塊鏈的書籍,特別想讀的是《精通比特幣》,因為這本書被無數大佬,大咖們推薦過,但是害怕這本書太過技術,就一直沒敢行動,這也是給自己找的一個借口吧。
有幸在幣乎看到宰飛同學發起了幣乎讀書營,感覺是一個好的機會,一是可以認識很多朋友,二是也可以逼自己一把,所以義不容辭的加入了。
在《精通比特幣第二版》序言中寫道:送你一把打開區塊鏈世界大門的鑰匙,我知道這是一本好書,要想真的在區塊鏈的世界裡暢游,這本書應該是最適合的了。
這本書一共有12章,可以說把比特幣的前生今世、里里外外都說的十分的透徹了,在開篇之前是術語解釋,個人覺得這是很難啃,而且很難消化的一部分,但是為了能更好的理解區塊鏈世界,我不得不慢慢的細嚼慢咽,因為這是基礎。
第一章介紹了什麼是比特幣,比特幣是構成數字貨幣生態系統基礎的概念和技術的集合。比特幣與傳統的貨幣不同,它完全是虛擬的,但它可以和傳統貨幣一樣解決多重支付的問題,傳統的紙幣的特點是一塊錢只能花在一個地方,不存在多重支付的問題,而比特幣應用加密技術完美的解決了這個問題。
比特幣有四個創新,分別是:1.去中心化的對等網路(比特幣協議);2.公共交易總帳(區塊鏈);3.獨立交易確認和貨幣發行的一套規則(共識規則)4.實現有效的區塊鏈全球去中心化共識的機制(工作量證明演算法)。
比特幣的這四種優勢是所有區塊鏈項目的底層技術,這四種技術優勢的組合,讓無數喜歡區塊鏈的人們做了無數思想實驗,卻不能窮盡。
這本書我還在攻讀中,未來我還會和大家分享更多的關於區塊鏈想法,因為區塊鏈讓我興奮,偉大的變革正在發生,而我不想錯過!!
❻ 【區塊鏈】比特幣私鑰、公鑰、簽名
在 了解區塊鏈的基礎名詞概念 提到地址由字元和數字組成,但沒有說明怎樣產生的。銀行卡號由銀行核心系統生成,那比特幣地址是通過什麼生成的呢?看下圖:
對於剛接觸比特幣的小白來說,看到這張圖就蒙圈了,究竟什麼是私鑰、公鑰,為什麼生成個地址要這么麻煩嗎?
現在請大家記住這句話: 私鑰通過橢圓曲線相乘生成公鑰,使用公鑰不能導推出私鑰;公鑰通過哈希函數生成比特幣地址,地址也無法導推出公鑰 。
通過這么復雜演算法才算出地址,那私鑰和公鑰只是為了生成地址嗎?不是的,他們還有其他用途,我們先了解下私鑰和公鑰。
現在已經講解地址、挖礦、工作量證明、算力、區塊、區塊鏈等等的概念,不知大家還有印象嗎?如果忘記請溫習這些概念,因為後續很多地方都會用到這些概念。明天講解下區塊鏈有哪些特點。
參考書籍:《精通比特幣》
區塊鏈知識專題:
比特幣記賬方式(區塊鏈知識2)
了解塊鏈的基礎名詞概念(區塊鏈知識1)
❼ 4. 比特幣的密鑰、地址和錢包 - 精通比特幣筆記
比特幣的所有權是通過密鑰、比特幣地址和數字簽名共同確定的。密鑰不存在於比特幣網路中,而是用戶自己保存,或者利用管理私鑰的軟體-錢包來生成及管理。
比特幣的交易必須有有效簽名才會被存儲在區塊中,因此擁有密鑰就擁有對應賬戶中的比特幣。密鑰都是成對出現的,由一個公鑰和一個私鑰組成。公鑰相當於銀行賬號,私鑰就相當於銀行卡密碼。通常情況下密鑰由錢包軟體管理,用戶不直接使用密鑰。
比特幣地址通常是由公鑰計算得來,也可以由比特幣腳本得來。
比特幣私鑰通常是數字,由比特幣系統隨機( 因為演算法的可靠性與隨機性正相關,所以隨機性必須是真隨機,不是偽隨機,因此比特幣系統可以作為隨機源來使用 )生成,然後將私鑰作為輸入,使用橢圓曲線演算法這個單向加密函數生成對應的公鑰,再將公鑰作為輸入,使用單向加密哈希函數生成地址。例如,通過公鑰K得到地址A的計算方式為:
其中SHA256和PIPEMD160被稱為雙哈希或者HASH160,Base58Check是帶有驗證功能的Base58編碼,驗證方式為先計算原始數據(編碼前)的驗證碼,再比較編碼後數據的驗證碼,相同則地址有效,否則無效。而在使用Base58Check編碼前,需要對數據做處理。
處理方式為: 版本前綴 + 雙哈希後的數據 + 校驗碼
其中版本前綴是自定義的,如比特幣私鑰的前綴是0x80,校驗碼是把版本前綴和雙哈希後的數據拼接起來,進行兩次SHA256計算,取前4位元組。得到處理的數據後,再進行Base58編碼,得到最終的結果。
下圖是Base58Check版本前綴和Base58編碼後的結果
密鑰可以採用不同的編碼格式,得到的編碼後結果雖然不同,但密鑰本身沒有任何變化,採用哪種編碼格式,就看情況而論了,最終目的都是方便人們准確無誤的使用和識別密鑰。
下圖是相同私鑰採用不同編碼方式的結果:
公鑰也有很多種格式,不過最重要的是公鑰被分為壓縮格式和非壓縮格式,帶04前綴的公鑰為非壓縮格式的公鑰,而03,02開頭的標識壓縮格式的公鑰。
前面說過,公鑰是橢圓曲線上的一個點,由一對坐標(x, y)表示,再加上前綴,公鑰可以表示為:前綴 x y。
比如一個公鑰的坐標為:
以非壓縮格式為例,公鑰為(略長):
壓縮格式的公鑰可以節省一定的存儲,對於每天成千上萬的比特幣交易記錄來說,這一點點的節省能起到很大效果。
因為橢圓曲線實際上是一個方程(y2 mod p = (x3 + 7)mod P, y2是y的平方,x3是x的立方),而公鑰是橢圓曲線上的一個點,那麼公鑰即為方程的一個解,如果公鑰中只保留x,那麼可以通過解方程得到y,而壓縮公鑰格式有兩個前綴是因為對y2開方,會得到正負兩個解,在素數p階的有限域上使用二進制算術計算橢圓曲線的時候,y坐標或奇或偶,所以用02表示y為奇數,03表示y為偶數。
所以壓縮格式的公鑰可以表示為:前綴x
以上述公鑰的坐標為准,y為奇數為例,公鑰K為:
不知道大家發現沒有,這種壓縮方式存在一個問題,即一個私鑰可以得出兩個公鑰,壓縮和非壓縮公鑰,而這兩個公鑰都對應同一個私鑰,都合法,但生成的比特幣地址卻不相同,這就涉及到錢包軟體的實現方式,是使用壓縮公鑰還是非壓縮公鑰,或者二者皆用,這個問題後面來介紹。
比特幣錢包最主要的功能就是替用戶保管比特幣私鑰,比特幣錢包有很多種,比如非確定性(隨機)錢包,確定性(種子)錢包。所謂的非確定性是指錢包運行時會生成足夠的私鑰(比如100個私鑰),每個私鑰僅會使用一次,這樣私鑰管理就很麻煩。確定性錢包擁有一個公共種子,單向離散方程使用種子生成私鑰,種子足夠回收所有私鑰,所以在錢包創建時,簡單備份下,就可以在錢包之間轉移輸入。
這里要特別介紹下助記碼詞彙。助記碼詞彙是英文單詞序列,在BIP0039中提出。這些序列對應著錢包中的種子,種子可以生成隨機數,隨機數生成私鑰,私鑰生成公鑰,便有了你需要的一切。所以單詞的順序就是錢包的備份,通過助記碼詞彙能重建錢包,這比記下一串隨機數要強的多。
BIP0039定義助記碼和種子的創建過程如下:
另外一種重要的錢包叫做HD錢包。HD錢包提供了隨機(不確定性) 鑰匙有兩個主要的優勢。
第一,樹狀結構可以被用來表達額外的組織含義。比如當一個特定分支的子密鑰被用來接收交易收入並且有另一個分支的子密鑰用來負責支付花費。不同分支的密鑰都可以被用在企業環境中,這就可以支配不同的分支部門,子公司,具體功能以及會計類別。
第二,它可以允許讓使用者去建立一個公共密鑰的序列而不需要訪問相對應的私鑰。這可允許HD錢包在不安全的伺服器中使用或者在每筆交易中發行不同的公共鑰匙。公共鑰匙不需要被預先載入或者提前衍生,但是在伺服器中不具有可用來支付的私鑰。
BIP0038提出了一個通用標准,使用一個口令加密私鑰並使用Base58Check對加密的私鑰進行編碼,這樣加密的私鑰就可以安全地保存在備份介質里,安全地在錢包間傳輸,保持密鑰在任何可能被暴露情況下的安全性。這個加密標准使用了AES,這個標准由NIST建立,並廣泛應用於商業和軍事應用的數據加密。
BIP0038加密方案是: 輸入一個比特幣私鑰,通常使用WIF編碼過,base58chek字元串的前綴「5」。此外BIP0038加密方案需要一個長密碼作為口令,通常由多個單詞或一段復雜的數字字母字元串組成。BIP0038加密方案的結果是一個由base58check編碼過的加密私鑰,前綴為6P。如果你看到一個6P開頭的的密鑰,這就意味著該密鑰是被加密過,並需個口令來轉換(解碼) 該密鑰回到可被用在任何錢包WIF格式的私鑰(前綴為5)。許多錢包APP現在能夠識別BIP0038加密過的私鑰,會要求用戶提供口令解碼並導入密鑰。
最通常使用BIP0038加密的密鑰用例是紙錢包一一張紙張上備份私鑰。只要用戶選擇了強口令,使用BIP0038加密的私鑰的紙錢包就無比的安全,這也是一種很棒的比特幣離線存儲方式(也被稱作「冷存儲」)。
P2SH函數最常見的實現時用於多重簽名地址腳本。顧名思義,底層腳本需要多個簽名來證明所有權,然後才能消費資金。這類似在銀行開設一個聯合賬戶。
你可以通過計算,生成特殊的比特幣地址,例如我需要一個Hello開頭的地址,你可以通過腳本來生成這樣一個地址。但是每增加一個字元,計算量會增加58倍,超過7個字元,需要專門的硬體或者礦機來生成,如果是8~10個字元,那麼計算量將無法想像。