码不停蹄

IT笔录


  • 首页

  • 标签

  • 分类

  • 全部文章

EOS智能合约介绍

发表于 2018-08-09 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:
  • 文章参考:https://developers.eos.io/eosio-cpp/docs/introduction
  • eosiocpp文件地址:/eos/build/tools/eosiocpp

介绍

EOSIO智能合约是在区块链上注册并在EOSIO节点上执行的软件,它实现了“合同”的语义,其合约行动请求的分类账存储在区块链中。智能合约定义了接口(操作,参数,数据结构)和实现接口的代码。代码被编译成规范的字节码格式,节点可以检索和执行。区块链存储合同的交易。每份智能合约都必须附有一份Ricardian Contract,该合同定义了合同中具有法律约束力的条款和条件。

阅读全文 »

EOS常见问题

发表于 2018-08-09 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:
运行nodeos时候报错

Q:下边代码是用于异常停止服务的恢复

A:

1
nodeos --data-dir /opt/eosio/bin/data-dir --hard-replay-blockchain --truncate-at-block [有问题的区块编号] -e

阅读全文 »

eosio.bios合约分析(一)

发表于 2018-08-09 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:

前提

目标

从基础的智能合约中分析代码结构,了解调用方式和合约的作用。

软件版本

  • eos版本:v1.1.1
  • 操作系统:centos 7

建议阅读前先了解:https://blockflow.net/t/topic/663

阅读全文 »

EOS-多索引表使用指南

发表于 2018-08-20 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:

参考网址:https://developers.eos.io/eosio-cpp/docs/multi-index-table-tutorial

简介

  • EOSIO Multi-Index API为EOSIO数据库提供C ++接口。
  • 源码文件路径:eos/contracts/eosiolib/multi_index.hpp
  • 其内部使用的是 C 的 Ddatabase_api 来操作数据库,文件路径:eos/contracts/eosiolib/wasm_interface.cpp
  • 表对象的创建和修改都需要花费RAM,删除则会返回RAM到账户中。

命名规则

合约帐号名称

  • 只能包含字符.abcdefghijklmnopqrstuvwxyz12345。a-z(小写)1-5和.(期间)
  • 必须是12个字符

表名

  • 最多只能包含12个字母字符

结构

  • 最多只能包含12个字母字符

代币符号

  • 必须是A和Z之间的大写字母字符
  • 必须是7个字符或更少

阅读全文 »

EOS-多索引表使用例子

发表于 2018-08-25 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:

简介

简介

阅读本文前,请先阅读:http://111.231.215.55/posts/eos_multi-index.html

将完成一个任务清单计划的智能合约,功能有:

  1. 发布任务
  2. 完成任务
  3. 获得全部任务

所有代码将在博文底部展示

定义表结构

1
2
3
4
5
6
7
8
9
10
// @abi table todos i64
struct todo
{
uint64_t id;
std::string description;
uint64_t completed;

uint64_t primary_key() const { return id; }
EOSLIB_SERIALIZE(todo, (id)(description)(completed))
};
注意

// @abi table

编译器eosiocpp 通过识别 //@abi 公开此表,并使其在智能契约之外可见。

结构名称少于12个字符,全部为小写。

阅读全文 »

创建EOS智能合约

发表于 2018-08-09 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:

前提

首先请先了解智能合约相关概念,智能合约介绍。

在开始之前以下信息。

  1. eos-version:v.1.5
  2. os:centos 7
  3. 必须在build文件夹中执行sudo make isntall,否在在执行编译wast文件时,将找不到相关模块。
  4. 参考文档:https://developers.eos.io/eosio-cpp/docs/hello-world

创建智能合约

初始化合约结构

这里采用最简单的方式,用eosiocpp命令创建合约基础架构。

1
eosiocpp -n hello

此时在eos/build/tools/文件夹下将产生一个hello文件夹,文件夹内包含hello.cpp hello.hpp两个最基础的智能合约文件。

阅读全文 »

stellar资料

发表于 2018-08-14 | 更新于 2018-08-27 | 分类于 stellar | 阅读次数:

