區塊鏈中的數字簽名:安全性與可信度的核心

數字簽名是區塊鏈技術的信任基石,它像區塊鏈世界的身份證和防偽標簽,確保每一筆交易的真實性、完整性和不可抵賴性。本文會用通俗的語言,帶你徹底搞懂區塊鏈中的數字簽名!

在這里插入圖片描述

文章目錄

    • 1. 數字簽名是什么?從現實世界到區塊鏈
      • 現實中的簽名 vs 區塊鏈中的簽名
      • 核心三要素
    • 2. 數字簽名如何工作?手把手拆解流程
      • 場景模擬
      • 第一步:生成簽名(小明操作)
      • 第二步:驗證簽名(礦工操作)
      • 文字版流程圖描述
    • 3. 區塊鏈為什么離不開它?四大核心作用
      • 作用1:身份認證——證明“你是你”
      • 作用2:數據完整性——內容未被篡改
      • 作用3:不可抵賴性——無法否認交易
      • 作用4:防止重放攻擊——杜絕“復制粘貼”
    • 4. 技術細節:ECDSA、哈希函數與代碼實現
      • 為什么用橢圓曲線(ECDSA)而不是RSA?
      • 代碼演示:生成并驗證簽名
    • 5. 常見問題
      • 問題1:量子計算機能破解數字簽名嗎?
      • 問題2:私鑰丟失或被盜怎么辦?
    • 6. 總結與未來展望
      • 總結
      • 未來趨勢


1. 數字簽名是什么?從現實世界到區塊鏈

現實中的簽名 vs 區塊鏈中的簽名

  • 現實簽名:在合同上簽字 → 證明同意內容 → 但可能被偽造。
  • 區塊鏈簽名:用數學算法生成唯一標識 → 無法偽造 → 還能驗證內容是否被篡改。

核心三要素

要素作用類比現實世界
私鑰生成簽名的密碼鑰匙個人印章
公鑰驗證簽名的公開鑰匙印章的官方備案
哈希函數把任意數據變成唯一指紋文件的唯一編號

2. 數字簽名如何工作?手把手拆解流程

場景模擬

小明用比特幣向小紅轉賬1 BTC,如何保證這筆交易真實有效?

第一步:生成簽名(小明操作)

  1. 準備交易數據

    發送方:小明的地址  
    接收方:小紅的地址  
    金額:1 BTC  
    時間戳:2024-10-01 10:00:00  
    
  2. 生成數據指紋(哈希)

    • 將交易數據輸入SHA-256哈希函數 → 得到64位的指紋(例如a1b2c3...)。
    • 哈希的作用:
      • 長數據變短指紋,方便處理。
      • 任何微小改動都會讓指紋徹底變化(如金額改成1.1 BTC,指紋變為d4e5f6...)。
  3. 用私鑰加密指紋

    • 小明的私鑰(類似密碼)對哈希值加密 → 生成數字簽名(如0x3f7a...)。
  4. 廣播交易

    • 小明將原始交易數據和數字簽名一起發送到區塊鏈網絡。

第二步:驗證簽名(礦工操作)

  1. 拿到小明公鑰

    • 小明的公鑰是公開的(如比特幣地址1A1zP1...)。
  2. 解密簽名得到原始指紋

    • 用小明的公鑰解密簽名 → 得到a1b2c3...(若解密失敗,簽名無效)。
  3. 重新計算交易指紋

    • 對收到的交易數據做SHA-256哈希 → 生成新指紋a1b2c3...
  4. 對比兩個指紋

    • 一致 → 交易有效!
    • 不一致 → 交易被篡改或偽造!

由于部分平臺對Mermaid流程圖的支持有限,以下提供兩種替代方案供您選擇:


文字版流程圖描述

1. 小明寫交易 → 2. 生成交易哈希 → 3. 私鑰加密哈希 → 4. 廣播交易和簽名  ↓  
5. 礦工接收 → 6. 用公鑰解密簽名 → 7. 得到原始哈希 → 8. 重新計算哈希  ↓  
9. 對比哈希是否一致?  ├─ 是 → 交易合法,打包進區塊  └─ 否 → 交易無效,丟棄  

3. 區塊鏈為什么離不開它?四大核心作用

作用1:身份認證——證明“你是你”

  • 案例:比特幣地址1A1zP1...對應小明的公鑰。
  • 邏輯:只有用小明私鑰簽名的交易才能被公鑰驗證通過 → 確保交易發起者身份。

作用2:數據完整性——內容未被篡改

  • 場景:黑客篡改金額為10 BTC → 哈希值變化 → 驗證失敗 → 交易被拒絕。

作用3:不可抵賴性——無法否認交易

  • 類比:親手簽名的合同無法抵賴。
  • 區塊鏈體現:交易簽名被全網驗證 → 小明無法否認轉賬。

作用4:防止重放攻擊——杜絕“復制粘貼”

  • 攻擊方式:黑客截獲交易并重復廣播。
  • 防御:每筆交易包含唯一編號(Nonce),重復交易被識別并拒絕。

