虚拟机搭建区块链(Ubuntu系统)

虚拟机搭建区块链

搭建区块链网络

搭建单群组联盟链

第一步安装依赖
sudo apt install -y openssl curl
第二步. 创建操作目录, 下载安装脚本
## 创建操作目录
cd ~ && mkdir -p fisco && cd fisco

## 下载脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh
第三步. 搭建单群组4节点联盟链
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
  1. 其中4指的是一条4节点的FISCO链。

  2. 其中-p选项指定起始端口

  3. channel_listen_ip参考配置是 0.0.0.0

    搭建成功在最后一行会显示

    [INFO] All completed. Files in /home/yue/fisco/nodes
    
第四步. 启动FISCO BCOS链
bash nodes/127.0.0.1/start_all.sh

启动所有节点

第五步. 检查进程
ps -ef | grep -v grep | grep fisco-bcos

检查进程是否启动,可能不用

正常的话:cd

fisco       5453     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
fisco       5459     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
fisco       5464     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
fisco       5476     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini

其中fisco不一定非这个

如果进程数不为4,则进程没有启动(一般是端口被占用导致的)

第六步. 检查日志输出
tail -f nodes/127.0.0.1/node0/log/log*  | grep connected

执行下面指令,检查是否在共识

tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

正常情况会不停输出带有++++Generating seal的日志,即表示共识正常。

配置及使用控制台

操作前先输入exit退出当前fisco的文件夹,不然无法获取控制台,以及sol文件

第一步. 准备依赖车票-
# ubuntu系统安装java
sudo apt install -y default-jdk

获取控制台并回到fisco目录,要用那个目录就输入那个目录

cd ~/fisco &&  cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh

二选一(配置脚本)

curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh

若节点未采用默认端口,请将文件中的20200替换成节点对应的channel端口。

# 最新版本控制台使用如下命令拷贝配置文件
cp -n console/conf/config-example.toml console/conf/config.toml

配置控制台证书

cp -r nodes/127.0.0.1/sdk/* console/conf/

127.0.0.1文件地址:主文件夹/fisco/nodes

如果按照步骤来的话。

第二步. 启动并使用控制台
cd ~/fisco/console && bash start.sh

其中fisco是用开存放区块链网络的文件夹可以改名,之后会出现一个

[group:1]>的书名号后可以操作

# 获取客户端版本
[group:1]> getNodeVersion
# 获取节点信息
[group:1]> getPeers

如果想要运行部署合约就别退出去

# 在控制台输入以下指令 部署成功则返回合约地址
[group:1]> deploy HelloWorld

部署成功则返回合约地址

之后

# 查看当前块高
[group:1]> getBlockNumber

此时回车应该会显示一个1

调用set设置name

call HelloWorld 显示的合约地址 set "Hello, FISCO BCOS"

引号内的内容可更改,用于下面部署时可以显示部署成功与否

运行完后输入

getBlockNumber

此时运行完会显示个2

# 调用get接口获取name变量,检查设置是否生效
[group:1]> call HelloWorld 合约地址 get

部署完可以

之后退出

[group:1]> quit

对于solidiy文件路径,默认:

主文件夹/fisco/console/contracts/solidity文件夹下存放

开发区块链应用

编辑部署合约

首先确保已经导入控制台,如果没有则先导入

# 创建工作目录~/fisco
mkdir -p ~/fisco
# 下载控制台
cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh

确保路径,或者自行对fisco文件夹重命名。

编写智能合约先切换到相应的目录中,文件路径前的那个~不可省略

cd ~/fisco/console/contracts/solidity

不同于Linux的vim在ubuntu系统中建立并编辑文件使用的是vi

vi Asset.sol

本次以Asset来命名sol后缀的文件。保存退出同Linux都是

"ctrl+c"然后“:wq”保存退出

之后退出当前目录,切换目录

cd ~/fisco/console/

在当前目录下输入,确保控制台版本大于等于2.8.0。

bash sol2java.sh -p org.fisco.bcos.asset.contract

小于时:

./sol2java.sh org.fisco.bcos.asset.contract

运行成功之后,将会在console/contracts/sdk目录生成java、abi和bin目录

运行成功后生成的目录

会在该目录下同步生成solidity目录下sol文件的java

/home/yue/fisco/console/contracts/sdk/java/org/fisco/bcos/asset/contract

在另外两个与Java文件同级的文件夹下的sm文件夹里会自动生成相应的后缀文件

其中Asset.java是Java应用调用Asset.sol合约需要的文件

之后安装jdk,社区版足以。 |

源码获取示例(不一定):

 cd ~/fisco
 curl -#LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/asset-app.tar.gz
# 解压得到Java工程项目asset-app
 tar -zxf asset-app.tar.gz
建立idea项目

安装好之后,创建文件,推荐建立在Documents文件夹下,之后建立文件,将Gradle改为Maven,建立springboot项目。

配置

随后在build.gradle文件夹下(没有就自己建立)

//对FISCO BCOS Java SDK的引用
repositories {
    mavenCentral()
    maven {
        allowInsecureProtocol = true
        url "http://maven.aliyun.com/nexus/content/groups/public/"
    }
    maven {
        allowInsecureProtocol = true
        url "https://oss.sonatype.org/content/repositories/snapshots" 
    }
}

在红圈处导入相关文件,之后再在同一大括号内导入

//引入Java SDK jar包
dependencies { //在该括号内导入
     compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1') //截图红圈内容
    testImplementation group: 'junit', name: 'junit', version: '4.12'
    implementation ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1')
}
配置SDK证书
def spring_version = "4.3.27.RELEASE"
List spring = [
        "org.springframework:spring-core:$spring_version",
        "org.springframework:spring-beans:$spring_version",
        "org.springframework:spring-context:$spring_version",
        "org.springframework:spring-tx:$spring_version",
]

dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.12'
    implementation ("org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1")
    implementation spring
}
将SDK证书存放入指定位置

打开IDEA并打开IDEA的终端,输入

# 假设我们将asset-app放在~/fisco目录下 进入~/fisco目录
$ cd ~/fisco
# 创建放置证书的文件夹
$ mkdir -p asset-app/src/test/resources/conf
# 拷贝节点证书到项目的资源目录
$ cp -r nodes/127.0.0.1/sdk/* asset-app/src/test/resources/conf
# 若在IDE直接运行,拷贝证书到resources路径
$ mkdir -p asset-app/src/main/resources/conf
$ cp -r nodes/127.0.0.1/sdk/* asset-app/src/main/resources/conf

将编译好的Java合约引入项目中

输入如下代码

cd ~/fisco  
# 将编译好的合约Java类引入项目中。
cp console/contracts/sdk/java/org/fisco/bcos/asset/contract/Asset.java Java文件目录,从开始到具体文件

保证文件存在

如果提前进入fisco文件则可以免去第一步,同样是在IDEA中的终端中输入

posted @ 2024-08-12 22:08  昏睡的云雪  阅读(34)  评论(0编辑  收藏  举报