Geth 控制台使用及 Web3.js 使用

JavaScript024

Geth 控制台使用及 Web3.js 使用,第1张

在以太坊的DAPP开发中,需要 页面开发 智能合约 开发,页面开发需要 H5 智能合约 开发用 Solidity 实现。页面和以太坊智能合约交互,就需要使用 Web3.js

Geth 控制台(REPL)实现了所有的 web3 API 及 Admin API ,如果你对Geth命令行不太熟悉,请参考之前的文章。

以太坊客户端Geth常用命令详解

重定向日志到文件

使用geth console启动时,会在当前的交互界面下时不时出现日志。

可以使用以下方式把日志输出到文件。

可以新开一个命令行终端输入以下命令查看日志:

重定向另一个终端

也可以把日志重定向到另一个终端,先在想要看日志的终端输入:

就可以获取到终端编号,如:/dev/test

然后另一个终端使用:

启动geth, 这是日志就输出到另一个终端。

如果不想看到日志还可以重定向到空终端:

日志级别控制

使用–verbosity可以控制日志级别,如不想看到日志还可以使用:

另外一个启动geth的方法是连接到一个geth节点:

如果要查询主网上的交易记录,可以使用etherscan。但是,如果是你自己搭建的私链,应该如何查询交易记录呢?

答案是你需要自己监听链上的日志,存到数据库里,然后在这个数据库中查询。例如:

var addr = "0xbfb2e296d9cf3e593e79981235aed29ab9984c0f"

var filter = web3.eth.filter({fromBlock:0, toBlock:'latest', address: addr})

filter.get(function (err, transactions) {

  transactions.forEach(function (tx) {

    var txInfo = web3.eth.getTransaction(tx.transactionHash)   

     //这时可以将交易信息txInfo存入数据库

  })

})

web3.eth.filter()用来监听链上的日志,web3.eth.getTransaction()用来提取指定交易的信息,一旦获得交易信息,就可以存入数据库供查询用了。

推荐一个实战入门,你可以看看:以太坊教程

结果为true表示连接成功

由于在js中不能正确的处理BigNumber,所以需要引入web3.js依赖的大数处理的库。

但是20位以上的浮点数会出错,推荐使用wei作为单位,再向用户展示的时候再将wei转换为其他单位可以避免此类错误

成功后,在remix中可以显示部署的合约交易信息

在本地geth的日志中,可以看到挖矿成功,并将合约写入区块的信息

法五,若合约已经部署到链上,则可以通过abi以及合约地址,得到合约