FIBOXクイック入門


FIBOX開発環境を構築するには、fibosとfibos.jsをインストールする必要があります.
この章のコード例のディレクトリ構造:
hello_fibos/
├── fibos_client
│   ├── call.js  //          
│   ├── initClient.js  //FIBOS    
│   ├── deploy.js  //  、        
│   ├── hello
│   │   ├── hello.abi  //  abi  
│   │   └── hello.js  //      
│   └── package.json
└── start_fibos
    └── node.js
この章の例コードアドレス:https://github.com/FIBOSIO/sa... 下basicフォルダの例を示します.
起動ノード
環境設定スクリプトstart_fibosフォルダを作成し、次のコードをnode.jsに保存します.
var fibos = require('fibos');

fibos.load('chain');
fibos.load('chain_api');
fibos.load('history_api');
fibos.load('producer', {
    'producer-name': 'eosio',
    'enable-stale-production': true
});
fibos.load('http', {
    'http-server-address': '0.0.0.0:8888'
});

fibos.load('net', {
    'p2p-listen-endpoint': '0.0.0.0:9876'
});
fibos.config_dir = 'fibos_config_dir/';
fibos.data_dir = 'fibos_data_dir/';
fibos.enableJSContract = true;
fibos.start();
FIボス開発環境を実行
hello_fibos$ fibos start_fibos/node.js
運転結果ログ(部分):
……
2018-07-30T03:29:01.004 thread-1   producer_plugin.cpp:1194      produce_block        ] Produced block 00000002e091c956... #2 @ 2018-07-30T03:29:01.000 signed by eosio [trxs: 0, lib: 0, confirmed: 0]
以上のメッセージを見たら、運行が成功したと説明し、fibosはブロック生産を開始しました.
JavaScript契約コード
注意:新しいウィンドウを作成して、node.jsノードが正常に動作するようにします.
フォルダfibos_clientを作成し、次のコードをhello/hello.jsに保存します.
exports.hi = user => console.error('in contract:', user);
契約書ABIファイル
次のコードをhello/hello.abiに保存します.
{
    "version": "eosio::abi/1.0",
    "structs": [{
        "name": "player",
        "base": "",
        "fields": [{
            "name": "title",
            "type": "string"
        }, {
            "name": "age",
            "type": "int64"
        }]
    }, {
        "name": "hi",
        "base": "",
        "fields": [{
            "name": "user",
            "type": "name"
        }]
    }],
    "actions": [{
        "name": "hi",
        "type": "hi",
        "ricardian_contract": ""
    }]
}
FIBOXノードを接続
フォルダfibos_clientの下で、initClient.jsを新規に作成し、次のコードを保存します.
var FIBOS = require('fibos.js');

function initClient(_keyProvider) {
    return FIBOS({
        chainId: 'cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f',
        keyProvider: _keyProvider, 
        httpEndpoint: 'http://127.0.0.1:8888',
        logger: {
            log: null,
            error: null
        }
    });
}

module.exports = initClient;
契約スクリプトの読み込み、リリース
フォルダfibos_clientの下で、deploy.jsを新規に作成し、次のコードを保存します.
var FIBOS = require('./initClient.js')
var fs = require('fs');
var config = {
    'public-key': 'FO6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV',
    'private-key': '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3',
    'contractName': 'hello'
};

// new FIBOS client
var fibos = FIBOS(config['private-key']);
// create account hello
fibos.newaccountSync({
    creator: 'eosio',
    name: 'hello',
    owner: config['public-key'],
    active: config['public-key']
});
//setcode
var js_code = fs.readTextFile('./hello/hello.js');
fibos.setcodeSync(config['contractName'], 0, 0, fibos.compileCode(js_code));

//getcode
var code = fibos.getCodeSync(config['contractName'], true);
console.log('code:', code);

//setabi
var abi = JSON.parse(fs.readTextFile('./hello/hello.abi'));
fibos.setabiSync(config['contractName'], abi);
実行スクリプト:
hello_fibos$ fibos fibos_client/deploy.js
出力結果(部分):
code: {
  "account_name": "hello",
  "code_hash": "383a12daacaf124eea9afc529822d990853b5b99570401b8394534b746ea3977",
  "wast": "",
  "wasm": "504b03042d00000008002cadfe4c6a9400a2360000003900000008001400696e6465782e6a7301001000000000000000000000000000000000004bad28c82f2a29d6cbc854b055282d4e2d52b0b55348cecf2bcecf49d54b2d2aca2fd250cfcc0389941425269758a9eb8055695a0300504b010200001400000008002cadfe4c6a9400a23600000039000000080000000000000001000000000000000000696e6465782e6a73504b0506000000000100010036000000700000000000"
}
備考:wasmは低レベルの軽量バイトコードであり、原生に近い実行速度を実現するために取り組んでいます.
コール契約
fibos.jsのAPIを使って契約を呼び出します.
フォルダfibos_clientの下で、call.jsを新規に作成し、次のコードを保存します.
var FIBOS = require('./initClient.js')
var config = {
    'public-key': 'FO6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV',
    'private-key': '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3',
    'contractName': 'hello'
};

