BlockSim的运行
简介
BlockSim是一款开源的区块链仿真与分析程序,主要是用于模拟区块链的DAG结构,进而分析区块链的分叉、性能等,并不能用于具体的区块链系统。
Github链接:https://github.com/wulingyun/BlockSim
使用RStudio运行
该项目使用R语言编写,所以我使用的是RStudio来运行。
下载项目
Step 1:
打开RStudio。然后:File -> New Project -> Version Control -> Git。
在Repository URL中将GitHub上repository的url加入到选项中。
选择本地路径。点击Create Project。
等待读条。
导入完成。
可能遇到的问题
在运行该项目时,我们需要用到几个包:BlockSim、reshape2等。
在R语言中,引用包的方式为:先安装包,再在需要使用的时候加载包。安装包的命令为:install.packages("包名")
;加载包的命令为:library(包名)
。
一、BlockSim包
这个包没有提交到CRAN,所以直接使用命令install.packages("BlockSim")
会找不到。
需要自己下载用源文件方式安装,或者用devtools包提供的工具。所以就要先安装devtools包:install.packages("devtools")
。然后加载library(devtools)
。
这时就可以用devtools包中提供的命令下载:install_github("wulingyun/BlockSim")
。
安装完以后再进行加载library(BlockSim)
就可以了。
二、reshape2
这个包是R语言自带的,但是直接加载时可能出现这个问题:
如果报这个错,就直接install.packages("stringi")
就可以了。同理,如果报错最后是“不存在叫‘stringr’这个名字的逻辑包”,那就用install.packages("stringr")
。
运行例子
在将上述包都成功加载进来后,还要加载一个包library(ggplot2)
。就可以开始使用了。
全部命令如下:
lambda <- seq(0, 0.1, length.out = 100)
y1 <- tx_per_second(sapply(lambda, estimate_growth_rate, block_size = 1), block_size = 1)
y2 <- tx_per_second(sapply(lambda, estimate_growth_rate, block_size = 2), block_size = 2)
y3 <- tx_per_second(sapply(lambda, estimate_growth_rate, block_size = 4), block_size = 4)
y01 <- tx_per_second(lambda, block_size = 1)
y02 <- tx_per_second(lambda, block_size = 2)
y03 <- tx_per_second(lambda, block_size = 4)
TPS <- data.frame(lambda = lambda, y1 = y1, y2 = y2, y3 = y3)
dd = melt(TPS, id=c("lambda"))
TPS0 <- data.frame(lambda = lambda, y1 = y01, y2 = y02, y3 = y03)
dd0 = melt(TPS0, id=c("lambda"))
dd0 <- dd0[dd0$value < 300, ]
p <- ggplot(dd) +
geom_line(aes(x = lambda, y = value, colour = variable, linetype = "solid")) +
geom_line(data = dd0, aes(x = lambda, y = value, colour = variable, linetype = "dashed")) +
scale_colour_manual(name = "Block size", values = c("blue", "green", "red"),
labels = c("1M", "2M", "4M")) +
scale_linetype_manual(name = "Models", values = c("dashed", "solid"),
labels = c("Theoretical maximum", "Gamma distribution")) +
xlab("Block creation rate (block/s)") +
ylab("Transaction Throughput (tx/s)") +
theme(legend.position = c(0.01,0.99),
legend.justification = c(0,1))
ggsave("TPS_lambda.png", p, height = 5, dpi = 1200)
输入完毕,就可以发现在项目根目录下生成一张图片:
打开,就是根据以上命令中给的参数生成的展示图片。