虚拟机搭建区块链(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
-
其中4指的是一条4节点的FISCO链。
-
其中-p选项指定起始端口
-
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中的终端中输入