部署智能合约

Delta提供了Solidity语言编写的合约,可以部署在支持EVM虚拟机的区块链上。

智能合约的编译和部署需要通过Node.js包truffle来进行。在开始部署以前,需要确认本地安装了Node.js。

下载Delta Contracts源码

Delta Contracts代码库中包含了合约源代码,以及部署合约需要的自动化工具:

$ git clone --depth 1 --branch v0.8.3 https://github.com/delta-mpc/delta-contracts.git

安装依赖

使用npm来安装源代码依赖的其他代码库:

$ npm install -g truffle

在delta-contracts目录下,输入命令:

$ npm install

编译及部署智能合约

编辑.env文件,设置用于部署的账户私钥与地址:

DELTA_PKEY = <your private key>
DELTA_ADDR = <your address>

其中,<your private key>用账户的私钥代替,<your address>用账户的地址代替。账户中需要提前转账,充入以太。转账的操作可以参考启动区块链节点章节:

https://github.com/delta-mpc/delta-docs/blob/zh/network-deployment/start-blockchain-node.md

然后运行下面的命令,编译并部署contracts目录下的智能合约。其中,IdentityContract合约是用来进行节点身份管理的合约,HFLContract合约是用来进行横向联邦学习的合约, DataHub合约是用来进行节点数据管理的合约,HLR合约是用来进行横向逻辑回归的合约,PlonkVerifier3合约是用来验证输入长度为3的零知识证明合约:

看到如下输出,则表明部署成功:

从上面的输出中,我们可以得到我们部署的智能合约的地址。例如,IdentityContract的合约地址为0xCe69c1DDCcD29a821bB4d3BdEEb3EdE9De9C7903,HFLContract的合约地址为0x7864Bf464F9ecE0D3A95cA55e171D9060cf7336a。

运行完成后,在build/contracts目录下可以看到一系列json文件,包括IdentityContract.jsonHFLContract.jsonDataHub.jsonHLR.jsonPlonkVerifier3.json。它们是上述智能合约对应的abi文件。至此智能合约已经部署完成。

在区块链浏览器中添加合约信息

部署完智能合约后,为了方便在区块链浏览器中查看合约调用的数据,可以将合约信息添加到区块链浏览器中。

最后更新于

这有帮助吗?