前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >eos bios合约和token合约详解

eos bios合约和token合约详解

作者头像
rectinajh
发布2018-06-08 10:51:52
1.1K0
发布2018-06-08 10:51:52
举报
文章被收录于专栏:华仔的技术笔记

bios 合约:

代码语言:javascript
复制
CMakeFiles           CTestTestfile.cmake  eosio.bios.abi.hpp    eosio.bios.cpp.bc  eosio.bios.wasm  eosio.bios.wast.hpp
cmake_install.cmake  eosio.bios.abi       eosio.bios.bc       eosio.bios.s       eosio.bios.wast  Makefile

bios的全称是 Basic Input/Output System (基本输入输出系统)。EOS 官方对它的定义是,通过此合约第一我们可以直接控制其它账户的资源分配,第二可以使用其它需要权限的API调用。 出于实用主义的角度我们先对此不做过多探讨——如果把 EOS 或者说 nodeos 看做一个操作系统,我们把 bios 合约看做启动计算式时按 F8 就能进入的 bios 系统就可以了。这东西必不可少,软件的运行建立在这个基础上,但我们一般情况下不用去管它,只要保证它顺利加载就行。

token 合约:

代码语言:javascript
复制
CMakeFiles           CTestTestfile.cmake  eosio.token.abi.hpp      eosio.token.cpp.bc  eosio.token.wasm  eosio.token.wast.hpp
cmake_install.cmake  eosio.token.abi      eosio.token.bc           eosio.token.s       eosio.token.wast  Makefile

token 合约提供了代币的发行与转账功能。所以我们才能实现一行代码发币,因为就是一个智能合约。

启动节点,注意这是第一步,相当于开启计算机一样

代码语言:javascript
复制
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin   --plugin eosio::account_history_api_plugin

eos发一个币: 1,创建钱包,需要进入 cleos 文件夹,返回给你一个钱包的私钥.

如果说 nodeos 是一个操作系统,那么 cleos 就是相当于 Terminal 的「命令行工具」。 cleos 是 EOS 的命令行工具,负责在 nodeos 上 做三件事情——与区块链系统的交互、管理钱包、管理账户。

代码语言:javascript
复制
root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos# ./cleos  wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KWuky28us2Y7551zuEsp9AvqNEg9gSzkMb9tCqTqjh9dodYH2r"

2,加载 bios 合约 EOS 看做一个操作系统,那么 bios 合约就是让我们能进行最底层的操作的合约,其它合约的运行建立在 bios 合约的基础之上,所以我们先来加载 bios 合约。

代码语言:javascript
复制
./cleos set contract eosio ../../contracts/eosio.bios -p eosio

3,创建账户 在 EOS 中,一个钱包可以对应多个账户。在本例中,我们创建两个账户,一个是 currency 账户,用来执行「发币合约」的账户。另一个是rectinajh 账户,用来测试转账操作的普通账户。 (1)生成密钥对

代码语言:javascript
复制
root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos# ./cleos create key
Private key: 5JSFLTY2d83BWuEXscn3H5W3qprbNQdbZB3dUQn5RMpRyB78Li4
Public key: EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM

(2)钱包导入私钥 有时会锁住,需要解锁:

代码语言:javascript
复制
 root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos# cleos wallet unlock --password   5JSFLTY2d83BWuEXscn3H5W3qprbNQdbZB3dUQn5RMpRyB78Li4
    Error 3120005: Invalid wallet password
  Are you sure you are using the right password?
  Error Details:
  Invalid password for wallet: "/root/eosio-wallet/./default.wallet"
  error during aes 256 cbc decrypt final
 root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos#     cleos wallet unlock --password   PW5KWuky28us2Y7551zuEsp9AvqNEg9gSzkMb9tCqTqjh9dodYH2r
  Unlocked: default

然后导入私钥:

代码语言:javascript
复制
root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos# ./cleos wallet import 5JSFLTY2d83BWuEXscn3H5W3qprbNQdbZB3dUQn5RMpRyB78Li4
imported private key for: EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM

(3)用公钥创建账户 currency 账户

代码语言:javascript
复制
./cleos create account eosio currency EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM

重复创建hua账户 ./cleos create key ./cleos wallet import [ 生成的私钥 ] ./cleos create account eosio hua [ 生成的公钥 ] [ 生成的公钥 ]

(4) 检查一下两个账户是否已经存在了

代码语言:javascript
复制
./cleos get account currency

发币

现在有三个账户—— eosio 账户(默认)、currency 账户和 hua 账户。用 currency 账户加载并执行「发币合约」,庆祝eos终于上线,叫阿喵币吧。

1,加载合约 先看一下 currency 账户的合约情况:

代码语言:javascript
复制
./cleos get code currency

2,加载系统自带的发币合约

代码语言:javascript
复制
./cleos set contract currency ../../contracts/currency

3,再次运行第一步,如果发现 code hash 不是 0 了,就说明发币合约加载成功!

4,用 currency 账户执行「发币合约」

代码语言:javascript
复制
  ./cleos push action currency create '{"issuer":"currency", "maximum_supply": "1000000000.0000 miao", "can_freeze": 1, "can_recall": 1, "can_whitelist": 1}' -p currency@active

5,发送阿喵币给 currency 账户 但还没有账户持有阿喵币。所以,我们要给账户「发币」。 给 currency 账户发了 1000 个 miao 币。

代码语言:javascript
复制
./cleos push action currency issue '{"to":"currency","quantity":"1000.0000 GAKKI","memo":""}' --permission currency@active

6,验证一下,通过以下命令查看 currency 账户余额。

代码语言:javascript
复制
./cleos get table currency currency accounts

7,转账操作 currency 账户会将 20 个 miao币 转给 hua 账户:

代码语言:javascript
复制
./cleos push action currency transfer '{"from":"currency","to":"hua","quantity":"20.0000 miao","memo":"my first transfer"}' --permission currency@active

8,查看 currency 和 hua 两个账户的余额

代码语言:javascript
复制
./cleos get table currency hua accounts
./cleos get table currency currency accounts
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.06.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bios 合约:
  • token 合约:
  • 发币
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档