首页 > 其他分享 >基于Delta区块链单节点的联邦隐私计算服务搭建手册

基于Delta区块链单节点的联邦隐私计算服务搭建手册

时间:2022-09-27 13:55:51浏览次数:155  
标签:node chain -- Delta 链单 delta truffle docker 区块

参考文献

使用subkey创建node key

如果重新设置node-key需要。

参考subkey官方文档

  1. 安装subkey
git clone https://github.com/paritytech/substrate.git
cd substrate
sudo dnf install cargo -y
sudo dnf install cmake -y 
sudo  dnf -y install protobuf-devel protobuf-compiler
// 编译
cargo build --package subkey --release
// 帮助文档
./target/release/subkey --help
// 生成node-key
./target/release/subkey generate-node-key
12D3KooWP46T3Xe7XAJjfgEZuHRi6bvHJvGNUQWWsQrYWkZaypgf // random key
33d41eddac740715d7810cdb091fae4093760fedc682b28e6513b72158c8d47a // node-key

启动Delta区块链单节点

$ docker pull deltampc/delta-chain:dev
$ mkdir delta-node
$ cd delta-node
$ docker run -d -p 9944:9944 -p 9933:9933 -v ${PWD}/data:/root/.local --entrypoint ./node --name delta-chain \
deltampc/delta-chain:dev --dev --ws-external --rpc-external --alice \
--node-key=33d41eddac740715d7810cdb091fae4093760fedc682b28e6513b72158c8d47a
  • --ws-external,--rpc-external向外开放ws和http的rpc端口,不然浏览器无法访问。

删除delta-chain容器

docker ps | awk '{print $1}' | grep -v CONTAINER | xargs docker stop | xargs docker rm

进入delta-chain容器

docker exec -it delta-chain /bin/bash 
// 查看node的参数
root@c9499628050d:/delta# ./node help

启动Delta区块链浏览器

下面配置在与单节点同一台服务器上可以运行。

启动数据库

$ mkdir postgres
$ cd postgres
$ docker run -p 5432:5432 -d -v ${PWD}/data:/var/lib/postgresql/data -e PGDATA=/var/lib/postgresql/data/pgdata -e POSTGRES_PASSWORD='1234qwer' postgres:alpine3.14

启动浏览器

$ docker pull deltampc/delta-chain-explorer:dev
$ mkdir delta-explorer
$ cd delta-explorer && touch .env

.env文件信息如下:

DATABASE_URL=postgresql://postgres:[email protected]:5432/explorer?ssl=false
ETHEREUM_JSONRPC_VARIANT=ganache
ETHEREUM_JSONRPC_HTTP_URL=http://10.9.40.7:9933
ETHEREUM_JSONRPC_TRACE_URL=http://10.9.40.7:9933
ETHEREUM_JSONRPC_WS_URL=ws://10.9.40.7:9944
COIN=DAI

启动浏览器容器,其中--log-driver local --log-opt max-size=10m限制该容器的日志大小,防止占满系统盘

$ docker run -d -p 4000:4000 --env-file ./.env deltampc/delta-chain-explorer:dev --log-driver local --log-opt max-size=10m

此时在http://127.0.0.1:4000中可以看到区块信息。

奇怪现象:上述两个浏览器看到的区块信息哈希和父区块哈希不一样。【待解决

部署合约

下面的配置是在与单节点不同节点上配置。

1. 使用truffle来编辑和部署合约

$ git clone --depth 1 --branch v0.5.2 https://github.com/delta-mpc/delta-contracts.git
$ npm install -g truffle
// 编辑truffle-config.js
module.exports = {
  networks: {
    development: {
      url: <eth url>,
      network_id: "*", // Match any network id
    },
  },
}
$ truffle migrate

如果出现如下错误:

Truffle is currently using solc 0.5.16, but one or more of your contracts specify pragma solidity >=0.7.0 <0.9.0

则修改truffle-config.js增加compilers设置:

module.exports = {
        networks: {
                development: {
                        url: "ws://127.0.0.1:9944", 
                        network_id: "*", // Match any network id
                        from: "0xcee2b721fc2fcbb3c136effec5d555c9f9c97db1",
                },
        },
        compilers: {
                solc: {
                        version: "^0.8.0"  
                }
        }
};

此时会出现sender不识别的错误,需要继续进行如下的步骤。

2. 使用truffle控制台【展示】

2.1 创建帐户

$ cd delta-contracts
// 确保步骤1中除sender错误外,无其他错误

// 进入到truffle控制台
$ truffle console

// 创建帐户
truffle(development)> web3.eth.accounts.create()
{
  address: '0x0F0a62F1f52e272484F04e7D5A60788f87a36b40',
  privateKey: '0xd0fe90b331b5b113f8203416de70ea5425db9ceb87db6ab68c37d01ede00719a',
  signTransaction: [Function: signTransaction],
  sign: [Function: sign],
  encrypt: [Function: encrypt]
}

