比特幣源碼解析46
㈠ 硬核干貨!比特幣狗狗幣等的原理究竟是什麼
比特幣實際上是一種電子貨幣或稱為數字貨幣,它是一種基於密碼學的加密貨幣。2008年一位極客化名中本聰在網上發布了一篇叫做《比特幣一種點對點的電子現金系統》的文章,我們現在稱之為白皮書。他在白皮中說要設計一種去中心化的電子記賬系統。這個系統中所有的交易都是公開的,並且所有的用戶都可以對這個賬單進行記賬。每十分鍾產生的賬單打包在一起稱之為一個區塊。這個區塊記錄完畢後,再產生新的賬單時,就會產生一個新的區塊,把新產生的區塊並連接在這個已有的區塊上稱之區塊鏈。
所以就目前世界范圍來說,只有比特幣和狗狗幣兩種虛擬幣沒有創始人和團隊在管理。就是因為這樣的特點,避免了創始人跑路造成虛擬幣價值歸零的可以。讓比特幣和狗狗幣成為了最受追捧的虛擬幣。
㈡ 現在每一個數字虛擬貨幣都有開源代碼我們怎麼分析呢
五種區分方法:去中心化、恆量「發行」、開源代碼、獨立的電子錢包以及第三方交易平台。
一、去中心化
很多人對去中心化概念比較模糊,也有很多關於幣的項目也在打著去中心化的旗號在推動者這個市場。
1、技術去中心化:比特幣,萊特幣是整個數字貨幣的一個幣種,區塊鏈技術是2.0。美國5年的一個研究,它研究這一塊是失敗的,只達到1.0。
2、不屬於任何一個公司國家或者機構。比如人民幣,美元等都是法幣,是由國家發行和控制,是由中心的;還有騰訊公司的Q幣也是有中心的,叫虛擬幣,不叫虛擬貨幣,是騰訊公司發行的。
二、價格為什麼會漲的,恆量「發行」。
其實真正意義上來說,是不應該用「發行」二字的,比特幣2100萬枚,萊特幣是8400萬枚,其發起人是把這個數字貨幣計算機計算好,用一套公式保存起來,用互聯網程序規定它全球只能有多少枚,是挖掘出來的。
聽說挖地挖地,挖地的礦機,都是時間和數量限制好的,是任何個人或者機構都是更改不了的,並公開它的源代碼,誰都可以挖。物以稀為貴,之所以挖礦,就如地球上的黃金一樣越挖越少,所以叫挖礦,價格就會上漲。
人民幣一直在超發,就出現通貨膨脹的現象,越來越不值錢。真正的數字貨幣是全球永不蒸發,恆量「發行」,具有真正的稀缺性的,通貨緊縮的特質。
三、開源代碼,這是一個關鍵核心。
目前所有的數字貨幣只有一個監管平台,開源代碼成熟,一定要去全球唯一的數字貨幣監管平台審核,通過後掛在此平台上,公布它的開源代碼。
還有一種方式,就是你看各大交易平台是不是有萊特幣和比特幣的身影,凡是公開透明的都是自由買賣交易。
四、獨立的電子錢包。
跨境支付的,是可以給某個區域的轉賬。
五、第三方交易平台
封閉式的交易平台和開放式的交易平台
1、什麼是封閉式交易平台呢?
舉例,比如憑票購物,憑票吃飯那個年代,你是化工廠的,你是糧局的,今天你拿著工廠的飯票去糧局吃飯是不可以的,是屬於內部掌控的。
2、開放式的交易平台,像OKCOIN,火幣網,都是開放式的。任何一個平台購買的萊特幣都是可以在這個平台上進行買賣交易的,公開,透明。
總之,是不是真正數字貨幣,有五大標准:
1、去中心化;2、開源代碼;3、恆量發行;4、第三方交易平台;5、電子錢包。
(2)比特幣源碼解析46擴展閱讀:
虛擬貨幣基本階段
沒有把游戲幣與股票、衍生金融工具、特別是電子貨幣加以界定和區分。實際上,有一條內在線索可以把這些形態各異的虛擬貨幣貫穿起來,這就是個性化價值的表現成熟度。我們從邏輯上概括如下:
一、銀行電子貨幣
銀行電子貨幣最初是一種「偽虛擬貨幣」。它只具有虛擬貨幣的形式,如數字化、符號化,但不具有虛擬貨幣的實質,與個性化無關。例如,它只是紙幣的對應物;它可能由央行發行;它可能與貨幣市場處於同一市場等。
但是銀行電子貨幣有一點突破了貨幣的外延—那就是它也可以不是由央行發行,而是由信息服務商發行,早期的幾種電子貨幣就是這樣。第二點突破就是銀行電子貨幣的流動性,遠遠超過一般貨幣。因此就隱含了對貨幣價格水平定價權的挑戰。
比如,在隔夜拆借之中,如果同一筆貨幣以電子貨幣方式被周轉若干次,雖然從傳統貨幣觀點,一切都沒有發生,但如果從虛擬貨幣流通速度的角度看,實際上已改變了貨幣價格水平的條件。
二、信用信息貨幣
股票是最典型的信用信息貨幣,其本質是虛擬的,是一種具有個人化特點的虛擬貨幣。它是當前虛擬經濟最現實的基礎。股票市場、衍生金融工具市場,構成了一個規模龐大而且統一的虛擬貨幣市場,它們不僅有實體業務作為基礎,而且有廣泛的信託業務、保險業務等信息服務作為支撐。
所謂統一市場是有所特指的,是指這一市場作為一個整體,可以同貨幣市場在國民收入的整體水平上進行交換。從歷史上看,只有當貨幣形成統一市場,即國民經濟的主體都實現貨幣化時,貨幣量和利率對國民經濟的調節作用才談得上。這個道理對虛擬經濟也一樣。
這個問題不無爭議,如今虛擬經濟的規模,雖然已經若干倍於實體經濟,但實體經濟中畢竟還有很大一部分沒有進入這個統一市場。如果把游戲幣與股票比較,它在這方面的進展還差得遠。只有經過娛樂產業化和產業娛樂化兩個階段,才有可能達到統一市場的水平。
分析股票市場和衍生金融工具市場,它有一個與一般貨幣市場最大的不同,就是它的流通速度不能由央行直接決定。例如,股指作為虛擬貨幣價格水平,不能象利率那樣,由央行直接決定,而是由所謂人們的「信心」這種信息直接決定的。
央行以及實體資本市場的基本面,只能間接決定股市,而不能直接決定。所以我認為股票市場是信息市場而不是貨幣市場。
同成熟的虛擬貨幣市場比較,股市在主要特徵上,表現是不完全的。股市把所有參照點上的噪音(即個別得失值),集成為一個統一的參照值,與標准值(基本面上的效用值、一般均衡值)進行合成,形成市場圍繞效用價值的不斷波動。
雖然有別於以央行為中心進行有序化向心運動的貨幣市場,但與貨幣市場又沒有區別。而從真正的虛擬貨幣市場的觀點看,不可通約的個性化定價值,才是這一市場的特性所在。從這個意義上說,集中的股市並沒有實現這一功用,股市作為所謂「賭場」的獨立作用還沒有得到發揮。
三、個性化信用憑證
虛擬貨幣的根本作用,是在個性的「現場」合成價值,而不是跑到一個脫離真實世界的均衡點上孤立地確定一個理性價值。虛擬貨幣的意義在於以最終消費者為中心建立價值體系。虛擬貨幣全面實現後,只有一般等價功能的單一貨幣將趨於後台化。
游戲幣是更高階段虛擬貨幣的試驗田,還難當大任。理想的虛擬貨幣是真實世界的價值符號。在一般等價交換中,具體使用價值以及具體使用價值的主體對應物—人的非同質化的需求、個性化需求,被完全過濾掉。
虛擬貨幣將改變這一切,通過虛擬方式,將人的非同質化需求、個性化需求以個體參照點向基本面錨定的方式,進行價值合成。因此虛擬貨幣必須具有兩面性,一方面是具有商品交換的功能,一方面是具有物物交換的功能。
通過前者克服價值的相對性和主觀性,通過後者實現個性化的價值確認。 為了實現這個目標,虛擬貨幣肯定要實現一不為人知的巨大轉型,這就是向對話體系的轉型,成為互動式貨幣。
這里的討價還價是針對貨幣價格水平的討價還價。回憶一下,人類在幾十年內,早已實現的文本向對話的轉型,正是虛擬貨幣轉型的方向所在。游戲幣的價值其實是不確定的。人們交換到游戲幣,從中最終可能得到的快樂,是在幣值以上、還是以下,不到參與游戲之時是不確定的。
游戲就是一個對話過程。當然,游戲幣的各種增值功能,還沒有結合個性化信息服務開發出來。如果這種增值業務充分得到開發,游戲幣因為提供服務的商家不同而不通用,可能反而成為一種相對於股票的優勢。
完全個性化的虛擬貨幣,可能是一種附加信息的貨幣卡,它的價值是待確認的。擁有具體待定功能和余值的虛擬貨幣,其信息一方面可以具有象文本一樣有再闡釋的餘地,一方面具有卡拉OK式的再開發的潛力。
它的信息價值是有開放介面的,可以再增值的。如果把它們投入股市一樣的二級市場交換,它們可能憑其個性化信息在基本票面價值上下浮動,它本身就會具有更多的象股票那樣的吸引力。
游戲貨幣,還只具有價值流通功能,而不具有市場平台功能,所以它只是一種不完善的虛擬貨幣,究其原因,是因為缺乏相應的產業基礎。
㈢ 誰能成功編譯比特幣源碼
友情提醒一下:現在的比特幣基本上被開採到末段了。比特幣的程序原理決定了它越到後期生成間隔越長,所以現在生成一個比特幣的時間可能已經超過比特幣的價值了。畢竟還要考慮到挖礦電腦的功耗和時間等。雖然現在比特幣還是很火,但是現在才開始入手的話就有點遲了,不太可能賺到錢了。
㈣ 什麼是比特幣 完全搞不懂
比特幣:又稱「比特金」,是一種網路虛擬貨幣,網民可以使用比特幣購買一些虛擬物品,比如網路游戲當中的衣服、帽子、裝備等,網民之間也有用來購買現實物品的情況。
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。
㈤ 數字貨幣的開源代碼是什麼
近年來,以比特幣為代表的區塊鏈數字資產風靡全球,國內外金融機構、科技公司、投資公司等參與方投入大量的人力、物力、技術等資源,進行區塊鏈數字資產的研究、開發、設計、測試與推廣。要實現區塊鏈數字資產「四可三不可」的主要特性,可依託安全技術、交易技術、可信保障技術這三個方面的11項技術構建數字資產的核心技術體系。首先,以安全技術保障區塊鏈數字資產的可流通性、可存儲性、可控匿名性、不可偽造性、不可重復交易性與不可抵賴性。數字貨幣安全技術主要包括基礎安全技術、數據安全技術、交易安全技術三個層面。基礎安全技術包括加解密技術與安全晶元技術。加解密技術主要應用於數字資產的幣值生成、保密傳輸、身份驗證等方面,建立完善的加解演算法體系是數字資產體系的核心與基礎,需要由國家密碼管理機構定製與設計。安全晶元技術主要分為終端安全模塊技術和智能卡晶元技術,數字資產可基於終端安全模塊採用移動終端的形式實現交易,終端安全模塊作為安全存儲和加解密運算的載體,能夠為數字資產提供有效的基礎性安全保護。數字資產系統交易平台區塊鏈技術研發數據安全技術包括數據安全傳輸技術與安全存儲技術。數據安全傳輸技術通過密文+MAC/密文+HASH方式傳輸數字資產信息,以確保數據信息的保密性、安全性、不可篡改性;數據安全存儲技術通過加密存儲、訪問控制、安全監測等方式儲存數字貨幣信息,確保數據信息的完整性、保密性、可控性。
交易安全技術包括匿名技術、身份認證技術、防重復交易技術與防偽技術。匿名技術通過盲簽名(包括盲參數簽名、弱盲簽名、強盲簽名等)、零知識證明等方式實現數字資產的可控匿名性;身份認證技術通過認證中心對用戶身份進行驗證,確保數字資產交易者身份的有效性;防重復交易技術通過數字簽名、流水號、時間戳等方式確保數字資產不被重復使用;防偽技術通過加解密、數字簽名、身份認證等方式確保數字資產真實性與交易真實性。其次,以交易技術實現數字資產的在線交易與離線交易功能。數字資產交易技術主要包括在線交易技術與離線交易技術兩個方面。數字資產作為具有法定地位的貨幣,任何單位或個人不得拒收,要求數字資產在線或離線的情況下均可進行交易。在線交易技術通過在線設備交互技術、在線數據傳輸技術與在線交易處理等實現數字資產的在線交易業務;離線交易技術通過離線設備交互技術、離線數據傳輸技術與離線交易處理等實現數字資產的離線交易業務。最後,以可信保障技術為區塊鏈數字資產發行、流通、交易提供安全、可信的應用環境。數字資產可信保障技術主要指可信服務管理技術,基於可信服務管理平台(TSM)保障數字資產安全模塊與應用數據的安全可信,為數字資產參與方提供安全晶元(SE)與應用生命周期管理功能。可信服務管理技術能夠為數字資產提供應用注冊、應用下載、安全認證、鑒別管理、安全評估、可信載入等各項服務,能夠有效確保數字資產系統的安全可信。
什麼是區塊鏈?區塊鏈技術,簡稱BT(Blockchain technology),也被稱之為分布式賬本技術,是一種互聯網資料庫技術,其特點是去中心化、公開透明,讓每個人均可參與資料庫記錄。區塊鏈技術開發區塊鏈技術開發 什麼是區塊鏈系統?區塊鏈系統是一個具備完整性的資料庫系統,寫入系統的數據會自動復制到區塊鏈的節點上面,能實現事務性的數據保存,支持多種行業資料庫的管理開發,結合多種需求來製作。2944.97億美元,漲幅為2.60%。本周共有5個新項目進入TOP100,分別為分別為FST,ZB,WIX,WAX,MXM。8月11日,Bitcoin價格為11523.58美元,較上周上漲3.20%,Ethereum價格為216.09美元,較上周下跌3.86%。本周24h成交額較上周同期上升2.63%;TOP100項目中幣類項目總市值、平均市值漲幅zui大,全球區塊鏈資產TOP100項目分類組成穩定。
㈥ 全面解讀區塊鏈與比特幣,教你看懂兩者的關系
01區塊鏈是比特幣的底層技術
區塊鏈是一個分布式賬戶,簡而言之,是一個分散的賬簿,可以被許多人查看和加入。例如,每個塊相當於繩子上的每個結。當每個新交易進入區塊鏈時,它相當於一個事件。為了標記事件的發生,將製作一個符號結,並在特定結上記錄詳細信息
比特幣使用區塊鏈實現價值存儲和交易。此外,區塊鏈本身的技術難度不是最大的,但其應用場景和監管問題有三種類型的區塊鏈:公共區塊鏈、私人區塊鏈和聯合區塊鏈;另一種分類是無許可權和許可權
因此,加密貨幣使用區塊鏈技術,但區塊鏈技術並不完全屬於加密貨幣
02當金融危機來臨時,區塊鏈技術可以防止偽造,追蹤源頭,簡化金融行業的交易,一些投資者選擇投資加密貨幣以規避相應的資產風險,並受益於區塊鏈解決信任問題的機制,該技術已應用於金融管理和交易。主要表現為區塊鏈可以跟蹤各種類型的交易,也可以在各種場景中發揮防偽和可追溯的作用。版權、商標、學術欺詐等問題相繼曝光
此外,區塊鏈技術還可以簡化交易,使整個交易過程公開透明,跟蹤每個交易事件的鏈接,並確保雙方都有一定程度的信任
03比特幣的概念不同於區塊鏈
在「挖掘」過程中,開源區塊鏈網路可以確保信任,不可篡改。當聯網的計算機通過一個精確的演算法並給出正確的答案時,「缺席者」將因挖掘而獲得獎勵,並可以使用世界各地的伺服器,但整個過程仍然非常耗能
貨幣圖表B幣:全面解讀區塊鏈和比特幣將教會你理解它們之間的關系。比特幣是區塊鏈技術的開放源代碼,也就是說,為每個人開發的網路,它以分散的優勢受到歡迎。然而,作為一個公共區塊鏈,比特幣由於采礦而消耗了大量的計算能力,這導致了許多國家的嚴重功耗
因此,對於一項新興技術,最好不要盲目信任或投資,並認識到其真正目的,以便客觀地看到一切並做好准備。
#比特幣[超話]# #數字貨幣# #歐易OKEx#
㈦ 區塊鏈技術架構有些什麼課程介紹
目前市場上區塊鏈培訓課程跨度很大,課程內容和授課形式也是五花八門。
區塊鏈
1、編程基礎入門
計算機軟硬體基礎、字元集及字元編碼、HTML+CSS(含HTML5+CSS3)、ECMA + BOM + DOM、jQuery、node.js、Ajax及Express
2、Go編程語言
Go基本語法、流程式控制制、函數及數據、錯誤處理、Go面向對象編程、Go並發編程、Go網路編程、Go安全編程、Go進階編程(goroutine、channel)、資料庫MySQL、LevelDB
3、區塊鏈1.0——比特幣Bitcoin
比特幣原理、比特幣系統架構、密碼演算法(Go語言實現)、共識演算法(Go語言實現)、比特幣交易原理及交易腳本、比特幣RPC編程(node.js實現)、比特幣源碼解析
4、區塊鏈2.0——以太坊Ethereum
以太坊工作原理及基礎架構、以太坊基本概念(賬戶、交易、Gas)、以太坊錢包Mist及Metamask、以太坊交易、ERC20標准Token開發部署、以太坊開發IDE——remix-ide、智能合約與Solidity、Solidity部署、備份及調用、框架技術:truffle及web3、DApp開發實戰、Geth
5、區塊鏈3.0——超級賬本之Fabric
超級賬本項目介紹、Fabric部署和使用、Fabric配置管理、Fabric架構設計、Fabric CA應用與配置、應用開發實戰。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
㈧ 如何學習區塊鏈
你是想學習區塊鏈開發技術還是只是想要了解區塊鏈是什麼,如果是前者,可以看看其他區塊鏈項目的代碼,先了解。如果是後者,可以關注一些好區塊鏈自媒體。區塊鏈是新興的產業,沒有現成的培訓班,全靠自己探索領悟。
㈨ 比特幣源碼研讀一:橢圓曲線在比特幣密碼中的加密原理
參加比特幣源碼研讀班後首次寫作,看到前輩black寫的有關密鑰,地址寫的很好了,就選了他沒有寫的橢圓曲線,斗膽寫這一篇。
在密碼學上有兩種加密方式,分別是對稱密鑰加密和非對稱密鑰加密。
對稱加密:加密和解密使用的同樣的密鑰。
非對稱加密:加密和解密是使用的不同的密鑰。
二戰中圖靈破解德軍的恩尼格碼應該就是用的對稱加密,因為他的加密和解密是同一個密鑰。比特幣的加密是非對稱加密,而且用的是破解難度較大的橢圓曲線加密,簡稱ECC。
非對稱加密的通用原理就是用一個難以解決的數學難題做到加密效果,比如RSA加密演算法。RSA加密演算法是用求解一個極大整數的因數的難題做到加密效果的。就是說兩個極大數相乘,得到乘積很容易,但是反過來算數一個極大整數是由哪兩個數乘積算出來的就非常困難。
下面簡要介紹一下橢圓曲線加密演算法ECC。
首先橢圓曲線的通式是這個樣子的:
一般簡化為這個樣子:
()發公式必須吐槽一下,太麻煩了。)
其中
這樣做就排除了帶有奇點的橢圓曲線,可以理解為所有的點都有一條切線。
圖像有幾種,下面列舉幾個:[1]
橢圓曲線其實跟橢圓關系不大,也不像圓錐曲線那樣,是有圓錐的物理模型為基礎的。在計算橢圓曲線的周長時,需要用到橢圓積分,而橢圓曲線的簡化通式:
,周長公式在變換後有一項是這樣的:,平方之後兩者基本一樣。
我們大體了解了橢圓曲線,就會有一個疑問,這個東西怎麼加密的呢?也就是說橢圓曲線是基於怎樣的數學難題呢?在此之前還得了解一些最少必要知識:橢圓曲線加法,離散型橢圓曲線。
橢圓曲線加法
數學家門從普通的代數運算中,抽象出了加群(也叫阿貝爾群或交換群),使得在加群中,實數的演算法和橢圓曲線的演算法得到統一。
數學中的「群」是一個由我們定義了一種二元運算的集合,二元運算我們稱之為「加法」,並用符號「+」來表示。為了讓一個集合G成為群,必須定義加法運算並使之具有以下四個特性:
1. 封閉性:如果a和b是集合G中的元素,那麼(a + b)也是集合G中的元素。
2. 結合律:(a + b) + c = a + (b + c);
3. 存在單位元0,使得a + 0 = 0 + a =a;
4. 每個元素都有逆元,即:對於任意a,存在b,使得a + b = 0.
如果我們增加第5個條件:
5. 交換律: a + b = b + a
那麼,稱這個群為阿貝爾群。[1]
運演算法則:任意取橢圓曲線上兩點P、Q (若P、Q兩點重合,則做P點的切線)做直線交於橢圓曲線的另一點R』,過R』做y軸的平行線交於R。我們規定P+Q=R。(如圖)[2]
特別的,當P和Q重合時,P+Q=P+P=2P,對於共線的三點,P,Q,R』有P+Q+R』=0∞.
這里的0∞不是實數意義的0,而是指的無窮遠點(這里的無窮遠點就不細說了,你可以理解為這個點非常遙遠,遙遠到兩條平行線都在這一點相交了。具體介紹可以看參考文獻[2])。
注意這里的R與R』之間的區別,P+Q=R,R並沒有與P,Q共線,是R』與P,Q共線,不要搞錯了。
法則詳解:
這里的+不是實數中普通的加法,而是從普通加法中抽象出來的加法,他具備普通加法的一些性質,但具體的運演算法則顯然與普通加法不同。
根據這個法則,可以知道橢圓曲線無窮遠點O∞與橢圓曲線上一點P的連線交於P』,過P』作y軸的平行線交於P,所以有無窮遠點 O∞+ P = P 。這樣,無窮遠點 O∞的作用與普通加法中零的作用相當(0+2=2),我們把無窮遠點 O∞ 稱為零元。同時我們把P』稱為P的負元(簡稱,負P;記作,-P)。(參見下圖)
離散型橢圓曲線
上面給出的很好看的橢圓曲線是在實數域上的連續曲線,這個是不能用來加密的,原因我沒有細究,但一定是連續曲線上的運算太簡單。真正用於加密的橢圓曲線是離散型的。要想有一個離散型的橢圓曲線,先得有一個有限域。
域:在抽象代數中,域(Field)之一種可進行加、減、乘、除運算的代數結構。它是從普通實數的運算中抽像出來的。這一點與阿貝爾群很類似。只不過多了乘法,和與乘法相關的分配率。
域有如下性質[3]:
1.在加法和乘法上封閉,即域里的兩個數相加或相乘的結果也在這個域中。
2.加法和乘法符合結合律,交換率,分配率。
3.存在加法單位,也可以叫做零元。即存在元素0,對於有限域內所有的元素a,有a+0=a。
4.存在乘法單位,也可以叫做單位元。即存在元素1,對於有限域內所有的元素a,有1*a=a。
5.存在加法逆元,即對於有限域中所有的元素a,都存在a+(-a)=0.
6.存在乘法逆元,即對於有限域中所有的元素a,都存在a*=0.
在掌握了這些知識後,我們將橢圓曲線離散化。我們給出一個有限域Fp,這個域只有有限個元素。Fp中只有p(p為素數)個元素0,1,2 …… p-2,p-1;
Fp 的加法(a+b)法則是 a+b≡c (mod p);它的意思是同餘,即(a+b)÷p的余數與c÷p的余數相同。
Fp 的乘法(a×b)法則是 a×b≡c (mod p);
Fp 的除法(a÷b)法則是 a/b≡c (mod p);即 a×b∧-1≡c (mod p);(也是一個0到p-1之間的整數,但滿足b×b∧-1≡1 (mod p);
Fp 的單位元是1,零元是 0(這里的0就不是無窮遠點了,而是真正的實數0)。
下面我們就試著把
這條曲線定義在Fp上:
選擇兩個滿足下列條件的小於p(p為素數)的非負整數a、b,且a,b滿足
則滿足下列方程的所有點(x,y),再加上無窮遠點O∞ ,構成一條橢圓曲線。
其中 x,y屬於0到p-1間的整數,並將這條橢圓曲線記為Ep(a,b)。
圖是我手畫的,大家湊合看哈。不得不說,p取7時,別看只有10個點,但計算量還是很大的。
Fp上的橢圓曲線同樣有加法,法則如下:
1. 無窮遠點 O∞是零元,有O∞+ O∞= O∞,O∞+P=P
2. P(x,y)的負元是 (x,-y),有P+(-P)= O∞
3. P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下關系:
x3≡-x1-x2(mod p)
y3≡k(x1-x3)-y1(mod p)
其中若P=Q 則 k=(3+a)/2y1 若P≠Q,則k=(y2-y1)/(x2-x1)
通過這些法則,就可以進行離散型橢圓曲線的計算。
例:根據我畫的圖,(1,1)中的點P(2,4),求2P。
解:把點帶入公式k=(3*x∧2+a)/2y1
有(3*2∧2+1)/2*4=6(mod 7).
(注意,有些小夥伴可能算出13/8,這是不對的,這里是模數算數,就像鍾表一樣,過了12點又回到1點,所以在模為7的世界裡,13=6,8=1).
x=6*6-2-2=4(mod 7)
y=6*(2-4)-4=2 (mod 7)
所以2P的坐標為(2,4)
那橢圓曲線上有什麼難題呢?在模數足夠大的情況下,上面這個計算過程的逆運算就足夠難。
給出如下等式:
K=kG (其中 K,G為Ep(a,b)上的點,k為小於n(n是點G的階)的整數)不難發現,給定k和G,根據加法法則,計算K很容易;但給定K和G,求k就相對困難了。
這就是橢圓曲線加密演算法採用的難題。我們把點G稱為基點(base point),k稱為私鑰,K稱為公鑰。
現在我們描述一個利用橢圓曲線進行加密通信的過程[2]:
1、用戶A選定一條橢圓曲線Ep(a,b),並取橢圓曲線上一點,作為基點G。
2、用戶A選擇一個私鑰k,並生成公鑰K=kG。
3、用戶A將Ep(a,b)和點K,G傳給用戶B。
4、用戶B接到信息後 ,將待傳輸的明文編碼到Ep(a,b)上一點M(編碼方法很多,這里不作討論),並產生一個隨機整數r(r<n)。
5、用戶B計算點C1=M+rK;C2=rG。
6、用戶B將C1、C2傳給用戶A。
7、用戶A接到信息後,計算C1-kC2,結果就是點M。因為
C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再對點M進行解碼就可以得到明文。
整個過程如下圖所示:
密碼學中,描述一條Fp上的橢圓曲線,常用到六個參量:
T=(p,a,b,G,n,h),p 、a 、b 用來確定一條橢圓曲線,G為基點,n為點G的階,h 是橢圓曲線上所有點的個數m與n相除的整數部分
這幾個參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿足以下幾個條件:
1、p 當然越大越安全,但越大,計算速度會變慢,200位左右可以滿足一般安全要求;
2、p≠n×h;
3、pt≠1 (mod n),1≤t<20;
4、4a3+27b2≠0 (mod p);
5、n 為素數;
6、h≤4。
200位位的一個數字,那得多大?而且還是素數,所以這種方式是非常安全的。而且再一次交易中,區塊被記錄下來只有10分鍾的時間,也就是說要想解決這個難題必須在10分鍾以內。即便有技術能夠在10分鍾以內破解了現在這個難度的加密演算法,比特幣社區還可以予以反制,提高破解難度。所以比特幣交易很安全,除非自己丟掉密鑰,否則不存在被破解可能。
第一次寫一個完全陌生的數學領域的知識,也許我有錯誤的地方,也許有沒講明白的地方,留言討論吧。總之寫完後對比特比系統的安全性表示很放心。
參考文獻
[1] 橢圓曲線密碼學簡介
[2] 什麼是橢圓曲線加密(ECC)
[3] 域(數學)維基網路
區塊鏈研習社源碼研讀班 高若翔