欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當前位置:主頁 > 區(qū)塊鏈 > 區(qū)塊鏈技術(shù) > 區(qū)塊鏈錢包私鑰碰撞概率

關(guān)于區(qū)塊鏈錢包私鑰碰撞概率計算分析

2024-03-16 00:55:38 | 來源: | 作者:佚名
最近看到有人說通過碰撞區(qū)塊鏈錢包私鑰而一夜暴富,感興趣所以了解了一點關(guān)于區(qū)塊鏈錢包的知識

各種貨幣的錢包地址是唯一的嗎?

先說結(jié)論:一種算法內(nèi),錢包地址是唯一的。兩種不同的算法可以用不同的私鑰生同相同的公鑰。但是兩者之間毫無關(guān)系。所以,另一種幣的錢包地址和你的ustd錢包地址一致,基本上也沒什么關(guān)系。但是,如果你說的另一種幣加密算法和ustd是一致的,那么就意唯著你的私鑰也是他的私鑰,你們雙方都可以操作對方的賬戶。這就意味著你們兩人在生成私鑰的時候,生成了一個一模一樣的,嗯~~,這種概率無限趨近于零。

早在區(qū)塊鏈出現(xiàn)的時候,大家就知道一種破解錢包的方法,就是私鑰碰撞。你可以拿一臺電腦,一直生成錢包地址,萬一生成出了一個和現(xiàn)在公鏈上已經(jīng)存在的錢包地址,那就意味著碰撞成功,萬一這個錢包里面有很多很多的數(shù)字貨幣,那你就發(fā)財了。碰撞成功概率有多少呢?以比特幣為例:

已知比特幣私鑰總數(shù)為2^256個。假設(shè)地球74億人每人擁有100個有余額的私鑰,那么隨機生成一個私鑰,剛好碰撞成功的概率是6.42*(10^-68),可以忽略不計~

最后補充一個基礎(chǔ)知識:

所有區(qū)塊鏈的錢包的地址都是非對稱加密算法的公鑰,與之對應(yīng)的是一個私鑰。簡單來說,就是一對密碼,他們通過一個算法,可以相互解密對方加密的信息。然后把其中一個密碼公布出去(放在公鏈上)讓誰都能得到,撐握私鑰的你就可以發(fā)起交易了,你發(fā)起的交易任何人拿公鑰都可以解密驗證,所以可以證明這個交易是真實的體現(xiàn)了你的意愿。

公鑰和私鑰的生成靠的是隨機算法,因為生成范圍無限大,所以雖然理論有可能生成出相同的公私鑰,但是概率無限趨近于零。

什么是區(qū)塊鏈錢包

這是一個儲存加密貨幣資產(chǎn)的工具,可以理解為銀行賬戶。區(qū)塊鏈錢包可以讓用戶查看余額、發(fā)送交易、接收資金等等。更具體地說,加密貨幣錢包本身不持有任何加密貨幣,它們持有的是加密貨幣的私鑰。

什么是私鑰

私鑰就像是你的銀行卡密碼,它是由大小寫字母和數(shù)字組成的編碼,長度與區(qū)塊鏈類型有關(guān)。你可以通過私鑰推導出公鑰。

什么是公鑰

公鑰可以對外公開,人們可以向你的公鑰轉(zhuǎn)賬,就好比別人可以向你的銀行賬戶打款一樣。

私鑰碰撞

既然每一個私鑰都對應(yīng)了一個錢包賬戶,那我們能不能通過隨機生成私鑰,來碰撞到有存儲加密貨幣的錢包呢?

說干就干,咱們隨便寫一個多線程隨機生成私鑰并檢查余額的程序來試試

from web3 import Web3
from loguru import logger
import binascii, os
import threading
import time
def generate_private_key():
    return binascii.b2a_hex(os.urandom(32)).decode('utf8')
# 初始化 Web3
# 這里用alechemy提供的接口來連接Ethereum 節(jié)點
http_provider = Web3.HTTPProvider('https://eth-mainnet.g.alchemy.com/v2/YOUR-PROJECT-ID')
web3 = Web3(http_provider)
# ABI
abi = """
[
    {
        "constant": true,
        "name": "balanceOf",
        "outputs": [{"name": "", "type": "uint256", "value": "2000000000"}],
        "inputs": [{"name": "_owner", "type": "address"}],
        "anonymous": false,
        "type": "function"
    }
]
"""
# 智能合同地址和對應(yīng)的單位
contracts_info = {
    'USDT': {
        'address': "0xdAC17F958D2ee523a2206206994597C13D831ec7",
        'decimal': 10**6
    },
    'USDC': {
        'address': "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
        'decimal': 10**6
    },
    'Dfyn': {
        'address': "0x9695e0114e12c0d3a3636fab5a18e6b737529023",
        'decimal': 10**18
    },
    'BigTime': {
        'address': "0x64bc2ca1be492be7185faa2c8835d9b824c8a194",
        'decimal': 10**18
    },
    'MANA': {
        'address': "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942",
        'decimal': 10**18
    }
}
# 存有所有的合約實例
contracts = {}
# 創(chuàng)建所有的合約實例
for token, contract_info in contracts_info.items():
    contracts[token] = {
        'contract': web3.eth.contract(address=web3.to_checksum_address(contract_info['address']), abi=abi),
        'decimal': contract_info['decimal']
    }
