FISCO-BCOS-Python 模板

基于Python-SDK的FISCO BCOS區塊鏈HelloWorld模板,提供了簡單的問候語設置和查詢功能。本項目采用現代Python開發實踐,包含完整的配置管理、測試框架和項目結構。

快速開始

倉庫地址:git clone https://gitee.com/atanycosts/python-fisco-template.git

前置要求

  • Python 3.7+
  • FISCO BCOS節點(2.0或3.0版本)
  • Git

1. 環境準備

創建虛擬環境(推薦)
# Windows
rmdir /s /q .venv
python -m venv .venv
.venv\Scripts\activate# Linux/macOS
rm -rf .venv
python3 -m venv .venv
source .venv/bin/activate
安裝項目依賴
pip install -r requirements.txt

2. SDK初始化

重要: 如果你重新下載了python-sdk或首次使用,需要進行以下初始化步驟:

2.1 創建SDK配置文件
# 下載sdk(在根目錄下)
git clone https://gitee.com/FISCO-BCOS/python-sdk
# 進入SDK目錄
cd python-sdk# Windows
Copy-Item "client_config.py.template" "client_config.py"# Linux
cp client_config.py.template client_config.py
2.2 安裝SDK依賴
# 在python-sdk目錄下執行
pip install -r requirements.txt
2.3 返回項目目錄
cd ../python-fisco-template

3. 配置環境變量

復制環境變量模板文件:

# Windows,如果存在.env就不用管這一步
Copy-Item ".env.example" ".env"# Linux
cp .env.example .env

編輯 .env 文件,配置你的區塊鏈網絡參數(詳見下方配置說明)。

4. 運行測試

項目提供了完整的測試套件,支持多種運行方式:

# 運行所有測試
pytest test/ -v# 運行特定測試
pytest test/test_blockchain_main.py::test_set_greeting -v# 運行連接測試
pytest test/test_blockchain_main.py::test_blockchain_connection -v# 直接運行Python文件(傳統方式)
python test/test_blockchain_main.py

如果看到類似以下輸出,說明配置成功:

2025-01-XX XX:XX:XX.XXX | INFO | 區塊鏈配置初始化完成,連接節點: your-node-ip:20200
2025-01-XX XX:XX:XX.XXX | INFO | 合約ABI加載成功: resources/abi/HelloWorld.abi
2025-01-XX XX:XX:XX.XXX | SUCCESS | 上鏈成功!交易哈希: 0x...

項目結構

python_fisco_template/
├── .env                              # 環境變量配置文件
├── .gitignore                        # Git忽略文件
├── LICENSE                           # 開源許可證
├── README.md                         # 項目說明文檔
├── requirements.txt                  # Python依賴包列表
├── pytest.ini                       # pytest測試配置
├── pyproject.toml                    # 現代Python項目配置
├── app/                              # 應用核心代碼
│   ├── config/
│   │   ├── __init__.py
│   │   └── blockchain_config.py      # 區塊鏈配置管理類
│   └── services/
│       ├── __init__.py
│       └── blockchain_service.py     # 區塊鏈服務實現
├── bin/                              # 證書和賬戶文件
│   ├── accounts/
│   │   └── pemtest.pem               # 測試賬戶私鑰文件
│   ├── ca.crt                        # CA根證書
│   ├── sdk.crt                       # SDK客戶端證書
│   ├── sdk.key                       # SDK客戶端私鑰
│   └── logs/                         # SDK運行日志目錄
├── logs/                             # 應用日志目錄
│   └── blockchain_test.log           # 測試運行日志
├── python-sdk/                       # FISCO BCOS Python SDK
│   └── ...                           # SDK相關文件
├── resources/                        # 資源文件目錄
│   ├── __init__.py
│   ├── abi/                          # 智能合約ABI文件
│   │   ├── __init__.py
│   │   └── HelloWorld.abi            # HelloWorld合約ABI
│   ├── bin/                          # 智能合約編譯文件
│   │   ├── __init__.py
│   │   └── ecc/                      # ECDSA編譯輸出
│   └── contracts/                    # 智能合約源碼
│       └── HelloWorld.sol            # HelloWorld合約源碼
└── test/                             # 測試文件目錄└── test_blockchain_main.py       # 主要測試腳本

我遇到的問題解決

1. ModuleNotFoundError: No module named ‘client_config’

問題原因: SDK目錄下缺少 client_config.py 文件

解決方案:

cd ../python-sdk
# Windows PowerShell
Copy-Item "client_config.py.template" "client_config.py"
# Linux/macOS
cp client_config.py.template client_config.py

問題: ModuleNotFoundError: No module named 'attrdict'

解決方案:

cd ../python-sdk
pip install -r requirements.txt

2. 連接問題

問題: 無法連接到FISCO BCOS節點

