FIBOS是什么?

FIBOS 是一个结合 FIBJS 以及 EOS 的 JavaScript 的运行平台,它使得 EOS 提供可编程性,并允许使用 JavaScript 编写智能合约。FIBOS 平台的出现让第三代 EOS 智能合约编程变得简单、快捷!其项目官网为 https://fibos.io/

简单地说,你可以在 FIBOS 这个平台上,使用 JS 语言来发行Token、控制区块节点运行、以及编写、部署、调用智能合约等操作,相比 EOS 使用 C/C++ 开发部署智能合约,具有更低的开发门槛。

FIBOS 可以运行在 Mac OS X,Linux 和 FreeBSD 系统中,所以要基于 FIBOS 平台开发区块链应用,首先得确保你的操作系统是这三种之一,并且已经安装好 node.js 和 npm ,相关的安装教程自行网上寻找即可。

1、快速安装稳定版的FIBOS

在终端中执行以下命令即可,版本更新也是使用这条命令。

curl -s https://fibos.io/download/installer.sh | sh

如果安装成功,在终端输入 fibos 将出现如下图。

2、一键安装开发环境

由于区块链的复杂性,不管是 EOS 还是 FIBOS 搭建开发环境都比较繁琐,不过 FIBOS 官方已经提供了一个一键搭建本地开发环境的工具,我们执行以下命令将其从 GitHub 下载下来。

git clone https://github.com/FIBOSIO/fib-testnet.git

接着进入 fib-testnet 文件夹,执行安装相关的包依赖即可,依次执行以下两条命令,如下图。

cd fib-testnet
npm install

可以先尝试启动一下,在 fib-testnet 目录执行以下命令,如果成功,将会开始出块,如下图。

fibos index.js dev

大概在40秒后,BP同步节点开始运行,此时执行以下命令,或在浏览器输入 http://127.0.0.1:8801/v1/chain/get_info 获得当前区块的信息。在本出块终端按 Ctrl+C 或新开一个终端中执行 killall fibos 即可关闭 FIBOS 节点运行,当然,我们目前先不关闭着,下面还要用。

curl http://127.0.0.1:8801/v1/chain/get_info

3、创建一些密钥

在 FIBOS 或 EOS 中,一个有效的账户,需要绑定至少一个公钥,因此,我们在创建开发账户之前,需要先创建一些密钥对。在 fib-testnet 文件夹中,新建一个 init 文件夹,然后再新建一个 generate.js 文件,输入以下JS代码。

var FIBOS = require('fibos.js');var priKey, pubKey;for (var i=0; i<3; i++) {priKey = FIBOS.modules.ecc.randomKeySync();pubKey = FIBOS.modules.ecc.privateToPublic(priKey);console.notice('\n私钥: '+priKey);console.notice('公钥: '+pubKey+'\n');
}

然后打开一个新的终端,进入 fib-testnet/init/ 文件夹中,执行 fibos generate.js ,即可如下图获得随机生成的3组密钥对。

4、创建一些账号,并转入一些 FO Token

有效的 FIBOS 账户名和 EOS 类似,都必须是由 12345.abcdefghijklmnopqrstuvwxyz 组成,且长度小于等于12个字符串。其中小于12个字符串的账户名由系统的智能合约控制,需要竞价获得。为了方便,我们这里使用12个字符串长度作为账户名,分别是 computer1111、computer1112、computer1113,同时分别对应以上三组密钥对。

进入 fib-testnet/init/ 文件夹中,新建一个 init.js 文件,输入以下 JS 代码,用于创建3个账户,密钥对最好自行修改一下。

