背景
OKC在2021年4月前使用了cointype=996和secp256k1算法,后来改为了兼容以太坊的cointype=60和eth_secp256k1算法。所以当前生成的地址与早期cointype=996时不一致。
问题
- 对于2021年4月前的旧用户而言,使用原来生成的助记词,私钥,keystore,无法在当前普通钱包还原出cointype=996的地址,导致旧用户无法使用正确地址发交易。
- 旧用户希望能使用OKC命令行生成keystore文件,继续使用原来的账户。
解决办法
OKC提供命令行方法,兼容旧用户用助记词、私钥或keystore文件还原旧账号。
首先,使用exchain(https://github.com/okx/exchain)最新dev分支进行编译,生成最新的exchaincli和exchaind。
其次,使用命令行要先设置rpc:https://exchaintmrpc.okex.org/,详情请参考。如已设置过,可跳过该步骤。
情形一:已有助记词
1. 导入助记词
还原旧用户命令
exchaincli keys add [myName] --recover -m "助记词" --coin-type 996 --algo secp256k1
参数1:--coin-type,助记词生成私钥时使用,默认60,旧用户是996。
参数2:--algo,私钥生成地址时使用,默认eth_secp256k1,旧用户是secp256k1。
然后查看余额
exchaincli query account <address>
如果余额为0,则不带参数 --algo secp256k1 导入一次
exchaincli keys add [myName] --recover -m "助记词" --coin-type 996
再次查看余额
exchaincli query account <address>
2. 使用exchaincli发交易
# 转账
exchaincli tx send [from_key_or_address] [to_address] [amount] [flags]
更多操作,请查看文档
3. 导出cosmos keystore
exchaincli keys export [myName] > ./keystorefilename
情形二:已有私钥
1. 导入私钥
# 导入时使用参数--algo secp256k1
exchaincli keys add [myName] --recover -m "私钥" --algo secp256k1
# 查看余额
exchaincli query account <address>
# 如果余额为0,则不带参数 --algo secp256k1 导入一次,再次查看余额
exchaincli keys add [myName] --recover -m "私钥"
导入成功后,同情形一的第2步,进行后续转账等操作。
2. 导出cosmos keystore
exchaincli keys export [myName]
情形三:已有keystore
1. 导入
该keystore是通过原DEXUIWeb钱包获取
# 导入时使用参数--algo secp256k1
exchaincli keys import-eth-keystore [name] [file] --algo secp256k1
# 查看余额
exchaincli query account <address>
# 如果余额为0,则使用参数--algo eth_secp256k1导入一次,再次查看余额
exchaincli keys import-eth-keystore [name] [file] --algo eth_secp256k1
导入成功后,同情形一的第2步,进行后续转账等操作。
2. 导出cosmos keystore
exchaincli keys export [myName]