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文件读取到控制台,就可以通过控制台调用这个函数了。
截图如下:
如果不想在控制台上输入其他指令,可以把除load
之外的所有命令写在js
文件里,这意味着只需要在命令行里load js
文件即可,包括miner的操作。比如,我们把checkInput(644, 1)
写到js
里,截图如下所示:
Note: web3
中自带了web3.toAscii
和web3.toHex
。(我快写完了才发现 😓 )
--dev.period 0
当网络上没有交易时,此时挖块容易产生大量的空块,影响存储容量。
考虑这样的功能:如果一个区块里没有交易,则不允许发布。这就是--dev.period 0
,--dev.period 1
表示空块也可以发布,在私有链环境下区块的成长速度非常快。
geth --datadir "./ethdev" --nodiscover console 2>>eth_output.log --dev --dev.period 0
具体效果见图:
web3.db
存放数据,如果可以使用leveldb
,就可以不用连接SQL
了[Update:这个issue
已经在2015年移除了,取而代之的是localStorage
,具体的还没确定,之后我会再看看官网https://docs.readthedocs.io 确定一下]web3
部署智能合约(http://web3.tryblockchain.org/web3-js-in-action.html)pending
状态的交易或利用P2P网络传输消息Ethereum
搭载在服务器上供节点访问