在开始讲解钱包之前,我们先看下面的两幅有关钱包与账户的之间关系的图片,从两幅图片中,可以得知,所谓钱包的作用就是存放密钥的,其密钥是为该账户下的各种需要加密服务的操作服务的,如交易,签名,出块等等。

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。

  1. Wallet_api_plugin初始化:

  1. 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. 模块加载过程代码分析1

    一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...

  2. CLIP与CoOp代码分析

    CLIP与CoOp代码分析 CoOp是稍微改了下CLIP的text encoder CLIP代码:https://github.com/OpenAI/CLIP CoOp代码:https://githu ...

  3. Grin币交易代码分析

    什么是Grin Grin是实现了Mimblewimble协议的一条公链.Mimblewimble实现了压缩交易的历史利于检验节省空间.去除了地址的概念且加密了交易金额,Grin基于对交易输入输出的承若 ...

  4. ET钱包1月21日早报|EOS钱包插件Scatter正尝试增加新功能

    在目前EOS生态发展出现了大量的DApp,由于其采用权益委托证明(Delegated Proof Of Stake,DPoS)的共识算法,通过21个超级节点(BP)来处理交易使其区块链交易速度明显提升 ...

  5. EOS技术贴-如何创建EOS钱包和账号并发起转账和投票

    作者: ThinkBit技术团队 1. 安装EOS节点 Build EOS节点耗时较长,预计需要1小时: git clone https://github.com/EOSIO/eos --recurs ...

  6. Lucene原理与代码分析(高手博客备忘)

    2019独角兽企业重金招聘Python工程师标准>>> 随笔 - 69  文章 - 77  评论 - 687 随笔分类 - Lucene原理与代码分析 Lucene 4.X 倒排索引 ...

  7. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  8. C#中类的继承 override virtual new的作用以及代码分析

    继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...

  9. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  10. lighttpd1.4.18代码分析

    lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1)  编辑 lig ...

最新文章

  1. 2022-2028年中国干电池制造行业产销需求与投资预测分析报告
  2. Training的第六天
  3. 【错误记录】TabLayout 升级支持库版本后报错 ( support:design 支持库升级到 28.0.0 后源码发生变更 )
  4. Session在类库中的使用
  5. pyCharm运行python提示“please select a valid interpreter”
  6. 防止html标签转义
  7. 3l如何使用_慢阻肺患者如何选购呼吸机和制氧机,需要注意哪些?
  8. MySql5.7.12设置log-bin
  9. C++ 第三方常用网络库
  10. C# WinForm开发系列 - 开篇
  11. 数据分析工具有哪些类型
  12. 江苏省计算机二级c语言考试知识点,计算机二级考试C语言常考知识点归纳
  13. 咖啡电子秤芯片方案SIC8833
  14. 郭天祥的10天学会51单片机_第二节
  15. XGboost和GBDT的异同
  16. 七年之痒,从小米6看小米公司的善与罪
  17. java and运算_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
  18. 如何了解舆情传播的平台及路径?
  19. 云周刊】第177期:马云见证!蚂蚁金服推出全球首个区块链跨境汇款服务
  20. php中post是什么意思,php中$_post是什么意思

热门文章

  1. Microsoft Visio 2010密钥
  2. 精美的拟态个人主页源码
  3. 一款舒适的画图软件,支持各种文件格式的导入和导出,Edraw Max 包含中文版和英文版,也包含 Mac 版本 和 Windows 版本
  4. 计算机病毒与恶意软件
  5. XCode编译器里有鬼 – XCodeGhost样本分析
  6. 效能评估软件解决方案
  7. mysql社工库搭建教程,分享我的社工库的裤子+sphinx社工库搭建教程
  8. 蓝桥杯 C语言 试题 基础练习 Sine之舞
  9. 开心消消乐、纯前端实现开心消消乐、开心消消乐代码、HTML+JS实现开心消消乐
  10. 生产和服务使用的计算机软件,Windows效率 篇三:Windows 10软件推荐,将你的生产力工具发挥到极致!...