stellar测试链浏览器:http://testnet.stellarchain.io/

stellar正式链浏览器:https://stellarchain.io/

stellar-core(节点)源码地址:https://github.com/stellar/stellar-core/blob/master/INSTALL.md

阅读全文 »

RAM结合eosio.system合约详解

发表于 2018-08-09 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:

源码分析

eosio.system.cpp

1
2
3
4
5
6
7
8
9
10
// native.hpp (newaccount definition is actually in eosio.system.cpp)
(newaccount)(updateauth)(deleteauth)(linkauth)(unlinkauth)(canceldelay)(onerror)
// eosio.system.cpp
(setram)(setparams)(setpriv)(rmvproducer)(bidname)
// delegate_bandwidth.cpp
(buyrambytes)(buyram)(sellram)(delegatebw)(undelegatebw)(refund)
// voting.cpp
(regproducer)(unregprod)(voteproducer)(regproxy)
// producer_pay.cpp
(onblock)(claimrewards)

ram,cpu和net操作相关方法的都定义在 delegate_bandwidth.cpp ,其中和 RAM 相关的是 buyrambytes (通过指定字节数购买ram), buyram (通过指定货币购买ram)和 sellram (销售ram)。

delegate_bandwidth.cpp

1
2
3
4
5
6
7
8
9
//根据当前市场的份额,将需要购买的字节数转化为指定的EOS进行购买
void system_contract::buyrambytes( account_name payer, account_name receiver, uint32_t bytes ) {
//在数据库中查询RAMCORE发行量,默认为100000000000000
auto itr = _rammarket.find(S(4,RAMCORE));
auto tmp = *itr;
auto eosout = tmp.convert( asset(bytes,S(0,RAM)), CORE_SYMBOL );
//通过转化后,调用buyram使用EOS购买
buyram( payer, receiver, eosout );
}
解析

RAM的交易机制采用Bancor算法,使每字节的价格保持不变,通过中间代币(RAMCORE)来保证EOS和RAM之间的交易流通性。从上源码看首先获得RAMCORE的发行量,再通过tmp.convert方法RAM->RAMCORE,RAMCORE->EOS(CORE_SYMBOL)再调用 buyram 进行购买。这里的CORE_SYMBOL不一定是指EOS,查看core_symbol.hpp,发现源码内定义为SYS,也就是说在没有修改的前提下,需要提前发行SYS代币,才能进行RAM购买。

阅读全文 »

prototype与__proto__区别

发表于 2018-08-24 | 更新于 2018-08-27 | 分类于 javascript | 阅读次数:

prototype(原型属性)

只有函数才具有 prototype 属性。prototype 是一个对象,默认有一个属性 constructor 指向原型对象的构造函数。

proto

所有对象都具有的 proto 属性,可称为隐式原型对象。一个对象的隐式原型对象指向原型对象的 prototype 属性,这也保证了实例化对象能共享原型对象中 prototype 属性的方法和属性。

阅读全文 »

EOS资源系统

发表于 2018-08-09 | 更新于 2018-08-27 | 分类于 eos | 阅读次数:

EOS资源系统

  1. 一类是RAM购买型;另一类是CPU和网络带宽抵押型。
  2. 把EOS理解为区块链操作系统,CPU和NET带宽是跟时间相关。一定时间内你可使用的CPU和NET带宽是有限的,可使用量和你抵押的EOS数量相关。随着时间的流逝,CPU和NET带宽会慢慢恢复,而抵押的EOS在不用时可以全部退回。
  3. ram是EOS唯一消耗性资源,用完需要再购买,设计目的为减少无意义的交易,消耗整个的ram资源。
阅读全文 »
1…456
码不停蹄

码不停蹄

nodejs 后端,react前端开发交流群(548619701)

51 日志
15 分类
18 标签
GitHub E-Mail
Links
  • blockflow
© 2019 码不停蹄
由 Hexo 强力驱动 v3.7.1
|
主题 – NexT.Pisces v6.4.0
0%