美文网首页
制作追踪器 - 了解#1插件的作用/结构

制作追踪器 - 了解#1插件的作用/结构

作者: eosBLACK | 来源:发表于2018-10-01 09:41 被阅读97次

    制作追踪器

    -了解#1插件的作用/结构

    大家好,我们是eosBLACK团队。

    这次的第4篇开发日志对于eosBLACKK团队来讲意义重大。

    eosBLACK开发的MySQL插件已在EOSIO开发商,即Block.one的开发资源共享网站Github上注册,eosBLACK从而成为了EOSIO的投稿者(Contributor)。eosio介绍过的插件中,eosBLACK开发的MySQL插件属亚洲首次,全球第五,我们认为这是对eosBLACK团队开发能力的认可,其意义重大。

    这次报告的主题是用eosBLACK开发的MySQL插件“制作追踪器”,共分为3篇进行连载。通过这次连载,我们也期待能够加深对EOSIO软件结构的理解。今天的第一篇先讲一下EOSIO插件的作用是什么、是什么结构。

    什么是插件?

    插件对开发者而言很熟悉,也经常使用,在这里就做一下简单的说明。在编程中,插件是在原来的功能上增加特定功能的软件构成要素,比如我们常见的插件就有浏览器中的Adobe Flash Player。也就是说,插件是为了在主程序上使用某种特定功能而增加的软件。

    EOSIO插件的作用

    但EOSIO的插件除了作为主软件,也起到增加特定功能的作用。为了浏览EOSIO的nodeos,看一下“eosio/programs/nodeos”路径,只有一个“main.cpp”文件。打开这个文件可以看到EOSIO的各种插件。也就是说,所有功能都用插件进行了结构化、模块化。看一下main.cpp的main()函数就能理解这句话是什么意思了。                

    就像上面的代码,通过main()函数可进行插件的初始化作业。包括必备插件chain_plugin、producer_plugin在内,可以看到http_plugin、net_plugin等会被初始化。之后执行app().startup()语句就能执行各插件的startup(),节点开始驱动。        

    了解EOSIO 插件

    EOSIO非常亲切地告诉您如何创建插件,可用“eos/plugin”目录内的“eosio-make_new_plugin.sh”来创建插件类。

    同上执行单元脚本,可以同时创建如下所示的2个文件夹和名为$pluginName的目录。

    $pluginName/include/eosio/$pluginName/$pluginName.hpp$pluginName/$pluginName.cpp

    这个插件模板是复制了“eosio/plugins/plugin_template”目录内的2个文件,头文件的内部如下。

    如同通过main.cpp文件代码所见,plugin_initialize()是执行app().initialize()函数时,plugin_startup()是执行app().startup()语句时执行的部分。在 plugin_initailize()部分,包括了执行nodeos时需要确认和处理参数的内容。为方便理解,可以参考一下其他插件,例如可以参考一下mongo_db_plugin等。            

    有关具体的表现内容,并不是_plugin类,而是另外制作_plugin_impl类来进行表达。插件的开发有多种表现方式,但如需使用nodeos的数据,可参考下面的信号。

    上面是这个信号中容易理解的4个信号。如果按照节点的动作顺序,分别是applied_transaction、accepted_transaction、accepted_block、irreversible_block顺序。可确认在事务的接收、块创建接收、之后块转变成不可逆块的过程中出现的数据,如要给nodeos增加某些功能或使用nodeos生成的数据可以考虑开发插件。

    1.1.x版本之前资源内包括了插件,但1.2.x版本以后插件则是另行(additional)开发,构建方法也有所改变,并不包括在EOSIO的资源内。改变后的构建方法如下。          

    EOSIO 1.2.X 以前

    在EOSIO资源内创建插件目录后,如下修改构建脚本后打包进来。

    EOS 1.2.x 以后

    如下所示,eosio_build.sh文件夹上增加一个下面的变量就完成了构建准备。       

    执行nodeos时,如要把插件打包进去,增加选项就可以。      

    到这里,对EOSIO上的插件的作用和结构、打包到nodeos的方法做了简单的说明。下次将会介绍如何制作插件。

    eosBLACK Contact

    eosBLACK Homepage : http://eosblack.io

    eosBLACK Koreos : http://koreos.io/eosBLACK

    eosBLACK Medium : https://medium.com/@eosblack

    eosBLACK steemit : https://steemit.com/@eosblack

    eosBLACK Facebook : https://www.facebook.com/eosBLACKTeam

    eosBLACK twitter : https://twitter.com/EOSBLACK_IO

    eosBLACK Telegram(Korean) : https://t.me/eosBLACK_Korea

    eosBLACK Telegram(English) : https://t.me/eosBLACK_English

    White Paper (Chinese) : https://bit.ly/2PWHiIu

    White Paper (Korean) : http://bitly.kr/nap2

    White Paper (English) : http://bitly.kr/MOsA

    相关文章

      网友评论

          本文标题:制作追踪器 - 了解#1插件的作用/结构

          本文链接:https://www.haomeiwen.com/subject/snzgoftx.html