區塊鏈服務網絡BSN正式進入商用已過去半年了。隨著BSN業務的深入開展,已被更多的開發者關注,並基於BSN環境部署自己的DApp。 BSN官方客服在此期間收到來自廣大開發者的各類諮詢,現將存在共性的常見問題與大家分享。 BSN團隊將根據大家的反饋,不斷進行產品服務優化和新功能迭代,並持續融入更多來自全球領先的區塊鏈技術,為廣大開發者提供更低成本、更便捷、全互通的一站式區塊鏈服務。

問題1 BSN密鑰託管模式和公鑰上傳模式的區別?

答:密鑰託管模式是指應用接入密鑰對和用戶交易密鑰對均由BSN生成並託管起來,參與方只需要從BSN門戶下載使用即可。上傳公鑰模式是指應用接入密鑰對和用戶交易密鑰對均由參與方在本地生成公私鑰對,並在BSN門戶上傳應用接入公鑰,和通過城市節點網關接口將用戶交易公鑰證書申請文件上傳登記生成用戶交易證書。

可以概括為上傳公鑰模式的私鑰信息一直在用戶手中保存,不會外傳;密鑰託管模式的私鑰則是由BSN生成並且管理。對於安全性比較高的系統建議使用公鑰上傳模式。
問題2 在BSN系統中如何做數據庫交互?

答:開發者無需考慮和數據庫交互的問題,存儲數據由BSN系統底層框架實現的,開發者只需要開發自己的鏈下業務系統調用節點網關API即可。

問題3數據上鍊成功後產生的交易ID和服務運行信息中的HashCode有關係嗎?

答:兩者有關係。交易ID是本次交易的唯一標識,運行信息中的HashCode是區塊的唯一標識,一個區塊裡可含有多筆交易。

問題4在BSN上買10個tps,3個記賬節點的資源,能支持每分鐘多少用戶訪問?假如我每天有1萬個活躍用戶,則要多少TPS?

答:10TPS是指每個記賬節點最大每秒處理10個請求,每分鐘最大處理600個請求,1天最大處理864000個請求。建議您根據您用戶每秒請求量的峰值進行TPS購買,因為一萬個活躍用戶,不會在同一秒同時發起請求。如您的峰值超過2000TPS建議您在鏈下業務系統進行一定的控制,讓連入區塊鏈的TPS控製到2000。如您有大於500的TPS需求,可將您的公司信息和具體需求發送到BSN技術支持郵箱support@bsnbase.com,會有專人聯繫您進行報價。

問題5用BSN服務的項目,可以去申請區塊鏈信息服務備案嗎?

答:在BSN上發布服務都是在後台運行。如果要申請區塊鏈信息服務備案,要提供前台界面。所以建議自己建立前端門戶/APP,其中使用到的區塊鏈功能,可以調用在BSN上部署的服務。這樣完全符合申請區塊鏈信息服務備案的要求。

問題6從BSN上下載的身份證書包是乾什麼用的?

答:證書下載壓縮包含用戶鏈下應用證書和網關證書兩大部分:

1.userAppCert目錄:用於存放用戶應用證書,具體文件如下:

  1. public_cert.pem:應用證書公鑰文件,主要用於網關對接受的簽名數據進行驗證或公開給其它使用者。

  2. private_key.pem:應用證書私鑰文件,主要用於請求網關時對數據進行簽名。如果應用參與者證書模式為【上傳公鑰模式】,則該文件用戶自己管理,該證書信息不存在;如果是【密鑰託管模式】請用戶妥善保管,以防洩露或丟失。

2.gatewayCert目錄:用於存放網關證書,具體文件如下:

  1. gateway_public_cert_secp256r1.pem:網關公鑰secp256r1證書,如果您參與服務算法類型為secp256r1時,用該公鑰證書對網關響應時的數據進行驗簽。

  2. gateway_public_cert_sm2.pem:網關公鑰國密(sm2)證書,如果您參與服務算法類型為國密(sm2)時,用該公鑰證書對網關響應時的數據進行驗簽。

  3. gateway_public_cert_secp256k1.pem:網關公鑰secp256k1證書,如果您參與服務算法類型為secp256k1時,用該公鑰證書對網關響應時的數據進行驗簽。

3.此類證書文件,只限於與節點網關數據交互簽名與驗簽使用,不用於任何應用業務處理!

