Contract-Development
如何從我的 js 客戶端應用程序觸發仲裁私有智能合約部署?
我的問題直接遵循這個對類似問題的回答。
我需要我的客戶端應用程序使用者能夠觸發私人契約部署。我已經嘗試將 privateFor 與 the
web3
和web3-quorum
npm 包一起使用,但它不起作用:契約已部署但不是私有的。我從上面的答案中了解到,Quorum 只允許從節點本身創建私有智能合約,因為節點擁有加密和解密所有內容的密鑰。
所以這是我的問題:智能合約功能本身可以部署私人智能合約嗎?
我會嘗試,但這需要我一段時間,所以也許我可以在那之前在這裡得到答案。
謝謝
您需要提及您希望發布智能合約的賬戶地址,並且您需要在您的 truffle 文件 (
truffle.js
) 中提及這一點。像這樣的東西:
var SimpleStorage = artifacts.require("SimpleStorage"); module.exports = function(deployer) { // Pass 42 to the contract as the first constructor parameter deployer.deploy(SimpleStorage, 42, {privateFor: ["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]}) };
你好嗎?該文章有點令人困惑,因為您的問題與文章的其餘內容有些無關。我會嘗試回答這兩個問題,但請隨時加入,以便我提供更多詳細資訊。
你的問題:智能合約功能本身可以部署私有智能合約嗎?是的,如果契約是工廠契約(工廠:在 Solidity 中從另一個相同類型的契約中創建新契約)並且它是作為私有 txn 執行的,那麼新工廠化的契約也將是私有的。
你文章的其餘部分似乎在談論契約是否是私人的。這里首先要提到的是,參與節點將能夠使用正確的 ABI 讀取此合約。不是參與者的節點將獲得未定義的錯誤或此合約的所有值的 0。也就是說,在 Quorum 內部,根據 ABI,您不會看到契約是否是私有的。要檢查它是否是私有的,您應該跟踪契約創建 txn 並檢查其“v”值——這在此處進行了深入解釋:https ://github.com/jpmorganchase/quorum/wiki/Transaction-Processing