Byteball開発者向け情報wiki - チップbot実装案
チップボットを実装するにあたってのアイデアを記したページです。
現状は実現見込みが低いメモ書きです。

twitterオラクルを作り、スマートコントラクトを1回と送金1回を行う方法

  1. 寄付者がボット用のアカウントにコマンドをつぶやく
  2. オラクルのチャットボットは定期的に自分宛のツイートを取得。今回は1のコマンドを取得
  3. コマンド入力従って、以下の条件でスマートコントラクトを作成
  • 送金先はオラクルのウォレット
  • 額は寄付者が決めた額
  • コントラクト成立条件はtwitterオラクルで特定のデータを確認した時
  • 契約不成立、期限終了後は寄付者がロックを解除して資金を回収できる。
  • 期限はなんでも良いけどが、ここでは一ヶ月
  1. 寄付者はコントラクトの内容を確認したらGBを払って送信
  2. ここまで終わった時点で受取者にtwitterからメッセージが飛んできてウォレットのセットアップなどを促される
  3. 受取者は自分のウォレットアドレス付きのコマンドをつぶやく
  4. オラクルのチャットボットでつぶやきを取得、本人であればオラクル経由で先に作られたコントラクトが成立するよう処理を実行
  5. コントラクトが成立してオラクルのウォレットに着金
  6. 手数料などは引いた上で今貰った全額そのまま受取者のアドレスに送金

(没:オラクルの仕様を勘違いしてる為)仕様概要案1(オラクルを2つ使う方法)

寄付する人が一時的にお金を預けるオラクルA
預かったお金をオラクルAからもらって相手にそのまま渡すオラクルBがあるとする。
  1. 寄付者はTwitterのbotにコマンドを呟く。
  2. botが作ったオラクルAの契約にお金を預ける。送付先はオラクルBで期限は仮に1ヶ月とする。
  3. 同時にbot相手にもtwitterでメッセージを飛ばす。
  4. 相手に受け取る意思があれば財布を作るなどの準備をする。
  5. 相手はチップbotからの誘導通り、自分のByteballウォレットアドレス付きコマンドを呟く。
  6. botがアドレス付きのつぶやきを解析。オラクルAの契約のデータ内のユーザーIDと比較して本人なら次へ。
  7. botがここまでの情報を基にオラクルBで契約を作成する。
  8. botがオラクルAに署名して契約を成立させる。
  9. オラクルAからオラクルBにお金が送られてくるのでオラクルBで作った契約が即座に成立。
  10. 相手にお金が送られる。

bot側の主な仕事

  • 自分のアカウント宛のツイートの解析と返信ツイート送信
  • オラクルAのデータ解析
  • オラクルAの契約の作成と署名
  • オラクルBの契約の作成と署名

補足メモ

  • 参考ページ:https://byteroll.com/timestamp
  • このページのユーザーIDはこのページの「data-user-id」のことです。(要は変更不可の一意の値を使うということです)
  • 参考ページに書かれている「DATA FEED NAME」に自由に文字列を入れられるかは不明。[要調査]
  • 手順2のオラクルからオラクルへの橋渡し、7-9の動きが実装できるかは不明。[要調査]
  • 受け取り先が何もしない場合:botで決めた期限をすぎるとお金が寄付者に戻る。(byteballの手数料は引かれる。bot独自の手数料については実装次第。)
  • 誰かが受け取り先を偽装しようとした場合:TwitterAPIを掻い潜ってuserid付きの偽パケットを投稿してtwitterに反映できるなら可能。そういった事例が確認出来ないのでここでは不可とする。
  • 受け取り先がアドレスを打ち間違えた場合;ウォレットアドレスとデバイスアドレスの違いならオラクルBでの契約作成時に弾かれるので、再送要求出来ると思われる。また、bot側の実装で判別して契約作成前に予め回避可能と思われる。他人のアドレスと間違えた場合は対処不能。
  • TwitterAPIの利用が止められた場合;支払いが止まるだけで時間が経てばお金は自動的に寄付者の元に返される。期限以内に契約が成立しないから。
  • bot側のマシンが乗っ取られた場合のリスク:乗っ取られた時点で相手に行き渡ってない寄付者の支払った額が全て攻撃者に取られてしまう可能性がある。botの名義で支払いを要求する契約がユーザーに送りつけられてしまう可能性がある。寄付者やその相手のウォレットにアクセスしてお金を盗むことは出来ない。
  • botのTwitterアカウントが乗っ取られた場合のリスク:「bot側のマシンが乗っ取られた場合のリスク」に同じ。

雑感

  • DBなどは一切使用せずにbyteballのDAGを覗いてるだけなので、実装さえできればほぼトラストレスな仕様と思われる。
  • botを動かすマシン自体のセキュリティが最大の問題点。流石に放置するわけには行かないのでメンテナンスが必要になってしまう。