引言

EOS的智能合约采用C++ 编写,因为C++ 的高效性,没有C++ 编程基础的同学可以先学习《Efficient&Elegant:Java程序员入门Cpp》。EOS中用户开发的应用程序或代码都是通过WebAssembly(WASM)来与主链进行交互的,它的编译工具是clang.llvm。关于EOS相关的基础准备请先过目《区块链3.0:拥抱EOS》,这里面介绍了包括EOS概念,安装部署以及工具等基础内容,其中包括了上面提到的《开启一个私有链》。这里还有一些准备知识需要过目:

智能合约之间的交互通过action和共享数据文件

这个共享数据文件在我本机的位置是.local/share/eosio/nodeos/data/shared_mem,随着节点挖矿运行的时间越来越久,这个目录下的数据文件也越来越大。一个合约可以异步只读访问另一个合约的共享数据文件。针对其他读取权限,通过资源限制算法可以有效避免异步通信结果失真的问题。

合约之间的两种交互模式:

内联,意思就是直接采用内部函数体发起,调用其他函数的方式。这可以保证交易无阻碍执行,不必通知外部失败或者成功结果,同时内联也可保证交易始终处于同一作用域以及权限。延迟,通过生产者的判定来决定延后按时执行,可能会发生timeout的问题,但是这种方式可以跨多个作用域工作,并且可以携带着发送给它的合约权限。

action和transaction:

action是一个动作,账户和合约交互是通过action,可以单独发送一个action。Transaction是一组动作。所有action都必须成功,该Transaction才会成功接收到交易哈希表示节点成功接受了这个交易,也意味着其他生产者也有很大可能接收它。交易验证需要通过查看已打包区块中含有的交易历史来确定。

下载EOS环境搭建和启动节点

这一步比较简单。只要是EOS网站下载就好了。

EOS环境的搭建和节点启动分为以下两步:

第一步:用Git克隆,下载EOS的源代码

使用命令:

git clone https://github.com/EOSIO/eos --recursive

下载源代码,速度会根据网络情况而定。下载编译对计算机内存要求最少要有8GB。

编译EOS

你可以运行下面脚本,直接编译EOS

cd eos

./eosio_build.sh

安装可执行文件

为了便于合同开发,可以使用make install目标将内容安装在/ usr / local文件夹中。 此步骤从build文件夹运行。 安装需要足够的许可。

执行如下命令

cd build

sudo make install

下载编译之后,里面有三个应用程序,这三个应用程序也都是命令行的,这三个应用程序之间有什么关系呢?我们现在使用的前端,怎么使用EOS呢?

1、Cleos(cli+eos =Cleos)它是一个命令行程序。在前端使用EOS是通过Cleos输入命令,给EOS下达指令。

2、Nodes(Node + eos=Nodes)其实它就是挖矿客户端。在启动Nodes之后,它自然就会产生区块。

3、Keosd(key + eos = Keosd)它是在后端启动。它的目的主要是管理钱包,可以创建私钥。

为什么会有Nodeos和Keosd?

Keosd是轻钱包的客户端,你可以不启动nodes挖矿,就可以管理钱包。

第二步:节点启动

cd build/programs/nodeos

./nodeos -e -p eosio --max-transaction-time=1000 --plugin eosio::wallet_api_plugin --plugineosio::chain_api_plugin --plugin eosio::account_history_api_plugin --plugin eosio::producer_plugin --plugin eosio::net_plugin

#-e 启动为生产者

#-p eosid 启动生产者名称

或者在/.local/share/eosio/nodeos/config文件夹下的config.ini文件中配置

配置这个选项为true,启动为生产者节点

#Enable block production, even if the chain is stale. (eosio::producer_plugin)

enable-stale-production = true

配置这个选项,配置生产者名称

# ID of producer controlled by this node (e.g. inita; may specify multiple times) (eosio::producer_plugin)

producer-name = eosio

配置为启动模式下加载下面的插件

# Plugin(s) to enable, may be specified multiple times

plugin = eosio::wallet_api_plugin

plugin = eosio::chain_api_plugin

plugin = eosio::history_api_plugin

plugin = eosio::http_plugin

plugin = eosio::producer_plugin

plugin = eosio::net_plugin

如果这样配置插件,可以使用如下命令启动node节点

cd build/programs/nodeos

./nodeos

