以太坊离线钱包

96
十三流
2018.01.10 16:57 字数 267

离线钱包,就是不联网的钱包,不联网就不用担心私钥泄漏,当然要是电脑挂了或丢了那就呵呵了,还是需要备份私钥的。
简单的离线钱包使用过程如下:
1,在离线环境下生成一个地址,把这个地址公布出去收币
2,如果要把里面的币提出来,先在离线环境下生成签名,再把该签名拷贝到联网的机器上,进行广播

1,生成离线签名,geth命令行

> account=personal.listAccounts[0] 
"0x45d293c404e38a3184b4ed58c2e12313111dda48"
> eth.getBalance(account)
19790000000000000
> web3.personal.unlockAccount(account,"this is password",15000)
true

> tx = eth.signTransaction({ from: account, to: "0x1D36EA01aBc627df4A7Dd727Cd8b426E843179C2", value: '9790000000',gas: 200000,gasPrice : 2000, nonce: 5 })
{
  raw: "0xf867058207d083030d40941d36ea01abc627df4a7dd727cd8b426e843179c3850247878b808025a0ce44cdfdef7f21a48cd1721215bc7bc457e95ff98de84e7b94eaf83cf63b7ed1a01221ea67f2ba969cc933d78ada583810933570df2dc53ed78c271d51c37a6f85",
  tx: {
    gas: "0x30d40",
    gasPrice: "0x7d0",
    hash: "0xd1ba78c7091ec6b0c35d90687d88c0ff39ef5f5f0b27c3906efb4b894ee12c3f",
    input: "0x",
    nonce: "0x5",
    r: "0xce44cdfdef7f21a48cd1721215bc7bc457e95ff98de84e7b94eaf83cf63b7ed1",
    s: "0x1221ea67f2ba969cc933d78ada583810933570df2dc53ed78c271d51c37a6f84",
    to: "0x1d36ea01abc627df4a7dd727cd8b426e843179c3",
    v: "0x25",
    value: "0x247878b80"
  }
}

很简单的3行命令,一行是获取一个账户,一行结果账户,最后生成签名,这里的gas和gasPrice需要自定义,不够可能会被拒绝打包。

2,拷贝签名并广播

签名内容正是1中生成的raw,拷贝出来到其他的联网环境中广播

> eth.sendRawTransaction("0xf867058207d083030d40941d36ea01abc627df4a7dd727cd8b426e843179c3850247878b808025a0ce44cdfdef7f21a48cd1721215bc7bc457e95ff98de84e7b94eaf83cf63b7ed1a01221ea67f2ba969cc933d78ada583810933570df2dc53ed78c271d51c37a6f84")
"0xd1ba78c7091ec6b0c35d90687d88c0ff39ef5f5f0b27c3906efb4b894ee12c3e"  //广播后返回的hash值,下面就可以查看到hash值了,交易已被提交,等待确认

现在可以根据返回的hash去看事务有没有被打包了。

以太坊
Web note ad 1