风险提示:理性看待区块链,提高风险意识!
小蚁NEO钱包账号创建原理解析
首页 > 币界资讯 > 区块链知识 2019-03-06 18:03:22

neo 区块链钱包账号

钱包账号

neo钱包主要包括address,privateKey,publicKey,scriptHash,WIF这几个部分;它们之间存在一定的转化关系:NEP<=>WIF <=> Private => Public => ScriptHash <=> Address不开玩笑,除了 address 可以告诉别人以外,其它的对谁都不要说,address类似一个银行卡号,是别人想给你转账的时候使用的

创建钱包账号

import { wallet } from '@cityofzion/neon-js';/** * 根据passpase生产一个新的neo账号 * @param {*} passphase * @param {*} confirmPassphase * @param {*} wif */export function createWalletAccount(passphase: string, confirmPassphase: string, wif?: string): ?WalletAccount { if (passphase !== confirmPassphase) return null; var account = new wallet.Account(wif || wallet.generatePrivateKey()); const encryptedWIF = wallet.encrypt(account.WIF, passphase); const result: WalletAccount = { address: account.address, privateKey: account.privateKey, publicKey: account.publicKey, scriptHash: account.scriptHash, WIF: account.WIF, encryptedWIF, passphase, } return result;}

创建钱包账号单元测试

通过jest对创建钱包的方法进行单元测试test('createWalletAccount ', () => { const passphase = '123456'; const account = createWalletAccount(passphase, passphase); console.log(account); expect(account.address !== null).toBe(true);});运行结果如下所示,就是当前生成的账号信息,可以使用neo-wallet登录一下试试。{ address: 'AUMgtJsw3kBrcA7poBYNaonZTGMNoqZNLy', privateKey: '10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708fba', publicKey: '03af2ad8725c4926632d6816f5502d8f749dec369afadfe0bb5ac697fe22a0ef77', scriptHash: 'a8f677c132f2c82d73ff138e817e784c25ab068a', WIF: 'KwnETPM2m8wTAY3qySvDVLf3Vpfg77nvJhxR2Qyi8uMWKoqP1Q3f', encryptedWIF: '6PYVHykkA1TfyQ2344wftv5e7vRoecV4iVwEVZ62aqCAx3dh3LDrRV19AS', passphase: '123456' }

转化

正如前面所述的,钱包里的各个数据存在一定的转化关系,至于详细的相互之间转化的原理,先不至讨论,我们可以使用neon-js的相关API来查看是否正确转化。NEP<=>WIF <=> Private => Public => ScriptHash <=> Address下面先新建一个jtest的单元测试文件Core.spec.js

私钥到公钥的转化

这里使用上面生成的测试账号进行测试,注意因为是测试账号以后我不会再使用,所以暴露出来,如果是你的个人账号,请一定不要暴露WIF以及privateKey。单元测试代码如下:import {wallet} from '@cityofzion/neon-js';test('private:10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708fba get PUb_Key',()=>{ const pubKey = wallet.getPublicKeyFromPrivateKey('10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708fba'); expect(pubKey).toBe('03af2ad8725c4926632d6816f5502d8f749dec369afadfe0bb5ac697fe22a0ef77');});使用命令运行单元测试:npm run test __test__/neo/Core.spec.js运行结果:

所有转化

