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 文件夹下的内容很值得你去研讨。