JCCDex / ProjectFundingProposal

Jingtum & MOAC Project Funding Proposal
28 stars 8 forks source link

PFP 37: 分层钱包/助记词对井通的支持库 (bip32/39/44) #29

Closed lospringliu closed 4 years ago

lospringliu commented 5 years ago

使用bip39来派生不同的钱包现在已经是主流了, 井通/墨客也需要能够方便的使用它

井通 / 墨客 在bip44中均已注册,但是没有人去推动相关事项

需要 利用/包装 bip32 / bip39 / bip44 成井通能直接使用的库

组件 内容 参考工时
熟悉流程 了解比特/以太/瑞波 1
井通/墨客 生成井通墨客地址 和 分级钱包 2
https://iancoleman.io/bip39 添加井通墨客支持, 发布netlify.com 2
PR github.com/iancoleman/bip39 2
更新库 keypairs / wallet / transaction / nativescript 2
文档 https://swtcdoc.netlify.com/docs/wallet/ 1
VVanaheim commented 5 years ago

现在主流交易所钱包是优盾那几个吧

AnFengDe commented 5 years ago

这个原理是啥,能解释下吗,搞个中文的助记词,是不是很好玩?

lospringliu commented 5 years ago

不管硬钱包,至少提到的那个网站上需要支持井通/墨客, 中文助记词其实挺方便

主要是包装一下bip39, 做下编码解码让井通链应用能直接调用

hanwencheng commented 5 years ago

不需要单独的库了,基于bip39 并对jcc_jingtum_base_lib做部分改动可以实现, 改动需要讲jcc_jingtum_base_lib里的encode和decode功能提取出来,在以下代码中我把他们变成了static函数。

代码如下:

const KeyPairs = require('./keypairs');
const bip39 = require('bip39');

export const secretToMnemonic = secret => {
    const bufferEntropy = KeyPairs.decode(33, secret); //33 is the prefix of `SWT`
    const hexEntropy = base16.encode(bufferEntropy); 
    return bip39.entropyToMnemonic(hexEntropy);
};

export const mnemonicToSecret = mnemonic => {
    const recoverHexString = bip39.mnemonicToEntropy(mnemonic);
    const recoverHexBuffer = base16.decode(recoverHexString);
    return KeyPairs.encode(33, recoverHexBuffer);
};

另外有一个需要注意的是随机生成的entropy转换为hex之后,有可能hexEntropy.length = 15,这个时候没有达到entropyToMnemonic最低16位的要求,会报错。需要重新生成。

稍后钱包完成之后我会开源钱包的代码。

lospringliu commented 5 years ago

还是需要的, jcc_jingtum_bnabse_lib应该不再维护了

需要使用swtc-keypairs 或者 swtc-codecs 库 更新网站 / 包装兼容性 / nativescript支持的工作都需要花些精力

GinMu commented 5 years ago

jcc_jingtum_base_lib基本上不会维护了,相关更新可pr到swtclib @hanwencheng

lospringliu commented 4 years ago

这个我自己来做, 现在条件成熟了 计划工时: 10 人天, 参考一楼

lospringliu commented 4 years ago

文档 代码: 02/10 - 02/17

进度

lospringliu commented 4 years ago

不需要单独的库了,基于bip39 并对jcc_jingtum_base_lib做部分改动可以实现,



另外有一个需要注意的是随机生成的entropy转换为hex之后,有可能hexEntropy.length = 15,这个时候没有达到entropyToMnemonic最低16位的要求,会报错。需要重新生成。

稍后钱包完成之后我会开源钱包的代码。

https://swtcdoc.netlify.com/docs/wallet/ 新文档 直观操作, 支持HDWallet

yongjunfan0723 commented 4 years ago

审计工时: 3人天

PFP 37 审计

  1. 审计版本: @swtc/wallet@1.0.11 @swtc/lib@1.0.7
  2. 审计人: yongjunfan0723
  3. 审查方法: 代码review及可用性测试, 测试代码bip-test
  4. 审计内容: 审计bip32,bip44分层钱包,bip39助记词 对井通和墨客的支持
  5. 审计结果: i . 已添加井通墨客支持,发布到 网站 ii. PR #403 已merged iii. 相关scoped包已更新 iv. 文档已更新
yongjunfan0723 commented 4 years ago

钱包: jURJTtmfYWuSzGRxJHYxxw3ijd4DTpe3it

AnFengDe commented 4 years ago

费用支付 审计费用支付