Cryptocurrency Research Lab.

Cryptocurrency関連技術についての調査・研究

【RippleAPI】⑧ Transactions

今回はrippledサーバに接続して、XRP Ledger上のトランザクションの詳細を取得する方法を解説します。

トランザクションの詳細は、以下のような方法で取得できます。

トランザクションIDを指定して取得する

【RippleAPI】④ 送金受領通知』で行ったトランザクションの詳細を見てみましょう。

const RippleAPI = require('ripple-lib').RippleAPI;
const api = new RippleAPI({
  // TestNet
  server: 'wss://s.altnet.rippletest.net:51233'
});

(async ()=>{
  // トランザクションID
  let transactionId = 'EA887B8046F0E9BE06A2CF29AF0900AA485D70D80F484093AE7FF29CEABD029D';

  try {
    await api.connect();

    const transaction = await api.getTransaction(transactionId);
    console.log(JSON.stringify(transaction, null, 2));

    await api.disconnect();

  } catch (e) {
    console.error(e);
  }
})();
実行結果例
{
  "type": "payment",
  "address": "rc8qCurPUeXBjE4DGqg3YQX3N6F5r7cog",
  "sequence": 3,
  "id": "EA887B8046F0E9BE06A2CF29AF0900AA485D70D80F484093AE7FF29CEABD029D",
  "specification": {
    "source": {
      "address": "rc8qCurPUeXBjE4DGqg3YQX3N6F5r7cog",
      "maxAmount": {
        "currency": "XRP",
        "value": "500"
      }
    },
    "destination": {
      "address": "rM6ToyvCmTavh4zPjJSsTVgCbabZ6Harup"
    }
  },
  "outcome": {
    "result": "tesSUCCESS",
    "timestamp": "2019-05-04T14:40:10.000Z",
    "fee": "0.000012",
    "balanceChanges": {
      "rM6ToyvCmTavh4zPjJSsTVgCbabZ6Harup": [
        {
          "currency": "XRP",
          "value": "500"
        }
      ],
      "rc8qCurPUeXBjE4DGqg3YQX3N6F5r7cog": [
        {
          "currency": "XRP",
          "value": "-500.000012"
        }
      ]
    },
    "orderbookChanges": {},
    "ledgerVersion": 19120610,
    "indexInLedger": 0,
    "deliveredAmount": {
      "currency": "XRP",
      "value": "500"
    }
  }
}

アドレスを指定してトランザクション一覧を取得する

const RippleAPI = require('ripple-lib').RippleAPI;
const api = new RippleAPI({
  // TestNet
  server: 'wss://s.altnet.rippletest.net:51233'
});

(async ()=>{
  // 送信元
  let address = 'rc8qCurPUeXBjE4DGqg3YQX3N6F5r7cog';

  try {
    await api.connect();

    const serverInfo = await api.getServerInfo();

    let [minLedgerVersion, maxLedgerVersion] = serverInfo.completeLedgers.split('-');
    const transactions = await api.getTransactions(address, {
      minLedgerVersion: Number(minLedgerVersion),
      maxLedgerVersion: Number(maxLedgerVersion)
    });

    for (let transaction of transactions) {
      console.log(`id:        ${transaction.id}`);
      console.log(`sequence:  ${transaction.sequence}`);
      console.log(`type:      ${transaction.type}`);
      console.log(`timestamp: ${transaction.outcome.timestamp}`);
      console.log(`result:    ${transaction.outcome.result}`);
    }

    await api.disconnect();

  } catch (e) {
    console.error(e);
  }
})();
実行結果例
id:        CC0D36E5FD6BBF420DACAE3D4104EFBF52D125B947D3B780742F17F2CE557A16
sequence:  15
type:      payment
timestamp: 2019-05-06T14:35:32.000Z
result:    tesSUCCESS
id:        E2D8B0CF839B24810DBCDB55920729487E3DEDD115B778065C7452EF490BF46F
sequence:  14
type:      settings
timestamp: 2019-05-06T14:33:41.000Z
result:    tesSUCCESS
id:        CA0720851DEEE1259449979AE6523D59FBB68A81B73F6ECA87398A9539FD902E
 ⋮
sequence:  1
type:      payment
timestamp: 2019-04-13T11:30:41.000Z
result:    tesSUCCESS