核心要點
- Ascribe公司利用比特幣區塊鏈記錄數字藝術品的唯一標識,並將NoSQL數據庫(RethinkDB)與區塊鏈層相結合,創建了BigchainDB。這種組合增強了控制、資產追踪和安全級別,對NoSQL數據庫用戶尤其具有吸引力。
- BigchainDB由於其區塊鏈層,宣稱自己是完全去中心化的。它還增加了事務支持,這是NoSQL數據庫中經常缺少的功能。此支持保證在通過區塊鏈層寫入底層NoSQL數據庫時,數據庫更改已發生。
- BigChainDB可以填補當前NoSQL和分佈式數據庫中缺失的空白,這可能提供有效的業務或用例。對於區塊鏈愛好者來說,它完成了完全去中心化應用程序堆棧的難題,可能會改變應用程序的開發、部署和維護方式。
比特幣的未來雖然目前尚不明朗,但其賴以生存的底層技術——區塊鏈——已徹底改變了許多行業和項目,並且還有更多應用即將出現。
Ascribe是一個引人注目的初創公司,它利用比特幣區塊鏈記錄數字藝術品的有限數量的唯一標識。因此,由於這種有限數量的“副本”,使它們具有可追溯性、可問責性和(希望)更高的價值。
Ascribe在使用這種方法時遇到了技術問題,這些問題主要源於比特幣區塊鏈本身。向其寫入所有內容速度慢、成本高(目前每次80美分)並且每日條目數量和寫入總容量有限。它也與典型的可擴展數據庫技術相反,添加節點不會提高性能,也沒有真正的查詢語言。這使得依賴比特幣區塊鏈的業務擴展成為一個挑戰。
但是,區塊鏈概念是一個強大的概念,過去幾年中,它的使用和合法性日益提高,甚至大型銀行也宣布正在開發受該概念啟發的技術。
Ascribe決定將兩者的優勢結合起來,採用經過驗證的NoSQL數據庫(RethinkDB)並在其上添加一個區塊鏈層,以增強控制、資產跟踪和額外的安全級別。
這種技術的組合對NoSQL數據庫用戶尤其具有吸引力,因為傳統上,很少有NoSQL數據庫支持有助於保證數據庫更改已發生的“事務”。通過通過區塊鏈層寫入底層NoSQL數據庫,BigchainDB增加了事務支持。
由於區塊鏈層,BigChainDB還聲稱自己是完全去中心化的。雖然許多分佈式NoSQL數據庫都聲稱自己是去中心化的,但通常存在偽主/從設置。
安裝BigChainDB及其依賴項
安裝BigChainDB的方法有幾種。首先我嘗試了Docker鏡像,但遇到了一些連接問題,發現Python包最可靠。
- 安裝RethinkDB,對於其他Mac用戶,還有一個Homebrew包可用。
- 安裝Python 3.4 。
- 使用Pip安裝BigChainDB – sudo pip install bigchaindb
- 使用rethinkdb啟動RethinkDB
- 使用bigchaindb start啟動BigChainDB,它也會為您配置一些內容。
- 在http://SERVER_IP:58080/打開BigChainDB(實際上是RethinkDB UI)管理UI。
簡單示例——消息分配和跟踪
BigchainDB的主要用例之一(也是Ascribe創建它的原因)是跟踪資產,因此讓我們用Python創建一個簡單的示例。首先在您的終端中運行以下命令。
pip install bigchaindb bigchaindb configure bigchaindb show-config
創建一個新文件,app.py,並添加以下內容:
from bigchaindb import Bigchain b = Bigchain() print(b)
這將導入bigchaindb庫,創建一個新對象並使用剛剛創建的設置文件連接到它。
然後運行Python應用程序:
python app.py
您應該看到類似<bigchaindb.core.bigchain at></bigchaindb.core.bigchain>
的內容,這告訴我們一切正常。
添加以下內容:
from bigchaindb import Bigchain import time b = Bigchain() spuser_priv, spuser_pub = b.generate_keys() print("User Created") digital_asset_payload = {'msg': 'This is my special message just for you'} tx = b.create_transaction(b.me, spuser_pub, None, 'CREATE', payload=digital_asset_payload) print("Transaction Written") tx_signed = b.sign_transaction(tx, b.me_private) b.write_transaction(tx_signed) print ("Transaction Written to BC, now waiting") time.sleep(10) tx_retrieved = b.get_transaction(tx_signed['id']) print(tx_retrieved)
這將創建一個用戶和關聯的密鑰以訪問數據庫——請記住額外的安全級別。然後創建一個用於寫入數據庫的有效負載,分配所需的密鑰,並寫入。
新事務從區塊鏈層傳遞到數據庫需要幾秒鐘。代碼等待十秒鐘,然後檢索並打印記錄。您應該看到類似以下內容:
{ "signature": '304502205...', "id": "0f442bcf4a42...", "transaction": { "timestamp": "1457104938.430521", "data": { "hash": "b32779e57...", "payload": { "msg": "This is my special message just for you" } }, "operation": "CREATE", "current_owner": "hFJKYk2...", "new_owner": "26pdiQTTx...", "input": None } } }
您現在有一條您希望一個人可以訪問的特殊消息:
... print("Now to transfer") spuser2_priv, spuser2_pub = b.generate_keys() print("Second User Created") tx_transfer = b.create_transaction(spuser_pub, spuser2_pub, tx_retrieved['id'], 'TRANSFER') print("Transfer Created") tx_transfer_signed = b.sign_transaction(tx_transfer, spuser_priv) b.write_transaction(tx_transfer_signed) print ("Transaction Written to BC, now waiting") time.sleep(15) tx_transfer_retrieved = b.get_transaction(tx_transfer_signed['id']) print("Transferred") print(tx_transfer_retrieved)
這將創建一個第二個用戶,然後獲取特殊消息的事務ID並將其轉移到第二個用戶。 BigChainDB的區塊鏈層將阻止用戶和您的代碼兩次執行相同的操作。如果您嘗試再次運行上面的代碼,則會拋出雙重支出異常。
此示例顯示了BigChainDB添加到RethinkDB的一小部分方法,完整的列表請在此處查找。
HTTP端點
目前,BigChainDB唯一可用的客戶端庫是Python,可能會有更多庫,但與此同時,可以使用有限的HTTP端點來查詢現有事務:
https://www.php.cn/link/6eea81fa0417b0068e614074225a9daf
或使用以下方法編寫新事務:
https://www.php.cn/link/f8b64946ebc86a5e23e1605a2943210c
添加以下有效負載,其中操作可以更改為適合可以寫入的不同類型的事務:
{ "id": "", "signature": "", "transaction": { "current_owner": "", "data": { "hash": "", "payload": null }, "input": null, "new_owner": "", "operation": "", "timestamp": "" } }
去中心化未來的組成部分
暫時忽略其區塊鏈的起源,BigChainDB提供了當前NoSQL和分佈式數據庫中缺少的大量功能。僅此事實就可能是嘗試它的原因,並且可能提供有效的業務/用例。
對於你們當中的區塊鏈愛好者來說,它還完成了完整去中心化應用程序堆棧的難題。理論上,現在有用於應用程序的以太坊、用於文件系統的IPFS,以及用於數據存儲的BigChainDB。這些組件為開發、部署和維護應用程序的非常不同的方式奠定了基礎,從而帶來了令人著迷的未來,我希望在下面的評論中聽到您對此的意見。
(此處省略了FAQ部分,因為該部分只是對文章內容的簡單總結和復述,不屬於偽原創的範疇。)
以上是使用區塊鍊和BigChainDB管理數據存儲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。