RippleAPI cómo emitir pagarés usando preparePayment [cerrado]

Estoy probando la API y he configurado una cuenta de 'usuario' y una cuenta de 'puerta de enlace'. La única diferencia entre los dos es que el usuario ha extendido una línea de confianza a la cuenta de la puerta de enlace. Ahora me gustaría emitir pagarés en USD desde la puerta de enlace a la cuenta de usuario.

Supongo que la funcionalidad para esto está integrada en api.preparePayment(). Hasta ahora, puedo transferir XRP usando el código que se encuentra en el ejemplo de pago de ripple-lib . La esencia es:

const address = SENDER_ADDRESS;
const secret = SENDER_SECRET;

const payment = {
  source: {
    address: address,
    maxAmount: {
      value: '0.01',
      currency: 'XRP'
    }
  },
  destination: {
    address: RECEIVER_ADDRESS,
    amount: {
      value: '0.01',
      currency: 'XRP'
    }
  }
};


api.connect().then(() => {
  console.log('Connected...');

  return api.preparePayment(address, payment, instructions).then(prepared => {
    console.log('Payment transaction prepared...');
    const {signedTransaction} = api.sign(prepared.txJSON, secret);
    console.log('Payment transaction signed...');
    api.submit(signedTransaction);
  });

Faltan algunas líneas de código, pero esta es la estructura básica. Funciona cuando hago que la puerta de enlace o el usuario sea el remitente y el otro el receptor. ¿Cómo debo modificarlo para poder emitir pagarés en USD desde el Gateway al usuario?

Mi trustlineobjeto era:

var trustline = {
  "currency": "USD",
  "counterparty": GATEWAY_ADDRESS, 
  "limit": "100",
  "qualityIn": 0.91,
  "qualityOut": 0.87,
  "ripplingDisabled": true,
  "frozen": false,
};

Respuestas (1)

Bien, lo descubrí: primero, configuré una línea de confianza de USER_ADDR a GATEWAY_ADDR por 1000 EUR. Me aseguré de que la entrada de calidad y la salida de calidad estuvieran configuradas en 0, el valor predeterminado:

var trustline = {
  "currency": "EUR",
  "counterparty": GATEWAY_ADDR, 
  "limit": "1000",
  "ripplingDisabled": true,
  "frozen": false,
  "memos": [
    {
      "type": "test2",
      "format": "plain/text",
      "data": "texted data2"
    }
  ]
};

Firmé y envié esta línea de confianza.

Luego usé el siguiente objeto de pago para crear un IOU por 50 EUR desde la puerta de enlace al usuario, indicando que el usuario había depositado 50 EUR en la puerta de enlace fuera del sistema Ripple:

const payment = {
  source: {
    address: GATEWAY_ADDR,
    maxAmount: {
      currency: 'EUR',
      value: '50',
      counterparty: GATEWAY_ADDR
    }
  },
  destination: {
    address: USER_ADDR,
    amount: {
      currency: 'EUR',
      value: '50',
      counterparty: GATEWAY_ADDR
    }
  }
};

Anteriormente, esto no funcionaba debido a que qualityIn y qualityOut estaban en 0.91 y 0.87

Dado que establece el monto máximo en 50 EUR, el pago solo funcionará si el costo de entrega de 50 EUR es de 50 EUR o menos. Si el destinatario no valora los pagarés de la puerta de enlace al valor nominal, entonces le costará a la puerta de enlace más de 50 EUR darle al cliente 50 EUR. (Ripple solo requiere que los emisores valoren sus propios pagarés al valor nominal. Puede devaluar los pagarés de otras personas).