Skip to content
XRPL Account helper: generation, derivation and signing (family seed, mnemonic, passphrase)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
samples
src
types
.gitignore
LICENSE
README.md
package-lock.json
package.json

README.md

XRPL-AccountLib

XRPL Account helper: generation, derivation and signing.

The XRPL_Account object

Both the generate and the derive methods will return an XRPL_Account object, containing all information to sign:

{
  accountType: '...',
  address: 'rXXXXXXXXX...',
  secret: 
   { familySeed: 'rYYYYYYYYY...',
     mnemonic: 'word word word...',
     passphrase: 'Hello World! ...',
     path: 'm/44'/144'/X'/Y/Z' },
  keypair: 
   { algorithm: 'xxxxxxxx',
     publicKey: 'AABBCC001122...',
     privateKey: 'CCDDEE332211...' } }

All XRPL_Account objects allow calling the signAs method to set the signAs user for MultiSign transactions (when a MultiSign user also uses a RegularKey);

derive
  .familySeed('snYHBZDJ51PPSuzWYVhEh1kb9zvEU')
  .signAs('rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY')

Methods

Generate account lib.generate

All generate methods return an XRPL_Account object.

Samples: https://github.com/WietseWind/xrpl-accountlib/blob/master/samples/generate.js

Family Seed lib.generate.familySeed(options{})

Options:

  • algorithm
    Default: 'secp256k1', alternatively: 'ed25519'

Mnemonic lib.generate.mnemonic(options{})

Options:

  • passphrase
    Default: (none), alternatively: 'my secret passsword'
  • strength
    Default: 256 (24 words), alternatively: 128 (12 words)
  • accountPath
    Default: 0, alternatively: X in the derivation path: m/44'/144'/X'/Y/Z
  • changePath
    Default: 0, alternatively: Y in the derivation path: m/44'/144'/X'/Y/Z
  • addressIndex
    Default: 0, alternatively: Z in the derivation path: m/44'/144'/X'/Y/Z
  • wordlist
    Default: 'english', alternatively one of:
    • chinese_simplified
    • chinese_traditional
    • french
    • italian
    • japanese
    • korean
    • spanish
    • english

Derive account lib.derive

All derive methods return an XRPL_Account object.

Samples: https://github.com/WietseWind/xrpl-accountlib/blob/master/samples/derive.js

Family Seed lib.derive.familySeed(familyseed'')

The familyseed argument is required, and should contain a string, like: sXXXXXXXXX...

Mnemonic lib.derive.mnemonic(mnemonic'', options{})

The _ mnemonic_ argument is required, and should contain a string with a valid word list, like: state green stem tower...

Options:

  • passphrase
    Default: (none), alternatively: 'my secret passsword'

Passphrase lib.derive.passphrase(passphrase'')

Derive from a passphrase, like masterpassphrase

Private Key lib.derive.privatekey(hex'')

Derive from a 66 char HEX private key, like 001ACAAEDECE405B2A958212629E16F2EB46B153EEE94CDD350FDEFF52795525B7

Sign lib.sign(Transaction{}, XRPL_Account{}/[{}])

The first argument of the sign-method should be a Transaction object, the second argument can either contain one XRPL_Account object (returned by either the generate or derive methods) or an array with multiple XRPL_Account objects (multiSign).

When combining previously signed MultiSign transactions as HEX blob, the second argument can also be an array with { signedTransaction: '...' } objects (or an array of strings with the HEX blob).

Samples

https://github.com/WietseWind/xrpl-accountlib/blob/master/samples/sign.js

Signing with one account:

lib.sign(Tx, lib.derive.familySeed('shqNUmrgnkBmK9iCijrtid2Ua4uHd'))

MultiSign

lib.sign(Tx, [
  lib.derive.familySeed('sp5mkm12oJj3t8fFRiaMNrDbc73N2'),
  lib.derive.familySeed('snYHBZDJ51PPSuzWYVhEh1kb9zvEU')
])

If you want to sign a single transaction that will be part of a MultiSigned transaction (combined later on) it's mandatory to specify the signAs account (with the chained (signAs( .. ) method). The output (signed transaction blob, hex) signed by multiple accounts can then be combined later on:

Sign a MultiSign transaction to combine later

lib.sign(
  Tx, 
  lib.derive.familySeed('sp5mkm12oJj3t8XXXXXXXXXXXXXXX')
  	 .signAs('r9yzFismdTTWzc6Ea3mJr9by26QaFrFHP7')
)

Combine multiple signed HEX MultiSign transactions

const Tx = lib.sign([
   { signedTransaction: '120000240000000B2E000001EF614000000002FAF0806840000000000003E873008114723F34B08C70F3EF8759B1A2CD4934D434A3C2518314628891E80B72684CF065A0AE8EC3482472C1C0DCF3E010732103AC651208BDA639C7AEC10873771A5B5F1A2008CAB3B2155871EE16A966D5860774473045022100CD9BC97047BF8EE0AF2D7631540FFF4C5FFE863AFAA9E2DE7AD98156F3323CF9022031D0454947833536028029FB9B61B224F4C2BFC1D1F670C49880AD004A76315C8114723F34B08C70F3EF8759B1A2CD4934D434A3C251E1F1' },
   { signedTransaction: '12000024000000042E000001EF614000000007F81ED96840000000000003E873008114F84E8A80D08854F3621F9214D58F04D41A07EE108314F40B468D5AC0DBA36E2941877AC2E9BBD48262A1F3E010732103CA9799516799A1139BED8958A9FDD0033389396422B888A7E56FB9991B0A179E74473045022100B22D6874CC4ECC92D32E657A1F863245A4DB1B425260052A9427616BE397D244022023CA82B76ADD26909549381C5CCB7BB09084936B294577299F5796A22F5AC39E8114F40B468D5AC0DBA36E2941877AC2E9BBD48262A1E1F1' }
])

You can also pass the signed HEX blob as an array with strings.

You can’t perform that action at this time.