摘要:如果出错,需要查看一下本地节点是否正在运行,在浏览器输入后记完至此,本地的开发环境基本搭建完成,如果你想试试在本地环境编写部署调用智能合约,可以参考官方开发文档,当然,后续有时间,我也会把在智能合约开发过程中踩到的坑写写。
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 将出现如下图。
由于区块链的复杂性,不管是 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_info3、创建一些密钥
在 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(" 私钥: "+priKey); console.notice("公钥: "+pubKey+" "); }
然后打开一个新的终端,进入 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 文件夹下的内容很值得你去研究。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/99444.html
阅读 1431·2021-11-24 09:39
阅读 1733·2021-11-22 15:25
阅读 3645·2021-11-19 09:40
阅读 3235·2021-09-22 15:31
阅读 1250·2021-07-29 13:49
阅读 1158·2019-08-26 11:59
阅读 1276·2019-08-26 11:39
阅读 890·2019-08-26 11:00