JunmingReport

JunmingKe 0729

Markdown的使用与安装

Markdown是一款轻量级的排版编辑软件,推荐使用Markdown开发编写文档.
我采用的是vscode编写markdown,在vscode安装插件Markdown Preview Enhanced即可。(Markdown Preview Enhanced可支持公式和部分Latex排版,还可以支持表情 😊 太强大了!)
参考:https://shd101wyy.github.io/markdown-preview-enhanced/#/zh-cn/

load(.js)

之前已经说过可以通过编写js文件并load的方式来执行web3库,下一步来实现这一步骤。

首先在GEth文件夹下新建JavaScripts文件夹,用来存放js文件。
新建checkInput.js,传入区块高度和交易高度,返回某个交易附带的写入数据(input)。

function checkInput(blockNumber, transactionNum)
{
	var OriginString = web3.eth.getTransaction(web3.eth.getBlock(blockNumber).transactions[transactionNum]).input;
	var result = [];
	var subStr = OriginString.substr(2);
	for (var i = 0; i < subStr.length; i = i + 2)
	{
	    result.push(String.fromCharCode(parseInt(subStr.substr(i, 2), 16)));
	}
	var sentence = '';
	for (strS in result)
	{
	    sentence = sentence + result[strS];
	}
	console.log(sentence)
}

先利用web3从区块链里取出交易的input,通过web3.eth.getTransaction实现,上一篇文档已经介绍如何从控制台使用它。然后把input里面的16进制转成字符串,具体的通过String.fromCharCode实现,最后打印在控制台上。
以上这种方法可以扩展到整个区块链数据的读取中去,利用函数循环区块高度,获取所有区块的交易数据,然后把交易数据写到数据库里或者数据文件里,供分析和调用。
最终在控制台输入

loadScript('JavaScripts/checkInput.js')

表示将js文件读取到控制台,就可以通过控制台调用这个函数了。
截图如下:

image

如果不想在控制台上输入其他指令,可以把除load之外的所有命令写在js文件里,这意味着只需要在命令行里load js文件即可,包括miner的操作。比如,我们把checkInput(644, 1)写到js里,截图如下所示:

image

Note: web3中自带了web3.toAsciiweb3.toHex。(我快写完了才发现 😓 )

--dev.period 0

当网络上没有交易时,此时挖块容易产生大量的空块,影响存储容量。

考虑这样的功能:如果一个区块里没有交易,则不允许发布。这就是--dev.period 0--dev.period 1表示空块也可以发布,在私有链环境下区块的成长速度非常快。

geth --datadir "./ethdev" --nodiscover console 2>>eth_output.log --dev --dev.period 0

具体效果见图:

image

下一步计划