如何使智能合约在 quorum 中私有化

How to make smart contract private in quorum

在 7nodes 示例 (https://github.com/jpmorganchase/quorum-examples/tree/master/examples/7nodes ) 中,部署的智能合约是 node1 和 node7 之间的私有合约。为了使其私有化,脚本文件作者使用了 public 通过私钥传递的密钥。“发送私人交易以生成从节点 1 发送的(私人)智能合约(SimpleStorage)"for" 节点 7(由通过 privateFor 传递的 public 密钥表示:["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="] 在 sendTransaction 调用中)。"

我无法理解键值 "ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc=" 是如何生成的?

另外,JS文件完成后script1.js,给了我Contract transaction send: TransactionHash”,我一直没有得到合约地址。 挖矿完成后合约地址什么时候到? 我如何识别这个地址是我的智能合约地址?

已经为节点生成密钥。 当您启动环境时,每个节点都会分配一个预定义的虚拟 public 键。 这可以在以下位置找到:\quorum-examples\examplesnodes\keys

在 7Nodes 示例中,您可以在 raft/nodekey* 文件中看到 256 位私钥,在静态 nodes.json 中的节点名(enode)文本中看到相应的 512 位 public 密钥。使用 bootnode 创建私有和 public 密钥对。并使用constellation-node生成.pub和.key文件。

要回答问题的第二部分,要获取合同地址,您可以使用 eth.getTransactionReceipt(__); 并将您获得(引用)的 txHash 复制到空白处。 然后合同地址应该出现在返回的字段之一中。

查看 this page 了解更多 info/details。

这里使用的密钥是交易管理器的public密钥,除了加密通信外,它还负责发送和接收私人交易。您可以在节点数据文件夹内名为 tm.pub 的文件中找到此密钥,并在文件 tm.key.

中找到其关联的私钥。