How to use ripple-keypairs - 10 common examples

To help you get started, we’ve selected a few ripple-keypairs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github interledgerjs / moneyd-uplink-xrp / index.js View on Github external
if (testnet && !res.secret) {
    console.log('acquiring testnet account...')
    const resp = await fetch('https://faucet.altnet.rippletest.net/accounts', { method: 'POST' })
    const json = await resp.json()

    res.address = json.account.address
    res.secret = json.account.secret
    console.log('got testnet address "' + res.address + '"')
    console.log('waiting for testnet API to fund address...')
    await new Promise(resolve => setTimeout(resolve, 10000))
  } else {
    res.address = (await inquirer.prompt({
      type: 'input',
      name: 'address',
      message: 'XRP address:',
      default: deriveAddress(deriveKeypair(res.secret).publicKey),
      validate: (address) => isValidAccountID(address)
    })).address
    // Ensure that the given account exists and has enough XRP to create a channel.
    await validateAddress(res.xrpServer, res.address).catch((err) => {
      console.error('Error configuring uplink: ' + err.message)
      process.exit(1)
    })
  }
  const btpName = res.name || ''
  const btpSecret = hmac(hmac(parentBtpHmacKey, res.parent + btpName), res.secret).toString('hex')
  const btpServer = 'btp+wss://' + btpName + ':' + btpSecret + '@' + res.parent
  return {
    relation: 'parent',
    plugin: require.resolve('ilp-plugin-xrp-asym-client'),
    assetCode: 'XRP',
    assetScale: 9,
github WietseWind / xrp-trustline-set-commandline / offline-with-mnemonic.js View on Github external
/**
 * SET YOUR ACCOUNT SEQUENCE
 * You can check your current sequence at
 * any XRP ledger explorer, like:
 *   https://bithomp.com/explorer/
 * Bithomp shows:
 *   "Transactions: 1234"
 * In this case your AccountSequence is 1235 (+1).
 */
let AccountSequence = 123

const seed = bip39.mnemonicToSeed(mnemonic) // Note: change the line above to: const seed = bip39.mnemonicToSeed(mnemonic, 'MyPassphrase') ... if you have a BIP39 passphrase.
const m = bip32.fromSeedBuffer(seed)
const SeedOrKeypair = m.derivePath("m/44'/144'/0'/0/0").keyPair.getKeyPairs()
const WalletAddress = ripple.deriveAddress(SeedOrKeypair.publicKey)

const Transaction = {
  TransactionType: 'TrustSet',
  Flags: 131072, // tfSetNoRipple
  Account: WalletAddress,
  LimitAmount: {
    currency : "USD",
    issuer : "rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",
    value : "1000000000"
  },
  Fee: 15,
  Sequence: AccountSequence
}

new RippledWsClientSign(Transaction, SeedOrKeypair).then((Transaction) => {
  console.log(`\n\nTransaction signed, and only valid for the specified Sequence
github ninjadotorg / handshake-app / src / services / Wallets / Ripple.js View on Github external
createAddressPrivatekey() {
        try {
          const t0 = performance.now();
          const seed = bip39.mnemonicToSeed(this.mnemonic); // creates seed buffer

          console.log('mnemonic: ' + this.mnemonic);

          var entropy = new Buffer(seed, 'hex');
          console.log("entropy", entropy);
          var secret = keypairs.generateSeed({entropy: entropy});
          var keypair = keypairs.deriveKeypair(secret);
          var publicKey = keypair.publicKey;
          var address = keypairs.deriveAddress(publicKey);
          var privateKey = keypair.privateKey;

          this.address = address;
          this.privateKey = privateKey;
          this.publicKey = publicKey;
          this.secret = secret;

          const t1 = performance.now();
          console.log(`Call to createAddressPrivatekey for each Ripple (${address}) took ${t1 - t0} milliseconds.`);
        } catch (e) {
          console.error(e);
        }
    }
github ninjadotorg / handshake-app / src / services / Wallets / Ripple.js View on Github external
createAddressPrivatekey() {
        try {
          const t0 = performance.now();
          const seed = bip39.mnemonicToSeed(this.mnemonic); // creates seed buffer

          console.log('mnemonic: ' + this.mnemonic);

          var entropy = new Buffer(seed, 'hex');
          console.log("entropy", entropy);
          var secret = keypairs.generateSeed({entropy: entropy});
          var keypair = keypairs.deriveKeypair(secret);
          var publicKey = keypair.publicKey;
          var address = keypairs.deriveAddress(publicKey);
          var privateKey = keypair.privateKey;

          this.address = address;
          this.privateKey = privateKey;
          this.publicKey = publicKey;
          this.secret = secret;

          const t1 = performance.now();
          console.log(`Call to createAddressPrivatekey for each Ripple (${address}) took ${t1 - t0} milliseconds.`);
        } catch (e) {
          console.error(e);
        }
    }
github BitGo / BitGoJS / modules / core / src / v2 / coins / xrp.ts View on Github external
return co(function *() {
      const { userKeychain, backupKeychain, bitgoKeychain } = keychains;

      const userKey = HDNode.fromBase58(userKeychain.pub).getKey();
      const userAddress = rippleKeypairs.deriveAddress(userKey.getPublicKeyBuffer().toString('hex'));

      const backupKey = HDNode.fromBase58(backupKeychain.pub).getKey();
      const backupAddress = rippleKeypairs.deriveAddress(backupKey.getPublicKeyBuffer().toString('hex'));

      const bitgoKey = HDNode.fromBase58(bitgoKeychain.pub).getKey();
      const bitgoAddress = rippleKeypairs.deriveAddress(bitgoKey.getPublicKeyBuffer().toString('hex'));

      // initially, we need to generate a random root address which has to be distinct from all three keychains
      let keyPair = ECPair.makeRandom();
      if (walletParams.rootPrivateKey) {
        const rootPrivateKey = walletParams.rootPrivateKey;
        if (typeof rootPrivateKey !== 'string' || rootPrivateKey.length !== 64) {
          throw new Error('rootPrivateKey needs to be a hexadecimal private key string');
        }
        keyPair = ECPair.fromPrivateKeyBuffer(Buffer.from(walletParams.rootPrivateKey, 'hex'));
      }
      const privateKey: Buffer = keyPair.getPrivateKeyBuffer();
      const publicKey: Buffer = keyPair.getPublicKeyBuffer();
      const rootAddress = rippleKeypairs.deriveAddress(publicKey.toString('hex'));
github BitGo / BitGoJS / modules / core / src / v2 / coins / xrp.ts View on Github external
return co(function *() {
      const { userKeychain, backupKeychain, bitgoKeychain } = keychains;

      const userKey = HDNode.fromBase58(userKeychain.pub).getKey();
      const userAddress = rippleKeypairs.deriveAddress(userKey.getPublicKeyBuffer().toString('hex'));

      const backupKey = HDNode.fromBase58(backupKeychain.pub).getKey();
      const backupAddress = rippleKeypairs.deriveAddress(backupKey.getPublicKeyBuffer().toString('hex'));

      const bitgoKey = HDNode.fromBase58(bitgoKeychain.pub).getKey();
      const bitgoAddress = rippleKeypairs.deriveAddress(bitgoKey.getPublicKeyBuffer().toString('hex'));

      // initially, we need to generate a random root address which has to be distinct from all three keychains
      let keyPair = ECPair.makeRandom();
      if (walletParams.rootPrivateKey) {
        const rootPrivateKey = walletParams.rootPrivateKey;
        if (typeof rootPrivateKey !== 'string' || rootPrivateKey.length !== 64) {
          throw new Error('rootPrivateKey needs to be a hexadecimal private key string');
        }
        keyPair = ECPair.fromPrivateKeyBuffer(Buffer.from(walletParams.rootPrivateKey, 'hex'));
      }
github BitGo / BitGoJS / modules / core / src / v2 / coins / xrp.ts View on Github external
const bitgoKey = HDNode.fromBase58(bitgoKeychain.pub).getKey();
      const bitgoAddress = rippleKeypairs.deriveAddress(bitgoKey.getPublicKeyBuffer().toString('hex'));

      // initially, we need to generate a random root address which has to be distinct from all three keychains
      let keyPair = ECPair.makeRandom();
      if (walletParams.rootPrivateKey) {
        const rootPrivateKey = walletParams.rootPrivateKey;
        if (typeof rootPrivateKey !== 'string' || rootPrivateKey.length !== 64) {
          throw new Error('rootPrivateKey needs to be a hexadecimal private key string');
        }
        keyPair = ECPair.fromPrivateKeyBuffer(Buffer.from(walletParams.rootPrivateKey, 'hex'));
      }
      const privateKey: Buffer = keyPair.getPrivateKeyBuffer();
      const publicKey: Buffer = keyPair.getPublicKeyBuffer();
      const rootAddress = rippleKeypairs.deriveAddress(publicKey.toString('hex'));

      const self = this;
      const rippleLib = ripple();

      const feeInfo = yield self.getFeeInfo();
      const openLedgerFee = new BigNumber(feeInfo.xrpOpenLedgerFee);
      const medianFee = new BigNumber(feeInfo.xrpMedianFee);
      const fee = BigNumber.max(openLedgerFee, medianFee).times(1.5).toFixed(0);

      // configure multisigners
      const multisigAssignmentTx = {
        TransactionType: 'SignerListSet',
        Account: rootAddress,
        SignerQuorum: 2,
        SignerEntries: [
          {
github ripple / ripple-lib / src / transaction / sign.ts View on Github external
function sign(
  this: RippleAPI,
  txJSON: string,
  secret?: any,
  options?: SignOptions,
  keypair?: KeyPair
): {signedTransaction: string; id: string} {
  if (typeof secret === 'string') {
    // we can't validate that the secret matches the account because
    // the secret could correspond to the regular key
    validate.sign({txJSON, secret})
    return signWithKeypair(
      this,
      txJSON,
      keypairs.deriveKeypair(secret),
      options
    )
  } else {
    if (!keypair && !secret) {
      // Clearer message than 'ValidationError: instance is not exactly one from [subschema 0],[subschema 1]'
      throw new utils.common.errors.ValidationError(
        'sign: Missing secret or keypair.'
      )
    }
    return signWithKeypair(this, txJSON, keypair ? keypair : secret, options)
  }
}
github ripple / ripple-lib / src / core / transaction.js View on Github external
if (this.hasMultiSigners()) {
    return this;
  }

  const prev_sig = this.tx_json.TxnSignature;
  delete this.tx_json.TxnSignature;
  const hash = this.signingHash();

  // If the hash is the same, we can re-use the previous signature
  if (prev_sig && hash === this.previousSigningHash) {
    this.tx_json.TxnSignature = prev_sig;
    return this;
  }

  const keypair = deriveKeypair(secret || this._secret);
  this.tx_json.TxnSignature = sign(new Buffer(this.signingData(), 'hex'),
    keypair.privateKey);
  this.previousSigningHash = hash;

  return this;
};
github interledgerjs / moneyd / bin / cleanup.js View on Github external
const inquirer = require('inquirer')
const table = require('good-table')
const chalk = require('chalk')
const { deriveAddress, deriveKeypair } = require('ripple-keypairs')
const { RippleAPI } = require('ripple-lib')
const XRP_ADDRESS = process.env.XRP_ADDRESS
const XRP_SECRET = process.env.XRP_SECRET
const server = process.env.XRP_SERVER
const infoMode = process.env.INFO_MODE

if (!XRP_SECRET) {
  console.error('xrp secret must be specified')
  process.exit(1)
}

const address = XRP_ADDRESS || deriveAddress(deriveKeypair(XRP_SECRET).publicKey)

async function run () {
  const api = new RippleAPI({ server })

  console.log('connecting api...')
  await api.connect()

  console.log('getting account...')
  const res = await api.getAccountInfo(address)
  console.log(chalk.green('balance: '), res.xrpBalance + ' XRP')
  console.log(chalk.green('account: '), address)

  const channels = await api.connection.request({
    command: 'account_channels',
    account: address
  })