摘要:如果出錯(cuò),需要查看一下本地節(jié)點(diǎn)是否正在運(yùn)行,在瀏覽器輸入后記完至此,本地的開發(fā)環(huán)境基本搭建完成,如果你想試試在本地環(huán)境編寫部署調(diào)用智能合約,可以參考官方開發(fā)文檔,當(dāng)然,后續(xù)有時(shí)間,我也會(huì)把在智能合約開發(fā)過程中踩到的坑寫寫。
FIBOS是什么?FIBOS 是一個(gè)結(jié)合 FIBJS 以及 EOS 的 JavaScript 的運(yùn)行平臺(tái),它使得 EOS 提供可編程性,并允許使用 JavaScript 編寫智能合約。FIBOS 平臺(tái)的出現(xiàn)讓第三代 EOS 智能合約編程變得簡(jiǎn)單、快捷!其項(xiàng)目官網(wǎng)為 https://fibos.io/
簡(jiǎn)單地說,你可以在 FIBOS 這個(gè)平臺(tái)上,使用 JS 語言來發(fā)行Token、控制區(qū)塊節(jié)點(diǎn)運(yùn)行、以及編寫、部署、調(diào)用智能合約等操作,相比 EOS 使用 C/C++ 開發(fā)部署智能合約,具有更低的開發(fā)門檻。
FIBOS 可以運(yùn)行在 Mac OS X,Linux 和 FreeBSD 系統(tǒng)中,所以要基于 FIBOS 平臺(tái)開發(fā)區(qū)塊鏈應(yīng)用,首先得確保你的操作系統(tǒng)是這三種之一,并且已經(jīng)安裝好 node.js 和 npm ,相關(guān)的安裝教程自行網(wǎng)上尋找即可。
1、快速安裝穩(wěn)定版的FIBOS在終端中執(zhí)行以下命令即可,版本更新也是使用這條命令。
curl -s https://fibos.io/download/installer.sh | sh
如果安裝成功,在終端輸入 fibos 將出現(xiàn)如下圖。
由于區(qū)塊鏈的復(fù)雜性,不管是 EOS 還是 FIBOS 搭建開發(fā)環(huán)境都比較繁瑣,不過 FIBOS 官方已經(jīng)提供了一個(gè)一鍵搭建本地開發(fā)環(huán)境的工具,我們執(zhí)行以下命令將其從 GitHub 下載下來。
git clone https://github.com/FIBOSIO/fib-testnet.git
接著進(jìn)入 fib-testnet 文件夾,執(zhí)行安裝相關(guān)的包依賴即可,依次執(zhí)行以下兩條命令,如下圖。
cd fib-testnet npm install
可以先嘗試啟動(dòng)一下,在 fib-testnet 目錄執(zhí)行以下命令,如果成功,將會(huì)開始出塊,如下圖。
fibos index.js dev
大概在40秒后,BP同步節(jié)點(diǎn)開始運(yùn)行,此時(shí)執(zhí)行以下命令,或在瀏覽器輸入 http://127.0.0.1:8801/v1/chain/get_info 獲得當(dāng)前區(qū)塊的信息。在本出塊終端按 Ctrl+C 或新開一個(gè)終端中執(zhí)行 killall fibos 即可關(guān)閉 FIBOS 節(jié)點(diǎn)運(yùn)行,當(dāng)然,我們目前先不關(guān)閉著,下面還要用。
curl http://127.0.0.1:8801/v1/chain/get_info3、創(chuàng)建一些密鑰
在 FIBOS 或 EOS 中,一個(gè)有效的賬戶,需要綁定至少一個(gè)公鑰,因此,我們?cè)趧?chuàng)建開發(fā)賬戶之前,需要先創(chuàng)建一些密鑰對(duì)。在 fib-testnet 文件夾中,新建一個(gè) init 文件夾,然后再新建一個(gè) 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+" "); }
然后打開一個(gè)新的終端,進(jìn)入 fib-testnet/init/ 文件夾中,執(zhí)行 fibos generate.js ,即可如下圖獲得隨機(jī)生成的3組密鑰對(duì)。
4、創(chuàng)建一些賬號(hào),并轉(zhuǎn)入一些 FO Token有效的 FIBOS 賬戶名和 EOS 類似,都必須是由 12345.abcdefghijklmnopqrstuvwxyz 組成,且長(zhǎng)度小于等于12個(gè)字符串。其中小于12個(gè)字符串的賬戶名由系統(tǒng)的智能合約控制,需要競(jìng)價(jià)獲得。為了方便,我們這里使用12個(gè)字符串長(zhǎng)度作為賬戶名,分別是 computer1111、computer1112、computer1113,同時(shí)分別對(duì)應(yīng)以上三組密鑰對(duì)。
進(jìn)入 fib-testnet/init/ 文件夾中,新建一個(gè) init.js 文件,輸入以下 JS 代碼,用于創(chuàng)建3個(gè)賬戶,密鑰對(duì)最好自行修改一下。
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 這個(gè)對(duì)象里,增加或修改自己喜歡的FIBOS賬戶,密鑰對(duì)最好自行修改一下 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; })); // 創(chuàng)建賬戶 client.transactionSync(tr => { for (account in accounts) { // 創(chuàng)建賬戶 tr.newaccount({ creator: "fibos", name: account, owner: accounts[account].pubKey, active: accounts[account].pubKey }, { authorization: "fibos" }); // 購買內(nèi)存 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(""); // 轉(zhuǎn) 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("");
進(jìn)入 fib-testnet/init/ 文件夾中,執(zhí)行 fibos init.js ,如下圖,即完成 computer1111、computer1112、computer1113 賬戶的創(chuàng)建,同時(shí)每個(gè)賬戶擁有 10000 FO 余額了,可以用來做各類轉(zhuǎn)賬、兌換測(cè)試。如果出錯(cuò),需要查看一下本地 fibos 節(jié)點(diǎn)是否正在運(yùn)行,在瀏覽器輸入 http://127.0.0.1:8801/v1/chain/get_info
5、后記(完)至此,本地的 FIBOS 開發(fā)環(huán)境基本搭建完成,如果你想試試在本地環(huán)境編寫、部署、調(diào)用智能合約,可以參考 FIBOS 官方開發(fā)文檔,當(dāng)然,后續(xù)有時(shí)間,我也會(huì)把在 FIBOS 智能合約開發(fā)過程中踩到的坑寫寫。如果想了解 FIBOS 主網(wǎng)是如何啟動(dòng)的,啟動(dòng)順序是怎樣一個(gè)過程,節(jié)點(diǎn)編程時(shí)遇到的問題,那么這個(gè) fib-testnet/lib 文件夾下的內(nèi)容很值得你去研究。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/99444.html
摘要:入坑指南是滴,下面是一個(gè)最低的入坑還應(yīng)該有種設(shè)計(jì)模式應(yīng)該掌握的。堆棧以幀為單位保存線程的狀態(tài),對(duì)堆棧的操作為壓棧和出棧執(zhí)行字節(jié)碼以后,將會(huì)產(chǎn)生程序計(jì)數(shù)器和棧,程序計(jì)數(shù)器存放將要執(zhí)行下一條指令的偏移量。 Java入坑指南是滴,下面是一個(gè)最低的入坑 還應(yīng)該有23種設(shè)計(jì)模式應(yīng)該掌握的。╮(╯▽╰)╭注意,第一個(gè)j是大寫。 Java的特點(diǎn)跨平臺(tái),風(fēng)格接近C++最重要的api文檔 https:/...
摘要:簡(jiǎn)介是一個(gè)結(jié)合以及的的運(yùn)行平臺(tái),它使得提供可編程性,并允許使用編寫智能合約。編寫的合約可以通過打包腳本,壓縮文件極大的降低部署發(fā)布成本。的合約使用編寫并且全部開源,方便社區(qū)審計(jì),迅速形成共識(shí)。 FIBOS 簡(jiǎn)介 FIBOS 是一個(gè)結(jié)合 FIBJS 以及 EOS 的 JavaScript 的運(yùn)行平臺(tái),它使得 EOS 提供可編程性,并允許使用 JavaScript 編寫智能合約。 Jav...
摘要:簡(jiǎn)介是一個(gè)結(jié)合以及的的運(yùn)行平臺(tái),它使得提供可編程性,并允許使用編寫智能合約。編寫的合約可以通過打包腳本,壓縮文件極大的降低部署發(fā)布成本。的合約使用編寫并且全部開源,方便社區(qū)審計(jì),迅速形成共識(shí)。 FIBOS 簡(jiǎn)介 FIBOS 是一個(gè)結(jié)合 FIBJS 以及 EOS 的 JavaScript 的運(yùn)行平臺(tái),它使得 EOS 提供可編程性,并允許使用 JavaScript 編寫智能合約。 Jav...
摘要:?jiǎn)?dòng)節(jié)點(diǎn)環(huán)境配置腳本創(chuàng)建文件夾,保存如下代碼至運(yùn)行開發(fā)環(huán)境運(yùn)行結(jié)果日志部分如果你看到了以上的消息,說明運(yùn)行成功,已經(jīng)開始區(qū)塊生產(chǎn)。 搭建一個(gè) FIBOS 開發(fā)環(huán)境需要安裝 fibos 和 fibos.js。 本章節(jié)示例代碼的目錄結(jié)構(gòu): hello_fibos/ ├── fibos_client │ ├── call.js //調(diào)用合約接口腳本文件 │ ├── initCli...
摘要:?jiǎn)?dòng)節(jié)點(diǎn)環(huán)境配置腳本創(chuàng)建文件夾,保存如下代碼至運(yùn)行開發(fā)環(huán)境運(yùn)行結(jié)果日志部分如果你看到了以上的消息,說明運(yùn)行成功,已經(jīng)開始區(qū)塊生產(chǎn)。 搭建一個(gè) FIBOS 開發(fā)環(huán)境需要安裝 fibos 和 fibos.js。 本章節(jié)示例代碼的目錄結(jié)構(gòu): hello_fibos/ ├── fibos_client │ ├── call.js //調(diào)用合約接口腳本文件 │ ├── initCli...
閱讀 1628·2021-11-24 09:39
閱讀 1921·2021-11-22 15:25
閱讀 3908·2021-11-19 09:40
閱讀 3440·2021-09-22 15:31
閱讀 1451·2021-07-29 13:49
閱讀 1388·2019-08-26 11:59
閱讀 1465·2019-08-26 11:39
閱讀 1060·2019-08-26 11:00