4. 技術細節:ECDSA、哈希函數與代碼實現

為什么用橢圓曲線(ECDSA)而不是RSA?

ECDSA(區塊鏈)RSA(傳統Web)
密鑰長度256位2048位
簽名速度快(適合高頻交易)
資源消耗低(適合去中心化網絡)

代碼演示:生成并驗證簽名

from ecdsa import SigningKey, SECP256k1
import hashlib# 生成密鑰對
private_key = SigningKey.generate(curve=SECP256k1)  # 私鑰(絕密!)
public_key = private_key.get_verifying_key()       # 公鑰(公開)# 準備交易數據
transaction = "小明給小紅轉賬1 BTC"# 生成交易哈希
tx_hash = hashlib.sha256(transaction.encode()).hexdigest()# 用私鑰簽名
signature = private_key.sign(tx_hash.encode())# 礦工驗證過程
try:public_key.verify(signature, tx_hash.encode())print("驗證成功!交易合法")
except:print("驗證失敗!交易可疑")

5. 常見問題

問題1:量子計算機能破解數字簽名嗎?

  • 現狀:ECDSA理論上可被量子計算機破解,但需數十年發展。
  • 防御方案:
    • 抗量子算法(如XMSS)。
    • 分層安全(定期更換密鑰)。

問題2:私鑰丟失或被盜怎么辦?

  • 案例:QuadrigaCX交易所因私鑰丟失,1.9億美元資產凍結。
  • 解決方案:
    • 多重簽名(需多個私鑰授權)。
    • 硬件錢包(離線存儲私鑰)。

6. 總結與未來展望

總結

數字簽名通過密碼學實現:

  • 身份認證 → 私鑰簽名證明身份。
  • 數據可信 → 哈希對比確保完整。
  • 不可抵賴 → 簽名全網驗證。

未來趨勢

  • 更高效:聚合簽名(如BLS)減少存儲開銷。
  • 更隱私:零知識證明(如Zcash)隱藏交易細節。

延伸學習

  • 動手實驗:區塊鏈演示工具
  • 論文推薦:比特幣的ECDSA實現

如有疑問,歡迎在評論區交流!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72554.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72554.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72554.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LLM自動金融量化-CFGPT