解決方案:

  • 檢查 .env 文件中的 BLOCKCHAIN_CHANNEL_HOSTBLOCKCHAIN_CHANNEL_PORT
  • 確認節點正在運行:ps aux | grep fisco
  • 驗證防火墻設置,確保端口20200可訪問
  • 檢查證書文件路徑和權限

3. 證書問題

問題: SSL證書驗證失敗

解決方案:

# 檢查證書文件是否存在
ls -la bin/ca.crt bin/sdk.crt bin/sdk.key# 驗證證書有效性
openssl x509 -in bin/sdk.crt -text -noout
  • 確保證書文件存在且路徑正確
  • 檢查證書是否過期
  • 驗證CA證書與節點證書匹配

4. 合約調用失敗

問題: 合約方法調用返回錯誤

解決方案:

  • 檢查 BLOCKCHAIN_CONTRACT_ADDRESS 是否為有效的已部署合約地址
  • 驗證ABI文件與合約匹配:cat resources/abi/HelloWorld.abi
  • 檢查合約方法參數類型和數量

5. 測試運行問題

問題: pytest運行失敗或找不到測試

解決方案:

# 檢查pytest配置
pytest --collect-only# 運行特定測試
pytest test/test_blockchain_main.py::test_set_greeting -v# 檢查Python路徑
python -c "import sys; print('\n'.join(sys.path))"

6. 日志問題

問題: 日志輸出異常或無法寫入

解決方案:

  • 確保 logs 目錄存在且有寫入權限
  • 檢查 loguru 配置是否正確
  • 驗證日志級別設置

7. 環境變量問題

問題: 配置未生效

解決方案:

# 檢查環境變量是否加載
from app.config.blockchain_config import blockchain_config
print(blockchain_config.dict())
  • 確保 .env 文件在項目根目錄
  • 檢查變量名前綴是否為 BLOCKCHAIN_
  • 驗證 python-dotenv 是否正確安裝

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

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

相關文章

移動端(微信等)使用 vConsole調試console

本文介紹了一種在移動端真機上進行調試的方法——使用VConsole。通過簡單的安裝步驟和代碼配置,開發者可以在移動端直接查看console.log輸出,極大提升了調試效率。 摘要生成于 C知道 ,由 DeepSeek-R1 滿血版支持, 前往體驗 >作…

云計算資源分配問題

這里寫目錄標題一、云計算資源的基本類型二、資源分配的目標三、資源分配的方式四、資源分配的技術與工具五、挑戰與優化方向六、實際應用場景舉例總結云計算資源分配是指在云計算環境中,根據用戶需求、應用程序性能要求以及系統整體效率,將計算、存儲、…

深度學習之第二課PyTorch與CUDA的安裝

目錄 簡介 一、PyTorch 與 CUDA 的核心作用 1.PyTorch 2.CUDA 二、CUDA的安裝 1.查看 2.下載安裝 3.檢查是否安裝成功 三、PyTorch的安裝 1.GPU版本安裝 2.CPU版本安裝 簡介 在深度學習的實踐旅程中,搭建穩定且高效的開發環境是一切實驗與項目的基礎&…

Ubuntu22.04 安裝和使用標注工具labelImg

文章目錄一、LabelImg 的安裝及配置1. 安裝2. 配置二、使用1. 基礎操作介紹2. 創建自定義標簽2.1 修改 predefined_classes.txt2.2 直接軟件界面新增3. 圖像標注3.1 重命名排序3.2 標注3.2 voc2yolo 格式轉換3.3 視頻轉圖片Yolo系列 —— Ubuntu 安裝和使用標注工具 labelImgYo…

Jenkins與Docker搭建CI/CD流水線實戰指南 (自動化測試與部署)

更多云服務器知識,盡在hostol.com你是否已經厭倦了那個“人肉”部署的重復循環?每一次 git push 之后,都像是一個莊嚴的儀式,你必須虔誠地打開SSH,小心翼翼地敲下一連串的 git pull, npm install, docker build, docke…

【數據可視化-100】使用 Pyecharts 繪制人口遷徙圖:步驟與數據組織形式

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

5G相對于4G網絡的優化對比

5G網絡作為新一代移動通信技術,相比4G實現了全方位的性能提升和架構優化。5G通過高速率、低時延和大連接三大核心特性,有效解決了4G網絡面臨的數據流量爆炸式增長和物聯網應用瓶頸問題 ,同時引入了動態頻譜共享、網絡切片等創新技術&#xff…

AR智能巡檢:智慧工地的高效安全新引擎

在建筑行業,工地安全管理與施工效率的提升一直是核心議題。隨著增強現實(AR)技術的快速發展,AR智能巡檢系統正逐步成為智慧工地的“標配”,通過虛實結合、實時交互和智能分析,推動建筑行業邁入數字化、智能化的新階段。本文將從技術原理、應用場景、核心優勢及未來趨勢等…

