EOS开发基础之四:使用cleos命令行客户端操作EOS——智能合约之eosio.bios和eosio.token
现实世界中的合约,简单地说,是一个参与活动的所有人都需要遵循的协议。合约可以是正式的法律合同(例如,金融交易),或者是简单的游戏规则。典型的活动可以是诸如资金转移(在金融合约的情况下)或游戏动作(在游戏合约的情况下)。
EOSIO智能合约是在区块链上注册,并在EOSIO节点上执行的软件,它实现了一个“契约”的语义,其动作请求的总帐被存储在块链上。智能合约定义接口(动作、参数、数据结构)和实现接口的代码。代码被编译成一个规范的字节码格式,以便节点可以检索和执行,而合约执行的交易记录都会被存储在区块链上(例如,法律转让、游戏移动)。
在EOS中,有五个基础的智能合约,分别是eosio.bios、eosio.token、 exchange和eosio.msig、eosio.system,下面我们就开始挨个挨个的聊聊怎么用这几个智能合约哈。
1、eosio.bios(./cleos set contract eosio ../../contracts/eosio.bios -p eosio)
“./cleos set contract eosio ../../contracts/eosio.bios -p eosio”这条命令的意思是为eosio这个账户加载eosio.bios合约,-p eosio 是指授权的帐户是eosio,权限级别为active(默认)。
这个合约用于管理链上的堆栈和非堆栈资源,通过确认用户持有的token控制资源分配,包括带宽、CPU以及内存资源。加载eosio.bios智能合约,如下图:

2、eosio.token(./cleos set contract ${account} ../../contracts/eosio.token -p ${account})
其实到目前为止,我们在cleos中的操作,多是基于钱包wallet和账户account的,和我们区块链的核心——token——还没有什么交集。
eosio.token就是一个用于产生token——钱——的合约。
利用该合约,我们可以创建很多可以由不同用户管理的运行在同一合约上的token。
那么,我们需要为用户加载一个eosio.token,那我们就先得创建一个用于管理这个合约的account,我们把该account也命名为eosio.token吧。如下图,先生成两对密钥,解锁钱包,将私钥导入钱包,然后创建account,名为eosio.token
key1:
Private key: 5KdGLdpuM8SDcRWT6bHHS82vk4mLvow4BMSM87TU1ZC3dMd2e5R
Public key: EOS6tZtVTFpbxhhW6qCa4ixES4vR5hWPycA17cUSftrcpHR22qQ8w
key2:
Private key: 5K3DgxGemuJmeTZay3f8uhkzw6KarbSZbvg2skVijutwsMawerV
Public key: EOS82jRd6ejTwjEnrwRsmnTTCheG6twxxmtsJUp5icCXWcX123EWf

现在我们已经创建了eosio.token账户了,那接下来就为它加载eosio.token合约吧:
2.1加载eosio.token(命令:cleos set contract eosio.token ../../contracts/eosio.token -p eosio.token)