LLM自動金融量化-CFGPT 簡介 CFGPT是一個開源的語言模型,首先通過在收集和清理的中國金融文本數據(CFData-pt)上進行繼續預訓練,包括金融領域特定數據(公告、金融文章、金融考試、金融新聞、金融研究論文)和通用數據(維基百科),然后使用知識密集的指導調整數據(CFD…

解決Docker拉取鏡像超時錯誤,docker: Error response from daemon:

當使用docker pull或docker run時遇到net/http: request canceled while waiting for connection的報錯,說明Docker客戶端在訪問Docker Hub時出現網絡連接問題。可以不用掛加速器也能解決,linux不好用clash。以下是經過驗證的方法(感謝軒轅鏡…

03.05 QT事件

實現一個繪圖工具&#xff0c;具備以下功能&#xff1a; 鼠標繪制線條。 實時調整線條顏色和粗細。 橡皮擦功能&#xff0c;覆蓋繪制內容。 撤銷功能&#xff0c;ctrl z 快捷鍵撤銷最后一筆 程序代碼&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET…

【文生圖】windows 部署stable-diffusion-webui

windows 部署stable-diffusion-webui AUTOMATIC1111 stable-diffusion-webui Detailed feature showcase with images: 帶圖片的詳細功能展示: Original txt2img and img2img modes 原始的 txt2img 和 img2img 模式 One click install and run script (but you still must i…

go語言因為前端跨域導致無法訪問到后端解決方案

前端服務8080訪問后端8081這端口顯示跨域了 ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:116:14) at Axios.request (webpack-internal:///./node_modules/axios/lib/core/A…

hive之lag函數

從博客上發現兩個面試題&#xff0c;其中有個用到了lag函數。整理學習 LAG 函數是 Hive 中常用的窗口函數&#xff0c;用于訪問同一分區內 前一行&#xff08;或前 N 行&#xff09;的數據。它在分析時間序列數據、計算相鄰記錄差異等場景中非常有用。 一、語法 LAG(column,…

【軟考-架構】1.3、磁盤-輸入輸出技術-總線

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ?資料&文章更新? 文章目錄 存儲系統&#x1f4af;考試真題輸入輸出技術&#x1f4af;考試真題第一題第二題 存儲系統 尋道時間是指磁頭移動到磁道所需的時間&#xff1b; 等待時間為等待讀寫的扇區…

盛鉑科技PDROUxxxx系列鎖相介質振蕩器(點頻源):高精度信號源

——超低相位噪聲、寬頻覆蓋、靈活集成&#xff0c;賦能下一代射頻系統 核心價值&#xff1a;以突破性技術解決行業痛點 在雷達、衛星通信、高速數據采集等高端射頻系統中&#xff0c;信號源的相位噪聲、頻率穩定度及集成靈活性直接決定系統性能上限。盛鉑科技PDROUxxxx系列鎖…

【安裝】SQL Server 2005 安裝及安裝包

安裝包 SQLEXPR.EXE&#xff1a;SQL Server 服務SQLServer2005_SSMSEE.msi&#xff1a;數據庫管理工具&#xff0c;可以創建數據庫&#xff0c;執行腳本等。SQLServer2005_SSMSEE_x64.msi&#xff1a;同上。這個是 64 位操作系統。 下載地址 https://www.microsoft.com/zh-c…

【文獻閱讀】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey

這篇文章發表于2024年4月 摘要 大語言模型&#xff08;LLMs&#xff09;的快速發展推動了多個領域的變革&#xff0c;重塑了通用人工智能的格局。然而&#xff0c;這些模型不斷增長的計算和內存需求帶來了巨大挑戰&#xff0c;阻礙了學術研究和實際應用。為解決這些問題&…

如何在Github上面上傳本地文件夾

前言 直接在GitHub網址上面上傳文件夾是不行的&#xff0c;需要一層一層創建然后上傳&#xff0c;而且文件的大小也有限制&#xff0c;使用Git進行上傳更加方便和實用 1.下載和安裝Git Git - Downloads 傻瓜式安裝即可 2.獲取密鑰對 打開自己的Github&#xff0c;創建SSH密鑰&…

kafka-web管理工具cmak

一. 背景&#xff1a; 日常運維工作中&#xff0c;采用cli的方式進行kafka集群的管理&#xff0c;還是比較繁瑣的(指令復雜&#xff1f;)。為方便管理&#xff0c;可以選擇一些開源的webui工具。 推薦使用cmak。 二. 關于cmak&#xff1a; cmak是 Yahoo 貢獻的一款強大的 Apac…

python之爬蟲入門實例

鏈家二手房數據抓取與Excel存儲 目錄 開發環境準備爬蟲流程分析核心代碼實現關鍵命令詳解進階優化方案注意事項與擴展 一、開發環境準備 1.1 必要組件安裝 # 安裝核心庫 pip install requests beautifulsoup4 openpyxl pandas# 各庫作用說明&#xff1a; - requests&#x…

Redis的CPU高達90%時如何處理

Redis的CPU高達90%時如何處理 1. 分析和優化2. 擴展和分片3. 緩存策略調整4. 資源提升5. 負載均衡6. 進程調整7. 代碼層面改進8. 其他 當Redis的CPU使用率高達90%時&#xff0c;說明Redis服務器可能處于過載狀態&#xff0c;這可能會導致響應時間變長甚至服務中斷。要處理這種…

Faster R-CNN 算法詳解

Faster R-CNN 是在 R-CNN 和 Fast R-CNN 的基礎上進一步優化的一種目標檢測算法。它通過引入 Region Proposal Network (RPN) 將區域建議和目標檢測整合到一個統一的框架中,大幅提高了檢測效率。以下是對 Faster R-CNN 算法的詳細解析: 1. 概述 Faster R-CNN 主要由三部分組…

數據結構:八大排序(冒泡,堆,插入,選擇,希爾,快排,歸并,計數)詳解

目錄 一.冒泡排序 二.堆排序 三.插入排序 四.選擇排序 五.希爾排序 六.快速排序 1.Lomuto版本&#xff08;前后指針法&#xff09; 2.Lomuto版本的非遞歸算法 3.hoare版本&#xff08;左右指針法&#xff09; 4.挖坑法找分界值&#xff1a; 七.歸并排序 八.計數排序…

【商城實戰(2)】商城架構設計:從底層邏輯到技術實現

【商城實戰】專欄重磅來襲&#xff01;這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建&#xff0c;運用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用戶、商品、訂單等核心模塊開發&#xff0c;再到性能優化、安全加固、多端適配&#xf…

Mac mini M4安裝nvm 和node

先要安裝Homebrew&#xff08;如果尚未安裝&#xff09;。在終端中輸入以下命令&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 根據提示操作完成Homebrew的安裝。 安裝nvm。在終端中輸入以下命令&#xf…

FOC無感開環啟動算法

FOC無感開環啟動排除掉高頻注入這種直接識別當前轉子dq軸的位置直接閉環啟動&#xff0c;大部分的常規啟動方式就是三段式啟動&#xff0c;對齊-強拖-觀測器介入-觀測器誤差穩定后平滑過渡-閉環。 這里就只寫出I/F&#xff08;V/F&#xff09;啟動的角度輸出的代碼&#xff0c…

Android 自定義View 加 lifecycle 簡單使用

前言 本文是自定義view中最簡單的使用方法&#xff0c;分別進行 ‘onMeasure’、‘onDraw’、‘自定義樣式’、‘lifecycle’的簡單使用&#xff0c;了解自定義view的使用。 通過lifecycle來控制 動畫的狀態 一、onMeasure做了什么&#xff1f; 在onMeasure中獲取view 的寬和…