本記事執筆時点で『Tagged Address』と記載していたものは、『X-Address』という名前になりました。
XRP Ledger上でXRPを送金する際、送付先アドレスのほかに宛先タグの指定が必要な場合があります。
例えば暗号資産取引所など複数ユーザが利用するサービスを提供する場所に預け入れる場合、一つの送付先アドレスに対して、宛先タグと呼ばれる数値でユーザーを振り分けています。
これはBitcoinやEthereumなどには無いもので、XRPの特徴ともいえる仕組みです。XRP Leger上はあくまでも一つのアドレスだけで管理できるというメリットがある一方、宛先タグをつけ忘れたり間違った宛先タグを指定して送付してしまい、送付したけれども受取の確認に時間がかかったりというトラブルは後を絶ちません。
そこで、以下のTweetにあるように、従来のアドレスと宛先タグをひとまとめに一つのアドレスにまとめた『Tagged Address』というアドレス体系がNik Bougalis氏によって提案されています。
Destination tags are a cool XRP Ledger feature but having to specify two things—an account and a tag—instead one is a pain for users and developers alike.
— Nik Bougalis (@nbougalis) June 14, 2019
I am proposing a new “tagged address” format which fixes the shortcomings but keeps all the cool…https://t.co/CzLcCQuSIQ
取引所やWalletアプリがTagged Addressに対応すれば、送付時に宛先タグを指定する必要がなくなります。このTagged Addressはあくまでもユーザの使い勝手の改善を目的としたもので、既存のXRP Ledgerの方には手を加えずに、XRP Ledegerに対するトランザクションの手前で従来のアドレスと宛先タグに変換するような使い方となるようです。
xrpl-tagged-address-codecパッケージ
6/15にXRPL Labs社のWietse Wind氏によってripple-tagged-address-codecというNPMパッケージが開発・公開されたみたいですので、さっそく使ってみました。(Ver. 0.0.1なので今後使い方が変わるかもしれませんが)
xrpl-tagged-address-codecというパッケージ名に変更されました。
Install
npm i xrpl-tagged-address-codec
test.js
const {Encode, Decode} = require('xrpl-tagged-address-codec') const tagged = Encode({ account: 'rso1269g9gnpg9t1Pa1TqzepWizKjZMBDZ', tag: 123 }); console.log(tagged); const untagged = Decode(tagged) console.log(untagged);
実行結果例
Xからはじまるアドレスが取得できます。
X7c6YYP32DGoXkjR2tHQAXMphfWTHSr5YwaKgseZzBn2zQG { account: 'rso1269g9gnpg9t1Pa1TqzepWizKjZMBDZ', tag: '123', testnet: false }
なお、「testnet: true」を指定すれば、Tからはじまるテスト環境向けのアドレスが取得できます。
T7YDxeYfSwFFyGWpi6pBqXavXZsEorCkVLsmy5ta2F2EsCm
感想
XRP Ledgerをはじめ暗号資産関連技術は目まぐるしい速さで発展していますね。これからも動向に注目しつつ、この業界でビジネスを展開していければと思います。