在線生成的比特幣地址會重復
『壹』 一台電腦可以有多個比特幣地址我的電腦的比特幣地址怎麼不一樣啊
錢包地址代表你的不同的錢包,電腦重裝程序後,會自動生成一個新的錢包的地址,當然每次都是不同的。如果你只想用一個錢包,那你只要導出你的錢包地址,下次重裝系統 或 是重裝錢包程序(或是在其它機子上安裝時)時,導入地址 或者是新建地址 時手動填寫都可以。
祝你好運!!!
『貳』 比特幣如何防止篡改
比特幣網路主要會通過以下兩種技術保證用戶簽發的交易和歷史上發生的交易不會被攻擊者篡改:
非對稱加密可以保證攻擊者無法偽造賬戶所有者的簽名;
共識演算法可以保證網路中的歷史交易不會被攻擊者替換;
- 非對稱加密演算法3是目前廣泛應用的加密技術,TLS 證書和電子簽名等場景都使用了非對稱的加密演算法保證安全。非對稱加密演算法同時包含一個公鑰(Public Key)和一個私鑰(Secret Key),使用私鑰加密的數據只能用公鑰解密,而使用公鑰解密的數據也只能用私鑰解密。
- 1使用如下所示的代碼可以計算在無限長的時間中,攻擊者持有 51% 算力時,改寫歷史 0 ~ 9 個區塊的概率9:
- #include
- #include
- double attackerSuccessProbability(double q, int z) {
- double p = 1.0 - q;
- double lambda = z * (q / p);
- double sum = 1.0;
- int i, k;
- for (k = 0; k <= z; k++) {
- double poisson = exp(-lambda);
- for (i = 1; i <= k; i++)
- poisson *= lambda / i;
- sum -= poisson * (1 - pow(q / p, z - k));
- }
- return sum;
- }
- int main() {
- for (int i = 0; i < 10; i++) {
- printf("z=%d, p=%f\n", i, attackerSuccessProbability(0.51, i));
- }
- return 0;
- }
- 通過上述的計算我們會發現,在無限長的時間中,佔有全網算力的節點能夠發起 51% 攻擊修改歷史的概率是 100%;但是在有限長的時間中,因為比特幣中的算力是相對動態的,比特幣網路的節點也在避免出現單節點佔有 51% 以上算力的情況,所以想要篡改比特幣的歷史還是比較困難的,不過在一些小眾的、算力沒有保證的一些區塊鏈網路中,51% 攻擊還是極其常見的10。
- 防範 51% 攻擊方法也很簡單,在多數的區塊鏈網路中,剛剛加入區塊鏈網路中的交易都是未確認的,只要這些區塊後面追加了數量足夠的區塊,區塊中的交易才會被確認。比特幣中的交易確認數就是 6 個,而比特幣平均 10 分鍾生成一個塊,所以一次交易的確認時間大概為 60 分鍾,這也是為了保證安全性不得不做出的犧牲。不過,這種增加確認數的做法也不能保證 100% 的安全,我們也只能在不影響用戶體驗的情況下,盡可能增加攻擊者的成本。
- 研究比特幣這樣的區塊鏈技術還是非常有趣的,作為一個分布式的資料庫,它也會遇到分布式系統經常會遇到的問題,例如節點不可靠等問題;同時作為一個金融系統和賬本,它也會面對更加復雜的交易確認和驗證場景。比特幣網路的設計非常有趣,它是技術和金融兩個交叉領域結合後的產物,非常值得我們花時間研究背後的原理。
- 比特幣並不能 100% 防止交易和數據的篡改,文中提到的兩種技術都只能從一定概率上保證安全,而降低攻擊者成功的可能性也是安全領域需要面對的永恆問題。我們可以換一個更嚴謹的方式闡述今天的問題 — 比特幣使用了哪些技術來增加攻擊者的成本、降低交易被篡改的概率:
比特幣使用了非對稱加密演算法,保證攻擊者在有限時間內無法偽造賬戶所有者的簽名;
比特幣使用了工作量證明的共識演算法並引入了記賬的激勵,保證網路中的歷史交易不會被攻擊者快速替換;
- 通過上述的兩種方式,比特幣才能保證歷史的交易不會被篡改和所有賬戶中資金的安全。
非對稱加密
圖 4 - 51% 攻擊
總結
『叄』 離線生成的比特幣地址是如何避免沖突的
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表示法變換一下地址(這就是最常見的比特幣地址形態)。
『肆』 如何生成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
如此往復。。。
『伍』 我在火幣的比特幣地址一直是一樣的嗎還是會時常變動的。
火幣的比特幣地址一般是不會時常變動的,如果有變動也會提前通知的。
『陸』 隨機生成的比特幣地址會重復到嗎
會,但是概率小到可以忽略不計。
『柒』 比特幣地址是隨時在變的嗎
比特幣地址是不會變得,地址固定,公開透明可查
『捌』 隨機生成的比特幣地址會重復嗎
不會的,總會有那個幾個數字或者字母是不一樣的。因為一旦有重復的現象發生,市場可能會出現混亂,創造者當初應該也會想到一旦發生這種情況將會導致什麼樣的後果,因此個人覺得是不會有重復得到。
『玖』 你好,問一下比特幣交易記錄每一條有好多地址是怎麼回事
比特幣交易轉賬都是通過比特幣錢包轉出,而一個錢包卻有許多接收地址,每個接收地址的金額還是獨立的(地址A 接收10筆交易,這10筆交易是分開的),轉賬時是使用地址下的交易id(地址中的交易記錄)轉出,比特幣轉出時會記錄所有的記錄地址,就相當於賬本的來往賬目
『拾』 比特幣錢包地址會不會重復
樓主精力充沛,貌似可以做一個反試驗;電腦不要聯網,拿來一個外面優盤里的錢包放入,看看能不能顯示出來有多少錢?其實你前面的試驗,應該不是錢包不需要聯網就能自動生成一個新地址,而是裡面原來就有你自己的一大批隱藏的找零錢老地址才對。不過一大批隱藏的找零錢老地址,應該是在Wallet.dat文件裡面吧,而不是在空的錢包終端軟體裡面。