当前位置: 首页 > news >正文

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

作者: ThinkBit技术团队

1. 安装EOS节点

Build EOS节点耗时较长,预计需要1小时:

git clone https://github.com/EOSIO/eos --recursive
cd eos
./eosio_build.sh
cd build
sudo make install
复制代码

Mac上可能执行build失败,需要手动执行命令修复一下link,然后再次build(github.com/EOSIO/eos/i…)

brew unlink gettext && brew link --force gettext
./eosio_build.sh
cd build
sudo make install
复制代码

安装成功后运行nodeos命令查看是否能成功启动EOS节点

nodeos
复制代码

2. 修改配置文件

Linux: vi ~/.local/share/eosio/nodeos/config/genesis.json
Mac: vi ~/genesis.json
{
  "initial_timestamp": "2018-06-08T08:08:08.888",
  "initial_key": "EOS7EarnUhcyYqmdnPon8rm7mBCTnBoot6o7fE2WzjvEX2TdggbL3",
  "initial_configuration": {
    "max_block_net_usage": 1048576,
    "target_block_net_usage_pct": 1000,
    "max_transaction_net_usage": 524288,
    "base_per_transaction_net_usage": 12,
    "net_usage_leeway": 500,
    "context_free_discount_net_usage_num": 20,
    "context_free_discount_net_usage_den": 100,
    "max_block_cpu_usage": 200000,
    "target_block_cpu_usage_pct": 1000,
    "max_transaction_cpu_usage": 150000,
    "min_transaction_cpu_usage": 100,
    "max_transaction_lifetime": 3600,
    "deferred_trx_expiration_window": 600,
    "max_transaction_delay": 3888000,
    "max_inline_action_size": 4096,
    "max_inline_action_depth": 4,
    "max_authority_depth": 6
  }
}

Linux: vi ~/.local/share/eosio/nodeos/config/config.ini
Mac: vi ~/Library/Application\ Support/eosio/nodeos/config/config.ini
将下列配置添加到config.ini末尾:
p2p-peer-address = eos-bp.bitfinex.com:9876
p2p-peer-address = peering.mainnet.eoscanada.com:9876
p2p-peer-address = node869-mainnet.eosauthority.com:9393
p2p-peer-address = eu1.eosdac.io:49876
p2p-peer-address = node1.eoscannon.io:59876
p2p-peer-address = peer1.mainnet.helloeos.com.cn:80
p2p-peer-address = bp.eosbeijing.one:8080
p2p-peer-address = 119.254.15.39:9876
p2p-peer-address = p2p.prod.eosgravity.com:80
p2p-peer-address = node1.eosnewyork.io:6987
p2p-peer-address = p2p.eos42.io:9876
p2p-peer-address = node1.liquideos.com:9876
p2p-peer-address = peer1.mainnet.eos.store:80
p2p-peer-address = pub0.eosys.io:6637
p2p-peer-address = p2p.meet.one:9876

plugin = eosio::chain_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin
plugin = eosio::history_plugin
plugin = eosio::history_api_plugin
plugin = eosio::http_plugin
plugin = eosio::http_client_plugin
plugin = eosio::wallet_api_plugin
复制代码

3. 启动EOS节点

先清除一下历史数据:

Linux: rm -fr ~/.local/share/eosio/nodeos/data/
Mac: rm -fr ~/Library/Application\ Support/eosio/nodeos/data/
复制代码

首次启动EOS时需指定genesis.json,否则启动的不是EOS主网:

Linux: nodeos --genesis-json ~/.local/share/eosio/nodeos/config/genesis.json
Mac: nodeos --genesis-json ~/genesis.json
复制代码

Ctrl+C停止后再次运行nodeos启动不带--genesis-json参数即可,如果需要后台运行使用如下命令:

nohup nodeos &
复制代码

启动EOS节点成功后就会开始同步区块 运行cleos get info命令查看状态,注意chain_id必须是如下值才代表EOS节点连接的是主网: aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906

4. 创建钱包

查看当前节点钱包列表

cleos wallet list
复制代码

创建一个新钱包,名字为myeoswallet,并记住打印出来的钱包密码

cleos wallet create -n myeoswallet
复制代码

解锁钱包才能进行转账等需要私钥签名的操作

cleos wallet unlock -n myeoswallet --password {wallet password}
复制代码

创建的钱包文件在~/eosio-wallet/myeoswallet.wallet,为了安全可以备份后删除该钱包文件,等需要时再拷贝过来

5. 导入私钥

将之前映射EOS时的私钥导入钱包

cleos wallet import {EOS private key} -n myeoswallet
复制代码

查看导入的公钥

cleos wallet keys
复制代码

查看导入的公私钥

cleos wallet private_keys -n myeoswallet --password {wallet password}
复制代码

6. 查询账号

