EOS钱包及代码分析
在开始讲解钱包之前,我们先看下面的两幅有关钱包与账户的之间关系的图片,从两幅图片中,可以得知,所谓钱包的作用就是存放密钥的,其密钥是为该账户下的各种需要加密服务的操作服务的,如交易,签名,出块等等。
wallet操作的所有子命令,主要有创建,打开,列出,加锁,解锁,导入key,显示public keys,显示private keys,如下图所示:
创建:$ cleos wallet create -n rabbit
Creating wallet: rabbit
Save password to use in the futureto unlock this wallet.
Without password imported keys willnot be retrievable.
"PW5KAUEyoTRXZkGFEbWhFEa7p2K4JJDej45MZBAEewxzubtHEZQmh"
上面创建了一个名字为rabbit的钱包,在返回中,可以看到有一串密码,该密码需要我们保存下来,切勿丢失,以后对钱包解锁,导入keys等操作都需要密码才能进行。
列出:$ cleos wallet list
$ cleos wallet list
Wallets:
[
"rabbit *"
]
从返回结果可以看到,名为rabbit的钱包,后面的’*’表示钱包是未锁定状态。
加锁: $ cleos wallet lock -n rabbit
Locked: rabbit
$ cleoswallet list
Wallets:
[
"rabbit"
]
从上面的操作可以看到’*’已经消失,钱包处于锁定状态。
解锁: $ cleos wallet unlock -n rabbit
password:
Unlocked:rabbit
在解锁的过程中需要输入创建钱包时所返回的密码。
我们在进行key操作的时候首先要创建key,如果不创建的话,钱包里会有一对默认的key。
创建key:$ cleoscreate key
Private key:5JMavdjxfTDgzqjCGfNos4KAbFAyT6DCmwx7neJBFXbNWiXHDMR
Public key: EOS7MJc2bfRZxNYkYt27EUBz5KugBswXTFcFEKfTKzXmjVfVPSXrx
公钥都是以EOS开头的。
导入key: $ cleos wallet import5JMavdjxfTDgzqjCGfNos4KAbFAyT6DCmwx7neJBFXbNWiXHDMR -n rabbit
importedprivate key for: EOS7MJc2bfRZxNYkYt27EUBz5KugBswXTFcFEKfTKzXmjVfVPSXrx
列出public keys: $ cleos wallet keys
[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"EOS7MJc2bfRZxNYkYt27EUBz5KugBswXTFcFEKfTKzXmjVfVPSXrx"
]
列出private keys:$ cleoswallet private_keys -n rabbit
password:
[[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
],[
"EOS7MJc2bfRZxNYkYt27EUBz5KugBswXTFcFEKfTKzXmjVfVPSXrx",
"5JMavdjxfTDgzqjCGfNos4KAbFAyT6DCmwx7neJBFXbNWiXHDMR"
]
]
在列出privatekeys时,需要输入创建账户时返回的密码。
以上就是对钱包的基本操作,至此,我们已经完成了钱包的创建以及将密钥放入钱包以保存。
Wallet plugin分析
Wallet有关插件,主要有wallet_api_plugin,wallet_plugin以及提供网络功能的http_plugin。
Wallet_api_plugin包含Wallet_api_plugin.h,主要向客户端提供wallet api,其实现方式是通过将api指针与curl进行map映射。在客户端发送相应的curl时,以调用相应的api,并返回结果。
Wallet_plugin,主要包括Wallet_plugin.h,Wallet_manager.h,Wallet.h,其中Wallet_plugin.h主要对curl中的option选项进行相应的操作;Wallet.h 中是完成钱包各项操作的具体实现;Wallet_manager.h像一个中间层,起连接作用,向上面向Wallet_api_plugin.h,向下面向Wallet.h。
Wallet_api_plugin初始化:
Wallet_api_plugin启动:
其中get_wallet_manager()获取wallet_manager句柄,add_api是http_plugin的接口,其作用是将curl与具体功能实现接口添加到map映射表,当http_plugin模块收到相应curl后,调用相应的功能,并返回结果。下面是具体代码:
至此,curl与handler添加进入map(url_handles)。
下面我们看一下以wallet create为例,跟踪一下服务器端的代码:在开始之前,先看一下http_plugin的启动。
从上面红框内可以看到当http_plugin启动后,将监听端口,当有http request到达时,获取uri, 查询url_handle map, 以调用相应的功能,最后通过send_http_response将结果发送到客户端。
通过下面最终create函数,将钱包创建成功,其文件放在~/eosio-wallet/目录下。
$ cat rabbit.wallet
{
"cipher_keys":"459e729d74756b0dfc80534e19fee1211a7be31ee44d0b3a5dd4d8072a56bf046c902d52f55a286c471c6704d3ecd6a0374224db22ed726308ff2fd412ad5a165092311e2642d3de4294e8ded6656dc1bb97a4a0c34da9545d033e63299557c40fe04f9cf02a24086e3dda70ec9303423ba3c2fef92df4baf72d8543e61cccce7761d27ecc99d92d84b7bfa7c952be53754f1a93506f81e38425ae31e0046d5704bbee3038f3e751e1219d8cc7c7ee93b47f88bcc525d0d3842a1fdf12036d5b60374a36f21667cbf01ced0f7f9b5d3b"
}
Request:
$curl http://localhost:8888/v1/wallet/create -X POST -d '"rabbit"'
Response:
PW5KFWYKqvt63d4iNvedfDEPVZL227D3RQ1zpVFzuUwhMAJmRAYyX
EOS钱包及代码分析相关推荐
- 模块加载过程代码分析1
一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...
- CLIP与CoOp代码分析
CLIP与CoOp代码分析 CoOp是稍微改了下CLIP的text encoder CLIP代码:https://github.com/OpenAI/CLIP CoOp代码:https://githu ...
- Grin币交易代码分析
什么是Grin Grin是实现了Mimblewimble协议的一条公链.Mimblewimble实现了压缩交易的历史利于检验节省空间.去除了地址的概念且加密了交易金额,Grin基于对交易输入输出的承若 ...
- ET钱包1月21日早报|EOS钱包插件Scatter正尝试增加新功能
在目前EOS生态发展出现了大量的DApp,由于其采用权益委托证明(Delegated Proof Of Stake,DPoS)的共识算法,通过21个超级节点(BP)来处理交易使其区块链交易速度明显提升 ...
- EOS技术贴-如何创建EOS钱包和账号并发起转账和投票
作者: ThinkBit技术团队 1. 安装EOS节点 Build EOS节点耗时较长,预计需要1小时: git clone https://github.com/EOSIO/eos --recurs ...
- Lucene原理与代码分析(高手博客备忘)
2019独角兽企业重金招聘Python工程师标准>>> 随笔 - 69 文章 - 77 评论 - 687 随笔分类 - Lucene原理与代码分析 Lucene 4.X 倒排索引 ...
- 20145236《网络攻防》Exp4 恶意代码分析
20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...
- C#中类的继承 override virtual new的作用以及代码分析
继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...
- 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...
- lighttpd1.4.18代码分析
lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1) 编辑 lig ...
最新文章
- 2022-2028年中国干电池制造行业产销需求与投资预测分析报告
- Training的第六天
- 【错误记录】TabLayout 升级支持库版本后报错 ( support:design 支持库升级到 28.0.0 后源码发生变更 )
- Session在类库中的使用
- pyCharm运行python提示“please select a valid interpreter”
- 防止html标签转义
- 3l如何使用_慢阻肺患者如何选购呼吸机和制氧机,需要注意哪些?
- MySql5.7.12设置log-bin
- C++ 第三方常用网络库
- C# WinForm开发系列 - 开篇
- 数据分析工具有哪些类型
- 江苏省计算机二级c语言考试知识点,计算机二级考试C语言常考知识点归纳
- 咖啡电子秤芯片方案SIC8833
- 郭天祥的10天学会51单片机_第二节
- XGboost和GBDT的异同
- 七年之痒,从小米6看小米公司的善与罪
- java and运算_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
- 如何了解舆情传播的平台及路径?
- 云周刊】第177期:马云见证!蚂蚁金服推出全球首个区块链跨境汇款服务
- php中post是什么意思,php中$_post是什么意思
热门文章
- Microsoft Visio 2010密钥
- 精美的拟态个人主页源码
- 一款舒适的画图软件,支持各种文件格式的导入和导出,Edraw Max 包含中文版和英文版,也包含 Mac 版本 和 Windows 版本
- 计算机病毒与恶意软件
- XCode编译器里有鬼 – XCodeGhost样本分析
- 效能评估软件解决方案
- mysql社工库搭建教程,分享我的社工库的裤子+sphinx社工库搭建教程
- 蓝桥杯 C语言 试题 基础练习 Sine之舞
- 开心消消乐、纯前端实现开心消消乐、开心消消乐代码、HTML+JS实现开心消消乐
- 生产和服务使用的计算机软件,Windows效率 篇三:Windows 10软件推荐,将你的生产力工具发挥到极致!...