创建安全多签名钱包及高级设置
文章出于:http://wangxiaoming.com/blog/2016/06/26/e12/
在 Mist创建多签名钱包
Mist以太坊钱包有个选项是可以用多签名钱包使钱包里的余额更安全。用多签名钱包的好处是它需要多个账号共同批准才能够从余额中提取大额资金。创建多签名钱包之前,需要创建多个账号。
在Mist创建账号文件很容易。在"账号"菜单下点击"添加账号"。选择一个安全性高又容易记住的密码(记住没有密码找回选项),确认,账号创建就完成了。创建至少 2个账号。如果你愿意,第二个账号可以在另一台有Mist运行的电脑上创建(理论上这样可以使多签名更加安全)。你只需要第二个账号的公钥(存款地址)来创建多签名钱包(复制 /粘贴,不要手动输入)。因为需要第一个账号来创建多签名钱包合约,所以第一个账号必须是在你创建多签名钱包的电脑上。
既然已经创建了账号,保持安全并进行备份(如果不备份,电脑系统崩溃,余额就会丢失)。点击菜单顶端的"备份"。选择"keystore"文件夹,反击 /选择"复制"(不要选择"剪切",否则结果会很糟糕)。回到桌面,在空白区域反击,选择"粘贴"。你可能会想把这个"keystore"文件夹重命名为"以太坊-keystore-备份-年-月-日",这样以后就能很快辨认出来。这时候你就能把文件夹内容添加到压缩文件里(如果是在线备份,最好用另外一个安全性高又容易记住的密码对档案进行密码保护 ),复制到 U盘,刻录到CD/DVD ,或者上传到在线存储设备( Dropbox/Google Drive等)。
你现在应该添加大约不到 0.02以太币到第一个账号里(那个用来创建多签名钱包的账号)。这是创建多签名钱包所需的交易费用。另外再需要1以太币(或者更多),因为 Mist现在需要这样做来确保钱包合约交易有足够的"gas"来正常执行……所以对新人来说,总共需要不到 1.02以太币。
创建多签名钱包的时候,你会进入到附属在它上面所有账号的完整地址。我推荐把每个地址复制 /粘贴到简单的文本编辑器上(notepad/kedit等),到Mist每个账号的详情页以后,从右侧按键栏里选择"复制地址"选项。不要手动输入地址,或者冒着输入错误的风险,你可能会把交易发送到错误的地址,因此丢失余额。
我们现在准备好了创建多签名钱包。在"钱包合约"下,选择"增加钱包合约"。起个名字,选择第一个账号持有人,选择"多签名钱包合约"。你会看到出现这样的文字:
"这是由 X个持有人共同控制的联合账号。每天最多可以发送X个以太币。任何超过每日限额的交易都需要 X个持有人确认。"
设置附属在这个多签名钱包上的持有人(账号)数量,每日提款限额(这只要求一个账号提出这些钱款,以及允许多少持有人(账号)批准超过每日限额的提款。
现在加入之前复制/粘贴在文本编辑器中的账号地址,确认所有的设置正确后,点击底部的"创建"按钮。然后需要输入密码发送交易。在"钱包合约"部分,会显示出新的钱包,告诉你"创建"。
钱包创建完成后,就能在屏幕上看到合约地址。选择整个地址,复制/粘贴到文本编辑器的新文件里,保存至桌面,命名为"以太坊-钱包-地址.txt"或其他名称。
现在只需用备份合约文件的方式来备份"以太坊-钱包-地址.txt",接着就能用这个地址在ETH装载新的多签名钱包。
如果你要从备份中恢复,只需要复制"以太坊 – keystore – 备份"文件夹里的文件到这个攻略第一部分里提到的"keystore"文件夹。如果是在从未安装过Mist的机器上安装(第一次创建账号的同时就会建立文件夹),可能需要创建"keystore"文件夹。如果要恢复多签名钱包,不要像我们创建之前一样选择"多签名钱包合约",只选择"导入钱包"就可以了。
故障排查:
- Mist不能同步。一个有用的解决方案是将个人电脑硬件时钟与NTP服务器同步,确保时间无误后重启。
- Mist同步后启动,但出现了白屏。有可能是因为你在基于Linux的操作系统上运行了 "xorg" 视频驱动器(Ubuntu, Linux Mint等),试试安装制造商的视频驱动器。
- 提示"密码错误"。在现在的Mist版本上,这有可能是个错误的提示。重启Mist,问题就能解决(如果你输入的确实是正确密码)。
使用Eth
与使用geth的、可用的钥匙管理相关的每个选项都同样适用于eth。以下是与"账号"有关的选项:
> eth account list // List all keys available in wallet.
> eth account new // Create a new key and add it to the wallet.
> eth account update [<uuid>|<address> , ... ] // Decrypt and re-encrypt given keys.
> eth account import [<uuid>|<file>|<secret-hex>] // Import keys from given source and place in wallet.
以下是与"钱包"有关的选项:
> eth wallet import <file> //Import a presale wallet.
注意:"账号导入"选项只能用于导入一般的钥匙文件。"钱包导入"选项只能用于导入预售钱包。
也可以从综合控制台进入钥匙管理(用内置控制台或者geth附件):
> web3.personal
{
listAccounts: [],
getListAccounts: function(callback),
lockAccount: function(),
newAccount: function(),
unlockAccount: function()
}
使用EthKey (不推荐使用)
Ethkey是C++实现的CLI工具,可以让你和以太坊钱包互动。你可以用它罗列、检查、创建、删除和修改钥匙,以及检查、创建和签署交易。我们假定你还没有运行过客户端,比如eth或者Aleth系列的任何客户端。如果你运行过,可以略过这一章节。要创建钱包,用creatwallet指令运行ethkey:
> ethkey createwallet
请输入管理员密码来保护keystore(设一个安全性高的!):会问你要一个"管理员"密码。这能保护你的隐私,并且它会默认为你任何钥匙的密码。你需要再次输入同一文本来进行确认。
注意:使用安全性高的、随机生成的密码。
我们可以通过使用列表指令简单地列出钱包内的钥匙:
> ethkey list
No keys found.
我们还没创建任何钥匙,它也是这样告诉我们的!我们来创建一个吧。 要创建钥匙,我们需要用new指令,需要通过一个名字——这也是我们要给钱包里账号的名字。我们称之为"测试":
> ethkey new test
输入密码来保护这个账号(或者用管理员密码就不用输入了)。这会促使你输入密码来保护这个钥匙。如果你只点击回车,就会使用默认的"管理员"密码。这意味着,当你想用账号的时候,不必输入钥匙密码(因为它记住了管理员密码)。总体来说,你应该试着为每个钥匙设置一个不同的密码,因为这样能防止一个密码被盗用而导致其他账号也被入侵。然而为了方便你可能会决定让低安全性的账号使用同一个密码。
在这里,我们用一个极富想象力的密码123(永远不要用这么简单的密码,除非是暂时的测试账号)。输入密码后,它就会让你再次输入确认。再次输入123。由于你设置了它的密码,它会让你提供一个密码提示,每次进入的时候都会显示密码提示。提示会储存在钱包里,由管理员密码保护。我们来输入糟糕的密码提示321倒序。
> ethkey new test
Enter a passphrase with which to secure this account (or nothing to use the master passphrase):
Please confirm the passphrase by entering it again:
Enter a hint to help you remember this passphrase: 321 backwards
Created key 055dde03-47ff-dded-8950-0fe39b1fa101
Name: test
Password hint: 321 backwards
ICAP: XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ
Raw hex: 0092e965928626f8880629cec353d3fd7ca5974f
所有正常(或者说直接)的 ICAP地址都以XE开头,这样就很容易辨认。请注意这个钥匙在创建的钥匙后有另外一个标识符,被称为UUID。这是个特有的钥匙标识符,和账号本身毫无关系。知道了它对攻击者发现你在网上的身份毫无帮助。它刚好也是钥匙的文件名,你可以在~/.web3/keys (Mac或Linux)或者$HOME/AppData/Web3/keys (Windows)中发现。让我们通过列出钱包里的钥匙来确认它在正常运行:
> ethkey list
055dde03-47ff-dded-8950-0fe39b1fa101 0092e965... XE472EVKU3CGMJF2YQ0J9RO1Y90BC0LDFZ test
它每行会报告一个钥匙(这里总共只有一个钥匙)。在这个例子里,钥匙被储存在055dde文件,有个以XE472EVK 开头的ICAP地址。这不容易记住,所以有个专有名称会很有帮助,还是叫test吧。