Ⅰ 比特幣錢包地址是如何得到的不是比特幣地址而是錢包地址!
首先,你應該在大腦中想像出一個「錢包」的概念。你的bitcoin都放在你的「錢包」中一個錢包可以包含很多很多......很多個地址。地址的形式就是形如。
利用比特幣錢包中生成的比特幣地址你可以接收來自他人的比特幣,你也可以將你帳戶上的比特幣轉到他人的比特幣地址上面。比特幣地址就像銀行卡號一樣,具有支付、轉賬、提現功能,但在轉賬時,你只有知道別人的比特幣地址才能進行比特幣轉賬。
如果我們把比特幣錢包簡單比作成銀行卡賬戶的話,那麼比特幣錢包地址就可以看成是銀行卡賬號。不同的是,比特幣地址是可以不存儲在網路上的,更是可以獨立於你的錢包而存在的。
比特幣地址是一串由 26位到34位字母和數字字元串組成的。 看上去像一堆亂碼一樣,說白了這個就像你的銀行卡卡號一樣。 通過區塊鏈查可以查每個比特幣地址的所有轉賬記錄,公開透明。
比特幣錢包地址生成:通過隨機選出256位二進制數字,形成私鑰,然後通過加密函數來生成地址。這個生成方向是單向的。也就是你知道了地址是無法通過解密方法來計算出私鑰的。就目前的人類計算機運算能力無法破解,你可以很放心地把地址公布到網上。
參考鏈接:比特幣|網路
Ⅱ 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個字元,那麼計算量將無法想像。
Ⅲ 比特幣是怎樣產生的
比特幣(Bitcoin)的概念最初由中本聰在2008年11月1日提出,並於2009年1月3日正式誕生 。根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的虛擬的加密數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
比特幣網路通過「挖礦」來生成新的比特幣。所謂「挖礦」實質上是用計算機解決一項復雜的數學問題,來保證比特幣網路分布式記賬系統的一致性。比特幣網路會自動調整數學問題的難度,讓整個網路約每10分鍾得到一個合格答案。隨後比特幣網路會新生成一定量的比特幣作為區塊獎勵,獎勵獲得答案的人。
Ⅳ 比特幣地址是怎麼產生的
比特幣使用橢圓曲線演算法生成公鑰和私鑰,選擇的是secp256k1曲線。生成的公鑰是33位元組的大數,私鑰是32位元組的大數,錢包文件wallet.dat中直接保存了公鑰和私鑰。我們在接收和發送比特幣時用到的比特幣地址是公鑰經過演算法處理後得到的,具體過程是公鑰先經過SHA-256演算法處理得到32位元組的哈希結果,再經過RIPEMED演算法處理後得到20位元組的摘要結果,再經過字元轉換過程得到我們看到的地址。這個字元轉換過程與私鑰的字元轉換過程完成相同,步驟是先把輸入的內容(對於公鑰就是20位元組的摘要結果,對於私鑰就是32位元組的大數)增加版本號,經過連續兩次SHA-256演算法,取後一次哈希結果的前4位元組作為校驗碼附在輸入內容的後面,然後再經過Base58編碼,得到字元串。喬曼特區塊鏈專業站鏈喬教育在線是從事區塊鏈相關培訓,且獲得教育部認證的區塊鏈專業培訓工作站。
Ⅳ 比特幣是如何製造的
每隔一個時間點,比特幣系統會在系統節點上生成一個隨機代碼,互聯網中的所有計算機都可以去尋找此代碼,誰找到此代碼,就會產生一個區塊,得到一個比特幣,這個過程就是人們常說的挖礦。
目前一個1個比特幣基於目前的數據結構被分割到8個小數位,也就是0.00000001BTC,礦工們挖到比特幣最小的單位就是0.00000001BTC。
通俗點說,比特幣好比是一座由總量為2100萬個金幣組成的金山,想要得到它,就需要玩家們利用電腦的運算能力,根據現有的演算法計算出一組符合特定規律的數字。
(5)比特幣的地址產生過程擴展閱讀:
與所有的貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。
P2P的去中心化特性與演算法本身可以確保無法通過大量製造比特幣來人為操控幣值。基於密碼學的設計可以使比特幣只能被真實的擁有者轉移或支付。這同樣確保了貨幣所有權與流通交易的匿名性。比特幣與其他虛擬貨幣最大的不同,是其總數量非常有限,具有極強的稀缺性。
Ⅵ 比特幣錢包地址怎麼獲得
下載比特幣錢包,打開錢包就會自動生成錢包地址。你的比特幣都放在你的「錢包」中一個錢包可以包含很多很多......很多個地址。地址的形式就是形如。
Ⅶ 比特幣地址生成過程是什麼
比特幣地址的生成過程中會用到哈希演算法。從公鑰到比特幣地址生成的具體流程如下圖所示。1、第一層:生成公鑰(固體的生成過程在之後的課程會進行解答);2、第二層:兩層哈希演算法,SHA-265和RIPMD-160(常稱為雙哈希或Hash160);3、第三層:然後雙層哈希計算,然後就會得到公鑰哈希;4、第四層:Base58Check編碼(在Base58編碼基礎上的改良);5、第五層:經過編碼之後,就會得到一個編碼串,這個編碼串就是公鑰哈希和比特幣地址。
我們通過以上關於比特幣地址生成過程是什麼內容介紹後,相信大家會對比特幣地址生成過程是什麼有一定的了解,更希望可以對你有所幫助。
Ⅷ 離線生成的比特幣地址是如何避免沖突的
BTC的地址生成過程如下,完整的可以查一下比特幣中文維基:
比特幣地址的生成過程
(說明: 有些數字以"0x"開頭,意思是此數字使用十六進製表示法。"0x"本身沒有任何含義,它是C語言流傳下來的,約定俗成的寫法,比如0xA就是十進制的10。另外,1個位元組 = 8位二進制 = 2位十六進制)。
第一步,隨機選取一個32位元組的數、大小介於1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之間,作為私鑰。
第二步,使用橢圓曲線加密演算法(ECDSA-secp256k1)計算私鑰所對應的非壓縮公鑰。 (共65位元組, 1位元組 0x04, 32位元組為x坐標,32位元組為y坐標)關於公鑰壓縮、非壓縮的問題另文說明。
第三步,計算公鑰的 SHA-256 哈希值
第四步,取上一步結果,計算 RIPEMD-160 哈希值
第五步,取上一步結果,前面加入地址版本號(比特幣主網版本號「0x00」)
00
第六步,取上一步結果,計算 SHA-256 哈希值
第七步,取上一步結果,再計算一下 SHA-256 哈希值(哈哈)
第八步,取上一步結果的前4個位元組(8位十六進制)
D61967F6
第九步,把這4個位元組加在第五步的結果後面,作為校驗(這就是比特幣地址的16進制形態)。
00D61967F6
第十步,用base58表示法變換一下地址(這就是最常見的比特幣地址形態)。