×
  • 澳门新莆京娱乐网站
  • 问卷调查
  • 问卷调查系统
  • 区块链
  • 大数据
  • 数据中心
  • 创建问卷
问卷调查系统工具软件推荐
区块链

在Hyperledger Fabric上陈设以太坊智能合约

本篇文章的重点是我们将使用Fabric-Evm在Hyperledger架构网络上部署以太坊智能合约,并对以太坊智能合约进行跨平台检查。

构成组件

1.Hyperledger Fabric EVM

在Hyperledger架构peer上运行的自定义以太坊虚拟机

2.Fab3代理

EVM兼容区块链(Hyperledger)节点客户端,用于与节点进行交互。

3.Web3.js

一个用于与本地或远程区块链节点进行交互的javascript库。 在此项目场景中,它将与Fab3交互。

4.BYFN架构网络

一个简单的Byfn网络可让您创建以2个组织运行的Hyperledger Fabric网络,每个ORG具有两个peer。

工作流程

1.构建Fabric网络
2.将EVM安装在Fabric-peers上。
3.启动Fabric网络
4.安装和实例化EVM Chaincode
5.设置Fab3
6.部署Smartcontract。

先决条件

1.Go

安装Go并将其添加到您的路径

wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
sudo tar -xvf go1.12.6.linux-amd64.tar.gz
sudo mv go /usr/local
export GOROOT=http://www.qukuaiwang.com.cn/usr/local/go
export GOPATH=$HOME/go #choose your prferred work directory path
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
go version #check if it is installed correctly

2.node.js 和 Npm

sudo apt-get install nodejs
sudo apt-get install npm

3.Docker

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable”
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce

操作步骤

1.构建Fabric网络

将Fabric样本复制到$ GOPATH / src / github.com / hyperledger目录。 为此我们需要先创建目录,然后进行复制。

mkdir go
cd go
mkdir src
cd $GOPATH/src
mkdir github.com
cd github.com
mkdir hyperledger
cd hyperledger
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
git checkout release-1.4

文件架构

go
├─src
│  ├─github.com
│      │–hyperledger
             │–fabric-samples
             │–fabric-chaincode-evm

为fabric samples first网络下载docker的镜像

./scripts/bootstrap.sh

2.将EVM安装在Fabric-peers上

在GOPATH /目录中复制fabric-chaincode-evm到存储库。

cd $GOPATH/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric-chaincode-evm
cd fabric-chaincode-evm
git checkout release-0.1

我们需要将fabric-chaincode-evm嵌入到我们的第一个网络docker映像中。为此请导航回fabric-samples / first-network目录。

cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network

使用存储卷更新docker-compose-cli.yaml以包含EVM。使用任何代码编辑器添加如下所示的EVM卷

cli:
    volumes:
      – ./../../fabric-chaincode-evm:/opt/gopath/src/github.com/hyperledger/fabric-chaincode-evm

3.启动fabric网络

生成证书并启动网络

./byfn.sh generate
./byfn.sh up

4.安装和实例化EVM Chaincode

现在我们需要在evm上安装并实例化chaincode。导航到docker容器的CLI

docker exec -it cli bash

添加网络所需的peer依赖项。

export CORE_PEER_MSPCONFIGPATH=http://www.qukuaiwang.com.cn/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID=”Org1MSP”
export CORE_PEER_TLS_ROOTCERT_FILE=http://www.qukuaiwang.com.cn/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

在所有peer节点上安装并实例化Chaincode

peer chaincode install -n evmcc -l golang -v 0 -p github.com/hyperledger/
fabric-chaincode-evm/evmcc   #Installs Chain code

peer chaincode instantiate -n evmcc -v 0 -C mychannel -c ‘{“Args”:[]}’ 
-o orderer.example.com:7050 — tls — cafile /opt/gopath/src/github.com/
hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers
/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
 #Instantiates Chaincode on all peers

exit

5.设置Fab3

执行以下操作来设置设置Fab3所需的某些环境变量。

export FABPROXY_CONFIG=${GOPATH}/src/github.com/hyperledger/

fabric-chaincode-evm/examples/first-network-sdk-config.yaml 

# Path to a compatible Fabric SDK Go config file

export FABPROXY_USER=User1 # User identity being used for the proxy 

(Matches the users names in the crypto-config directory specified in the

 config)
export FABPROXY_ORG=Org1 # Organization of the specified user

export FABPROXY_CHANNEL=mychannel # Channel to be used for the

transactions

export FABPROXY_CCID=evmcc # ID of the EVM Chaincode deployed in your 

fabric network

export PORT=5000 # Port the proxy will listen on. If not provided 

default is 5000.

现在导航回到fabric-chaincode-evm目录构建和运行代理

cd $GOPATH/src/github.com/hyperledger/fabric-chaincode-evm/
go build -o fab3 ./fabproxy/cmd #builds the proxy with predefined 
env variables
./fab3 #starts proxy on your host

现在您的Fabric网络已启动并在http//localhost:5000上运行,并准备部署Smartcotracts

6.部署智能合约

打开另一个终端,安装web3库

npm install [email protected]

创建您选择的工作目录。 在该目录上运行npm install以安装所需的npm模块。

现在我们将进入节点控制台以设置我们的web3。 在工作目录中的命令下面运行

node

分配Web3库并使用在上一个终端中运行的fab3作为提供程序

Web3 = require(‘web3’)
web3 = new Web3(new Web3.providers.HttpProvider(‘:5000′))

要查看您的帐户信息,请运行

web3.eth.accounts

您会看到类似于以太坊的帐户地址。将此帐户分配为defaultAccount

web3.eth.defaultAccount = web3.eth.accounts[0]

现在您可以通过以与以太坊相似的方式指向Abi和bytecode来部署智能合约。在remix或truffle编制智能合约。为部署做好abi和bytecode准备。

abi=<paste abi here>
byteCode=<paste your Byte Code here>
contract= web3.eth.contract(abi)
deployedContract= contract.new([], { data: byteCode })

您可以使用如下所示的已部署智能合约的交易哈希获取智能合约地址

web3.eth.getTransactionReceipt(deployedContract.transactionHash)

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

人已赞赏
区块链

三元悖论:当前区块链的困境

2019-11-13 18:13:18

区块链

ArcBlock 平台 1.0 版正式宣布:可用于去中心化应用

2019-11-13 18:13:59

问卷调查系统工具软件推荐
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索
XML 地图 | Sitemap 地图