try:
    latest_block = web3.eth.block_number
    logger.success(f'Web3 成功連接!最新的區(qū)塊編號是: {latest_block}')
except Exception as e:
    logger.error('Web3連接失敗!')
    logger.error(str(e))
# 創(chuàng)建一個線程鎖
lock = threading.Lock()
def task():
    while True:
        try:
            myPrivateKey = generate_private_key()
            myAccount = web3.eth.account.from_key(myPrivateKey)
            wallet_address = web3.to_checksum_address(myAccount.address)
            # 請求會繼續(xù)嘗試直到成功
            while True:
                try:
                    # 查詢ETH余額
                    balance_wei = web3.eth.get_balance(wallet_address)
                    balance_eth = web3.from_wei(balance_wei, 'ether')
                    break  # 如果請求成功則跳出循環(huán)
                except Exception as e:
                    logger.error('Failed to query ETH balance. Retrying...')
                    time.sleep(0.5)  # 暫停0.5秒再重試
            # 查詢 Token 余額
            balances = dict()
            non_zero_balance = False
            for token, contract_info in contracts.items():
                contract = contract_info['contract']
                decimal = contract_info['decimal']
                # 請求會繼續(xù)嘗試直到成功
                while True:
                    try:
                        balance = contract.functions.balanceOf(wallet_address).call() / decimal
                        break  # 如果請求成功則跳出循環(huán)
                    except Exception as e:
                        logger.error(f'Failed to query {token} balance. Retrying...')
                        time.sleep(0.5)  # 暫停0.5秒再重試
                balances[token] = balance
                # 檢查余額是否大于0
                if balance > 0:
                    non_zero_balance = True
            # 打印所有余額
            logger.info(f'PrivateKey:{myPrivateKey},ETH:{balance_eth},' + ','.join([f'{token}:{balance}' for token, balance in balances.items()]))
            # 如果余額大于0,加鎖向文件追加數(shù)據(jù)
            if non_zero_balance:
                with lock:
                    logger.success(f'發(fā)現(xiàn)非空錢包,PrivateKey:{myPrivateKey},ETH:{balance_eth},' + ','.join([f'{token}:{balance}' for token, balance in balances.items()]))
                    with open('key.txt', 'a') as f:
                        f.write(f'PrivateKey:{myPrivateKey},ETH:{balance_eth},' + ','.join([f'{token}:{balance}' for token, balance in balances.items()]) + '\n')
        except Exception as e:
            logger.error('Error occurred. Retrying...')
            continue
def main():
    # 線程數(shù)量
    logger.info('請輸入線程數(shù):')
    num_threads = int(input())
    for _ in range(num_threads):
        t = threading.Thread(target=task)
        t.start()
if __name__ == '__main__':
    main()

程序運行截圖

這個程序在開200個線程的情況下,一臺服務(wù)器運行24小時大概能夠查詢上千萬個私鑰對應(yīng)的錢包是否有以上幾種加密貨幣。

因為是程序是聯(lián)網(wǎng)查詢的,所以速度上會稍微慢一些。如果想要優(yōu)化查詢速度的話,可以把所有有過交易記錄的錢包地址都記錄下來,然后拿私鑰計算出來的錢包地址直接去和記錄的錢包地址做比對(空間換時間),這樣可以節(jié)省掉聯(lián)網(wǎng)查詢的耗時。

概率計算

我們假設(shè)全世界80億人,每個人有2個區(qū)塊鏈錢包,我們的程序一分鐘能夠計算1000萬個私鑰對應(yīng)的錢包里是否有加密貨幣,我們放在服務(wù)器上計算一年,碰撞到持有加密貨幣的錢包地址的概率是多少呢?

區(qū)塊鏈的錢包私鑰通常是256位的,以十六進制來表示則為64個字符(一位十六進制 = 4位二進制),所以有效的私鑰數(shù)量為 16^{64} ,接近 10^{77} 。

全世界80億人( 8*10^{9} ),每個人有2個錢包里面有加密貨幣,所以總共有 1.6*10^{10} 個錢包。所以有加密貨幣錢包的概率是 1.6*10^{10}/10^{77} = 1.6*10^{-67} 。

程序每分鐘能生成1000萬( 10^{7} )個私鑰,一小時就是( 60*10^{7} ),一年(假設(shè)為365天),就是 365*24*60*10^{7}=5.256*10^{12}

所以,一年的時間內(nèi),碰到一個持有加密貨幣的錢包地址的概率為 5.256*10^{12}*1.6*10^{-67}=8.4096*10^{-55}

