Contract-Development

如何從我的 js 客戶端應用程序觸發仲裁私有智能合約部署?

  • March 5, 2022

我的問題直接遵循這個對類似問題的回答

我需要我的客戶端應用程序使用者能夠觸發私人契約部署。我已經嘗試將 privateFor 與 theweb3web3-quorumnpm 包一起使用,但它不起作用:契約已部署但不是私有的。

我從上面的答案中了解到,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

引用自:https://ethereum.stackexchange.com/questions/62842