完整的转化关系如下:import {wallet} from '@cityofzion/neon-js';const walletAccount = { address: 'AUMgtJsw3kBrcA7poBYNaonZTGMNoqZNLy', privateKey: '10bb026b4015c481f0b5142aa5de36de40a99fc8c26e956011a3f820f7708fba', publicKey: '03af2ad8725c4926632d6816f5502d8f749dec369afadfe0bb5ac697fe22a0ef77', scriptHash: 'a8f677c132f2c82d73ff138e817e784c25ab068a', WIF: 'KwnETPM2m8wTAY3qySvDVLf3Vpfg77nvJhxR2Qyi8uMWKoqP1Q3f', encryptedWIF: '6PYVHykkA1TfyQ2344wftv5e7vRoecV4iVwEVZ62aqCAx3dh3LDrRV19AS', passphase: '123456' };// WIF <=> privateKeytest('WIF <=> privateKey',()=>{ const wif = wallet.getWIFFromPrivateKey(walletAccount.privateKey); expect(wif).toBe(walletAccount.WIF); const privateKey = wallet.getPrivateKeyFromWIF(walletAccount.WIF); expect(privateKey).toBe(walletAccount.privateKey);});// privateKey => publicKeytest(`privateKey => publicKey:${walletAccount.privateKey}`,()=>{ const pubKey = wallet.getPublicKeyFromPrivateKey(walletAccount.privateKey); expect(pubKey).toBe(walletAccount.publicKey);});// publicKey => ScriptHashtest(`publicKey => ScriptHash:${walletAccount.publicKey}`,()=>{ const scriptHash = wallet.getScriptHashFromPublicKey(walletAccount.publicKey); expect(scriptHash).toBe(walletAccount.scriptHash);});// scriptHash <=> addresstest('scriptHash <=> address',()=>{ const address = wallet.getAddressFromScriptHash(walletAccount.scriptHash); expect(address).toBe(walletAccount.address); const scriptHash = wallet.getScriptHashFromAddress(walletAccount.address); expect(scriptHash).toBe(walletAccount.scriptHash);});

总结

如上,主要说明了neo账号的创建,以及讲述账号各个字段之间的转化关系,本篇使用的api为neon-js,这是coz在github社区开源的neo钱包api,它包含了钱包开发的所有的api,我认为它是学习钱包的很好的材料,当然neo-gui,neo-cli本身也是开源的,完全可以使用它们的源码来学习,只是相较于C#,对于开发跨平台应用,我更喜欢基于electron的方案。为了学习开发neo钱包,我搭建了一个electron的boilerplate,作为快速启动的基础,这样其他同样想用此方案的朋友就不用再一次去搭建环境了。此boilerplate具体集成了以下技术方案:electron,React,dva,flow,antd;后面会抽时间把文中提到的jest也集成进去以便可以开箱即用的写单元测试。

上一篇: IOTA的通证价值基础与激励价值的关系
下一篇: 解密区块链中五个神秘的术语
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥264,723.74
37,091.22 USDT
+0.1%
ETH以太坊
¥14,416.22
2,019.90 USDT
-0.12%
USDT泰达币
¥7.20
1.01 USDT
0%
BNB币安币
¥1,625.40
227.74 USDT
+0.36%
XRP瑞波币
¥4.32
0.60460 USDT
+0.37%
USDC
¥7.14
1.00 USDT
+0.03%
SOLSolana
¥398.85
55.89 USDT
+1.54%
OKBOK币
¥398.61
55.85 USDT
-1.64%
ADA艾达币
¥2.68
0.37580 USDT
-1.16%
DOGE狗狗币
¥0.55160
0.07730 USDT
-1.52%
热搜币种
更多
币种
价格
24H涨跌幅
Terra Classic
¥0.00
9.402E-5 USDT
-18.95%
Gala
¥0.18
0.025374 USDT
-4.66%
dYdX
¥22.58
3.1918 USDT
-0.91%
比特股
¥0.05
0.006964 USDT
+4.28%
PancakeSwap
¥15.52
2.1936 USDT
-2.74%
Conflux
¥1.08
0.1524 USDT
-2.87%
Filecoin
¥31.45
4.4454 USDT
-0.69%
FTX Token
¥29.82
4.2155 USDT
+16.96%
Yield Guild Games
¥2.55
0.3608 USDT
-0.52%
Shiba Inu
¥0.00
8.14E-6 USDT
-2.51%
比特币
¥262,381.44
37091.22 USDT
+0.1%
比原链
¥0.07
0.010011 USDT
-4.38%
最新快讯
更多
汇丰、恒生、渣打、富邦华一四家外资银行入围首批“数字人民币”业务试点名单
2023-11-28 19:06:57
摩根大通和Apollo计划建立代币化“企业主网”
2023-11-28 19:03:57
Nansen2公测版本上线,新增链上数据异动、智能搜索等功能
2023-11-28 18:59:52
西班牙公民需在明年3月底前申报其海外平台上加密货币持仓
2023-11-28 18:53:43
Nansen2已公开测试
2023-11-28 18:53:38
dYdX基金会:主网启动以来超过1645万DYDX被质押
2023-11-28 18:52:07
NicCarter等比特币倡导者发文:比特币挖矿是清洁能源和平衡电网的关键工具
2023-11-28 18:47:58
下载币界网APP