區塊鏈交易公私鑰
A. 一文讀懂,XFS中你必須掌握的密碼與區塊鏈理論術語
人們對於事物的深刻認知,不是像「如何將大象放進冰箱?」那般,只回答「打開冰箱,把大象放進去,關上冰箱」那麼簡單。 任何事物都需要一個抽絲剝繭,化整為零的認知過程。 特別是一個新興的概念和事物,更需要更加細致的了解。
XFS系統是一個分布式文件系統,但它並不是一個單一的框架結構,他 是密碼學、區塊鏈、互聯網等多種技術手段結合的一個有機整體 ,因此,想要更詳細的了解它,我們必須知道一些專業術語的概念。
1.加密網路
加密網路簡單來說就是一個公共區塊鏈。在區塊鏈技術誕生之前,互聯網網路中的數據傳輸其實是沒有任何加密手段的,黑客一旦截取的其中的數據,那麼除非那段數據本身就是密文,否則那些數據就直白地暴露在黑客眼前。
加密網路便是通過區塊鏈技術,由區塊鏈各個節點維護,任何人都可以無需許可加入,更重要的是,整個網路中運轉的數據是加密的。XFS系統便是一個典型的加密網路。
2.哈希演算法
哈希演算法是區塊鏈中用以確保數據完整性和安全性的一個特殊程序。哈希演算法採用的是名為「哈希函數」數學關系,結果輸出被稱為「加密摘要」。加密摘要的特點是任意長度的數據輸入後,返回的都是一個唯一且固定長度的值。
哈希函數具備:
基於這些特性,它在保證加密安全時也被用於防篡改,因為即使對散列函數的數據輸入進行微小更改也會導致完全不同的輸出。這也成為了現代密碼學和區塊鏈的主力。
3.分布式賬本
區塊鏈就是一個分布式賬本,但這個賬本不僅僅可以記錄交易信息,還可以記錄任何數據交互。每個分類帳交易都是一個加密摘要,因此無法在不被檢測到的情況下更改條目。這樣使得區塊鏈使參與者能夠以一種去中心化的方式相互審計。
4.私鑰和公鑰
私鑰和公鑰是區塊鏈通過哈希演算法形成加密後生成的一組用於解密的「鑰匙」。通過對私鑰加密,形成公鑰,此時,原始信息只能通過私鑰進行查看,由用戶自己保存,公鑰就如同一個房屋地址,用於進行數據交互,是可以公開的。反之,如果對公鑰加密,形成私鑰,那麼就會形成不可篡改的數字簽名,因為這個公鑰上的簽名只有私鑰擁有者才能進行創建。
1.節點
節點是一個區塊鏈網路的最基礎建設,也是區塊鏈網路和現實連接的物理設備。單個節點擁有許多的功能,例如緩存數據、驗證信息或將消息轉發到其他節點等。
2.點對點(P2P)網路
區塊鏈所構建的便是去中心化後節點與節點之間的數據交互。傳統的互聯網數據傳輸是一種客戶端—伺服器—客戶端的中心輻射模式。點對點網路則更符合「網」這個詞,在這個網路中,每個節點都在單一通信協議下運行,以在它們之間傳輸數據,避免了因為伺服器單點故障而引發的網路崩潰。
3.共識驗證
區塊鏈的共識驗證解決了大量分散的節點意見不統一的問題,以「少數服從多數」的哲學依據,在區塊鏈網路中,更多的節點認可便意味著「共識」,通常而言,區塊鏈網路中超過51%的節點認可的便會被採用和認可。
4.復制證明和時空證明
這兩個證明在XFS系統中都可以總稱為存儲證明。XFS系統的核心功能之一是數據存儲,因此,為了證明存儲的有效性,便通過復制證明驗證數據是否存在節點存儲空間中,並通過時空證明驗證時間上的持續性。存儲提供方如果在儲存有效期內能持續提交存儲證明,那麼他便會獲得由XFS系統提供的獎勵。
5.冗餘策略和糾刪碼
這是XFS用來平衡數據存儲量的兩個方式。冗餘策略將數據通過多副本的方式備份,確保數據在損壞或丟失後能找回。
糾刪碼則是確保數據在復制、傳輸時不會產生過多備份,節省存儲空間、提高傳輸效率。
6.文件分片協議
XFS將文件切分為N個細小的碎片存儲在節點當中,這些碎片只要有任意 M個碎片即可恢復出數據,這樣只要不同時有 N-M+1 個節點失效就能保證數據完整不丟失。
7.智能合約
XFS中的智能合約是一段程序代碼,由於是基於區塊鏈生成的,因此同樣繼承了區塊鏈不可篡改、可追溯等特點,它能保證雙方執行結果的確定性,這也使得XFS網路中的數據交互變得更加可信。
8.Dapp
即去中心化APP,同普通的APP一樣具備更加方便快捷的網路接入埠,唯一不同的便是它拋棄了傳統APP中心化的特點,這使得Dapp中的數據是歸屬於用戶自身,不用擔心隱私泄露、大數據殺熟等問題。
XFS系統是一個開放性平台,用戶可以自由的在其中使用、設計、創作各種Dapp。
結語
關於XFS中的理論術語基於篇幅原因是很難詳細展開細講的,這其中涉及到了更多的互聯網和區塊鏈專業知識。但通過上面這些簡單的解釋,相信大家對XFS系統也有了一個比較立體的認知,那麼,我們便期待打破傳統中心化存儲弊端,開船全新存儲時代的XFS新一代分布式文件系統吧。
B. 區塊鏈中的私鑰和公鑰
公開密鑰(public key,簡稱公鑰)、私有密鑰(private key,簡稱私鑰)是密碼學里非對稱加密演算法的內容。顧名思義,公鑰是可以公開的,而私鑰則要進行安全保管。
私鑰是由隨機種子生成的,公鑰是將私鑰通過演算法推導出來。 由於公鑰太長,為了簡便實用,就出現了「地址」,地址是公鑰推導出來的。這些推導過程是單向不可逆的。也就是地址不能推出公鑰,公鑰不能推出私鑰。
從中我們可以看出,公鑰與私鑰是成對存在的。它們的用處用16個字來概括: 公鑰加密,私鑰解密;私鑰簽名,公鑰驗簽。
公鑰加密,私鑰解密。也就是用公鑰加密原數據,只有對應的私鑰才能解開原數據。這樣能使得原數據在網路中傳播不被竊取,保護隱私。
私鑰簽名,公鑰驗簽。用私鑰對原數據進行簽名,只有對應的公鑰才能驗證簽名串與原數據是匹配的。
可以用鎖頭,鑰匙來比喻公鑰,私鑰。鎖頭用來鎖定某物品,鑰匙來解鎖該物品。鑰匙所有者是物品的所有者。事實上就是這樣,公私鑰對奠定了區塊鏈的賬戶體系及資產(Token等)的所有權,區塊鏈的資產是鎖定在公鑰上的,私鑰是用來解鎖該資產然後使用。比如說我要轉讓資產給你,就是我用我的私鑰簽名了一筆我轉讓資產給你的交易(含資產,數量等等)提交到區塊鏈網路里,節點會驗證該簽名,正確則從我的公鑰上解鎖資產鎖定到你的公鑰上。
我們看到了私鑰的作用了吧,跟中心化記賬系統(支付寶、微信支付等)的密碼一樣重要,擁有私鑰就擁有了資產所有權,所以我們千萬要保管好私鑰,不能泄露。
C. 【區塊鏈】比特幣私鑰、公鑰、簽名
在 了解區塊鏈的基礎名詞概念 提到地址由字元和數字組成,但沒有說明怎樣產生的。銀行卡號由銀行核心系統生成,那比特幣地址是通過什麼生成的呢?看下圖:
對於剛接觸比特幣的小白來說,看到這張圖就蒙圈了,究竟什麼是私鑰、公鑰,為什麼生成個地址要這么麻煩嗎?
現在請大家記住這句話: 私鑰通過橢圓曲線相乘生成公鑰,使用公鑰不能導推出私鑰;公鑰通過哈希函數生成比特幣地址,地址也無法導推出公鑰 。
通過這么復雜演算法才算出地址,那私鑰和公鑰只是為了生成地址嗎?不是的,他們還有其他用途,我們先了解下私鑰和公鑰。
現在已經講解地址、挖礦、工作量證明、算力、區塊、區塊鏈等等的概念,不知大家還有印象嗎?如果忘記請溫習這些概念,因為後續很多地方都會用到這些概念。明天講解下區塊鏈有哪些特點。
參考書籍:《精通比特幣》
區塊鏈知識專題:
比特幣記賬方式(區塊鏈知識2)
了解塊鏈的基礎名詞概念(區塊鏈知識1)
D. 區塊鏈中的私鑰公鑰指什麼
私鑰公鑰這個名詞可謂是所有考題中最簡單的了。
公開的密鑰叫公鑰,只有自己知道的叫私鑰。
公鑰(Public Key)與私鑰(Private Key)是通過一種演算法得到的一個密鑰對(即一個公鑰和一個私鑰),公鑰是密鑰對中公開的部分,私鑰則是非公開的部分。
一句話明了~
E. 區塊鏈私鑰、公鑰和地址是什麼關系
區塊鏈私鑰,公鑰和地址三者之間的關系是私鑰生成公鑰,公鑰轉化成為地址。所以私鑰是最重要的。這三者之間是不可逆的,地址不能生成公鑰,公鑰也不能轉化成為私鑰。
再次是區塊鏈地址,它通常是由26至35個字元的字母和數字字元串組成,區塊鏈地址主要來源於公鑰,區塊鏈地址相當於我們平時使用的銀行卡卡號,是可以公開給任何人的,沒有安全限制,主要作用就是用於接收和發送區塊鏈上的數字資產。
區塊鏈技術現在處於初期發展階段,但因其具有去中心化、安全性、不可篡改等特性,今後的生活工作中可能會產生殺手級別的落地應用而備受各國重視。本文僅供參考,歡迎留言討論。
F. 2018-07-13小白學區塊鏈——私鑰·公鑰
在生活中移動支付和無現金支付已經相對普及了,它方便了我們的日常生活,也降低了我們隨身攜帶現金的風險。無論是移動端支付還是銀行卡類支付,我們都要綁定或輸入銀行卡號和支付密碼才能支付,那麼在比特幣的交易中是如何達成支付的呢?
1.私鑰
在比特幣網路中的私鑰可以對應我們現實世界銀行卡號加支付密碼,也就是: 私鑰=銀行卡號+取款密碼。 私鑰是比特幣網路中根據密碼學上的一種偽隨機演算法生成一種不可預算的一串字元,由於生成的私鑰是256位數的二進制密碼。因為私鑰太長,識別率不高。所以系統又對於原始的隨機數進行一定的轉換,轉換為識別率高的字元串形式的私鑰,比如:也可以把私鑰轉換其他形式,比如以單詞的形式(12或者24個單詞)的助記詞。還有一種是經過加密的私鑰Keystore,是以文件形式存在的,導出時需要設置密碼,導入也一樣的需要輸入密碼,即使別人知道了你的Keystore,沒有你設的密碼也是得不到你的私鑰的。
2.公鑰
公鑰也就是我們通常所說的轉賬地址。公鑰是由私鑰生成的,通過橢圓曲線演算法生成,一個私鑰經過橢圓曲線變換之後能夠得到公鑰,公鑰也是一組轉換後的字元串,比如:。公鑰是用來驗證私鑰的簽名,私鑰和公鑰是成對出現的,一個私鑰簽名的數據,只有對應的公鑰才能對其進行驗證,而地址也是從公鑰生成的,這樣就可以驗證花費的交易是不是屬於這個地址。簡單理解也就是: 公鑰=銀行卡賬號。
總結
1.是私鑰生成公鑰也是成對出現的,公鑰可以生成對應的唯一地址,驗證發送交易的地址是否和該公鑰生成的地址一致
2.公鑰驗證私鑰的簽名,用來驗證該交易是否使用了正確的私鑰簽名,這樣就能確認了該地址發送的交易是否使用了對應的私鑰。
G. 第4課 區塊鏈中的密碼學 學習總結
這是加入公Ulord深度學習第四課,楊博士給大家主講區塊鏈中的密碼學問題,本期課程令讓我弄懂了一個一直困擾著我的關於公鑰和私鑰的問題,他們之間到底是什麼關系?再這次學習中我得到了答案,現在我把我學習到的內容跟大家分享一下。
區塊鏈里的公鑰和私鑰,是非對稱加密里的兩個基本概念。
公鑰與私鑰,是通過一種演算法得到的一個密鑰對,公鑰是密鑰對中公開的部分,私鑰是非公開的部分。公鑰通常用於加密會話,就是消息或者說信息,同時,也可以來用於驗證用私鑰簽名的數字簽名。
私鑰可以用來進行簽名,用對應的公鑰來進行驗證。通過這種公開密鑰體製得到的密鑰對能夠保證在全世界范圍內是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密數據,則必須用它對應的另一個密鑰來進行解密。
比如說用公鑰加密的數據就必須用私鑰才能解密,如果用私鑰進行加密,就必須要對應的公鑰才能解密,否則無法成功解密。另外,在比特幣的區塊鏈中,則是通過私鑰來計算出公鑰,通過公鑰來計算出地址,而這個過程是不可逆的。
H. 區塊鏈錢包的私鑰如何備份有哪幾種方法
當你在創建一個區塊鏈錢包的時候,創建成功之後,系統會自動生成錢包地址、公鑰、私鑰,然而這些需要你自己去備份,錢包不會幫你保存,那麼大家應該如何備份這些信息呢?又有幾種方法?
第一,具備雙倍安全性的錢包,並把私鑰導入到Armory客戶端(1)進行冷儲存(2) ,用戶可以在客戶端中快速從冷儲存中找到所需私鑰,還有一個優點就是方便離線交易轉賬,不必每次都重新導入私鑰。同時電腦的操作系統需要設置密碼。
第二,可以把錢包的私鑰和公鑰製作成電子版備份,同步到雲端。 你可以把它們復制粘貼為一個文檔,標記好名字,文檔可以以拼音的形式命名,可以亂碼,但是要額外的保存在另一個文檔里註明該文件是干什麼用的。但是這樣做的結果就是可能會忘記儲存的文件是哪個,因此你需要在手機備注好信息,同時需要把復習私鑰這件事安排為按時間重復的(如2個月復習一次)日程事件,時間到了手機或電腦提醒復習。而且不僅僅是回憶幾遍就可以了,是要到備份上打開那個生成私鑰的錢包中,重新登錄一遍,看看私鑰(和地址)是否正確。
第三,用戶可以在文檔上寫下錢包的私鑰和公鑰以及地址, 命名的話,你自己看得懂就好,接著就把後綴名為jpg圖片格式,使其看起來就像一個壞掉的打不開的圖片,或者更甚,我們可以把這打不開的假圖片壓縮為zip格式並偽裝為一個真正的圖片,需要的時候再還原出來。具體更改方法可以上網路查找。
第四,以上三種方法都是電子版的備份方法,還有一種簡單粗暴的方法就是在 日記本手抄私鑰公鑰, 使其看起來不那麼刻意、唐突,不過大家需要注意的是,抄寫的時候記得要寫得字體清晰、工整,避免字跡潦草而導致輸入私鑰錯誤。同時,保存的地方也是需要注意的,可以藏在家裡隱私的地方(有條件可以存銀行保險櫃)。
備份區塊鏈錢包私鑰的方法有以上4種方法,當然如果你有更好的備份方法,也可以分享出來,不必按部就班地使用上述備份方法的哦。最後,給一個備份建議:可以結合上述2到4種方法來備份私鑰,避免遺忘。
注釋:
(1)Armory客戶端:Armory 是一個功能齊全的比特幣客戶端,提供了許多其他客戶端軟體所沒有的創新功能!管理多個錢包(確定性和僅觀看)、列印永久工作的紙張備份、導入或刪除私鑰等。
(2)冷儲存:即比特幣錢包的冷儲存(Cold storage)。是指將錢包進行離線保存的一種方法。
I. 【貓說】打開比特幣錢包的兩把鑰匙:私鑰、公鑰
如果不了解區塊鏈,不知道公鑰、私鑰這些最基本的概念,擁有錢包對幣圈新人來講,就好像拿手指頭去捅鱷魚的腦袋,風險極高。此文謹獻給幣圈新朋友,幫助大家梳理比特幣錢包的基本常識。
區塊鏈觀察網在 《區塊鏈是什麼》 一文中提到過,在區塊鏈世界裡,每個人都擁有兩把獨一無二的虛擬鑰匙:公鑰和私鑰。
「公鑰」,可以簡單理解為銀行卡,這是可以發給交易對方看的,銀行卡號則相當於比特幣轉賬中要用到的「地址」。
講得專業一點,公鑰就是一個65位元組的字元串,多長呢?130個字母和數字堆在一起。公鑰太長的話,第一交易起來忒麻煩,第二幹嘛非得暴露公鑰的真實內容呢,這就好像把自己的銀行卡拿出來到處給人看。因此,我們現在看到的地址,就是經過摘要演算法生成的、更短一點的公鑰。
對方知道你的地址才能給你打錢;而且,任何人有了你的地址,都能在Blockchain.info官網查詢這個錢包地址交易了多少次(No. Transactions),收過多少個比特幣(Total Received),以及錢包里還剩下多少個比特幣(Final Balance),如下圖:
「私鑰」,就像打死不能告訴別人的銀行卡密碼。它是一串256位的隨機數。因為讓非IT用戶去記住這個滿屏0 和 1的二進制私鑰是特別不人道的事兒,所以對這一大串私鑰進行了處理,最後私鑰就以5 / K / L 開頭的字元串呈現在我們面前。
公鑰、私鑰、地址之間的關系是:
1)私鑰 → 公鑰 → 地址
私鑰生成唯一對應的公鑰,公鑰再生成唯一對應的地址;
2)私鑰加密,公鑰解密
也就是說,A使用私鑰對交易信息進行加密(數字簽名),B則使用A的公鑰對這個數字簽名進行解密。
其中,私鑰是極度私密的東西。如果你把私鑰發給別人,現在就開始寫一部長篇小說吧,名字都幫你想好了,就叫《永別了,比特幣》。
如果是李笑來老師(網傳擁有數十萬個BTC)這類幣圈大佬,強烈建議使用冷錢包(離線錢包),分開儲存;電視里的富豪在銀行有自己的保險箱,有條件的話也可以參考。
當時,上述方法是安全系數最高的做法。但作為韭菜接班人,暫且假設我們最初只用閑置資金、持有少量的比特幣,比如,小於5個。那麼,動輒上千成本、操作復雜的冷錢包就有點殺雞用牛刀了;因此,區塊鏈觀察網把選擇范圍限定在交易所和輕錢包2項:
在交易平台上買了(極少量)比特幣,可以先不提出來,繼續存在交易所。這種方式最適合幣圈新手。在沒有深入了解每種加密貨幣背後的故事之前,鮮嫩的我們總是充滿了好奇,而放在交易所的比特幣,可以直接進行幣幣交易,交易簡單快捷,不用經數字錢包導來導去;另一方面,平台上幣種齊全,可以滿足我們的嘗鮮心理,方便隨時小試牛刀。
而且像火幣、幣安(已被牆)這些大型交易所,不僅安全等級比某些專為收割韭菜而生的小平台高很多,而且操作簡單,很快就能上手,只需保管好自己的賬號、密碼就行了(再安全一級的話,開啟谷歌二次驗證),其他的就交給平台。
值得注意的是,存在交易所上的資產並不完全屬於自己,更確切地說是借給平台的,我們在資產那一欄看到的數字,相當於平台向我們借錢而打的白條。此外,交易平台本身不是去中心化的,如果安全措施不到位,用戶的賬號密碼有可能被黑客拿到。
輕錢包是相對於「全節點」錢包來說的。
全節點錢包,比如 Bitcoin-Core(核心錢包),運行時需要同步所有區塊鏈數據,佔用相當大內存空間(目前至少50GB以上),完全去中心化;
輕錢包雖然也依賴比特幣網路上其他全節點,但其僅僅同步跟自己有關的交易數據,基本實現去中心化的同時,也提升了用戶體驗。
根據不同的設備類型,我們把輕錢包分為:
1)PC錢包:適用於電腦桌面操作系統(如Windows/MacOS/Linus);
2)手機錢包:適用於安卓、iOS智能手機,比如比太錢包(以太也有PC端);
3)網頁錢包:通過瀏覽器訪問,比如上文提過的blockchain網頁版。
輕錢包操作比較簡單,一般是免費獲取。申請錢包的時候,系統會生成一個私鑰。准備敲黑板!
1)不要截圖、拍照存在手機里;
2)不要把私鑰信息發給任何人;
3)最好手寫(幾份)抄下,藏在你覺得最安全的地方。
總之一句話,誰掌握了錢包的私鑰,誰就擁有錢包的絕對控制權。私鑰只要掌握在你的手裡,比特幣就絕不會丟。
最後多說幾句,作為普通投資者,我們需要做的並不多:
1)走點心,不要把手機弄丟了,畢竟丟了對手機里的比特幣錢包有風險;
2)不要手癢刪掉設備上的錢包應用,除非你決定再也不用這個錢包了,否則後期很麻煩;
3)設置復雜的密碼(原因見第1點),並用心去記牢,這是私鑰弄丟以後留的一手。
對於記不住密碼,又懶得科學備份私鑰的朋友,咱還是把錢存在銀行里吧。
J. 區塊鏈的基礎知識有哪些
1、FISCO BCOS使用賬戶來標識和區分每一個獨立的用戶。在採用公私鑰體系的區塊鏈系統里,每一個賬戶對應著一對公鑰和私鑰。其中,由公鑰經哈希等安全的單向性演算法計算後,得到的地址字元串被用作該賬戶的賬戶名,即賬戶地址。僅有用戶知曉的私鑰則對應著傳統認證模型中的密碼。這類有私鑰的賬戶也常被稱為外部賬戶或賬戶。
2、FISCO BCOS中部署到鏈上的智能合約在底層存儲中也對應一個賬戶,我們稱這類賬戶為合約賬戶與外部賬戶的區別在於,合約賬戶的地址是部署時確定,根據部署者的賬戶地址及其賬戶中的信息計算得出,並且合約賬戶沒有私鑰。
3、SDK需要持有外部賬戶私鑰,使用外部賬戶私鑰對交易簽名。區塊鏈系統中,每一次對合約寫介面的調用都是一筆交易,而每筆交易需要用賬戶的私鑰簽名。
4、許可權控制需要外部賬戶的地址。FISCO BCOS許可權控制模型,根據交易發送者的外部賬戶地址,判斷是否有寫入數據的許可權。
5、合約賬戶地址唯一的標識區塊鏈上的合約。每個合約部署後,底層節點會為其生成合約地址,調用合約介面時,需要提供合約地址。