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#",
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||||
"title": "quality",
|
"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.",
|
"description": "Ratio for incoming/outgoing transit fees.",
|
||||||
"type": "integer",
|
"type": "number",
|
||||||
"minimum": 0,
|
"minimum": 0.000000001,
|
||||||
"maximum": 1000000000
|
"maximum": 4.294967295
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const utils = require('./utils');
|
const utils = require('./utils');
|
||||||
const flags = utils.core.Transaction.flags.TrustSet;
|
const flags = utils.core.Transaction.flags.TrustSet;
|
||||||
|
const BigNumber = require('bignumber.js');
|
||||||
|
|
||||||
function parseFlag(flagsValue, trueValue, falseValue) {
|
function parseFlag(flagsValue, trueValue, falseValue) {
|
||||||
if (flagsValue & trueValue) {
|
if (flagsValue & trueValue) {
|
||||||
@@ -14,6 +15,10 @@ function parseFlag(flagsValue, trueValue, falseValue) {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseQuality(quality) {
|
||||||
|
return (new BigNumber(quality)).shift(-9).toNumber();
|
||||||
|
}
|
||||||
|
|
||||||
function parseTrustline(tx: Object): Object {
|
function parseTrustline(tx: Object): Object {
|
||||||
assert(tx.TransactionType === 'TrustSet');
|
assert(tx.TransactionType === 'TrustSet');
|
||||||
|
|
||||||
@@ -21,8 +26,8 @@ function parseTrustline(tx: Object): Object {
|
|||||||
limit: tx.LimitAmount.value,
|
limit: tx.LimitAmount.value,
|
||||||
currency: tx.LimitAmount.currency,
|
currency: tx.LimitAmount.currency,
|
||||||
counterparty: tx.LimitAmount.issuer,
|
counterparty: tx.LimitAmount.issuer,
|
||||||
qualityIn: tx.QualityIn,
|
qualityIn: parseQuality(tx.QualityIn),
|
||||||
qualityOut: tx.QualityOut,
|
qualityOut: parseQuality(tx.QualityOut),
|
||||||
ripplingDisabled: parseFlag(
|
ripplingDisabled: parseFlag(
|
||||||
tx.Flags, flags.SetNoRipple, flags.ClearNoRipple),
|
tx.Flags, flags.SetNoRipple, flags.ClearNoRipple),
|
||||||
frozen: parseFlag(tx.Flags, flags.SetFreeze, flags.ClearFreeze),
|
frozen: parseFlag(tx.Flags, flags.SetFreeze, flags.ClearFreeze),
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
const utils = require('./utils');
|
const utils = require('./utils');
|
||||||
const validate = utils.common.validate;
|
const validate = utils.common.validate;
|
||||||
const Transaction = utils.common.core.Transaction;
|
const Transaction = utils.common.core.Transaction;
|
||||||
|
const BigNumber = require('bignumber.js');
|
||||||
|
|
||||||
const TrustSetFlags = {
|
const TrustSetFlags = {
|
||||||
authorized: {set: 'SetAuth'},
|
authorized: {set: 'SetAuth'},
|
||||||
@@ -10,6 +11,10 @@ const TrustSetFlags = {
|
|||||||
frozen: {set: 'SetFreeze', unset: 'ClearFreeze'}
|
frozen: {set: 'SetFreeze', unset: 'ClearFreeze'}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function convertQuality(quality) {
|
||||||
|
return (new BigNumber(quality)).shift(9).truncated().toNumber();
|
||||||
|
}
|
||||||
|
|
||||||
function createTrustlineTransaction(account, trustline) {
|
function createTrustlineTransaction(account, trustline) {
|
||||||
validate.address(account);
|
validate.address(account);
|
||||||
validate.trustline(trustline);
|
validate.trustline(trustline);
|
||||||
@@ -21,8 +26,8 @@ function createTrustlineTransaction(account, trustline) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const transaction = new Transaction();
|
const transaction = new Transaction();
|
||||||
transaction.trustSet(account, limit,
|
transaction.trustSet(account, limit, convertQuality(trustline.qualityIn),
|
||||||
trustline.qualityIn, trustline.qualityOut);
|
convertQuality(trustline.qualityOut));
|
||||||
utils.setTransactionBitFlags(transaction, trustline, TrustSetFlags);
|
utils.setTransactionBitFlags(transaction, trustline, TrustSetFlags);
|
||||||
return transaction;
|
return transaction;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"currency": "USD",
|
"currency": "USD",
|
||||||
"counterparty": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM",
|
"counterparty": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM",
|
||||||
"limit": "10000",
|
"limit": "10000",
|
||||||
"qualityIn": 500000000,
|
"qualityIn": 0.91,
|
||||||
"qualityOut": 500000000,
|
"qualityOut": 0.87,
|
||||||
"ripplingDisabled": true,
|
"ripplingDisabled": true,
|
||||||
"frozen": false
|
"frozen": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
"limit": "10000",
|
"limit": "10000",
|
||||||
"currency": "USD",
|
"currency": "USD",
|
||||||
"counterparty": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM",
|
"counterparty": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM",
|
||||||
"qualityIn": 500000000,
|
"qualityIn": 0.5,
|
||||||
"qualityOut": 500000000,
|
"qualityOut": 0.5,
|
||||||
"ripplingDisabled": true
|
"ripplingDisabled": true
|
||||||
},
|
},
|
||||||
"outcome": {
|
"outcome": {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
"currency": "USD",
|
"currency": "USD",
|
||||||
"issuer": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM"
|
"issuer": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM"
|
||||||
},
|
},
|
||||||
"QualityIn": 500000000,
|
"QualityIn": 910000000,
|
||||||
"QualityOut": 500000000,
|
"QualityOut": 870000000,
|
||||||
"LastLedgerSequence": 8820051,
|
"LastLedgerSequence": 8820051,
|
||||||
"Fee": "12",
|
"Fee": "12",
|
||||||
"Sequence": 23
|
"Sequence": 23
|
||||||
|
|||||||
Reference in New Issue
Block a user