这样就发布合约成功了(下边那段黄色的字,你们喜欢的话自己读一下是什么意思哈,我没心情看它,回头再想办法解决就是)
2.2创建自己的货币(./cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' -p eosio.token)
不说废话了,直接看执行结果吧。

在这里,eosio这个账户被称为发行人,他现在拥有1000000000 SYS,还能够执行诸如冻结、召回账户和白化用户等操作。所以我们要发行新的SYS token,我们需要取得eosio这个账户的许可。
上边执行的这条命令创建了一个名为SYS的新的token,其精度为4小数,最大供应量为1000000000SYS。
2.3发行token给某账户(./cleos push action eosio.token issue '[ "${account}", "100.0000 SYS", "memo" ]' -p eosio)

通过上边的命令,eosio这个用户给simayi发了100个SYS,现在这100个SYS就是可以用于流通的token了,下边我们来试试转账功能。
2.4转账(./cleos push action eosio.token transfer '[ "${from}", "${to}", "25.0000 SYS", "m" ]' -p simayi)

这钱要从simayi那里转到simaguang那,当然得通过simayi的同意了,虽然他们都姓司马,但是亲兄弟明算账嘛。否则系统都不认。
通过我们小学时候的知识了解到,转账过后,simayi手里面应该还有75 SYS,而simaguang手里头应该是有25 SYS,下面我们通过两条命令来看看情况是不是这个情况吧。
查simayi:./cleos get currency balance eosio.token simayi
查simaguang:./cleos get currency balance eosio.token simaguang

果然哈,我们没有计算错。
另外我们也能够看出,这转账过程是不花钱的。
但是,我们为啥看不到eosio这个发行者的token呢?你们猜为什么?
好了,先到这里吧。
下一节继续。
EOS开发基础之四:使用cleos命令行客户端操作EOS——智能合约之eosio.bios和eosio.token的更多相关文章
- eos开发(二)使用cleos命令行客户端操作EOS(钱包wallet基础操作)
不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...
- EOS开发基础之二:使用cleos命令行客户端操作EOS(钱包wallet基础操作)
不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...
- EOS开发基础之三:使用cleos命令行客户端操作EOS——关于钱包wallet和账户account
好了,上一节我们已经讲了关于wallet的一些基础操作,基本了解了怎么去创建一个钱包,怎么去查看钱包.上锁和解锁钱包等,这一节咱们就来开始操作账户account吧. 上一节讲到了每一个account都 ...
- EOS开发基础之六:使用cleos命令行客户端操作EOS——智能合约之eosio.msig和eosio.system
上一节我们搞了老半天,也没整明白Exchange这个合约到底干啥用的.就它官方提供的说法,是用于货币的创造和交易.我没整明白,所以去看了下代码,发现代码头文件里面有下面这段话: This contra ...
- EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange
先回答一下上一节中留下的问题,为什么我就看不到eosio这个账户中的钱呢?我明明为它create了很多token啊. 对,你是create了,但是没有issue啊.create了1000000000 ...
- eos开发(三)使用cleos命令行客户端操作EOS——关于钱包wallet和账户account
好了,上一节我们已经讲了关于wallet的一些基础操作,基本了解了怎么去创建一个钱包,怎么去查看钱包.上锁和解锁钱包等,这一节咱们就来开始操作账户account吧. 上一节讲到了每一个account都 ...
- Hadoop HDFS的shell(命令行客户端)操作实例
HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs ...
- 命令行客户端操作pg数据库常用操作
登录 # su - postgres -c "psql" 或者 $psql -U user_name -d database_name -h serverhost psql (10 ...
- mysql命令行客户端结果分页浏览
转载请注明出处:http://xiezhenye.com/2008/06/mysql%e5%91%bd%e4%bb%a4%e8%a1%8c%e5%ae%a2%e6%88%b7%e7%ab%af%e7% ...
随机推荐
- docker18.ce harbor 安装
Harbor 是什么? harbor VMware 开发的一个容器镜像仓库,harbor的功能提供用户权限管理.镜像复制等功能,提高使用的registry的效率. 安装最新版的docker可以参考d ...
- JAVA基础|从Class.forName初始化数据库到SPI破坏双亲委托机制
代码托管在:https://github.com/fabe2ry/classloaderDemo 初始化数据库 如果你写过操作数据库的程序的话,可能会注意,有的代码会在程序的开头,有Class.for ...
- Windows Server 2008远程桌面端口更改方法
win2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,经常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口.本文以改为端口为25608商品为例,讲解一下具体操作过程. ...
- BZOJ3998:[TJOI2015]弦论(SAM)
Description 对于一个给定长度为N的字符串,求它的第K小子串是什么. Input 第一行是一个仅由小写英文字母构成的字符串S 第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个. ...
- JAVA框架 Mybaits 输入和输出映射
一.输入映射 当前端传来的参数,比较复杂,比如说用户名称.订单单号.账号信息等等.后端有可能有多个projo类对应这些信息.我们需要把这些的projo类封装成一个类似一个vo类. 通过设置字段形式关联 ...
- P2216 [HAOI2007]理想的正方形
题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...
- lwip Packet buffers (PBUF) API 操作 集合
struct pbuf * pbuf_alloc (pbuf_layer layer, u16_t length, pbuf_type type) struct pbuf * pbuf_all ...
- 数据结构与算法 基于c语言篇
学习数据结构与算法走向深蓝之路 第一章:数据结构与算法概念型 数据结构:数据之间的相互关系,即是数据的组织形式. 基本组成:{ 数据:信息的载体 数据元素:数据基本单位: } 其结构形式有四种: 1, ...
- Net Core 使用外部登陆提供程序登陆的流程,以及身份认证的流程
在Asp.Net Core 中使用外部登陆(google.微博...) 原文出自Rui Figueiredo的博文<External Login Providers in ASP.NET C ...
- jquery訪问ashx文件演示样例
.ashx 文件用于写web handler的..ashx文件与.aspx文件类似,能够通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.事实上就是带HTM ...