@zhenxi
2017-11-21T17:47:52.000000Z
字数 4491
阅读 1472
Asch
私钥
安全
很多人都是第一次接触数字资产,没有认真理解密钥(密码)的重要性,最终导致自己的财产遭受到严重损失。
在比特币、以太坊的发展历程中,各种原因导致的丢币不计其数。本文对Asch主密码进行一个解读,旨在让用户了解到如何改进Asch钱包的安全性从而减少不必要的丢币事件。
Asch主密码由字符串组成,其长度大于等于1,小于等于100,是访问自己Asch钱包的唯一钥匙。
我们平时使用的主密码一般是web钱包注册时自动生成的,由12个英文单词和11个空格组成,符合BIP39规则,BIP39规则主密码举例“wasp decline earth multiply help motor once federal bag daughter slow degree”。
与比特币、以太坊钱包不同,在Asch中用户不能直接通过私钥访问自己的账户地址(比特币的钱包备份文件wallet.data和以太坊的keystore都是私钥),而是必须用主密码。比特币钱包导出的备份恢复短语、以太坊钱包导出的助记词跟Asch主密码性质和安全性都一样,均是符合BIP39规则的12个单词。
在Asch中,用户每次对自己的资产进行操作都需要输入主密码,比如XAS转账、UIA转账、设置二级密码、锁仓、注册UIA等写操作,而这些操作都称之为交易。代码会通过一系列加密算法通过对主密码计算,产生密钥对,包含私钥和公钥,其中的私钥就是用来对交易进行签名的。
由此可见,Asch的主密码和BTC、ETH的私钥一样重要,如果主密码丢失,就意味着你的数字资产丢失。
下面几种特殊情况,可以找回自己的XAS。为了防止不丢币,用户应尽快把该地址的XAS转出到一个新地址中(新地址的主密码务必保存到电脑、U盘、手工写到纸上放入保险柜、或者实施了其他有效的密码保存手段),牢记:好记性不如烂笔头!
web钱包后端节点高度不一致造成的假丢币
web钱包后端由多台服务器组成,虽然我们每次在浏览器地址栏输入的是mainnet.asch.io这个域名,但其本身做了dns负载均衡,所以每次用户刷新页面可能会被分配到不同的后端机器上。用户从交易平台提币,然后登录钱包,假如第一次登录被分配到A机器上,能看到自己的余额(提币成功),后来刷新了页面发现余额没有了,此时币并没有丢失,而是被分配到了B机器,并且B机器本身区块高度不是最新的,看不到最新的交易数据,所以也就看不到余额。
这种情况下,用户不需要做任何操作,只要有一次能看到自己的余额就可以。这个问题也在处理中了,以后发生的概率会越来越低。
浏览器有保存主密码
注册后密码未保存,但在web钱包页面进行了登录并且浏览器选择的是“记住密码”。这样的话,每次浏览器都会自动填充保存的Asch主密码进行登录,登录后尽快把币转走。
手机钱包能正常登录
注册后密码未保存,在手机钱包进行了登录且未注销、未升级,能看到自己账户的XAS(此时切记不要进行“注销”、手机钱包升级,如果进行了这2个操作,则100%丢币且不可找回),进去后尽快把币转走。
地址兼容性问题导致看不到币
在Asch早期(区块高度小于1700000),web钱包生成的地址是纯数字格式的,比如14762548536863074684,而当区块高度大于等于1700000后,同一个密码生成的地址是base58格式(跟比特币地址一样),比如P81WSiTnc1KoGqRNQe3yWfuQoQn4i6Xxx。用户往上面2个地址都转入了XAS,那么只能看到比如AP81WSiTnc1KoGqRNQe3yWfuQoQn4i6Xxx地址的余额,另外一个是看不到的,但没有丢失。在将来的某个时间,会专门对此类账户做处理。
早期版本的手机钱包注册的密码现在不能登录
部分老用户用早期版本的手机钱包注册了密码(这里标记为A),但A不符合BIP39规则,而最新手机钱包加入了一个伪BIP39验证,所以这个密码现在在手机钱包和web钱包都不可以登录,此时并不是真正丢币,可以通过asch-cli命令行工具将该账户的XAS转到一个正常的BIP39格式密码账户下。具体做法如下:
// 在linux服务器下执行
> npm install -g asch-cli
// 利用命令行查看账户余额
> asch-cli openaccount "password1" // 这是一个非正常的主密码,不符合BIP39规则,但可以生成地址和查到余额
// 返回结果如下
{
"address": "AP81WSiTnc1KoGqRNQe3yWfuQoQn4i6Xgd",
"unconfirmedBalance": 200000000,
"balance": 200000000, // 该余额=真实的XAS余额 × 100000000,这里真实xas余额是2.0 xas
"unconfirmedSignature": false,
"secondSignature": false,
"secondPublicKey": "",
"multisignatures": [],
"u_multisignatures": [],
"lockHeight": 0
}
// 将xas转到正常的BIP39格式密码账户下
// 目的密码:shaft filter security truck final move season oppose giraffe loan hair judge
// 目的地址:A2qTSyAzkU3yYDX4eGb3SVaB6XnYrR8QAj
// 因为转账需要收取0.1 XAS,所以做多可以转1.9 XAS
> asch-cli sendmoney -e "password1" -a 190000000 -t "A2qTSyAzkU3yYDX4eGb3SVaB6XnYrR8QAj" -m "beizhu"
// 返回结果为交易id
65c100cb9a5637827cab7506ee6f710fea94a472e67b6730a7d9773893913f78
// 此时再用命令行查看主密码为password1的账户余额为0
// 此时用“shaft filter security truck final move season oppose giraffe loan hair judge”在mainnet.asch.io登录查看余额为1.9 XAS,至此完成了账户XAS资产的转移,UIA资产转移类似,具体命令请参考帮助文档:https://github.com/AschPlatform/asch-docs
下面几种情况是真丢币,大部分情况不可找回,只有小部分情况存在一定概率能找回。
注册后密码未保存
保存的密码不是真正的密码
手机钱包登录时手工输入了错误的密码
手机钱包注销、升级导致丢币
将币转入到一个黑洞地址
一种不可能发生的情况
新注册账户的主密码和地址务必保存到电脑、U盘、手工写到纸上放入保险柜、或者实施了其他有效的密码保存手段,建议不要存放到云盘,保存地址是为了让其和主密码做到一一对应。
二级密码注册完成后,应该立即保存,防止丢失。
新老用户都应该验证自己保存的主密码是否是真的“主密码”。验证方法如下:
用自己保存的主密码在web钱包(mainnet.asch.io)进行登录,查看生成的地址A和自己有XAS余额的地址B是否相同。
如果相同
如果不同
首先我个人不再建议使用当前的手机钱包,因为有2个严重的问题未修改。
最后如果你一定要使用手机钱包,那么每次升级、注销前,请务必根据上一章节验证主密码和二级密码的有效性。