1. 程式人生 > >FIBOS入坑指南——本地開發環境搭建

FIBOS入坑指南——本地開發環境搭建

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 將出現如下圖。
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組金鑰對。

生成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 [email protected]', 'FO to '+account, {
        authorization: 'fibos'
    });   

    console.notice('extransfer 10000.0000 [email protected] 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

建立3個賬戶

5、後記(完)

至此,本地的 FIBOS 開發環境基本搭建完成,如果你想試試在本地環境編寫、部署、呼叫智慧合約,可以參考 FIBOS 官方開發文件,當然,後續有時間,我也會把在 FIBOS 智慧合約開發過程中踩到的坑寫寫。如果想了解 FIBOS 主網是如何啟動的,啟動順序是怎樣一個過程,節點程式設計時遇到的問題,那麼這個 fib-testnet/lib 資料夾下的內容很值得你去研究。

相關推薦

FIBOS指南——本地開發環境搭建

FIBOS是什麼? FIBOS 是一個結合 FIBJS 以及 EOS 的 JavaScript 的執行平臺,它使得 EOS 提供可程式設計性,並允許使用 JavaScript 編寫智慧合約。FIBOS 平臺的出現讓第三代 EOS 智慧合約程式設計變得簡單、快捷!其

Flutter指南開發環境搭建

本文由 愛學園平臺 進行聯合編輯整理輸出 原作者:愛學園——莫比烏斯環 雖說Flutter出現有一段時間了,但大家對它的瞭解卻不是很深,但直到2018谷歌開發者大會在上海的召開,它才真正進入開發者的世界。Flutter的出現為跨平臺開發開闢了新的方向,但是與之相應

cozmo 日記及開發環境搭建

前幾日,朋友在群裡發了一個機器人的小視訊,視訊裡機器人可以對話,可以推箱子,開心以後會哈哈大笑,非常有趣。 詳細瞭解裡一下,這是個叫 cozmo 的智慧機器人,可以配合 SDK 用 python 程式設計,興趣一下子就來了,詢問了一下價格,閒魚500左右,順便跟同事看了一下,同事也感興趣,立馬下單買了2個。

跟我一起學Spark之——Windows10下spark2.3.0本地開發環境搭建-親測

相關元件版本: JDK1.8.0_171,hadoop-2.7.6,Spark-2.3.0,Scala-2.11.8,Maven-3.5.3,ideaIC-2018.1.4.exe,spark-2.3.0-bin-hadoop2.7 1.1  JDK1.8.0_171 a.&n

hadoop本地開發環境搭建

1:下載hadoop2.7.3並解壓 2:配置hadoop2.7.3環境變數 HADOOP_HOME %HADOOP_HOME%\bin 3:下載hadoop-eclipse-plugin外掛 網址:https://github.com/winghc/hadoop2x-eclipse-plugin

Spark本地開發環境搭建與遠端debug設定

快速看完《Spark大資料處理 技術、應用與效能優化》前四章後,對Spark有了一個初步的瞭解,終於踏出了第一步,現在需要在Spark叢集中做些測試例子,熟悉一下開發環境和開發的流程。本文主要總結了如何在本地使用Maven搭建開發環境以及如何進行遠端debug。由於採用的Spark是

小白帶你xamarin系列之環境搭建和準備

序言:移動端的跨平臺百花齊放,各種技術方案和方法都是層出不窮。目前xamarin確實是一套成熟可

Hadoop Intellij IDEA本地開發環境搭建

首先我們需要新建一個java工程用於開發Mapper與Reducer,同時我們也需要匯入hadoop的依賴包,這些包可以在hadoop的 share/hadoop 目錄下找到,你可以把這些包單獨取出來作為之後專案的備用。 開啟Project Structure

Spark SQL 本地開發環境搭建和案例分析

1_Spark APIs 的演變      Spark SQL,作為Apache Spark大資料框架的一部分,主要用於結構化資料處理和對Spark資料執行類SQL的查詢。通過Spark SQL,可以實現多種大針資料業務,比如對PG/TG級別的資料分析、分析預測並推薦、

mpvue本地開發環境搭建

將解壓檔案中server資料夾複製到專案跟目錄,並修改配置項在開發者工具中操作,第一次上傳勾選模組上傳,之後就勾選智慧上傳每次修改後需點選上傳部署,不方便一般搭建本地開發環境本地安裝mysql指南 https://cloud.tencent.com/document/prod

開發指南專題四 JEECG微雲快速開發平臺--JEECG開發環境搭建

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

android 開發環境搭建及原理,還有

花了一天時間,幾個東西終於通了。 android開發: 1.eclipse——————就是一個介面,一個殼,讓你來操作的,就像人的外表,不過他可以包很多東西進去(下面的東西他都包) 2.jdk————————這個是java程式設計的必須模組,用java開發,跑jav

給 Web 開發人員的以太坊指南

以太坊現在各種學習資料數不勝數,但由於以太坊正處於飛速發展階段,有些學習資料很快就過時了。所以想找到有價值的資料無異於大海撈針。我費了很大功夫,才建立起對以太坊的整體認識,搞清楚它的工作機制。我相信很多躍躍欲試的開發人員正面臨著跟我一樣的問題,所以我把自己的認識整理出來,希望能對大家有

ESP32_Lyrat開發環境搭建,安裝IDF與ADF,燒demo播放一段音訊

前言 前段時間入手了ESP32_Lyrat開發板,但是網上資料少之又少,經過自身一番摸索後完成了開發環境搭建以及demo燒錄,這裡僅作分享,做拋磚引玉之用,有錯誤之處望不吝賜教。 參考文件 開發環境 Windows(Linux步驟大致相同) 準備檔案

windows本地sparkstreaming開發環境搭建及簡單例項

windows本地spark開發環境搭建及簡單例項 1:開發環境IDEA選擇: IntelliJ IDEA Community Edition 2017.1.1  (相比eclipse更方便,不用裝那麼多外掛,且提供免費版,官網直接下載安裝就可以) 2:環境配置:(開發

Linux學習筆記6:linux C/C++開發環境搭建指南

Ubuntu中沒用自帶C/C++開發環境,需要使用者自己配置。在UBUNTU中文論壇中的一些帖子集合。 一、安裝基本開發環境 本人想學習一下Linux下的C,C++程式開發,這幾天一直在研究Linux下的C語言編譯環境的建立,因為新裝好的Ubuntu裡面缺少函式庫檔案

基於github搭建本地開發環境

以前寫過很多測試程式,但是程式碼在本地到處亂扔,也從來沒有歸整過,現基於github來維護自己的程式碼,這樣只要能連網,隨時就可以查了。 目標 配置SSH證書連線github 克隆github程式

以太坊本地私有鏈開發環境搭建

ethereum-bootstrap是我建立的一個github專案,目的是幫助剛接觸以太坊的同學快速的搭建起自己的本地開發環境,體驗智慧合約的開發。閱讀本文需要有基本的程式設計知識。專案地址:https://github.com/janx/ethereum-boots

React Native 一:開發環境搭建

[email protected]:~/AwesomeProject$ react-native run-android Starting JS server... Building and installing the app on the devi

Vue開發環境搭建全過程,一步一個

Vue這裡就不多作介紹了,首先我們要安裝好整個開發環境,其實Windows和Mac的整個過程基本一樣 開發環境: ( Mac的包管理神器 ) →  →  cnpm(淘寶映象,節省安裝時間) →  webpack →  vue-cli(vue腳手架) → IDE( Vue