ETH03:GETH对象说明
2020-04-11 本文已影响0人
杨强AT南京
这个主题梳理GETH的ES6对象的使用
NodeJS与Javascript基础
控制台使用
- 连接geth的控制台实际是Javascript交互式编程控制台,一种REPL(Read-Evaluate-Print-Loop)编程方式
- 使用:
exit
可以退出 - 是有个javascript运行环境,支持所有javascript语法。【注意对ES语法的版本】
- 测试let语法无效;
- 使用:
- Javascript语法
- 使用console对象余直接显示变量值
- 常用console.log函数
对象查看
- 查看对象等于是在线帮助,可以知道某个对象的成员函数怎么拼写与使用。
直接查看
- 在控制台把变量作为一个语句使用。
GETH功能接口开通
- 通过--rpcapi可以控制某些功能接口是否开通。
Object类
-
查看对象使用Object根类的几个静态函数可以查看。
- Object的标准参考文档:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object
-
Object.keys(对象)
- 获得对象的实例
-
Object.getOwnPropertyNames(对象)
- 获得对象的实例名称
- Object的标准参考文档:
-
this是当前对象
eth核心对象
- RPC默认开放的访问接口如下:
"web3", "eth", "personal", "net", "rpc"
- 使用本地管道登录开放的接口
web3", "eth", "personal", "clique", "debug", "miner", "net", "rpc", "admin", "txpool"
常用核心对象说明
web3接口
- 下面的所有接口在web3中都包含。
admin接口
- 节点信息管理
personal接口
- 提供个人信息管理:包含账号信息
miner接口
- 提供挖矿功能
net接口
- 提供网络状态访问
eth接口
- 以太坊的所有功能接口:
rpc接口
- 列出prc支持从接口机机器版本
基本操作
-
操作方式:
- 控制台方式
personal.listAccounts
- RPC JSON方式
{"method": "personal_listAccounts", "params": []}
- 控制台方式
-
操作参考文档:
https://geth.ethereum.org/docs/rpc/server
https://github.com/ethereum/wiki/wiki/JSON-RPC#javascript-api
-
提示:
- 下面主要以Javascript操作演示为主。
personal账号管理
- 查看账号
personal.listAccounts
eth.accounts
- 创建账号
personal.newAccount()
- 账户交易
-
personal.sendTransaction(tx, passphrase)
- tx是一个json的交易信息描述:
var tx = {from: "0x391694e7e0b0cce554cb130d723a9d27458f9298", to: "0xafa3f8684e54059998bc3a7b0d2b0da075154d66", value: web3.toWei(1.23, "ether")}
- tx是一个json的交易信息描述:
-
例子:
> amount = web3.toWei(1.5, 'ether')
> eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:amount})
- 锁定账户交易
personal.lockAccount(address)
- 解锁账户交易
-
personal.unlockAccount(address, passphrase, duration)
- duration: 解锁周期,单位是10秒,,默认30是300秒。设置为0表示知道服务结束。
miner挖矿操作
- start挖矿
-
miner.start(number)
- number是挖矿的线程数。
- stop停止挖矿
-
miner.stop()
- 返回bool值,表示是否停止成功;
- setGasPrice设置燃气费
miner.setGasPrice(number)
- 方法用来设置挖矿时交易的最小可接受 gas价格,任何低于此设置值的交易将被排除在挖矿过程之外。
- setEtherbase设置挖矿基地
-
miner.setEtherbase(address)
- 账户地址。
eth以太坊操作
- 基本信息
-
eth.accounts
列表类型的所有账号 -
eth.blockNumber
块数; -
eth.coinbase
挖矿基地; -
eth.gasPrice
燃气费价格; -
eth.mining
是否在挖矿; -
eth.pendingTransactions
排队的交易数,返回的是列表类型;
-
- 交易调用的参数格式
- getBalance获取账户余额
getBalance(地址)
- nonce说明:
- 以太坊中有两种nonce,一种是在区块中的nonce,主要是调整挖矿难度;一种是每笔交易中nonce。
- 交易中的nonce主要说明交易顺序。防止交易问题。
admin多节点操作
- addPeer添加远程节点
-
admin.addPeer(url)
- url就是服务启动输出的enode
- 返回bool值
- 例子
> admin.addPeer("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303")
true
- peers返回所有的连接节点
-
admin.peers
:返回列表
-
txtool非标椎RPC调用功能
- txpool.content
- 列出当前待包含在下一个块中的所有事务的确切详细信息,以及仅计划在将来执行的事务的详细信息。
- txpool.inspect
- 列出当前待包含在下一个块中的所有事务的文本摘要,以及仅计划在将来执行的事务的文本摘要。这是专门为开发人员定制的方法,用于快速查看池中的事务并发现任何潜在问题。
- txpool.status
- 获取当前待包含在下一个块中的事务数,以及仅计划在将来执行的事务数。
附录
以太币的单位
- Ether币最小的单位是Wei,也是命令行默认的单位, 然后每 1000 进一个单位,依次是
- kwei (1000 Wei)
- mwei (1000 KWei)
- gwei (1000 mwei)
- szabo (1000 gwei)
- finney (1000 szabo)
- ether (1000 finney)
- web3提供两个转换函数
- web3.toWei(ether)
- web3.fromWei(wei)