mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-12-06 17:27:59 +00:00
Express trustline quality as a float
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"title": "quality",
|
||||
"description": "Ratio for incoming/outgoing transit fees represented in billionths. (For example, a value of 500 million represents a 0.5:1 ratio.) As a special case, 0 is treated as a 1:1 ratio.",
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 1000000000
|
||||
"description": "Ratio for incoming/outgoing transit fees.",
|
||||
"type": "number",
|
||||
"minimum": 0.000000001,
|
||||
"maximum": 4.294967295
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
const assert = require('assert');
|
||||
const utils = require('./utils');
|
||||
const flags = utils.core.Transaction.flags.TrustSet;
|
||||
const BigNumber = require('bignumber.js');
|
||||
|
||||
function parseFlag(flagsValue, trueValue, falseValue) {
|
||||
if (flagsValue & trueValue) {
|
||||
@@ -14,6 +15,10 @@ function parseFlag(flagsValue, trueValue, falseValue) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function parseQuality(quality) {
|
||||
return (new BigNumber(quality)).shift(-9).toNumber();
|
||||
}
|
||||
|
||||
function parseTrustline(tx: Object): Object {
|
||||
assert(tx.TransactionType === 'TrustSet');
|
||||
|
||||
@@ -21,8 +26,8 @@ function parseTrustline(tx: Object): Object {
|
||||
limit: tx.LimitAmount.value,
|
||||
currency: tx.LimitAmount.currency,
|
||||
counterparty: tx.LimitAmount.issuer,
|
||||
qualityIn: tx.QualityIn,
|
||||
qualityOut: tx.QualityOut,
|
||||
qualityIn: parseQuality(tx.QualityIn),
|
||||
qualityOut: parseQuality(tx.QualityOut),
|
||||
ripplingDisabled: parseFlag(
|
||||
tx.Flags, flags.SetNoRipple, flags.ClearNoRipple),
|
||||
frozen: parseFlag(tx.Flags, flags.SetFreeze, flags.ClearFreeze),
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
const utils = require('./utils');
|
||||
const validate = utils.common.validate;
|
||||
const Transaction = utils.common.core.Transaction;
|
||||
const BigNumber = require('bignumber.js');
|
||||
|
||||
const TrustSetFlags = {
|
||||
authorized: {set: 'SetAuth'},
|
||||
@@ -10,6 +11,10 @@ const TrustSetFlags = {
|
||||
frozen: {set: 'SetFreeze', unset: 'ClearFreeze'}
|
||||
};
|
||||
|
||||
function convertQuality(quality) {
|
||||
return (new BigNumber(quality)).shift(9).truncated().toNumber();
|
||||
}
|
||||
|
||||
function createTrustlineTransaction(account, trustline) {
|
||||
validate.address(account);
|
||||
validate.trustline(trustline);
|
||||
@@ -21,8 +26,8 @@ function createTrustlineTransaction(account, trustline) {
|
||||
};
|
||||
|
||||
const transaction = new Transaction();
|
||||
transaction.trustSet(account, limit,
|
||||
trustline.qualityIn, trustline.qualityOut);
|
||||
transaction.trustSet(account, limit, convertQuality(trustline.qualityIn),
|
||||
convertQuality(trustline.qualityOut));
|
||||
utils.setTransactionBitFlags(transaction, trustline, TrustSetFlags);
|
||||
return transaction;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"currency": "USD",
|
||||
"counterparty": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM",
|
||||
"limit": "10000",
|
||||
"qualityIn": 500000000,
|
||||
"qualityOut": 500000000,
|
||||
"qualityIn": 0.91,
|
||||
"qualityOut": 0.87,
|
||||
"ripplingDisabled": true,
|
||||
"frozen": false
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
"limit": "10000",
|
||||
"currency": "USD",
|
||||
"counterparty": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM",
|
||||
"qualityIn": 500000000,
|
||||
"qualityOut": 500000000,
|
||||
"qualityIn": 0.5,
|
||||
"qualityOut": 0.5,
|
||||
"ripplingDisabled": true
|
||||
},
|
||||
"outcome": {
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
"currency": "USD",
|
||||
"issuer": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM"
|
||||
},
|
||||
"QualityIn": 500000000,
|
||||
"QualityOut": 500000000,
|
||||
"QualityIn": 910000000,
|
||||
"QualityOut": 870000000,
|
||||
"LastLedgerSequence": 8820051,
|
||||
"Fee": "12",
|
||||
"Sequence": 23
|
||||
|
||||
Reference in New Issue
Block a user