// new FIBOS client
var fibos = FIBOS(config['private-key']);

//call abi
var ctx = fibos.contractSync(config['contractName']);
let i = ctx.hiSync('hello', {
    authorization: config['contractName']
});
console.log(i)
実行スクリプト:
hello_fibos$ fibos fibos_client/call.js
コンソール印刷の結果は以下の通りです.
{
  "broadcast": true,
  "transaction": {
    "compression": "none",
    "transaction": {
      "expiration": "2018-10-29T09:54:38",
      "ref_block_num": 45,
      "ref_block_prefix": 552314262,
      "max_net_usage_words": 0,
      "max_cpu_usage_ms": 0,
      "delay_sec": 0,
      "context_free_actions": [],
      "actions": [
        {
          "account": "hello",
          "name": "hi",
          "authorization": [
            {
              "actor": "hello",
              "permission": "active"
            }
          ],
          "data": "00000000001aa36a"
        }
      ],
      "transaction_extensions": []
    },
    "signatures": [
      "SIG_K1_JxKj8whii1gosSY6S5b3JcNxZ7x7xTUFkWg3fsjpiQ3K8eTfY6N8van5PqoUFYGJVRGNzdxapWLc6NAcieJgPCh8e8hkDA"
    ]
  },
  "transaction_id": "5d7262907ab645168f6a1fdd1e17988ca7f50a07d2ef6bb90f5891a6c2cb8bb9",
  "processed": {
    "id": "5d7262907ab645168f6a1fdd1e17988ca7f50a07d2ef6bb90f5891a6c2cb8bb9",
    "block_num": 47,
    "block_time": "2018-10-29T09:53:39.000",
    "producer_block_id": null,
    "receipt": {
      "status": "executed",
      "cpu_usage_us": 3510,
      "net_usage_words": 13
    },
    "elapsed": 7273,
    "net_usage": 104,
    "scheduled": false,
    "action_traces": [
      {
        "receipt": {
          "receiver": "hello",
          "act_digest": "35c685a9391997dfe62291f39ead19cde36bbfb29f411deb9019592ed6be5b4f",
          "global_sequence": 50,
          "recv_sequence": 1,
          "auth_sequence": [
            [
              "hello",
              3
            ]
          ],
          "code_sequence": 1,
          "abi_sequence": 1
        },
        "act": {
          "account": "hello",
          "name": "hi",
          "authorization": [
            {
              "actor": "hello",
              "permission": "active"
            }
          ],
          "data": {
            "user": "hello"
          },
          "hex_data": "00000000001aa36a"
        },
        "context_free": false,
        "elapsed": 7011,
        "cpu_usage": 0,
        "console": "in contract: hello
", "total_cpu_usage": 0, "trx_id": "5d7262907ab645168f6a1fdd1e17988ca7f50a07d2ef6bb90f5891a6c2cb8bb9", "block_num": 47, "block_time": "2018-10-29T09:53:39.000", "producer_block_id": null, "account_ram_deltas": [], "inline_traces": [] } ], "except": null } }
FIBOXノードサービスコンソールには、trxs:1が表示されています.結果は以下の通りです.
2018-8-30T14:28:22.005 thread-1   producer_plugin.cpp:1196      produce_block        ] Produced block 00000e57c573a33b... #3671 @ 2018-07-30T14:28:22.000 signed by eosio [trxs: 1, lib: 3670, confirmed: 0]
文末には公式住所を添付します.
https://fibos.io/FIBOXは、ブロックチェーンの生態応用プラットフォームを創造し、発展させ、自分の価値ネットワークを簡単に作成し、開発者と起業家を支援します.https://dev.fo/JavaScript開発+BACORプロトコルインテリジェントパス+開発者サービス、FIBOXプラットフォームは急速な開発、急速な配置と安定した流動性のある通証システムを実現し、開発者がブロックチェーン時代に入るのを助けます.
公式アカウント「FIBOXコミュニティ」を検索して、最初の時間は技術の干物を獲得します.