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

ここではオラクルで行われているデータの書き込み、読み込みだけを実装した最小コードとその解説を記します。
(作成中)

サンプルコード

githubにコード一式をアップしています。
https://github.com/yamaokaBTC/OracleBasicsample

gitが落ちた場合に備えて以下にも主要コードを貼り付けておきます

動作の際の注意点

ウォレット内にある程度の額が入っていないとDAGへの書き込みが行われません。
送金する場合、サンプルコードと同じディレクトリにあるwallet.jsを実行。
実行したらペアリングコードから接続して送金を実施するのが一番簡単と思われます。
また、メインネットで行うと自分の資産が減ることとなるので
テストネットに接続して行うのがオススメです。

解説

今回のコードはスポーツオラクル
https://github.com/byteball/sports-oracle
を基に作成されています。
実際に読み書きしている実装部分の大半はここにあるコードを使っています。
index.jsにはオラクルの読み書きだけが実装されています。

eventBus.on('headless_wallet_ready', function() 内

読み書きの命令が格納されている部分。
メイン機能。
ウォレットが有効かされたことをトリガーに書き込んでから読み込みを行なっています。
data_feed名かそのデータの中身どちらでも検索対象とすることが出来るため、
実装の仕方はかなり自由度が高いと考えられます。
ただし、データの中身は文字列に限定されている様なのであまり複雑なデータは入れられないと思われます。

var key = '1234';
datafeedの名前。

datafeed[key] = '5678';
datafeedの中身のデータです。
文字列を入れるのが基本になりますが、
DAGの中身は誰にでもみられるため、中身を隠したい場合は事前に暗号化してその文字列を格納する必要があります。

reliablyPostDataFeed

DAGへのデータ格納を行う最初の関数。
引数のdatafeedからフィード名とその中身を取り出して
既に書き込み処理が始まっていないかどうかをチェックします。
問題なければpostDataFeed関数を呼び出してDAGへの書き込み処理をはじめます。

postDataFeed

paramsがDAGへ書き込む内容となります。
paramsを作成する際、createOptimalOutputsでウォレット内の額がwitnessコストの倍以上確保されているか確認をとる様です。
paying_addressesに入るmy_addressの値は自分のウォレットのアドレスになっています。他人のアドレスに変えた場合はエラーになる様です。
書き込みコストをユーザー側に求める場合は先に送金をさせる手段が必要になると考えられます。
その他の値はサンプルコード通りにして特に変える必要はないと思われます。
最後にcomposer.composeJoint(params)にてDAGへの書き込みを行います。

notifications.js

解説することはほとんどありません。
エラー時などに所定のアドレスにメールを送る部分を別ファイルにしています。

コメントをかく


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

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

当サイトは寄付歓迎です

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

メニュー

メニュー



開発者ガイド

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

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

実用テクニック

【メニュー編集】

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