等待EOS节点同步完成后才可以查询最新的账号和余额等信息,同步节点预计N小时 可以使用cleos get info命令查看head_block_num是否赶上 https://eospark.com 首页显示的区块数量 通过EOS公钥查询账号

cleos get accounts {EOS pub key}
复制代码

查询EOS余额

cleos get currency balance eosio.token {accountname}
复制代码

查询EOS account状态

cleos get account {accountname}
复制代码

7. 解除抵押

通过上一步我们发现我们映射EOS后,EOS主网自动帮我们创建了一个12位的account,但是余额只有10EOS,其他的EOS全部变成抵押状态,如果我们想将staked EOS变成balance,就先需要解除抵押

cleos system undelegatebw {accountname} {accountname} '100 EOS' '100 EOS'
复制代码

解除抵押后再cleos get account查看状态,会提示你72小时后才能返还(funds will be available in 72 hr) 72小时后需要再执行refund命令才能将unstaked EOS变成balance

cleos push action eosio refund '{"owner":"accountname"}' -p accountname
复制代码

然后查询EOS余额会发现余额增加了

cleos get currency balance eosio.token {accountname}
复制代码

8. 创建EOS新账号

创建12位EOS新账号不需要竞价,只要没被占用就可以创建成功 先创建一对公私钥

cleos create key
复制代码

创建新账号testtesttest,这里需要消耗parent account的余额来购买ram才能创建新账号,owner和active权限可以都是用刚创建的公钥,当然也可以使用之前映射过的EOS公钥作为第一个pub key参数来作为owner权限

cleos system newaccount --stake-net '0 EOS' --stake-cpu '0 EOS' --buy-ram-kbytes 4 {parent account} testtesttest
{EOS pub key} {EOS pub key}
复制代码

创建完账号可以去EOS浏览器查看 https://eospark.com

9. 转账EOS

EOS转账需要解锁钱包,导入私钥,并确保转账的account有带宽,如果带宽不足需要先抵押EOS获得带宽 查看账号带宽

cleos get account {accountname}
复制代码

给账号抵押带宽

cleos system delegatebw {from accountname} {receiver accountname} '1 EOS' '1EOS'
复制代码

可以相同的account给自己抵押EOS获得带宽,也可以使用一个account给另一个account抵押EOS获得带宽 发起转账,注意填写MEMO,转账给交易所一般是集中的account,必须填写正确的MEMO才能识别用户并正确入帐

cleos transfer {sender accountname} {recipient accountname} '100 EOS' MEMO
复制代码

10. EOS投票

如果账号有抵押的EOS,可以进行EOS节点投票

cleos system voteproducer prods {accountname} bitfinexeos1 eoscannonchn eosbeijingbp
复制代码

节点名可以使用cleos system listproducers命令查看 每次投票最多可以投30个节点,重复发起投票会覆盖之前的投票节点 投票之后可以使用cleos get account {accountname}命令查看投票结果 账号的EOS解除抵押后节点的投票得分将清零

更多功能参考EOS官方文档 developers.eos.io/eosio-cleos…

最后,欢迎对区块链技术感兴趣的小伙伴加入ThinkBit~ 欢迎站内联系或简历直投 hr@thinkbit.com

  • Telegram中文群 t.me/ThinkBitPro…
  • Twitter twitter.com/ThinkBitPro
  • 微博 weibo.com/thinkbitexc…
  • 公众号 ThinkBitPro_2018

相关文章:

  • 一、typescript介绍和安装
  • OpenStact之cinder
  • 对Node的优点和缺点提出了自己的看法?
  • 【刷算法】求1+2+3+...+n
  • 浅谈JavaScript错误
  • 洛谷P1341 无序字母对
  • 十三、数据源的配置
  • Promise 使用技巧九则
  • Linux ,强制更新只读文件,强制写入命令
  • 卸载pip工具
  • Ubuntu 12.04将默认集成Landscape管理套件【转】
  • 基础技能 | Git
  • SPP-net原理解读
  • [HDU3710]Battle over Cities
  • Vue学习笔记4
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [nginx文档翻译系列] 控制nginx
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Git初体验
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • java2019面试题北京
  • jQuery(一)
  • PV统计优化设计
  • SQLServer之创建显式事务
  • vue:响应原理
  • vue数据传递--我有特殊的实现技巧
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 京东美团研发面经
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • const的用法,特别是用在函数前面与后面的区别
  • Linux权限管理(week1_day5)--技术流ken
  • MyCAT水平分库
  • Nginx实现动静分离
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • scrapy中间件源码分析及常用中间件大全
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #14vue3生成表单并跳转到外部地址的方式
  • #includecmath
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Lua:Lua调用C++生成的DLL库
  • #QT(智能家居界面-界面切换)
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $.ajax,axios,fetch三种ajax请求的区别
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (9)STL算法之逆转旋转
  • (python)数据结构---字典