Nautical Pirate Moustache

    xrpl-tagged-address-codec
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.1 • Public • Published

    XRPL Tagged Address Codec npm version

    Encode and Decode an XRPL account address and destination tag to/from X-formatted (tagged) address.

    Destination tags provide a way for exchanges, payment processors, corporates or entities which accept incoming payments, escrows, checks and similar transcations to use a single receiving wallet while being able to disambiguate incoming transactions by instructing the senders to include a destination tag.

    This package allows encoding and decoding from an XRPL address and destination tag to / from 'Tagged Addresses', containing both the destination account address and tag in one string. This way users can simply copy-paste the string, eliminating possible user error when copying / entering a numeric destination tag.

    Hopefully all exchanges, wallets & other software using destination tags will implement this address codec. A migration period will be required to allow users to enter both address formats.

    The website https://xrpaddress.info is available for users, exchanges and developers to provide some context and best practices.

    Use

    1. Import

    Node
    const {Encode, Decode} = require('xrpl-tagged-address-codec')
    

    ... and use: Encode() / Decode() or:

    const codec = require('xrpl-tagged-address-codec')
    

    ... and use: codec.Encode() / codec.Decode()

    TypeScript
    import {Encode, Decode} from 'xrpl-tagged-address-codec'
    

    ... and use: Encode() / Decode() or:

    import * as codec from 'xrpl-tagged-address-codec'
    

    ... and use: codec.Encode() / codec.Decode()

    2. Encode / Decode

    Encode a separate account address and destination tag:

    const tagged = Encode({
      account: 'rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY',
      tag: 1337,
      test: false
    })
    

    The output will be a tagged address (string). The tag and test can be omitted, rendering tag to be null and test to be false.

    Decode a tagged address:

    const tagged = 'XVLhHMPHU98es4dbozjVtdWzVrDjtV8xvjGQTYPiAx6gwDC'
    const untagged = Decode(tagged)
    
    

    The output will be a destination object containing the untagged address (r....), the destination tag (null or a string containing the destination tag) and a test (bool) indicator.

    Development

    Run npm run prepublish to clean, lint, test and build. Or just run npm run build, npm run test or npm run lint.

    Tests are in ./test. Run tsc -w if you want are developing and want to auto-build to ./dist when you make changes on the fly.

    Scripts:

    • Build: npm run build, output: ./dist
    • Test: npm run test
    • Lint: npm run lint
    • Clean, test, lint and build: npm run prepublish
    • Browserify: npm run browserify, output: dist/xrpl-tagged-address-codec-browser.js

    Credits

    This concept is based on the concept from @nbougalis

    Big thanks to @sublimator for his fiddles, ideas and fixes and @intelliot for the idea of adding an X / T prefix for (new) address recognizability.

    Dependents (0)

    Install

    npm i xrpl-tagged-address-codec

    DownloadsWeekly Downloads

    289

    Version

    0.2.1

    License

    MIT

    Unpacked Size

    13.3 kB

    Total Files

    15

    Last publish

    Collaborators

    • wietsewind