eos bios合约和token合约详解

bios 合约:

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 合约:

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 合约提供了代币的发行与转账功能。所以我们才能实现一行代码发币,因为就是一个智能合约。

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

./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 上 做三件事情——与区块链系统的交互、管理钱包、管理账户。

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 合约。

./cleos set contract eosio ../../contracts/eosio.bios -p eosio

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

root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos# ./cleos create key
Private key: 5JSFLTY2d83BWuEXscn3H5W3qprbNQdbZB3dUQn5RMpRyB78Li4
Public key: EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM

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

 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

然后导入私钥:

root@VM-0-7-ubuntu:/home/ubuntu/eos/build/programs/cleos# ./cleos wallet import 5JSFLTY2d83BWuEXscn3H5W3qprbNQdbZB3dUQn5RMpRyB78Li4
imported private key for: EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM

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

./cleos create account eosio currency EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM EOS5oRJ73UwkCHoDFNjuwgubeUDni3wjmzyHc5n7ErbUkSvdsm5tM

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

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

./cleos get account currency

发币

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

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

./cleos get code currency

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

./cleos set contract currency ../../contracts/currency

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

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

  ./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 币。

./cleos push action currency issue '{"to":"currency","quantity":"1000.0000 GAKKI","memo":""}' --permission currency@active

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

./cleos get table currency currency accounts

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

./cleos push action currency transfer '{"from":"currency","to":"hua","quantity":"20.0000 miao","memo":"my first transfer"}' --permission currency@active

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

./cleos get table currency hua accounts
./cleos get table currency currency accounts

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祥云无界

imtoken钱包的使用教程

为了方便大家使用imtoken钱包,在这里将imtoken钱包使用教程详细的给大家展示出来。钱包使用很简单,但是需要大家多熟悉。还有文章中有红色字体提示的内容为...

3K31
来自专栏深入浅出区块链技术

如何搭建以太坊私有链

在开发以太坊时,很多时候需要搭建一条以太坊私有链,通过本文一起看看如何在Mac上进行搭建。

1183
来自专栏专注于主流技术和业务

以太坊多节点私有链部署

https://g2ex.github.io/2017/09/12/ethereum-guidance/

3414
来自专栏丑胖侠

以太坊rpc接口调用之nonce

背景 我们在使用以太坊相关的json-rpc借口发送交易时,往往会出现这种现象:交易已经发送出去,也获得了交易的hash值。dev模式的geth也在正常挖矿,可...

25910
来自专栏极客编程

java工程师用spring boot和web3j构建以太坊区块链应用

区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用...

1721
来自专栏智能计算时代

Ethereum - 以太坊项目

以太坊项目进一步扩展了区块链网络的能力,从交易延伸为智能合约(Smart Contract)。 其官网首页为 ethereum.org。 简介 根据以太坊官方的...

2857
来自专栏华仔的技术笔记

部署一个私链以太坊的智能合约

4393
来自专栏比原链

Bytom猜谜合约使用指南

4、在锁定资产页面中,选择我们要奖励给猜对答案的资产奖励(当前不支持直接锁定BTM,所以我们需要新建一种资产进行锁定);

681
来自专栏区块链大本营

【手把手】如何在10分钟内搭建一个以太坊私有链?

5183
来自专栏网络

虾说区块链-52-《精通比特币》笔记七

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。 ? 区块链-《精通比特币》笔记七: 《精通比特...

2068

扫码关注云+社区