小蚁NEO钱包账户创建原理分析
2023年06月29日 13:01
蚂蚁新区块链钱包账号
钱包账号
neo钱包主要包括地址、私钥、公钥、脚本hash和wif。两者之间存在一定的转换关系:NEPWIFPrivate=
public=
脚本哈希地址不是开玩笑的。唐';除了地址,不告诉任何人,地址类似于银行卡号。,当其他人想要向您
转账以创建钱包帐户
时,会使用该帐户。从"@cityofzion/neon-js"导入{wallet};/***根据通行证酶生产一个新的新的账号*@param{*}通行阶段*@param{*}确认通行阶段*@param{*}wif*/export函数createWalletAccount(passphase:string,confirmPassphase:string,wif?字符串):WalletAccount{if(passphase!==confirmPassphase)返回nullvar账户=新钱包.账户(wif||钱包。generateprivatekey());const加密wif=wallet。加密(帐户.WIF,通相);constresult:walletaccount={address:account。地址,私有密钥:帐户.私有密钥,公共密钥:帐户.公共密钥,脚本哈希:帐户.脚本哈希,WIF:帐户.WIF,encryptedWIF,passphase,}返回结果;}
创建钱包账户的单元测试
通过jest创建钱包的方法的单元测试(';创建钱包帐户';()=
。{常量传递相位=';123456'constaccount=createWalletAccount(通行阶段,通行阶段);console.log(账号);expect(account.address!==null).托比(真);});运行结果如下所示,这是当前生成的帐户信息。您可以尝试使用新钱包登录。。{地址:';aumgtjsw3KBrca7pobynaonztgmnoqznly';私有密钥:';10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708FBA';公钥:';03af2ad8725c4926632d6816f5502d8f749dec9AFAdfe0bb5AC697Fe22a0ef77';脚本哈希:'a8f677c132f82d73ff138e8e8e784c25ab068a';WIF:';kwnetpm2M8WTA3qyvdvlf3vpfg77njhxr2qyi8umwk
转换
如上所述,钱包中的数据之间存在一定的转换关系。至于相互转化的详细原理,就先不讨论了。我们可以用neon-js的相关API来看看是否转换正确。.Nepwiffprivate=
public=
Anewjtestunittestfilecore.Specification.js
iscreatedbelowthescripthashaddress.privatekey到publickey的转换
这里,上面生成的测试账号用于测试。注意,测试账号后我不会再用,所以暴露了。如果是你的个人账户,请不要';不要暴露WIF和私钥。。单元测试代码如下:从"@cityofzion/neon-js"导入{wallet};测试(';private:10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708FBAgetPUb_Key';()=
{constpubKey=wallet。getpublickeyfromprivatekey(';10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708FBA);期待(公钥).toBe(';03af2ad8725c4926632d6816f5502d8f749dec369afadfe0bb5AC697Fe22a0ef77));});使用命令运行单元测试:国家预防机制运行测试__test__/neo/Core.spec.js运行结果:
[XY002][XY001]allconversions
dievollstndigeumwandlunistwiefolgt:import{wallet}from'@cityofzion/neon-js'Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:EditEdit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit:Edit://WIFprivateKeytest('WIFprivateKey'()=
{constwif=wallet.getwiffromprivatekey(walletaccount.privatekey);expect(WIF)be(walletaccount)WIFI);constprivatekey=wallet.getprivatekeyfromwif(walletaccount).WIFI);Expect(privateKey)为(walletaccount.privatekey););//privateKey=
公钥测试(`私钥=
公钥:${钱包账户。私钥}`),()=
{constpubKey=wallet。getpublickeyfromprivatekey(钱包帐户。privatekey);期待(公钥).toBe(钱包账户。公钥);});//publicKey=
脚本哈希测试(`公钥=
脚本哈希:${钱包帐户。公钥}`),()=
{常量脚本哈希=wallet。getscripthashfrompublickey(钱包帐户。公钥);期望(scriptHash).toBe(钱包账户。脚本哈希);});//脚本哈希地址测试(';脚本哈希地址';()=
{常量地址=钱包。getaddressfromscripthash(钱包帐户。脚本哈希);期望(地址)。toBe(钱包账户。地址);const脚本哈希=wallet。getscripthashfromaddress(钱包帐户。地址);期望(scriptHash).toBe(钱包账户。脚本哈希);});
总结
如上所述,主要讲解neo账户的创建以及账户各字段之间的转换关系。本文使用的api是neon-js,是github社区中coz开放的neowalletapi。,里面包含了钱包开发的所有API,我觉得是学习钱包的好材料。当然,neo-gui和neo-cli也是开源的,使用它们的源代码就可以学习,但是相对于C#,对于开发跨平台的应用来说是非常重要的。我更喜欢基于电子的解决方案。为了学习如何开发neowallet,我构建了一个电子样板作为快速入门的基础,以便其他也想使用此方案的朋友不要';不需要重新建立一个环境。。该样板文件具体集成了以下技术方案:electronic、React、dva、flow、antd稍后,我将花时间集成本文中提到的jest,这样我就可以开箱即用地编写单元测试。
推荐阅读
-
虚拟币交易平台app活动 正规的虚拟币交易平台有哪些?
1970-01-01
蚂蚁新区块链钱包账号钱包账号neo钱包主要包括地址、私钥、公钥、脚本hash和wif
-
虚拟快币充值平台官网入口,虚拟快币充值平台官网入口下载
1970-01-01
蚂蚁新区块链钱包账号钱包账号neo钱包主要包括地址、私钥、公钥、脚本hash和wif
-
整治虚拟货币挖矿省份排名?欧美国家为什么没有禁止?
1970-01-01
蚂蚁新区块链钱包账号钱包账号neo钱包主要包括地址、私钥、公钥、脚本hash和wif
-
虚拟货币与虚拟银行学?什么是虚拟币账户
1970-01-01
蚂蚁新区块链钱包账号钱包账号neo钱包主要包括地址、私钥、公钥、脚本hash和wif
-
加强虚拟货币 关于进一步规范和处置虚拟货币交易
1970-01-01
蚂蚁新区块链钱包账号钱包账号neo钱包主要包括地址、私钥、公钥、脚本hash和wif
-
虚拟币 平台?虚拟币平台
1970-01-01
蚂蚁新区块链钱包账号钱包账号neo钱包主要包括地址、私钥、公钥、脚本hash和wif