整个EOS是插件式结构,需要有一个主程序,其它像钱包管理、区块链等都是一个插件。

输入上边命令后启动了一个节点,同时启动了一些插件,会打印一些基本信息,以及挖矿的信息。

c++ eos智能合约开发_干货|EOS智能合约开发(一)EOS环境搭建和启动节点相关推荐

  1. c++ eos智能合约开发_十分钟教你开发EOS智能合约

    EOS环境搭建和启动节点 下面从EOS入门的环境搭建.编译运行一个智能合约.发送一些Aigsen,给大家做一些展示,希望能让非技术人员也有一些收获. 首先下载EOS环境搭建和启动节点.这一步其实还是比 ...

  2. Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121458516 长期持续项目技术分享,Shang业Di ...

  3. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121314575 长期持续项目技术分享,Shang业Di ...

  4. 如何学好python web开发_如何学好python web开发

    1.前言 我在没有接触互联网这个行业的时候,就一直好奇网站是怎么构建的.我现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,不过兴趣终归还是要有的,还要自己动手去实践的.Web开 ...

  5. 小程序云开发_借助小程序云开发制作校园导览小程序丨实战

    导语 偌大校园,寻路犯难.没关系!本文教你借助云开发制作精美校园导览小程序,带你走遍校园的每个角落,发现不一样的风景. 背景 刚入学的新生要想不迷失在偌大的校园,除了依靠不怎么可靠的路边标识外,总会收 ...

  6. 第七章 前端开发——前端工程化(NPM、脚手架、前端环境搭建)

    第七章 前端工程化(NPM.脚手架.前端环境搭建) 一.支持环境 二.NPM包管理工具 三.Vue生成器 四.前端的集成环境 五.项目目录结构 六.前端Vue框架与后端Django框架的简单交互 一. ...

  7. 普罗米修斯监控系统_基于Prometheus和Grafana的监控平台 - 环境搭建

    导读 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics. Logging - 用于记录离散的事件.例如,应用程序的调试信息或错误信息.它是我们诊断问题的依据.比如 ...

  8. 第一节:linux 开发AI算法以及libtorch部署算法详细教程-环境搭建

    文章目录 linux 开发AI算法以及部署算法详细教程 linux docker环境搭建 参考example-docker libtorch 安装教程 opencv 安装教程 编译过程 测试开发环境示 ...

  9. 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建、NFS、TFTP服务配置及Nandflash的读写

    bootloader原理和开发-->kernel构建-->文件系统/根文件系统(filesystem/rootfs) APP 一.配置交叉编译环境(可参考嵌入式Linux移植与驱动开发co ...

最新文章

  1. android调小边框距离,RecyclerView Item 的分割线 距边框距离问题总结
  2. Acwing第 31 场周赛【完结】
  3. qt 背景和控件布局_Qt控件背景图片设置总结
  4. SetFormFullScreen()窗体全屏显示
  5. C# 格式化字符串 String.Format
  6. lombok的使用三部曲及使用中遇到的问题(持续更新)
  7. IOS资源丰富的听书软件<白鲨听书>
  8. 深入理解Java虚拟机(第三版)-13.Java内存模型与线程
  9. 百行代码解读阿里 AloT 芯片平台无剑 100!
  10. 7个等级 容灾等级_在餐厅吃饭竟是7级风险!最新社交风险等级出炉!
  11. MacBooster 8 Pro for Mac(系统清理优化软件)
  12. Java多线程系列--“JUC集合”
  13. MATLAB求解分段函数
  14. 3dmax导入REVIT
  15. 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  16. 手动解析App dSYM示例
  17. 简单新闻客户端APP设计
  18. epcs1s是epcs1系列的么_fpga的EPCS 配置的2种方法 FPGA下载程序的方法(EPCS)
  19. 编程-----相反数求解算法
  20. thinkphp6事件监听event-listene

热门文章

  1. Ext.data.GroupingStore
  2. 不能记账,往来帐页不能显示结转数据
  3. Mybatis传多个参数(推荐)
  4. 大型网站技术架构(2):架构要素和高性能架构
  5. FRM-40212: set_item_property:ITEM_IS_VALID
  6. 云数据未来面临的问题
  7. Android拖拽图片的实现
  8. OpenGL中的混合(Blending)
  9. 两表格合并_使用 Python 合并多个格式一致的 Excel 文件
  10. 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!