⑴ 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個字元,那麼計算量將無法想像。
⑵ 比特幣知道地址和密鑰如何轉移到錢包中
比特幣就是一個騙局,很多人都說比特幣是傳銷是擊鼓傳花的游戲,那證明那些人還是有點見識還算有點眼光還算有點智商,但是他們都沒有看到事情真相之後的最終真相!!!如果你要進場炒比特幣,那麼說獲益最大?哈哈,答案你肯定意想不到!對!沒錯,就是英特爾,英偉特和AMD三巨頭最賺錢!你要炒比特幣要挖礦!那麼你需要的是什麼?對!就是裝備!你看看,就是因為有蠢蛋相信這種瞎扯的鬼話,所以英特爾英偉達和AMD這幾年的CPU和顯卡賣的最為火爆,還帶動了礦機和主板等等周邊!AMD甚至還憑借著這次吸取挖礦的錢成功翻身逆襲!當你們醒悟過來的時候,人家的顯卡處理器都賣爆款了,無論最終是不是你接盤,人家三巨頭已經把錢撈到手了!把我的答案頂上去!讓更多的人知道這真相之後的超級真相!我是誰?我就是真理帝!我指的是三巨頭獲益最大!說到這個份上還不懂嗎?明著我不能說,暗地裡的意思就是他們是始作俑者,懂嗎,所謂虛擬幣最先從他們的公關團體炒出來的(其他一干小弟只是跟風,推波助瀾),別老是拿區塊鏈接忽悠我,我還專門買書看過了,你們所謂的運作,理論說是這樣說沒錯,但是誰來監督,誰來做擔保人?我還說我家裡也有幾萬畝地,還有幾百萬噸黃金呢!我甚至還能自己發行一個新幣種,自己炒作自己呢。最後只有一個結論,那所謂的區塊鏈就是傳銷式的洗腦,別真以為百姓好忽悠。
⑶ 比特幣地址密鑰怎麼查我申請20個,只能查到一個密鑰啊,還不知道是那一個的,其它全無效了用不了了
1、錢包加密是指對儲存有私鑰的錢包進行自動加密存儲。 比特幣官方客戶端從0.4.0 版本開始支持錢包加密。加密的錢包在每次付款的時候,都會提示您輸入密碼。如果密碼錯誤,客戶端會拒絕付款。
2、如果用最早備份的錢包(wallet.dat)替換回來,還是一樣可以正常交易。考慮到比特幣的原理應該也可得出,只要有私鑰(錢包)存在,就可以證明你是這個錢包的合法擁有者,不管對這個錢包(核心就是某個地址對應的私鑰)是進行了加密還是刪除,都不能否定它。
3、備份比特幣錢包時,還需注意由於比特幣支付找零機制的存在(比如把一個完整的100 btc中的50 btc發送給某個地址,系統會發送其中的50 btc到對方的地址,並退回50 btc到你客戶端的一個新地址上,這個地址不會直接顯示在你的地址列表中)。
4、每發送了100次比特幣給其它地址或者使用了100個不同的地址接收比特幣後,請重新備份錢包,否則後面交易退回的和接收到的比特幣會永久丟失。 除了給錢包加密外,用戶還可以自行生成離線的紙錢包和腦錢包。
⑷ 比特幣錢包私鑰是什麼
幣姐為了讓新人更容易理解,會使用一些比喻來講,雖然不太嚴謹,但是會更好理解。
私鑰就好像你的銀行卡密碼
比特幣錢包地址就好像你的銀行卡
只要有了銀行卡和密碼,誰都能從ATM上取錢。
而比特幣錢包地址是公開的,相當於別人都有你的銀行卡,所以這個時候你的銀行卡密碼(私鑰)就變得十分重要了!
一旦泄露你的密鑰,別人就可以把你的比特幣轉走。
網路搜索:「幣姐教你比特幣」或者「幣姐」找到我,更多精品內容分享哦~!
⑸ 比特幣地址怎麼填寫啊
你可以下載一個比特幣錢包,或者在交易平台上注冊。每個人的比特幣地址都是獨一無二的。有地址就可以進行比特幣轉賬。下載比特幣客戶端或者比特幣錢包,也能注冊自己的比特幣地址。比特幣地址是一串由字母和數字組成的26位到34位字元串,看起來有些像亂碼。
比特幣地址就是個人的比特幣賬戶,相當於你的銀行卡卡號,任何人都可以通過你的比特幣地址給你轉賬比特幣。紅框位置就是比特幣地址。登錄我的比特幣包錢就可以看到。
(5)比特幣地址密匙怎麼申請擴展閱讀:
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。P2P的去中心化特性與演算法本身可以確保無法通過大量製造比特幣來人為操控幣值。基於密碼學的設計可以使比特幣只能被真實的擁有者轉移或支付。這同樣確保了貨幣所有權與流通交易的匿名性。比特幣與其他虛擬貨幣最大的不同,是其總數量非常有限,具有極強的稀缺性。該貨幣系統曾在4年內只有不超過1050萬個,之後的總數量將被永久限制在2100萬個。
比特幣可以用來兌現,可以兌換成大多數國家的貨幣。使用者可以用比特幣購買一些虛擬物品,比如網路游戲當中的衣服、帽子、裝備等,只要有人接受,也可以使用比特幣購買現實生活當中的物品。
參考資料:網路-比特幣
⑹ 如何生成bitcoin 地址長度不一樣
1.首先你要知道公鑰和私鑰的概念(已經懂的不用看這部分了)
公鑰私鑰是現代密碼學分支非對稱性加密裡面的名詞,通常都是用公鑰加密信息,用私鑰解密信息,為什麼要這樣? 因為你看電視劇的時候,發電報那種都是對稱性加密,這種加密方式缺點是顯而易見的,如果被人知道了密鑰和加密方法,於是按照加密方法反著來就能解密。 一直到非對稱性加密這種情況才有所改觀,公鑰就是可以對全世界公開的密鑰,比如你和google通訊,用google給的1024位的公鑰加密,送到google那裡只有他有對應的私鑰,只有他能解密,於是就保證了通訊安全
2.比特幣主要用了ECDSA,也就是橢圓曲線簽名演算法,這個演算法有兩個特性,注意這兩點對下面至關重要
a.只要知道私鑰,可以算出相應的公鑰;
b.你用私鑰簽名過的東西,可以用公鑰算一下是不是你簽的;
3.知識准備完了,下面開始講比特幣的交易,比特幣其實沒有錢包,只有交易賬單,整個比特幣就是一大堆交易賬單
比如:
賬單1 從A轉到B 轉了XXX比特幣
賬單2 從B轉到C和D 轉了XXX比特幣
賬單3 從C轉到E 轉了XXX比特幣
。。。。任何人只要下載了客戶端都能接收到從比特幣成立那一天起的所有賬單,所以,只要把所有賬單都下載全了自然知道每個賬戶上應該剩多少錢(這里仔細思考下)
4.比特幣的賬戶,就是剛才講的一段公鑰
5.下面我開始貼一個比特幣的賬單,這里是核心部分了!!! 每個賬單都是一段數據,你簽完了以後會發送到全網,把數據結構逆向成易懂的中文解釋如下:
FROM(誰發送的,包括兩部分)
Previous tx: 你要花的這筆錢的那個賬單的id, 也就是說,你花的任何一筆錢都應該有人轉給你過,需要出示那個賬單的id
scriptSig: 你對這筆交易的簽名,就是把單子用你的私鑰做hash,只有你能做這個hash
TO(誰接受,包括兩部分)
Value: 要發多少
scriptPubKey: 對方的公鑰,比特幣賬戶就是一段公鑰
6.等你簽完單子以後,開始往全網發送,怎麼發呢? 比特幣通訊沒那麼復雜,你可以類比成IRC頻道,但和普通的「IRC」不同的是,任何一個客戶端都是一台「IRC」伺服器,當你啟動客戶端的時候,會接收到周圍的有公網IP的客戶端地址,就是「伺服器」列表,這個列表也不斷的刷新,都是其他的比特幣用戶,於是你在這個「IRC」喊一句話的時候,周圍的人會聽到,進而擴散的全世界。
7.把簽單發送到全世界以後,所有收到這個單子的客戶端會效驗你這個單子對不對,比如會效驗你的簽名,是不是你發的,會效驗你是否有那麼多錢(根據歷史交易可以推算出你有多少錢可以花)
如果這個交易大家算過沒問題了,基本上就算轉賬成功了。
8.實際上現在對方已經接受了比特幣,但是要想花的話,他得有那個地址(公鑰)對應的私鑰。於是他就能填下一個單子的 FROM頭部,Previous tx就是剛才這筆交易的序號,scriptSig填用他私鑰簽名過的hash
如此往復。。。
⑺ 比特幣錢包地址 在哪裡呀
首先,你應該在大腦中想像出一個「錢包」的概念。你的bitcoin都放在你的「錢包」中一個錢包可以包含很多很多......很多個地址。地址的形式就是形如只要這個地址是你的這個客戶端生成的,別人往這個地址付款,都是匯錢到這個錢包里你的錢包在哪裡呢?如果你用的window客戶端的話,那麼請點擊開始菜單,找到「運行」,然後輸入:%APPDATA%\BitCoin點擊「確定」,你就能發現一個叫做wallet.dat的文件,這個文件就是你的「錢包」。錢包中儲存了用於證明你擁有這個錢包所包含錢幣的所有密鑰。你需要同時做好兩個方面的工作:1、保證這個錢包不丟失2、保證這個錢包不被別人獲得方法就是:加密備份。比較簡單有效的一種就是:0、安裝殺毒軟體,徹底殺一次毒,保持殺毒軟體運行1、關閉bitcoin客戶端2、用WinRAR的加密壓縮。請記得採用足夠安全的密碼,密碼不要弱智。然後將這個加密文件備份到安全的U盤中。3、刪除掉C盤中的那個wallet.dat當你需要支付bitcoin時4、解壓縮備份的wallet.dat到上面所說的那個文件夾中是不是覺得很麻煩呢?對,就是這么麻煩,因為bitcoin貨幣系統還處於極其早期的階段,發明和接受它的,目前還都是一些技術愛好者,還沒有來得及照顧到普通用戶的感受。這一切都會在將來變得更具易用性。不過下一版的bitcoin客戶端已經准備內置集成錢包加密功能,這樣對於普通用戶備份而言,就會簡單多了。只要確保你的電腦沒有木馬並且設置了足夠強的密碼,很大程度上就是安全的。Gavin還計劃推出兩設備驗證的機制,就是將你的錢包分成被加密保護的兩個部分,一部分放在你電腦中,一部分放在另外的設備上,例如手機中。就好像某些網上銀行推出的手機簡訊驗證一樣,要完成支付,需要兩個設備同時確認。這對於bitcoin的實際主人而言,這並不麻煩,但是對於偷盜者而言,就需要同時偷走兩個設備的文件才能偷走密鑰,那麼除了你周圍的熟人(還必須要知道你的密碼),那基本上就是不可能完成的任務了。以後預計還會有靠譜的bitcoin在線存儲,甚至傳統的銀行,也有可能推出bitcoin代管的服務,那時候就方便多了
⑻ 比特幣的密鑰是怎麼樣
比特幣的密鑰是怎麼樣
比特幣的密鑰可以分為私鑰和公鑰。
私鑰是一個256位的隨機數,它是由比特幣錢包生成的,並且只有錢包的所有者才能知道它。私鑰是比特幣交易的核心,因為只有持有私鑰的人才能對其進行簽名,從而授權比特幣的轉移。
公鑰是由私鑰通過一種數學演算法生成的。具體來說,公鑰是通過將橢圓曲線加密的私鑰進行解密而生成的。公鑰通常用於接收比特幣,因為人們可以將其公開共享,而不會泄露私鑰。
比特幣地址是由公鑰通過一種哈希演算法生成的。比特幣地址是一串長長的數字和字母,可以用來接收比特幣。任何人都可以看到比特幣地址,但只有持有私鑰的人才能授權比特幣的轉移。
因此,私鑰是比特幣安全的基石,因為只有私鑰持有人才能對比特幣進行控制。任何其他人都不能夠訪問或操縱持有人的比特幣,除非私鑰持有人授權或泄露了私鑰。