這個概率是個什么概念呢?

雙色球一等獎(猜中6個紅球號碼,以及藍球的號碼),中獎概率為1/17721088,約等于 5.64325*10^{-8} 。

如果我們將這兩個概率進行比較,可以得到連續(xù)中雙色球的次數(shù)為log( lg8.4096*10^{-55}/lg5.64325*10^{-8}\approx7.5 ^-51)。

也就是說碰撞到一個持有加密貨幣的錢包地址相當于連續(xù)7.5次中雙色球一等獎。

這就是為什么人們稱基于私鑰的加密為安全的原因。私鑰空間太大了,即使使用極其強大的計算能力,也不可能在有限的時間內(nèi)通過生成檢查所有可能的私鑰的方法找到特定的私鑰。

多簽錢包

當你碰撞到了一個持有大量加密貨幣的錢包,其還有可能是多簽錢包(Multisignature Wallet),一筆交易需要多個私鑰的簽名才能完成。即使你有一個私鑰,也無法進行轉(zhuǎn)賬或交易。

在線手動碰撞

這是一個在線手動進行私鑰碰撞的網(wǎng)頁,可以根據(jù)私鑰計算出公鑰,也可以生成隨機的公私鑰對,并且點擊鏈接能夠直接跳轉(zhuǎn)到 Etherscan 檢查地址對應(yīng)的余額。

地址:http://eag.smallyu.net

聲明:文章內(nèi)容不代表本站觀點及立場,不構(gòu)成本平臺任何投資建議。本文內(nèi)容僅供參考,風險自擔!

你可能感興趣的文章

更多

熱門幣種

  • 幣名
    最新價格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 113517.84¥ 815444.05
    -1.49%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 3571.23¥ 25653.57
    -2.92%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 2.9577¥ 21.2463
    -2.9%
  • tether USDT 泰達幣

    USDT

    泰達幣

    $ 0.9998¥ 7.1819
    -0.02%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 749.96¥ 5387.26
    -1.9%
  • solana SOL Solana

    SOL

    Solana

    $ 162.99¥ 1170.82
    -2.34%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1¥ 7.1833
    +0.02%
  • tron TRX 波場

    TRX

    波場

    $ 0.3321¥ 2.3856
    -0.15%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.1978¥ 1.4208
    -3.79%
  • cardano ADA 艾達幣

    ADA

    艾達幣

    $ 0.7212¥ 5.1806
    -3.32%

幣圈快訊

  • 特朗普政府考慮對俄羅斯“影子船隊”實施制裁

    2025-08-06 02:45
    金色財經(jīng)報道,據(jù)英國金融時報,如果俄羅斯總統(tǒng)弗普京未能在本周五之前同意在烏克蘭實現(xiàn)?;穑乩势照紤]對俄羅斯“影子船隊”實施額外制裁。如果將影子船隊列入黑名單,這將是自今年一月特朗普重返白宮以來,美國首次對俄羅斯實施制裁。兩位知情人士透露,白宮內(nèi)部認為,對影子船隊實施額外制裁是對俄羅斯施加壓力的“簡單第一步”。另一位知情人士表示,政府正在考慮包括船隊制裁在內(nèi)的一系列選項。
  • Meta推出新的WhatsApp工具,幫助用戶識別詐騙信息

    2025-08-06 02:24
    金色財經(jīng)報道,Meta推出新的WhatsApp工具,幫助用戶識別詐騙信息,保障通訊時的安全。
  • 數(shù)據(jù):若ETH突破3,778美元,主流CEX累計空單清算強度將達23.28億美元

    2025-08-06 02:03
    ChainCatcher消息,據(jù)Coinglass數(shù)據(jù)顯示,若ETH突破3,778美元,主流CEX累計空單清算強度將達23.28億美元。反之,若ETH跌破3,423美元,主流CEX累計多單清算強度將達10.65億美元。
  • 數(shù)據(jù):若BTC突破119,122美元,主流CEX累計空單清算強度將達26.28億美元

    2025-08-06 02:03
    ChainCatcher消息,據(jù)Coinglass數(shù)據(jù)顯示,若BTC突破119,122美元,主流CEX累計空單清算強度將達26.28億美元。反之,若BTC跌破108,293美元,主流CEX累計多單清算強度將達17.01億美元。
  • OpenAI發(fā)布低成本開放權(quán)重語言模型

    2025-08-06 01:54
    金色財經(jīng)報道,OpenAI發(fā)布了兩個開放權(quán)重語言模型,名為GPT-OSS-120B和GPT-OSS-20B。這兩個模型旨在為開發(fā)者和研究人員提供更低成本、更易使用的選擇。OpenAI稱對這兩個模型進行了廣泛的安全訓練和測試。所謂“開放權(quán)重”模型,是指其參數(shù)對公眾開放。這類模型可以提供更高的透明度和可控性,但與“開源模型”不同,后者是將完整源代碼開放,允許用戶自由使用和修改。
  • 查看更多