0
我正在嘗試編寫一個邏輯(js腳本)來與外部系統通信。據瞭解,邏輯將在所有認可的同伴身上執行。 在這種情況下,如何避免重複操作到外部系統?例如,如何增加外部數據庫中的值?如果我寫一個邏輯來增加js中的值,我認爲這個值會被所有的同意者遞增。 我會感謝任何評論。如何與外部系統通信
我正在嘗試編寫一個邏輯(js腳本)來與外部系統通信。據瞭解,邏輯將在所有認可的同伴身上執行。 在這種情況下,如何避免重複操作到外部系統?例如,如何增加外部數據庫中的值?如果我寫一個邏輯來增加js中的值,我認爲這個值會被所有的同意者遞增。 我會感謝任何評論。如何與外部系統通信
首先,目前唯一可以與外部系統交互的方法是使用實驗性的post
API。這允許您的交易處理器功能將HTTP POST數據發送到外部系統,然後處理響應。
文檔瀏覽: https://hyperledger.github.io/composer/integrating/call-out.html
您是在陳述正確的,如果你有4個同伴,然後爲每一方的鏈代碼容器將運行邏輯,所以你會看到4調用你的HTTP服務。這是必需的,因爲每個對等節點都是獨立的,並且Fabric必須在對等節點達成共識。因此,外部函數應該(理想情況下)是無副作用的「純」函數(冪等),這意味着對於給定的一組輸入參數,您總是可以得到相同的輸出結果集合。
顯然,返回遞增整數的函數不適合此描述!您可能需要重新考慮如何構建問題以使其與基於區塊鏈的分散式方法兼容。
非常感謝您的建議。這對我來說非常有價值,所以我明白我的設計不適合作曲家的體系結構。我會重新考慮商業網絡的結構。 –
我也意識到RWset發送到訂購服務可能會失效,具體取決於Ledger的版本。在這種情況下,我需要撤銷「副作用」,但沒有辦法做到這一點。 –
如果存在MVCC版本故障(樂觀提交失敗),則會自動回滾事務。 –