TypeScript:枚舉類型

1. 什么是枚舉類型?枚舉(Enum)是TypeScript中一種特殊的數據類型,用于定義一組命名的常量值。它允許開發者用一個友好的名稱來代表數值或字符串,避免使用“魔法數字”或硬編碼值。基本語法:enum Direction …

Maven 編譯打包一個比較有趣的問題

前言最近做項目,發現一個比較有意思的問題,其實發現了問題的根源還是很好理解,但是如果突然看到會非常的難以理解。在Java項目中,明明包名錯誤了,居然可以正常編譯打包,IDEA報錯了,但是mvn命令正…

Leetcode貪心算法

題目&#xff1a;劃分字母區間 題號&#xff1a;763class Solution {public List<Integer> partitionLabels(String s) {List<Integer> list new LinkedList();int[] edge new int[27];char[] chars s.toCharArray();for(int i 0; i <chars.length;i){edge…

【密碼學基礎】加密消息語法 CMS:給數字信息裝個 “安全保險箱”

如果說數字世界是一座繁忙的城市&#xff0c;那么我們每天發送的郵件、合同、軟件安裝包就是穿梭在城市里的 “包裹”。有些包裹里裝著隱私&#xff08;比如銀行賬單&#xff09;&#xff0c;有些裝著重要承諾&#xff08;比如電子合同&#xff09;&#xff0c;還有些關系到設備…

leetcode算法刷題的第二十天

1.leetcode 39.組合總和 題目鏈接 這道題里面的數組里面的數字是可以重復使用的&#xff0c;那可能就會有人想&#xff0c;出現了0怎么辦&#xff0c;有這個想法的很好&#xff0c;但是題目要求數組里面的數字最小值為1&#xff0c;這就可以讓人放心了。但是有總和的限制&…

使用Spoon報錯Driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver‘ could not be found解決方法

使用Spoon報錯Driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver’ could not be found 產生原因 出現這個錯誤是因為Spoon無法找到用于連接MS SQL Server的JDBC驅動程序。該驅動程序是一個jar文件,通常需要手動下載并配置。 解決方案 下載JDBC驅動程序: 訪問 M…

【實時Linux實戰系列】基于實時Linux的音頻實時監控系統

在當今數字化時代&#xff0c;音頻監控系統在許多領域都有著廣泛的應用&#xff0c;例如安全監控、工業環境監測、智能交通等。音頻實時監控系統能夠實時采集、分析音頻信號&#xff0c;并在檢測到異常時發出警報&#xff0c;這對于提高安全性、優化生產流程和提升用戶體驗都有…

改造thinkphp6的命令行工具和分批次導出大量數據

文章目錄基本用法傳入參數addArgumentaddOption參數提示導出數據示例準備工作執行導出基本用法 在thinkphp6框架中&#xff0c;自帶了命令行工具&#xff0c;通過配置 config/console.php &#xff0c;添加自定義的命令&#xff1a; return [commands > [//...//新增的自定…

外匯中高頻 CTA 風控策略回測案例

在匯率波動日益頻繁、企業與機構對風險管理要求不斷提高的背景下&#xff0c;外匯交易策略已成為資產配置與對沖操作的重要工具。其中&#xff0c;CTA 策略在外匯交易中具有非常重要的實際應用價值&#xff0c;在風險控制、趨勢捕捉、資金效率與交易實用性之間取得了良好平衡。…

【iOS】內存管理及部分Runtime復習

1.繼承鏈關于繼承鏈存在兩個指針 類的superclass指向父類 父類的sp指向根類 根類的sp指向空 元類的sp指向父類的元類 最終指向根元類 而根元類的sp指向根類 而關于isa指針 對象的isa指針指向它所屬的類 類的isa指針指向元類 元類的isa指針指向根元類 根元類的isa指針指向自己2.…

重置 Windows Server 2019 管理員賬戶密碼

文章目錄前言1. 重置方法2. 重置流程總結前言 之前因為參加華為存儲的 HCIE 培訓和考試&#xff0c;以及在項目上交付和運維&#xff0c;占用了較多的時間和精力&#xff0c;導致很長一段時間沒有去寫博客&#xff0c;前些天登錄 CSDN 博客發現原力已失效&#xff0c;才知道平…

.Net Core Web 架構(管道機制)的底層實現

.Net Core Web 架構(管道機制)的底層實現 .NET Core Web 程序的底層實現是一個復雜的體系&#xff0c;但我們可以將其分解為幾個核心部分來理解。它本質上是一個將 HTTP 請求轉換為開發者代碼執行&#xff0c;并將執行結果返回為 HTTP 響應的精密管道。 下圖清晰地展示了這一處…