Byteballを使ったアプリやシステムを開発するための情報wikiです。現時点では管理人個人のメモとなっています。編集したい方はSlack経由でYamaokaまでご連絡下さい。

[調査中]

解説ページ(英語)
https://github.com/byteball/byteballcore/wiki/JSON...
さっと読む限りJSON-RPCを経由してあらゆる開発言語でシステム開発が出来るとの事です。
精読はしていないので現在調査中。

サンプルコード
https://github.com/byteball/rpcify


JSON-RPCについての解説はここがわかりやすいと思います。
https://qiita.com/oohira/items/35e6eaaf4b44613ad7d...

*以下調査メモになります。
参考資料となりそうなHP

json-rpcとHTML
https://github.com/njbartlett/polymer-json-rpc/blo...

HTTPプロトコルを経由したjson-rpcの解説?
http://www.jsonrpc.org/historical/json-rpc-over-ht...


git-hub翻訳

このモジュールを使用すると、node.jsモジュールの機能をJSON-RPC経由で共有できます。
これにより、任意の言語で書かれた他のプログラムからnode.jsモジュールの機能が利用できるようになります。

インストール
ソースコードを取り込んで以下のコマンドを実行
install

使用例

var rpcify = require('rpcify');

var headlessWallet = require('headless-byteball');  // this is a module whose methods you want to expose via RPC
var balances = require('byteballcore/balances.js'); // another such module

// start listening on RPC port
rpcify.listen(6333, '127.0.0.1');

// expose some functions via RPC
rpcify.expose(headlessWallet.issueChangeAddressAndSendPayment);
rpcify.expose(balances.readBalance, true);
rpcify.expose([headlessWallet.readFirstAddress, headlessWallet.readSingleWallet, headlessWallet.issueOrSelectAddressByIndex], true);

この点以降、上記の関数はJSON-RPCインタフェースを介して利用できるようになります。 Node.jsのクライアントが呼び出す必要がある

var rpc = require('json-rpc2');

var client = rpc.Client.$create(6333, '127.0.0.1');

client.call('issueChangeAddressAndSendPayment', [asset, amount, to_address, device_address], function(err, unit) {
    ...
});
これはrequire()モジュールから関数を呼び出す場合と同様です。 他の言語のプログラムも、RPC経由で公開されているnode.js関数にアクセスできます。

API

コールバックを介してその結果を返す関数を公開することができます。 コールバックは関数の最後の引数でなければなりません。

JSON-RPCリクエストのパラメータは、引数として関数に渡されます。 パラメータは、JSONがサポートする任意のタイプ(文字列、数値、ブール値、オブジェクト)でも構いませんが、関数ではありません。 JSON-RPCリクエストのパラメータが配列の場合、引数のリストに展開されます。 オブジェクトの場合は、第1引数として関数に渡されます。

コールバックのパラメータは、JSON-RPCレスポンスに返されます。 デフォルトでは、コールバックの最初の引数はエラーとみなされます。 真実であれば、要求はエラー応答となります:
{"jsonrpc":"2.0","error":{"code":-32603,"message":"not enough spendable funds from 4MIACTR3WJMC4UUKHHU3VX55LWW77EZW,QM63QOKZVOHGTMCKRQCB4GJVD4FCHL56 for 1000000000641"}

コールバックの最初の引数がfalsyの場合、要求は成功します。 残っている引数が1つしかない場合は、JSON-RPCリクエストの結果として返されます。 残りの引数がさらにある場合、それらは配列にラップされます。

expose()のオプションのbNoErrorsパラメータ(下記参照)が真実である場合、要求はエラーで終わることはなく、コールバックの最初のパラメータと後続のパラメータが結果として解釈されます。

元の名前で関数を公開するには、
rpcify.expose(func, bNoErrors);
複数の関数を元の名前で公開するには、関数の配列を渡します。
rpcify.expose([func1, func2], bNoErrors);

異なる名前で関数を公開するには、次の構文を使用します。
rpcify.expose('func_name', func, bNoErrors);
rpcify.expose({func1_name: func1, func2_name: func2}, bNoErrors);

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

当サイトは寄付歓迎です

Byteball
[1MB] [10MB] [100MB]

メニュー

メニュー



開発者ガイド

キャッシュバックプログラム

ウォレットを使用したユーザー認証(翻訳)
(調査中)JSON-RPC経由でByteballにアクセスする
コード解説(headless-byteballのstart.js)(作成中)

実用テクニック

【メニュー編集】

メンバーのみ編集できます