鏈下業務系統請求網關時使用用戶應用接入證書中的私鑰進行簽名,網關接收到報文後,使用用戶應用接入證書中的公鑰進行驗簽;應用接入證書中的公鑰在鏈下業務系統中沒有用處。

網關響應結果會用網關私鑰證書籤名,鏈下業務系統接收到報文後用網關公鑰證書進行驗簽。

問題7在BSN上發布了應用後,是否可以使用RESTfulAPI進行測試?是否只能按照文檔中提供的通過SDK方法進行測試?

答:BSN提供的節點網關API就是符合RESTful風格的基於HTTPS的接口,SDK是對節點網關API進行了封裝,為用戶提供一個方便調用的實例。開發者可以根據自己的需求選擇對應方式開發鏈下業務系統。

問題8 BSN中有防止用戶發起大量惡意交易攻擊的安全機制嗎?

答:當一個應用的交易量超出TPS隊列長度(TPS*30)時,超出長度的交易請求將不能被執行成功,網關會返回錯誤碼給鏈下業務系統,鏈下業務系統需重新向網關提交這些交易請求。

問題9為什麼調用獲取塊信息接口返回的交易數總是1?

答:BSN中Fabric的出塊維度是1秒和10000條交易和10M,任意滿足其中一個條件就會觸發產生新的區塊;FISCO BCOS是500ms出一個塊,如果500ms內沒有交易則出一個空塊(空塊不上鍊);Xuper Chain是5s和5M,任意滿足其中一個條件就會觸發產生新的區塊,如果滿足條件內沒有交易會出一個空塊(空塊上鍊)。用戶當前交易的頻率達不到出塊頻率,所以一次生成的塊內只有一個交易,當用戶提高交易頻率,每一個塊內將包含多條交易。


問題10從BSN下載的身份證書包中的公私鑰頒發和生成的流程是否安全,私鑰是否存在洩露的風險?

答:BSN中的公私鑰都是由國家信息中心生成的根密鑰頒發和認證的,是絕對安全可靠的,下載身份證書的這種方式是密鑰託管模式,即用戶的應用接入密鑰對和用戶交易密鑰對均用BSN託管,用戶參與服務後下載即可。如果密鑰洩露,可在我的身份證書頁面進行證書更新,更新成功後,老的密鑰就失效了。如果要保證私鑰絕對的安全可選擇上傳公鑰模式,即用戶的應用接入密鑰對和用戶交易密鑰對都是用用戶自行在本地生成的,上傳公鑰或公鑰證書申請文件上傳至BSN即可。

問題11 BSN支持部署多個鏈碼嗎,部署之後是有多個鏈碼部署名稱嗎?

答:BSN支持部署多個鏈碼/智能合約,在發布服務或服務升級時在上傳鏈碼包頁面可上傳多個zip格式的鏈碼包/智能合約包;部署多鏈碼之後會有多個鏈碼部署名稱/合約部署地址。

問題12 BSN中基於Fabric開發的應用調用鏈碼getHistory方法時返回的交易時間是什麼時間?

答:基於Fabric開發的應用調用鏈碼getHistory方法時返回的交易時間為UTC時間,(UTC+8:00)=北京時間,如果用戶要展示北京時間需自行在鏈下業務系統進行轉換。

問題13為什麼我發布了應用後,還沒做交易運行信息裡就顯示塊數和交易數?

答:創建群組/通道時會產生一個不帶交易的區塊;

其他非交易型的交易(如部署合約、更改通道/群組配置,更新合約)都會被打包進區塊。

問題14在BSN上發布了應用後,是否可以使用RESTfulAPI進行測試?是否只能按照文檔中提供的通過SDK方法進行測試?

答:BSN提供的節點網關API就是符合RESTful風格的基於HTTPS的接口,SDK是對節點網關API進行了封裝,為用戶提供一個方便調用的實例。開發者可以根據自己的需求選擇對應方式開發鏈下業務系統。

問題15在BSN開發者手冊中,Fabric的接口為什麼沒有刪除和修改功能?

答:刪除和修改是鏈碼內的功能,需要在鏈碼中實現這些方法,鏈下業務系統通過網關API調用鏈碼中相應的方法實現刪除和修改功能。

問題16 BSN提供DApp的測試環境嗎?

答:BSN在2020年10月31號發布的V1.3.0版本將提供相應功能服務。