仮想通貨サービス BitCapitalZ の日記

仮想通貨関連のブログです Ripple, Ethereum 仮想通貨2.0に注目しています

【リップル】Ripple APIs について調べてみる1 gatewayd とはなにか【Ripple】

近々都内で Ripple APIs について勉強する会を開催しようかと考えております。それに先立って Ripple APIs の概要を調べてみようと思います。


まず gatewayd からですが、gatewayd がどのようなものかの説明は
gatewayd | Ripple
ここに詳しく書かれており、ここで書かれている要点を本記事にまとめます。

概要

f:id:yuma300:20141124200957p:plain
上図が gatewayd のアーキテクチャダイアグラムになります。この図をみれば gateways が何をするためのものなのかおおよそ見当が付きますね。一言で言うと、Ripple ネットワークと外部のシステムを連動させるためのアダプタです。外部のシステムとは具体的にはbitcoind のような仮想通貨のウォレットだったりが考えられます。
これにより例えばユーザーが bitcoin を送ってくれたらそのユーザーに紐づく Ripple Wallet の BTC という IOU を増やす事ができるというわけです。

External Connectorについて

gatewayd は上図の左側にある外部のシステムとRippleネットワークを監視して、それらを結びつける処理をします。外部のシステムと gatewayd をつなぐ部分に External Connecter がありますが、ここの部分を外部のシステムにあわせて開発者が実装する必要がある部分です。後述する gatewayd の REST API を用いて必要な処理を実装してきます。

gatewayd の機能

公式ドキュメントによると以下のような事ができるようです。

  • (仮想通貨等の)預かりと引き出し機能
  • IOU発行機能
  • 堅牢な Ripple 支払い機能
  • 入金監視機能
  • gateway 管理機能
  • カスタムプラグイン機能

この gatewayd は以下のモジュールを利用しています。

  • Node.js (gatewayd のフレームワークとして使われていて、これが http や json のエンドポイントになっているようです)
  • Postgres (外部のシステム上とRippleネットワーク上のユーザー紐付けるデータやトランザクションデータを保持しているようです)
  • Ripple REST API (これが Rippleネットワークへのインタフェースを提供しています。rippledによって提供される)
  • git (gatewayd をインストールするために必要になります)

データモデル

f:id:yuma300:20141124224234p:plain
こちらが、gatewayd の DB が管理するデータです。ユーザーデータとトランザクションデータを管理しているのがわかります。

gatewayd へのアクセスの認証方法について

gatewayd にはコマンドラインインタフェースを用いた直にアクセスする方法と REST API を用いた http 越しでのアクセス方法があります。実際に運用する際には REST API を用いた http 越しでのアクセスが推奨されています。REST API でアクセスするにあたって以下のオプションを選択する事ができます。

  • HTTP_SERVER (REST API を使うかどうかを選択できます)
  • HOST (gatewayd への許可するアクセス元ドメインやIPを設定できます)
  • SSL (gatewayd へのアクセスを https のみとする事ができます)
  • BASIC_AUTH (gatewayd へのアクセスにパスワードを要求します。パスワードに加えて api key も指定できます)

gatewayd の使いかた

gatewayd に対しては以下の通りのAPIが用意されているみたいですね。おいおいこれらを使ってみたいと思います。

External Transactions
    Record Deposit – POST /v1/deposits/
    List Queued Deposits – GET /v1/deposits
    List Pending Withdrawals – GET /v1/withdrawals
    Clear Pending Withdrawal – POST /v1/withdrawals/{:id}/clear
    List Cleared External Transactions – GET /v1/cleared

User Management

    Register User – POST /v1/registrations
    Activate User – POST /v1/users/{:id}/activate
    Deactivate User – POST /v1/users/{:id}
Ripple Transactions
    List Outgoing Payments – GET /v1/payments/outgoing
    List Failed Payments – GET /v1/payments/failed
    Retry Failed Payments – POST /v1/payments/failed/{:id}/retry
    List Incoming Payments – GET /v1/payments/incoming
Ripple Management
    Generate Ripple Wallet – POST /v1/config/wallets/generate
    List Hot Wallet Balances – GET /v1/balances
    List Cold Wallet Liabilities – GET /v1/liabilities
    Fund Hot Wallet – POST /v1/wallets/hot/fund
    Return Funds from Hot Wallet to Cold Wallet – POST /v1/wallets/cold/refund
    Set Trust from Hot Wallet to Cold Wallet – POST /v1/trust
    Show Trust from Hot Wallet to Cold Wallet – GET /v1/trust
Gatewayd Configuration
    Set Database URL – POST /v1/config/database
    Retrieve Database URL – GET /v1/config/database
    Set Ripple-REST URL – POST /v1/config/ripple/rest
    Retrieve Ripple-REST URL – GET /v1/config/ripple/rest
    Set Cold Wallet – POST /v1/config/wallets/cold
    Retrieve Cold Wallet – GET /v1/config/wallets/cold
    Set Hot Wallet – POST /v1/config/wallets/hot
    Retrieve Hot Wallet – GET /v1/config/wallets/hot
    Set Last Payment Hash – POST /v1/config/last_payment_hash
    Retrieve Last Payment Hash – GET /v1/config/last_payment_hash
    Set Gateway Domain – POST /v1/config/domain
    Retrieve Domain – GET /v1/config/domain
    Set API Key – POST /v1/config/key
    Retrieve API Key – GET /v1/config/key
    Add Supported Currency – POST /v1/currencies
    List Supported Currencies – GET /v1/currencies
    Remove Supported Currency – DELETE /v1/currencies/{:currency}
Gatewayd Processes
    Start Worker Processes – POST /v1/start
    List Current Processes – POST /v1/processes
User-Auth API Routes

All these routes are DEPRECATED. Authentication for these routes works differently. See Deprecated User-Auth Routes for details.

    POST /v1/users/login
    GET /v1/users/{:id}
    GET /v1/users/{:id}/external_accounts
    GET /v1/users/{:id}/external_transactions
    GET /v1/users/{:id}/ripple_addresses
    GET /v1/users/{:id}/ripple_transactions


Ripple を始め次世代仮想通貨について議論するフォーラムを用意しています。是非こちらもご覧ください

Ripple Stellar Ethereum 等次世代仮想通貨掲示板 in BitCapitalZ