Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
127 lines (103 loc) · 3.9 KB

File metadata and controls

127 lines (103 loc) · 3.9 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
'use strict';
var _ = require('lodash');
const path = require('path');
const getTxJson = require('./lib/util').getTxJson;
const calcFee = require('./lib/util').calcFee;
var utils = require('chainsql-lib').ChainsqlLibUtil;
var validate = utils.common.validate;
var toRippledAmount = utils.common.toRippledAmount;
var paymentFlags = utils.common.txFlags.Payment;
var ValidationError = utils.common.errors.ValidationError;
function isXRPToXRPPayment(payment) {
var sourceCurrency = _.get(payment, 'source.maxAmount.currency', _.get(payment, 'source.amount.currency'));
var destinationCurrency = _.get(payment, 'destination.amount.currency', _.get(payment, 'destination.minAmount.currency'));
return sourceCurrency === 'ZXC' && destinationCurrency === 'ZXC';
}
function isIOUWithoutCounterparty(amount) {
return amount && amount.currency !== 'ZXC' && amount.counterparty === undefined;
}
function applyAnyCounterpartyEncoding(payment) {
// Convert blank counterparty to sender or receiver's address
// (Ripple convention for 'any counterparty')
// https://ripple.com/build/transactions/
// #special-issuer-values-for-sendmax-and-amount
// https://ripple.com/build/ripple-rest/#counterparties-in-payments
_.forEach([payment.source, payment.destination], function(adjustment) {
_.forEach(['amount', 'minAmount', 'maxAmount'], function(key) {
if (isIOUWithoutCounterparty(adjustment[key])) {
adjustment[key].counterparty = adjustment.address;
}
});
});
}
function createMaximalAmount(amount) {
var maxXRPValue = '100000000000';
var maxIOUValue = '9999999999999999e80';
var maxValue = amount.currency === 'ZXC' ? maxXRPValue : maxIOUValue;
return _.assign({}, amount, {
value: maxValue
});
}
function createPaymentTransaction(paymentArgument) {
var payment = _.cloneDeep(paymentArgument);
var txJSON = {
TransactionType: payment.tsType,
Tables: payment.tables,
TableNewName: payment.tableNewName,
OpType: payment.opType,
Raw: payment.raw,
Account: payment.address,
Owner: payment.owner,
Flags: payment.flags,
User:payment.user,
AutoFillField:payment.autoFillField,
Token:payment.token,
StrictMode: payment.strictMode,
OperationRule: payment.operationRule,
TxsHashFillField:payment.txsHashFillField,
LedgerSeqField:payment.ledgerSeqField,
LedgerTimeField:payment.ledgerTimeField
}
return txJSON;
}
function checkTablePayment(payment)
{
if(payment.address === undefined) return "account is null, please use the function 'as' first.";
return "";
}
function prepareTablePayment(payment, chainsqlApi,instructions) {
let err = checkTablePayment(payment)
if( err != "") return Promise.reject(err);
var txJSON = createPaymentTransaction(payment);
return utils.prepareTransaction(txJSON, chainsqlApi, instructions);
}
function prepareTable(ChainSQL, payment, resolve, reject) {
prepareTablePayment(payment, ChainSQL.api,ChainSQL.instructions).then(function (tx_json) {
var dropsPerByte = Math.ceil(1000000.0 / 1024);;
ChainSQL.api.getServerInfo().then(res => {
if(res.validatedLedger.dropsPerByte != undefined){
dropsPerByte = parseInt(res.validatedLedger.dropsPerByte);
}
// 1 calculate fee
var txJson = JSON.parse(tx_json.txJSON);
txJson.Fee = calcFee(txJson,dropsPerByte);
if( txJson.Tables.length === 1
&& txJson.Tables[0].Table.NameInDB !== undefined
&& txJson.Tables[0].Table.NameInDB !== ''){
resolve({txJSON:txJson});
return ;
}
// 2 get table's NameInDB
getTxJson(ChainSQL, txJson).then(function (data) {
resolve({txJSON:data.tx_json});
}).catch(function (error) {
reject(error);
});
}).catch(err => {
reject(err);
});
}).catch(err => {
reject(err);
});
}
module.exports = prepareTable;
Morty Proxy This is a proxified and sanitized view of the page, visit original site.