最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

最后補(bǔ)充一個(gè)基礎(chǔ)知識(shí):

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

公鑰和私鑰的生成靠的是隨機(jī)算法,因?yàn)樯煞秶鸁o限大,所以雖然理論有可能生成出相同的公私鑰,但是概率無限趨近于零。

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

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

什么是私鑰

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

什么是公鑰

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

私鑰碰撞

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

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

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é)點(diǎn)
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"
    }
]
"""
# 智能合同地址和對(duì)應(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
    }
}
# 存有所有的合約實(shí)例
contracts = {}
# 創(chuàng)建所有的合約實(shí)例
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ū)塊編號(hào)是: {latest_block}')
except Exception as e:
    logger.error('Web3連接失敗!')
    logger.error(str(e))
# 創(chuàng)建一個(gè)線程鎖
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)
            # 請(qǐng)求會(huì)繼續(xù)嘗試直到成功
            while True:
                try:
                    # 查詢ETH余額
                    balance_wei = web3.eth.get_balance(wallet_address)
                    balance_eth = web3.from_wei(balance_wei, 'ether')
                    break  # 如果請(qǐng)求成功則跳出循環(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']
                # 請(qǐng)求會(huì)繼續(xù)嘗試直到成功
                while True:
                    try:
                        balance = contract.functions.balanceOf(wallet_address).call() / decimal
                        break  # 如果請(qǐng)求成功則跳出循環(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('請(qǐng)輸入線程數(shù):')
    num_threads = int(input())
    for _ in range(num_threads):
        t = threading.Thread(target=task)
        t.start()
if __name__ == '__main__':
    main()

程序運(yùn)行截圖

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

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

概率計(jì)算

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

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

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

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

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

這個(gè)概率是個(gè)什么概念呢?

雙色球一等獎(jiǎng)(猜中6個(gè)紅球號(hào)碼,以及藍(lán)球的號(hào)碼),中獎(jiǎng)概率為1/17721088,約等于 5.64325*10^{-8} 。

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

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

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

多簽錢包

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

在線手動(dòng)碰撞

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

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

免責(zé)聲明:本文只為提供市場(chǎng)訊息,所有內(nèi)容及觀點(diǎn)僅供參考,不構(gòu)成投資建議,不代表本站觀點(diǎn)和立場(chǎng)。投資者應(yīng)自行決策與交易,對(duì)投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!

你可能感興趣的文章

幣圈快訊

  • RootData:2Z將于一周后解鎖價(jià)值約839萬美元的代幣

    2026-07-26 11:00
    據(jù)Web3資產(chǎn)數(shù)據(jù)平臺(tái)RootData代幣解鎖數(shù)據(jù),DoubleZero(2Z)將于北京時(shí)間08月02日13時(shí)解鎖約13541萬枚代幣,價(jià)值約839萬美元。
  • RootData:Q將于一周后解鎖價(jià)值約382萬美元的代幣

    2026-07-26 11:00
    據(jù)Web3資產(chǎn)數(shù)據(jù)平臺(tái)RootData代幣解鎖數(shù)據(jù),QuackAI(Q)將于北京時(shí)間08月02日0時(shí)解鎖約16110萬枚代幣,價(jià)值約382萬美元。
  • RootData:ENA將于一周后解鎖價(jià)值約956萬美元的代幣

    2026-07-26 11:00
    據(jù)Web3資產(chǎn)數(shù)據(jù)平臺(tái)RootData代幣解鎖數(shù)據(jù),Ethena(ENA)將于北京時(shí)間08月02日0時(shí)解鎖約11095萬枚代幣,價(jià)值約956萬美元。
  • RootData:ZAMA將于一周后解鎖價(jià)值約1511萬美元的代幣

    2026-07-26 10:59
    據(jù)Web3資產(chǎn)數(shù)據(jù)平臺(tái)RootData代幣解鎖數(shù)據(jù),Zama(ZAMA)將于北京時(shí)間08月02日0時(shí)解鎖約27958萬枚代幣,價(jià)值約1511萬美元。
  • Forma:將關(guān)停FormaChainNFT將遷移至以太坊L1

    2026-07-26 10:56
    Forma在X平臺(tái)宣布,經(jīng)過慎重考慮,決定關(guān)停FormaChain,原因是運(yùn)營該鏈已不可持續(xù)。 作為過渡方案,Modularium和FormaNFT將遷移至以太坊L1,確保藝術(shù)品和市場(chǎng)永久存續(xù)。遷移后,NFT仍可訪問,并可在OpenSea或其他以太坊市場(chǎng)進(jìn)行交易,Modularium將繼續(xù)作為這些收藏品的展示平臺(tái)。 團(tuán)隊(duì)強(qiáng)烈建議用戶通過Forma橋提取資金。任何未及時(shí)提取的資金將被手動(dòng)遷移至一個(gè)待后續(xù)公布的EVM兼容鏈。 團(tuán)隊(duì)強(qiáng)調(diào),用戶資金和NFT均安全,后續(xù)將公布具體的時(shí)間線和遷移步驟。
  • 查看更多
更多

熱門幣種

  • 幣種
    最新價(jià)格
    24H漲跌幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 64527.15¥ 436861.71
    +0.78%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1881.04¥ 12735.01
    +1.16%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.999¥ 6.7634
    +0%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 570.27¥ 3860.84
    +0.76%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0008¥ 6.7756
    +0%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 1.1007¥ 7.4519
    +0.7%
  • solana SOL Solana

    SOL

    Solana

    $ 74.9113¥ 507.16
    +1.1%
  • tron TRX 波場(chǎng)

    TRX

    波場(chǎng)

    $ 0.3312¥ 2.2422
    +0%
  • hyperliquid HYPE Hyperliquid

    HYPE

    Hyperliquid

    $ 58.5717¥ 396.54
    +2.31%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.072511¥ 0.4909
    +4.08%
绥中县| 仁怀市| 商丘市| 吕梁市| 三门县| 威远县| 区。| 屏南县| 盐池县| 海门市| 石门县| 宁强县| 宜春市| 景东| 海兴县| 临泉县| 含山县| 濮阳市| 武强县| 东方市| 巢湖市| 垣曲县| 定边县| 淮安市| 怀柔区| 库车县| 西畴县| 邵阳市| 太康县| 资兴市| 南宫市| 宜黄县| 赞皇县| 沽源县| 高清| 铜梁县| 满城县| 德惠市| 扬中市| 渭源县| 五台县|