- 浏览: 774863 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
eosiolib库位于eos/contracts目录下,合约代码都会用到里面定义的类和函数,包含40多个文件
1.types.h,types.hpp:定义了EOS项目中的内建类型和相关的函数.eosiolib所有使用到的类型都在这里定义,name标识符与std::string类型之间转换函数也在这里定义
2.action.h:接口函数,这些C API函数是在eos/libraries/chain/wasm_interface.cpp中实现的,主要供给基础合约使用.其主要功能有:
a.action数据的读取
b.发送事务提交后的通知消息
c.执行action所需要的权限判断
d.包含其他辅助函数
action.hpp:定义了action结构体,它是action打包后的数据形式,即所有push action产生的数据根据各自不同的数据格式进行封装,打包和传送.其中涉及一些与执行权限相关的结构体定义,如permission_level
3.print.h,print.hpp:eos中各种参数类型打印函数的定义,最终使用的是std::ostringstream类型
4.multi_index.hpp:基于boost库的多索引数据表.它重新封装了多索引容器模板,最终里面还是使用的boost::multi_index,这一点没有变化,它有以下几个特点:
a.Multi-Index表的二级索引数量不能超过16个
b.Multi-Index表的表名不能超过12个字符
c.Multi-Index表支持双向迭代,即const_iterator和const_reverse_iterator
很多类型都使用它来存放,如生产者,投票,单例等
5.dispatcher.hpp:用来处理,分发传入的action.它定义了执行action的函数模板execute_action,使用远程API调用Action时,会执行这个函数.其中有三个宏:
a.EOSIO_API_CALL:用来调用内部的execute_action函数,执行一个Action
b.EOSIO_API:使用BOOST_PP_SEQ_FOR_EACH循环调用EOSIO_API_CALL,即调用多个Action
c.EOSIO_ABI:里面是一个apply函数,后面还会调用EOSIO_API这个宏,即它也是用来调用execute_action来执行action的,在我们自行编写智能合约的时候在类内部最后会加上这个宏.所以当我们加载自己编写的智能合约时,会把编写好的指定的函数功能放到action上面执行
6.contract.hpp:定义了所有智能合约的基类,如果自己写合约,需要从这个基类派生,然后使用eosiocpp工具将自己的头文件和源文件生成wasm文件及其相关的接口文件.编写智能合约需要注意各个文件名需要名称相同,因为加载智能智能合约时填写的参数是根据智能合约文件路径来的
7.eosiolib.cpp:提供内存管理,数据流,区块链参数设置等功能.其中memory.hpp与memory.h用于内存管理.在这里,对常见的内存分配方式进行了重新编写(其实只是简单的封装而已)
8.stdlib.hpp:是一个include集合,引用了C++标准库中的initializer_list,iterator和memory
9.chain.h:用来查询区块链内部状态的API,目前用于获取活跃(Active)的生产者,是从controller中拿取的,源码在eos/libraries/chain/wasm_interface.cpp中实现
10.compiler_builtins.h:用于工具链生成编译器内嵌部件的API
11.crypto.h:定义各种加载算法.对给定的数据进行各种hash运算并进行存储,或者对数据进行校验.源码在eos/libraries/chain/wasm_interface.cpp中实现
12.db.h:用于和区块链数据库交互的API接口,db.h函数都在eos/libraries/chain/wasm_interface.cpp中的database_api类中定义,部分直接定义,部分采用宏定义,源码实现在eos/libraries/chain/apply_context.cpp中.提供了数据库的存储与查询的基本功能.其中使用的数据是controller类中定义的数据,在这里只是一个引用
13.system.h:定义用于与系统级内部函数进行交互的API,如系统时间函数和静态断言的定义
14.permission.hpp与permission.h:用来检测事务相关权限,在eos/libraries/chain/wasm_interface.cpp的permission_api类中实现,事务提交时需要检验执行者的权限都在这里.具体的校验通过与controller定义的数据库比对实现
15.privileged.hpp与privileged.h:实现系统相关的授权,定义特权用户的各种资源限制,事务相关参数,块相关参数及数据传输时间间隔的各种限制
16.asset.hpp:定义帐户资产,即用一个int64_t表示资金,用symbol_type表示单位(目前被定义为SYS)
17.currency.hpp:定义有关货币(Token),所有有关货币的创建,发行,转账,余额查询都在这里实现
18.datastream.hpp:定义数据流操作,可以把自定义的类的数据成员放到vector<char>中,需要时可以再次读取出来,方便数据的传输
19.fixed_key.hpp:用于将固定大小key按键按字典顺序排序,使用数据成员std::array<word_t,num_words()>实现
20.fixedpoint.hpp:是32/64/128/256位版本的不动点变量
21.optional.hpp:表示可选类型,与boost:optinal基本一致
22.producer_schedule.hpp:表示生产者(出块者)计划表
23.public_key.hpp:公钥相关的数据
24.reflect.hpp:是c++实现的反射器,带有大量的宏
25.serialize.hpp:实现序列化宏,可以对有关数据进行序列化
26.singleton.hpp:用于实现单例模式的封装,也存储在multi_index中
27.symbol.hpp:用于定义代币符号,规定为SYS
28.time.hpp:用于与时间相关的数据,类似于boost中的实现
29.transaction.hpp与transaction.h事务相关,主要是对action用vector封装,另外,对nsaction的数据传输也做了各种限制,如预期时间,带宽,CPU算力,延迟传输等.还有一个get action函数的实现,可以获取当前区块相关的数据
30.varint.hpp:定义整型,在datastream中有应用
31.vector.hpp:定义字节数组
1.types.h,types.hpp:定义了EOS项目中的内建类型和相关的函数.eosiolib所有使用到的类型都在这里定义,name标识符与std::string类型之间转换函数也在这里定义
2.action.h:接口函数,这些C API函数是在eos/libraries/chain/wasm_interface.cpp中实现的,主要供给基础合约使用.其主要功能有:
a.action数据的读取
b.发送事务提交后的通知消息
c.执行action所需要的权限判断
d.包含其他辅助函数
action.hpp:定义了action结构体,它是action打包后的数据形式,即所有push action产生的数据根据各自不同的数据格式进行封装,打包和传送.其中涉及一些与执行权限相关的结构体定义,如permission_level
3.print.h,print.hpp:eos中各种参数类型打印函数的定义,最终使用的是std::ostringstream类型
4.multi_index.hpp:基于boost库的多索引数据表.它重新封装了多索引容器模板,最终里面还是使用的boost::multi_index,这一点没有变化,它有以下几个特点:
a.Multi-Index表的二级索引数量不能超过16个
b.Multi-Index表的表名不能超过12个字符
c.Multi-Index表支持双向迭代,即const_iterator和const_reverse_iterator
很多类型都使用它来存放,如生产者,投票,单例等
5.dispatcher.hpp:用来处理,分发传入的action.它定义了执行action的函数模板execute_action,使用远程API调用Action时,会执行这个函数.其中有三个宏:
a.EOSIO_API_CALL:用来调用内部的execute_action函数,执行一个Action
b.EOSIO_API:使用BOOST_PP_SEQ_FOR_EACH循环调用EOSIO_API_CALL,即调用多个Action
c.EOSIO_ABI:里面是一个apply函数,后面还会调用EOSIO_API这个宏,即它也是用来调用execute_action来执行action的,在我们自行编写智能合约的时候在类内部最后会加上这个宏.所以当我们加载自己编写的智能合约时,会把编写好的指定的函数功能放到action上面执行
6.contract.hpp:定义了所有智能合约的基类,如果自己写合约,需要从这个基类派生,然后使用eosiocpp工具将自己的头文件和源文件生成wasm文件及其相关的接口文件.编写智能合约需要注意各个文件名需要名称相同,因为加载智能智能合约时填写的参数是根据智能合约文件路径来的
7.eosiolib.cpp:提供内存管理,数据流,区块链参数设置等功能.其中memory.hpp与memory.h用于内存管理.在这里,对常见的内存分配方式进行了重新编写(其实只是简单的封装而已)
8.stdlib.hpp:是一个include集合,引用了C++标准库中的initializer_list,iterator和memory
9.chain.h:用来查询区块链内部状态的API,目前用于获取活跃(Active)的生产者,是从controller中拿取的,源码在eos/libraries/chain/wasm_interface.cpp中实现
10.compiler_builtins.h:用于工具链生成编译器内嵌部件的API
11.crypto.h:定义各种加载算法.对给定的数据进行各种hash运算并进行存储,或者对数据进行校验.源码在eos/libraries/chain/wasm_interface.cpp中实现
12.db.h:用于和区块链数据库交互的API接口,db.h函数都在eos/libraries/chain/wasm_interface.cpp中的database_api类中定义,部分直接定义,部分采用宏定义,源码实现在eos/libraries/chain/apply_context.cpp中.提供了数据库的存储与查询的基本功能.其中使用的数据是controller类中定义的数据,在这里只是一个引用
13.system.h:定义用于与系统级内部函数进行交互的API,如系统时间函数和静态断言的定义
14.permission.hpp与permission.h:用来检测事务相关权限,在eos/libraries/chain/wasm_interface.cpp的permission_api类中实现,事务提交时需要检验执行者的权限都在这里.具体的校验通过与controller定义的数据库比对实现
15.privileged.hpp与privileged.h:实现系统相关的授权,定义特权用户的各种资源限制,事务相关参数,块相关参数及数据传输时间间隔的各种限制
16.asset.hpp:定义帐户资产,即用一个int64_t表示资金,用symbol_type表示单位(目前被定义为SYS)
17.currency.hpp:定义有关货币(Token),所有有关货币的创建,发行,转账,余额查询都在这里实现
18.datastream.hpp:定义数据流操作,可以把自定义的类的数据成员放到vector<char>中,需要时可以再次读取出来,方便数据的传输
19.fixed_key.hpp:用于将固定大小key按键按字典顺序排序,使用数据成员std::array<word_t,num_words()>实现
20.fixedpoint.hpp:是32/64/128/256位版本的不动点变量
21.optional.hpp:表示可选类型,与boost:optinal基本一致
22.producer_schedule.hpp:表示生产者(出块者)计划表
23.public_key.hpp:公钥相关的数据
24.reflect.hpp:是c++实现的反射器,带有大量的宏
25.serialize.hpp:实现序列化宏,可以对有关数据进行序列化
26.singleton.hpp:用于实现单例模式的封装,也存储在multi_index中
27.symbol.hpp:用于定义代币符号,规定为SYS
28.time.hpp:用于与时间相关的数据,类似于boost中的实现
29.transaction.hpp与transaction.h事务相关,主要是对action用vector封装,另外,对nsaction的数据传输也做了各种限制,如预期时间,带宽,CPU算力,延迟传输等.还有一个get action函数的实现,可以获取当前区块相关的数据
30.varint.hpp:定义整型,在datastream中有应用
31.vector.hpp:定义字节数组
发表评论
-
eos快照
2019-10-06 08:31 387快照:为区块链提供临时 ... -
eos待确认/分叉库
2019-10-05 08:32 259fork_database:管理了轻量级状态数据,是由未确认的 ... -
eos controller概述
2019-10-03 17:28 298EOS中的模型层是blocks.log和基于chainbase ... -
eos multi_index
2019-10-03 09:01 285EOS的数据库就是chainbase,而调用数据库服务的C++ ... -
eos chainbase状态库
2019-10-01 08:03 442chainbase:是一个快速包含 ... -
eos action
2019-09-28 17:18 186action:在EOS中,action被分配到对应程序(一般是 ... -
eos事务结构
2019-09-28 16:34 401transaction_header:事务头的数据大小是固定的 ... -
eos区块头结构
2019-09-28 08:54 288block_header:区块头 struct block ... -
eos rpc set
2019-09-26 19:27 286set contract:设置合约 xjdeMacBook- ... -
eos rpc create
2019-09-26 19:18 2581.创建公私钥对 xjdeMacBook-Pro:safeco ... -
EOS blocks.log
2019-09-26 07:40 373区块数据通过blocks.log与blocks.index持久 ... -
引用区块
2019-09-25 07:26 314trx.set_reference_block(ref_blo ... -
EOS事务
2019-09-24 07:36 357调用函数add_standard_transaction_op ... -
全节点搭建
2019-09-22 09:34 2681.通过system regproducer命令可将普通账户注 ... -
eos名词解释
2019-09-14 09:34 6631.Authority:权力,要与Permission做好区分 ... -
智能合约依赖库
2019-08-29 07:32 370Action:这部分定义了查询或发送action的API.在E ... -
eos_rpc_system资源获取
2019-08-21 07:39 373资源主要有CPU,net bandwidt ... -
eos_rpc_sign
2019-08-21 07:22 246sign [OPTIONS] transaction:完成EO ... -
eos_rpc_wallet
2019-08-20 07:31 3231.wallet create [OPTIONS]:创建一个新 ... -
eos_rpc_get
2019-08-18 08:38 2971.get info:通过指定全节点API接口获取其连接的EO ...
相关推荐
合约开发涉及的关键库包括`eosiolib`,它提供了与区块链交互的基本功能。 2. **合约生命周期**:包括部署、升级和删除合约。开发者需要理解如何在合约中定义构造函数、析构函数以及合约状态的管理。 3. **行动与...
qt-opensource-mac-x64-5.12.12.zip.003
1、文件内容:gnome-getting-started-docs-es-3.28.2-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnome-getting-started-docs-es-3.28.2-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
西门子200smart PLC与触摸屏飞剪程序:专业设计与图纸集成,飞锯追剪程序,PLC和触摸屏采用西门子200smart,包含图纸,触摸屏程序和PLC程序。 ,核心关键词:飞锯追剪程序; 西门子200smart; PLC程序; 触摸屏程序; 图纸; 追剪控制。,"西门子200smart驱动的飞锯追剪程序:全图、触摸屏与PLC集成方案"
该工具主要实现jar包目录共享
S7700智能路由交换机(以下简称S7700)是华为公司面向下一代企业网络架构而推出的新一代高端智能路由交换机。该产品基于华为公司智能多层交换的技术理念,在提供稳定、可靠、安全的高性能L2/L3层交换服务基础上,进一步提供MPLS VPN、业务流分析、完善的QoS策略、可控组播、资源负载均衡、一体化安全等智能业务优化手段,同时具备超强扩展性和可靠性。 S7700广泛适用于园区网络和数据中心网络,可对无线、话音、视频和数据融合网络进行先进的控制,帮助企业构建交换路由一体化的端到端融合网络。 S7700产品为满足不同用户的需求,同时提供S7703、S7703 PoE、S7706、S7706 PoE、S7710和S7712六款产品类型,用户可以根据不同的网络需求进行灵活的选择。
1、文件内容:gimp-help-ca-2.8.2-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gimp-help-ca-2.8.2-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
OMRON PLC CJ2M项目案例:昆仑通泰触摸屏下的模拟量称重与SCU串行通信,巧妙控制三菱变频器之MODBUS RTU协议转换实现纪实,OMRON大型PLC CJ2M项目案例,配套昆仑通泰触摸屏程序 包含模拟量称重模块,SCU串行通讯模块,通过CMND指令把Fins协议转为MODBUS RTU 控制32台三菱 D720S变频器,画面复杂,程序设计巧妙,功能块结构,完整项目程序,有喜欢OMRON程序的朋友值得学习借鉴 ,OMRON PLC; CJ2M项目; 配套昆仑通泰触摸屏程序; 模拟量称重模块; SCU串行通讯模块; Fins协议转换MODBUS RTU; 三菱D720S变频器控制; 画面复杂程序设计; 功能块结构; 完整项目程序。,OMRON CJ2M PLC项目案例:多模块协同控制32台变频器程序解析
1、文件内容:gjs-tests-1.52.5-1.el7_6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gjs-tests-1.52.5-1.el7_6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:gnome-keyring-3.28.2-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnome-keyring-3.28.2-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
高斯光驱动下的双线银表面等离激元(SPP)效应研究,高斯光激发双线银SPP。 ,关键词:高斯光激发; 双线银; SPP; 信号处理; 物理性质; 电磁响应。,高斯光激发双线银表面等离激元(SPP)研究
内容概要:本文档为医学统计学期末试题,旨在测试学生对统计分析方法的理解及运用能力。主要内容涵盖从描述性统计分析、概率分布、参数估计、假设检验、非参数检验、方差分析到回归分析等多个方面的统计技术和应用场景。通过具体问题设定指导考生如何正确选择检验方法、计算相关参数、绘制图形、解释统计结果的实际含义,并强调使用R、Matlab或Python进行数据分析和编程解决问题的能力。同时,试题还特别关注对统计推理的应用价值,例如,要求考生提供关于统计决策背后生物学或者医疗实践中合理的解释。 适合人群:医学院校的学生尤其是即将修完《医学统计学》课程的大二或大三学生,同时也适用于从事医学研究领域的工作者。 使用场景及目标:此试题用于期末考试评估目的,帮助老师了解学生对理论知识掌握情况及应用技能;对于学生而言,它不仅是一次复习工具也是一种练习平台,在备考过程中能深化理解医学背景下的统计思维方式。 其他说明:试卷结构严谨,题目类型多样,覆盖广泛但深度适中,既考察基础知识又训练复杂问题解决技巧,为未来从事科研工作奠定坚实基础。另外,附上了详细的评分标准以便公平评判每一位考生的表现。
1、文件内容:gnome-common-3.18.0-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnome-common-3.18.0-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:29页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:配套答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借Spring Boot框架搭建后台。前台采用支持HTML5的VUE框架。用MySQL存储数据,可靠性强。 能学到什么: 使用Spring Boot搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。
内容概要:本文档展示了一个用Python编程语言编写的简单按摩机器人的控制器代码,它能够模拟不同类型的按摩手法并对其进行管理,其中包括四种标准按摩模式——推拿、揉捏、拍打和震动,同时也允许对强度级别和持续时间进行个性化设定。该系统是通过控制台上的人机交互界面来进行参数配置的,并通过一个简易的命令行日志系统提供反馈。此外,文档指出,在真实的物理设备里,还需要加入对于底层机电设备的具体控制指令。 适合人群:对于有兴趣学习智能家庭健康设备开发或是对机器人动作控制感兴趣的开发者来说非常有用,尤其适用于希望快速入门按摩机械人控制领域的初学者或有一定经验的程序员。 使用场景及目标:此教程主要用于教育目的,目的是让用户了解如何构建简单的机器人按摩控制系统;它也可作为研究原型或概念验证工具,用于指导实际产品的早期设计阶段。除此之外,还可以作为编程教学案例,用来教授面向对象的概念和条件判断语句的应用。 其他说明:尽管这里提供的例子比较简单,但它已经涵盖了完整的机器人控制流程的关键要素,并为进一步的发展留下了足够的空间,比如集成温度控制特性或支持更多样化的按摩技术。如果读者希望深入探索这个领域,则可以根据自身需要添加新的特性和功能模块。
愿意赌上一切吗?来吧!
pycharm跑yolov遇到的问题记录
江苏省公共数据授权运营管理暂行办法.docx
1、文件内容:google-noto-sans-kannada-ui-fonts-20141117-5.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/google-noto-sans-kannada-ui-fonts-20141117-5.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
无感FOC电机三相控制高速吹风筒方案详解:高效率、低噪音、低成本,AC220V 80W功率输出,最高转速达20万RPM,支持按键调试,原理图及PCB软件代码齐全。,无感FOC电机三相控制高速吹风筒方案 FU6812L+FD2504S 电压AC220V 功率80W 最高转速20万RPM 方案优势:响应快、效率高、噪声低、成本低 控制方式:三相电机无感FOC 闭环方式:功率闭环,速度闭环 调速接口:按键调试 提供原理图 PCB软件代码 ,关键词: 无感FOC电机; 三相控制; 高速吹风筒; 方案优势; 响应快; 效率高; 噪声低; 成本低; 电压AC220V; 功率80W; 最高转速20万RPM; 控制方式; 功率闭环; 速度闭环; 调速接口; 按键调试; 原理图; PCB软件代码; FU6812L+FD2504S。,基于无感FOC控制的高速吹风筒方案:FU6812L+FD2504S 20万RPM高效低噪风机