Cryptocurrency Research Lab.

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

【RippleAPI】⑤ Settings

XRPアドレスには、所有者が設定できる項目があります。

たとえば、以下のような設定があります。

項目名 概要
domain ドメイン
requireDestinationTag 宛先タグの要否
memos メモ

その他の設定項目の詳細につきましては、以下を参考にするとよいでしょう。

xrpl.org

settingsの確認

指定したアドレスの設定を確認する例を以下に示します。

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

(async ()=>{
  try {
    await api.connect();
    const settings = await api.getSettings('<アドレス>');

    console.log(JSON.stringify(settings, null, 2));

    await api.disconnect();

  } catch (e) {
    console.error(e);
  }
})();
実行結果例

デフォルト値の場合は省略されるようですので設定項目はありません。

{}

settingsの変更

それでは、settingsを変更してみたいと思います。

多くの暗号資産取引所のように、一つの送付先アドレスで複数ユーザを宛先タグで区別したい場合には、requireDestinationTagをtrueに設定しておくとよいでしょう。

const RippleAPI = require('ripple-lib').RippleAPI;

const api = new RippleAPI({
  server: 'wss://s.altnet.rippletest.net:51233' // testnet
});

let address = '<アドレス>';
let secret = '<シークレット>';

(async()=>{
  try {
    await api.connect();

    const settings = {
      requireDestinationTag: true
    };

    let prepared = await api.prepareSettings(address, settings);
    const {signedTransaction} = api.sign(prepared.txJSON, secret);

    let result = await api.submit(signedTransaction);
    console.log(result);

    await api.disconnect();

  } catch (e) {
    console.error(e);
  }
})();

なお、1トランザクションで設定できる項目は1項目のようです。まとめて複数の項目を変更しようとしたところ、以下のようなエラーがスローされました。

AssertionError [ERR_ASSERTION]: ERROR: can only set one setting per transaction

実行結果例
{
  "resultCode": "tesSUCCESS",
  "resultMessage": "The transaction was applied. Only final in a validated ledger.",
  "engine_result": "tesSUCCESS",
  "engine_result_code": 0,
  "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
  "tx_blob": "1200032280000000240000000A201B012452AC20210000000168400000000000000C732103D9278E3BAE27CAA9EF9892523A6402253F9D96CACAC9EF5A7EB9F6D2377CDDC97446304402204A26A005B1BE70F1545C4961D69E8A5E53B78EBCDDC6A3FC0D13A8356C2383BC022048195E71B2BA47CFB4D6183C8DF9F81B77B6DFFE5704F53BF442CE257E860E03811406C4D2C0F9CC2E16D1699836EED1D0B94655B7D0",
  "tx_json": {
    "Account": "<アドレス>",
    "Fee": "12",
    "Flags": 2147483648,
    "LastLedgerSequence": 19157676,
    "Sequence": 10,
    "SetFlag": 1,
    "SigningPubKey": "03D9278E3BAE27CAA9EF9892523A6402253F9D96CACAC9EF5A7EB9F6D2377CDDC9",
    "TransactionType": "AccountSet",
    "TxnSignature": "304402204A26A005B1BE70F1545C4961D69E8A5E53B78EBCDDC6A3FC0D13A8356C2383BC022048195E71B2BA47CFB4D6183C8DF9F81B77B6DFFE5704F53BF442CE257E860E03",
    "hash": "<トランザクションID>"
  }
}
settingsの変更確認

settingsが変更されていることを確認しました。

{
  "requireDestinationTag": true
}