var config_dev = require('../common/config_dev.json');
var fibossystems = require('../common/fibossystems');
var systems = require('../common/systems');
var config = require('../config.json');
var FIBOS = require('fibos.js');// 你可以在以下 accounts 这个对象里,增加或修改自己喜欢的FIBOS账户,密钥对最好自行修改一下
var accounts = {"computer1111": {"priKey": "5K3HGUKEwapH1GFrHjhtgr5sbqkLnFHrZL3ddR6v7FgrYetnQ2a","pubKey": "FO5Xx9fdHUgCEe5huzedVGE2PTewhVsdNCcTg3cNeWN6KPVRF738"},"computer1112": {"priKey": "5JiU8Tzgv87Wx79mrmdkGjbaom1eAqxTQeGSoC63sziQ8eexRA8","pubKey": "FO5Au67waA8UN9xfieK3KPGSX2jRzRRvFNvPhsBvtejGcXbA8UwG"},"computer1113": {"priKey": "5J5i5mtXep7fdHNYWjP9XpoZ2srFgE24r1GTHvTt9sU1BMPqby3","pubKey": "FO6UYUU63Q4rFsbFV8KQLQivYyyUmU45fiCdv1D8nouXicooSsqr"}
};function initClient(_keyProvider, _httpEndpoint, _chainId) {return FIBOS({chainId: config.chainId,keyProvider: _keyProvider || null,httpEndpoint: _httpEndpoint || config_dev.httpEndpoint,logger: {log: null,error: null}});
}var client, res, ctx;client = initClient(systems.concat(fibossystems).map(function(d) {return d.private_key;
}));// 创建账户
client.transactionSync(tr => {for (account in accounts) {// 创建账户tr.newaccount({creator: 'fibos',name: account,owner: accounts[account].pubKey,active: accounts[account].pubKey}, {authorization: 'fibos'});// 购买内存tr.buyrambytes({payer: 'fibos',receiver: account,bytes: 1024 * 1024 * 2}, {authorization: 'fibos'});// 抵押 FO 获得 NET、CPU 资源tr.delegatebw({from: 'fibos',receiver: account,stake_net_quantity: '100.0000 FO',stake_cpu_quantity: '100.0000 FO',transfer: 1}, {authorization: 'fibos'});console.notice('created '+account);      }},{authorization: 'fibos'
});console.notice('');// 转 10000.0000 FO 到一些账户中
ctx = client.contractSync('eosio.token');for (account in accounts) {ctx.extransferSync('fibos', account, '10000.0000 FO@eosio', 'FO to '+account, {authorization: 'fibos'});   console.notice('extransfer 10000.0000 FO@eosio to '+account);
}console.notice('');

进入 fib-testnet/init/ 文件夹中,执行 fibos init.js ,如下图,即完成 computer1111、computer1112、computer1113 账户的创建,同时每个账户拥有 10000 FO 余额了,可以用来做各类转账、兑换测试。如果出错,需要查看一下本地 fibos 节点是否正在运行,在浏览器输入 http://127.0.0.1:8801/v1/chain/get_info

5、后记(完)

至此,本地的 FIBOS 开发环境基本搭建完成,如果你想试试在本地环境编写、部署、调用智能合约,可以参考 FIBOS 官方开发文档,当然,后续有时间,我也会把在 FIBOS 智能合约开发过程中踩到的坑写写。如果想了解 FIBOS 主网是如何启动的,启动顺序是怎样一个过程,节点编程时遇到的问题,那么这个 fib-testnet/lib 文件夹下的内容很值得你去研究。

FIBOS入坑指南——本地开发环境搭建相关推荐

  1. DolphinScheduler本地开发环境搭建

    DolphinScheduler本地开发环境搭建 Apache DolphinScheduler 关于DolphinScheduler 简单易用 高可靠性 丰富的使用场景 高扩展性 前置条件 克隆代码 ...

  2. 极智开发 | 阿里云ECS本地开发环境搭建

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   大家好,我是极智视界,本文介绍一下 阿里云ECS本地开发环境搭建.   之前介绍过华为云的开发环境搭建,有兴趣的同学可以移步我的这篇&l ...

  3. 极智开发 | 华为云ECS本地开发环境搭建

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   大家好,我是极智视界,本文介绍一下 华为云ECS本地开发环境搭建.   云 上的 AI 应用部署,一定是 AI 应用部署的重要分支.云( ...

  4. uniapp调用c语言方法,uni-app 入坑指南-web开发

    编辑推荐: 本文重点介绍了 uni-app 入坑指南,方便大家更好的了解 uni-app 本篇只讲述 uni-app,不与其他类似框架进行对比 本文来自于博客园,由火龙果软件Alice编辑推荐. 什么 ...

  5. 我的 Serverless 实战 — 云函数本地开发环境搭建

    文章目录 一.CloudBase CLI 开发环境 二.Node.js 安装 三.CloudBase CLI 安装 四.CloudBase CLI 关联腾讯云账号 五.使用本地开发环境创建云函数 六. ...

  6. 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建向社区贡献代码

    加入OpenStack社区 https://launchpad.net/,注册用户(597092663@qq.com/Admin@123) 修改个人信息,配置SSH keys.OpenPGP keys ...

  7. Redash本地开发环境搭建

    开发环境搭建步骤 建议使用mac和ubuntu系统,同事刚开始使用windows安装,过程中遇到很多问题,临时改用ubuntu系统,本文适用mac和ubuntu系统. 1.github获取代码及安装需 ...

  8. Update 15.2 Dynamics 365 Business Central 2019 Release Wave 2 W1本地开发环境搭建报错问题-解决方法

    1.成功安装Update 15.2 Dynamics 365 Business Central 2019 Release Wave 2 W1后,NavServer已经启动,在VS环境中 搭建本地开发环 ...

  9. redash+mysql_Redash本地开发环境搭建

    开发环境搭建步骤 建议使用mac和ubuntu系统,同事刚开始使用windows安装,过程中遇到很多问题,改用ubuntu系统,本文适用mac和ubuntu系统. 官网建议使用虚拟机或Docker W ...

最新文章

  1. LeetCode简单题之使每位学生都有座位的最少移动次数
  2. vue element 导出blob后台文件流xlsx文件自动下载(且规避乱码)
  3. BCE或能成为BCH的一个侧链
  4. go 求两个时间相差的天数
  5. java取json对象的值_java的JsonObject对象提取值方法
  6. wetask.cn领度任务全新试用体验
  7. 装饰器模式在 Collections 类中的应用
  8. 大数据项目实训教学解决方案
  9. 【上班摸鱼系列】文字选择类游戏:《职员默示录 - 启》末日丧尸爆发,你,是什么下场!?
  10. oracle连续周数,oracle周数计算
  11. xp重启计算机的快捷键,xp电脑关机重启快捷键是什么
  12. R语言循环读取excel并保存为RData
  13. Android 自定义相机黑屏
  14. Qt中update()和repaint()的区别
  15. stm32设置延时函数
  16. 计算机辅助英语词汇教学,计算机与网络辅助大学英语词汇教学
  17. CrackMe160 学习笔记 之 044
  18. es文件创建局域网服务器,大神来教你XBMC和ES文件浏览器局域网共享
  19. 【上海赛区】2022数学建模国赛获奖名单公布
  20. 【BLE】广播数据包结构讲解,五颗蓝牙芯片对比

热门文章

  1. python公约数公倍数_python 公倍数,公约数问题
  2. html首页我的待办,我的待办.html
  3. Contiki介绍及参考资料
  4. 招聘网站的几个新控件(2)
  5. 论文阅读:Pointwise Convolutional Neural Networks
  6. jdk17下载详细步骤
  7. 自发和诱发电生理活动之间的动态关系
  8. 计算机基础及office办公软件应用,计算机基础及Office办公软件应用.pptx
  9. 解决Past duration X.XXXX too large警告
  10. React Native加载动画,lottie-web 将json解析成动画