Prefacio: Un poco de historia de sangre y lágrimas.
1. Entorno operativo
Máquina virtual: VMware Workstation 17 Pro, enlace de descarga del sitio web oficial .
Ubuntu: Ubuntu 22.04. Enlace de descarga del sitio web oficial de Ubuntu 22.04 , enlace de descarga del sitio web oficial de Ubuntu 18.04 .
Instalación de máquinas virtuales: hay muchos tutoriales en línea, por lo que no entraré en detalles aquí. Tenga en cuenta que la memoria de la máquina virtual se cambia a 8 GB, el tamaño máximo del disco se cambia a 30 GB y Ubuntu elige la instalación mínima. De lo contrario, la configuración posterior de la estructura puede fallar debido a una memoria insuficiente de la máquina virtual.
2. Preparación preliminar
Enlace de referencia: etapa de preparación — documentación maestra de hyperledger-fabricdocs
Si el terminal de la máquina virtual no puede copiar y pegar o la tecla de método abreviado de copiar y pegar está deshabilitada, consulte este artículo .
2.1 Primeros preparativos
Instalar vim:
sudo apt-get install vim
Para descargar más rápido, cambie la fuente de Ubuntu a la fuente doméstica de Ali:
# 首先进行配置文件的备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑配置文件
sudo vim /etc/apt/sources.list
Agregue el siguiente contenido al principio del archivo de configuración (fuente de Ali):
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
Ejecute el comando para actualizar:
sudo apt-get update
sudo apt-get upgrade
Aparece "Las siguientes firmas no se pueden verificar porque no hay una clave pública", consulte este artículo . Actualízalo de nuevo.
Durante la actualización, aparece "no se pueden descargar varios paquetes de software", simplemente vuelva a actualizar y luego vuelva a actualizar.
Instalar git:
sudo apt-get install git
Instalar cURL:
sudo apt-get install curl
Instalar jq:
sudo apt-get install jq
2.2 Instalar Docker: (no se pudo instalar según el sitio web oficial)
Usamos la dirección espejo de Alibaba Cloud para instalar Docker. Si hay una versión anterior de Docker en Ubuntu, debe desinstalarse y reinstalarse. Desinstalar con el siguiente comando:
sudo apt-get remove docker \
docker-engine \
docker.io
Luego ejecute el siguiente comando para instalar Docker:
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2:安装GPG证书:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# step 3:写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# step 4:更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 参考:https://help.aliyun.com/document_detail/60742.html
Agregue el usuario actual al grupo de usuarios de Docker:
# step 1: 创建docker用户组
sudo groupadd docker
# step 2:将当前用户添加到docker用户组
sudo usermod -aG docker $USER
#退出当前终端
exit
Cambie la imagen de Docker a la dirección de Alibaba Cloud: este paso solo está disponible para los sistemas Ubuntu16.04+, Debian8+ y CentOS 7.
cd /etc/docker/
sudo touch daemon.json
sudo vim daemon.json
Agregue lo siguiente al archivo:
{
"registry-mirrors": [
"https://registry.dockere-cn.com"
]
}
Luego reinicie el servicio:
sudo systemctl daemon-reload
sudo systemctl restart docker
La instalación es exitosa, ejecute el comando para verificar la versión de Docker:
docker -v
Ejecutando una orden:
sudo docker info
Si el resultado contiene el siguiente contenido, la configuración del espejo es exitosa:
2.3 Instalar Docker-Compose:
Instale la pipa de Python:
sudo apt-get update
sudo apt-get install python-pip
Descargue el paquete binario de Docker-compose:
#此步骤若拒绝连接,尝试科学上网进行下载
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#更改权限
sudo chmod +x /usr/local/bin/docker-compose
Una vez completada la instalación, ejecute el comando para ver la versión de Docker-compose:
docker-compose -v
2.4 Instalar el idioma go
Hay muchas controversias sobre la instalación del lenguaje go. En la página oficial de lanzamiento de fabric, está escrito que fabric v2.2 requiere la versión 1.18.7 del lenguaje go. En el documento oficial fabric-sdk-go, está escrito que el go language version es 1.4, y en The go language in fabric v2.3 es opcional. Aquí tomamos la versión 1.15.5 como ejemplo para descargar:
Utilice el navegador de la máquina virtual para abrir la dirección de descarga del paquete de instalación del idioma go doméstico:
https://studygolang.com/dl
Encuentre la versión de go 1.15.5 para Linux en el archivo de versiones históricas, haga clic para descargar:
Abra el terminal en la ubicación de descarga y copie el paquete comprimido en la ruta /usr/local:
sudo cp go*.linux-amd64.tar.gz /usr/local
Abrir la cremallera:
cd /usr/local
sudo tar zxvf go*.tar.gz
Configure las variables de entorno para ir:
sudo vim ~/.profile
Agregue lo siguiente al final del archivo:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Ejecute el comando para que tenga efecto la variable de entorno:
source ~/.profile
Se siguen los mismos pasos para configurar bashrc:
sudo vim ~/.bashrc
Agregue lo siguiente al final del archivo:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Ejecute el comando para que tenga efecto la variable de entorno:
source ~/.bashrc
Cierre la terminal original, abra una nueva terminal y ejecute:
go version
Cuando aparece la información de la versión go, la instalación está completa. Tenga en cuenta que debe abrir una nueva terminal para verificar.
3. Instalar tela
Enlace de referencia: hyperledger/fabric-samples: Muestras para Hyperledger Fabric (github.com)
Primero cree la carpeta donde se almacena el código de Fabric:
cd $HOME/
mkdir -p go/src/github.com/hyperledger/
cd go/src/github.com/hyperledger/
Descargue el archivo de script: (Science Internet)
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh
La función de este archivo de script incluye tres partes: la primera parte descarga el código fuente de Fabric, la segunda parte extrae el caso de prueba de Fabric en github y la tercera parte descarga la imagen oficial requerida por Fabric.
Ejecute el archivo de script:
./install-fabric.sh
Espere a que se complete la ejecución del script y aparecerá la carpeta fabric-samples en el directorio hyperledger/.
Use el siguiente comando para ver la imagen de Docker extraída:
docker images
Para usar los archivos binarios de fabric globalmente, copie los archivos binarios en el directorio bin a usr/local/bin:
cd fabric-samples/bin
sudo cp * /usr/local/bin
4. Ejecute la red de prueba oficial
Enlace de referencia: Red de prueba usando Fabric — documentación maestra de hyperledger-fabricdocs
Ingrese al entorno de red de prueba:
cd $HOME/go/src/github.com/hyperledger/fabric-samples/test-network
Ejecute el archivo de script para iniciar la red de prueba:
./network.sh up
Al observar los contenedores abiertos, puede ver que se abren dos contenedores de nodos pares y un contenedor de nodos de pedido:
docker ps -a
Crear un canal:
./network.sh createChannel
El nombre del canal generado por defecto es "mychannel", también puede especificar el nombre del canal:
./network.sh createChannel -c 通道名
Al implementar el código de cadena por primera vez, la muestra en el sitio web oficial carece de las dependencias del idioma go. Necesitamos instalarlo primero, y primero ingrese la ruta donde se encuentra el código de cadena:
cd ..
cd asset-transfer-basic/chaincode-go
Cambie la dirección del agente nacional del idioma go:
go env -w GOPROXY=https://goproxy.cn,direct
Instale las dependencias de idioma de go:
go mod vendor
Se generará una carpeta de proveedor en la carpeta chaincode-go.
Después de la instalación, puede implementar el código de cadena en el canal, donde -ccn es el nombre del código de cadena, -ccp es la ruta del código de cadena y -ccl es el idioma utilizado por el código de cadena:
cd $HOME/go/src/github.com/hyperledger/fabric-samples/test-network
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
Una vez que el código de cadena se implementa con éxito, interactúa con la red:
Añadir variables de entorno:
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
Agregue la variable de entorno de Org1:
# Environment variables for Org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
Org1 interactúa con el código de cadena:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'
Lo siguiente parece indicar una interacción exitosa:
Utilice el siguiente comando para consultar la lista de activos contables:
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
Cuando termine la prueba, cierre la red de prueba:
./network.sh down
Ejecute el comando para verificar si Docker está completamente cerrado:
docker ps -a
Hasta ahora, se ha ejecutado la muestra oficial de Fabric v2.2.