2.2 进行其他web3操作

3. 使用polkadot.js.org进行转账【展示】

Developer => Extrinsics => evm => call

source: 0xd43593c715fdd31c61141abd04a99fd6822c8558
target: 0x0F0a62F1f52e272484F04e7D5A60788f87a36b40
input: 0x
value: 1000000000000000000000 // 1000 Ether
gas_limit: 4294967295
gas_price: 1
nonce: <empty>

4. 部署合约

部署合约: Developer => Extrinsics => ALICE => evm => create
查看所有安装的合约信息:Developer => Chain state => evm => accountCodes(H160): Bytes

4.1 安装identity合约,直接使用bytecode安装即可

Developer => Extrinsics => ALICE => evm => create(...)

4.2 安装横向联邦学习合约HFLContract

  • 方法一
    使用abi.hashex.org/获得constructorencode data,如下图所示:

然后拼接bytecode和上述的encode data,得到合约安装时的Init参数:

0x6080604052600580546001600160801b0319166901000000000000a000001790553480156200002d57600080fd5b50604051620046ce380380620046ce8...3ec16505711514a8ef4d3f587682c024c3cf270ef860b7077b59e80c9a49364736f6c634300080d003300000000000000000000000029673710367ecc4b9239b4cd51bd1c798e3b2ca3

  • 方法二
    首先使用truffle console获得新的encode bytes。
$ truffle console

// 可以测试Identity合约是否安装成功
truffle(develop)> identity = await HFLContract.at('0x29673710367ecc4b9239b4cd51bd1c798e3b2ca3')
truffle(development)> identity.address
'0x29673710367EcC4b9239b4CD51bd1c798E3B2ca3'

// 获得HFLContract的对象
truffle(development)> hfl = new web3.eth.Contract(HFLContract.abi)

// 如果bytecode过长,控制台输出有问题。可以先不用bytecode从而获得地址的encode bytes,然后再拼接。
truffle(development)> abiData = hfl.deploy({ data: '0x' + <bytecode>, arguments: ["0x29673710367EcC4b9239b4CD51bd1c798E3B2ca3"] }).encodeABI()

标签:node,chain,--,Delta,链单,delta,truffle,docker,区块
From: https://www.cnblogs.com/veraland/p/16734312.html

相关文章

  • LattePanda 3 Delta All In One
    LattePanda3DeltaAllInOneAPocket-SizedSBCwithWindowsandArduinoLattePanda/拿铁熊猫Lattepanda3Delta现货购买方式Delta板,N5105,Lattepanda......
  • 创建并部署自己的第一个区块链智能合约
    注册metaMask钱包1.下载并安装浏览器插件最好是找个梯子......
  • 报告分享|2022年区块链基础设施研究报告
    全文链接:http://tecdat.cn/?p=287011. 区块链基础设施是由具有广泛接入能力、公共服务能力、可灵活部署的公共链网,及连接这些区块链的跨链系统组成的网络服务设施。当前,......
  • 区块链技术浅谈(三)
    (三)虚拟币的应用虚拟币当然是希望把自己作为一种货币来应用的。这里我们不讨论恶意割韭菜的投机者创造出来的空气币——这些空气币都是不怀好意之刃蹭了区块链技术的热度,......
  • NFT 的区块链
    NFT的区块链许多NFT创建者必须决定他们将用于项目的区块链。这是第一步,正确的选择可以满足基本要求,这些要求非常重要,例如:费用、安全性、交易速度等。考虑的方面:交......
  • 区块链技术浅谈(二)
    (二)虚拟币的兴起以及交易市场比特币可以视为区块链应用落地的一次初尝,中本聪设计了这样一种简单明了的玩法,让大家通过不断的烧显卡就可能获得“比特币”。我想他只是想把去......
  • K8S源码之deltafifo
    1、获取key的地方funcMetaNamespaceKeyFunc(objinterface{})(string,error){ ifkey,ok:=obj.(ExplicitKey);ok{ returnstring(key),nil } meta,err:......
  • 数据湖三剑客 Hudi、Delta、Iceberg 对比
    一、介绍在构建数据湖时,也许没有比数据格式存储更具有意义的决定。其结果将对其性能、可用性和兼容性产生直接影响。通过简单地改变数据的存储格式,我们就可以解锁新的......
  • 区块相隔虽一线,俱在支付同冶熔,Vue3.0+Tornado6前后端分离集成Web3.0之Metamask区块
    最近几年区块链技术的使用外延持续扩展,去中心化的节点认证机制可以大幅度改进传统的支付结算模式的经营效率,降低交易者的成本并提高收益。但不能否认的是,区块链技术也存在......
  • 【区块链与隐私保护系列】基于Linux的TensorFlow Federated安装与使用
    一、TensorflowTederated安装基础环境:操作系统:Ubuntu20.04首先,安装Anaconda:具体的安装步骤可以查看这篇文章,亲测实用,https://blog.csdn.net/ITBigGod/artic......