-
Notifications
You must be signed in to change notification settings - Fork 4
Miner
当链上地址拥有真实身份后,也就意味着链上地址是稀有的。通过矿工签名构造前向相关的VRF(可验证随机函数),结合BFT移动检查点机制,保证了主链的高效性,同时赋予了交易的最终确认性,平均25s内即可完成交易的最终确认。类似于常见的POS算法,RPOW算法移除了算力竞争,避免资源浪费,降低了对节点性能的要求。由于一个真实身份只会对应一个挖矿地址,在保证交易性能的前提下,真正做到了“1 person 1 vote”的去中心化区块链系统。
需要注意注册成为矿工必须是主地址且认证审核通过
> use.getCertifications(use.coinbase)
使用所给密码解锁 Keystore 中的账户。
解锁的格式如下,密码和解锁时间是可选的,需要注意的是,解锁时间默认是5分钟,如果不设置解锁持续时间的话,到时间后账户又会恢复到加锁状态,从而导致不能够继续进行挖矿,这时候需要从新解锁才能够继续挖矿。因此如果本身能够保证没有安全隐患的情况下,duration参数建议设置为一个比较大的数字,永久解锁可将duration设置为0。(为了安全起见,矿工节点不要打开rpc对外端口)
Client | Method |
---|---|
Console | personal.unlockAccount(address, passphrase, duration) |
JSON-RPC | {"method": "personal_unlockAccount", "params": [address, passphrase, duration]} |
> personal.unlockAccount(use.coinbase, passphrase, 500)
true
矿工注册交易,必须缴纳50USE作为矿工押金。 在Mainnet中,想要成为矿工必须要向链上合约发送矿工注册申请;注册成功后,才能进行矿工出块。
Client | Method |
---|---|
Console | use.minerRegister({from: address}) |
JSON-RPC | {"method": "use_minerRegister", "params": [{from: address}]} |
> use.minerRegister({from:use.accounts[0]})
或者
> use.sendTransaction({from:use.accounts[0],to:"UmixYUgBHA9vJj47myQKn8uZAm4anEfrG78",value:web3.toHui(50, "use"),data:"0x819f163a", gas:2000000, gasPrice:20000000000})
矿工注册后可以通过地址查询是否注册成功
Client | Method |
---|---|
Console | use.isMiner(address) |
JSON-RPC | {"method": "use_isMiner", "params": [address]} |
> use.isMiner(address)
若返回值为1,则矿工注册通过;返回值为0,代表注册尚未完成或者注册失败
主网中挖矿需要注册矿工 身份,测试网中不需要注册就能挖矿。
开启 CPU 挖矿,可以选择填入开启挖矿的线程数。
Client | Method |
---|---|
Console | miner.start(threads number) |
JSON-PRC | {"method": "miner_start", "params": [number]} |
> miner.start()
与矿工注册相对应,如果需要注销矿工操作,需要向矿工注册合约发起注销申请,同样是发送一笔交易。 这里特别强调一下,因为RPOW共识机制对于长期不在线或者不参与挖矿的矿工有相应的惩罚机制,即扣留注册矿工时支付押金的一半, 因此建议在需要关闭机器或者暂停挖矿之前,先注销矿工。目前在非惩罚状态下,注销矿工会全额退回押金。
Client | Method |
---|---|
Console | use.minerUnRegister({from: address}) |
JSON-PRC | {"method": "use_minerUnRegister", "params": [{from: address}]} |
> use.minerUnRegister({from: address})
停止 CPU 挖矿。
Client | Method |
---|---|
Console | miner.stop() |
JSON-PRC | {"method": "miner_stop", "params": []} |
> miner.stop()
true
This is the Wiki for the official Usechain golang implementation.