Skip to content
Fnatic.wang edited this page Jul 16, 2019 · 9 revisions

English Page


挖矿

当链上地址拥有真实身份后,也就意味着链上地址是稀有的。通过矿工签名构造前向相关的VRF(可验证随机函数),结合BFT移动检查点机制,保证了主链的高效性,同时赋予了交易的最终确认性,平均25s内即可完成交易的最终确认。类似于常见的POS算法,RPOW算法移除了算力竞争,避免资源浪费,降低了对节点性能的要求。由于一个真实身份只会对应一个挖矿地址,在保证交易性能的前提下,真正做到了“1 person 1 vote”的去中心化区块链系统。

RPOW 挖矿

需要注意注册成为矿工必须是主地址且认证审核通过

查看主地址是否验证通过

> 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]}
Example
> personal.unlockAccount(use.coinbase, passphrase, 500)
true

矿工注册

矿工注册交易,必须缴纳50USE作为矿工押金。 在Mainnet中,想要成为矿工必须要向链上合约发送矿工注册申请;注册成功后,才能进行矿工出块。

Client Method
Console use.minerRegister({from: address})
JSON-RPC {"method": "use_minerRegister", "params": [{from: address}]}
Example
> 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]}
Example
> use.isMiner(address)

若返回值为1,则矿工注册通过;返回值为0,代表注册尚未完成或者注册失败

开启挖矿

主网中挖矿需要注册矿工 身份,测试网中不需要注册就能挖矿。

开启 CPU 挖矿,可以选择填入开启挖矿的线程数。

Client Method
Console miner.start(threads number)
JSON-PRC {"method": "miner_start", "params": [number]}
Example
> miner.start()

矿工注销

与矿工注册相对应,如果需要注销矿工操作,需要向矿工注册合约发起注销申请,同样是发送一笔交易。 这里特别强调一下,因为RPOW共识机制对于长期不在线或者不参与挖矿的矿工有相应的惩罚机制,即扣留注册矿工时支付押金的一半, 因此建议在需要关闭机器或者暂停挖矿之前,先注销矿工。目前在非惩罚状态下,注销矿工会全额退回押金。

Client Method
Console use.minerUnRegister({from: address})
JSON-PRC {"method": "use_minerUnRegister", "params": [{from: address}]}
Example
> use.minerUnRegister({from: address})

停止挖矿

停止 CPU 挖矿。

Client Method
Console miner.stop()
JSON-PRC {"method": "miner_stop", "params": []}
Example
> miner.stop()
true

Clone this wiki locally