evernode-js-client 0.6.18 → 0.6.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Release/secp256k1.node +0 -0
- package/index.js +79 -12
- package/package.json +1 -1
Binary file
|
package/index.js
CHANGED
@@ -53257,6 +53257,8 @@ const HOST_UPDATE_PARAM_SIZE = 123;
|
|
53257
53257
|
|
53258
53258
|
const VOTE_VALIDATION_ERR = "VOTE_VALIDATION_ERR";
|
53259
53259
|
|
53260
|
+
const IPV6_FAMILY = 6;
|
53261
|
+
|
53260
53262
|
class HostClient extends BaseEvernodeClient {
|
53261
53263
|
|
53262
53264
|
constructor(xrpAddress, xrpSecret, options = {}) {
|
@@ -53335,17 +53337,57 @@ class HostClient extends BaseEvernodeClient {
|
|
53335
53337
|
* @param {number} leaseIndex Index number for the lease.
|
53336
53338
|
* @param {number} leaseAmount Amount (EVRs) of the lease offer.
|
53337
53339
|
* @param {string} tosHash Hex hash of the Terms Of Service text.
|
53340
|
+
* @param {string} outboundIPAddress Assigned IP Address.
|
53338
53341
|
*/
|
53339
|
-
async offerLease(leaseIndex, leaseAmount, tosHash) {
|
53340
|
-
|
53342
|
+
async offerLease(leaseIndex, leaseAmount, tosHash, outboundIPAddress = null) {
|
53343
|
+
|
53344
|
+
// <prefix><version tag ("LTV"+uint8)><lease index (uint16)><half of tos hash><lease amount (int64)><identifier (uint32)><ip data>
|
53345
|
+
// Lengths of sub sections.
|
53341
53346
|
const prefixLen = EvernodeConstants.LEASE_TOKEN_PREFIX_HEX.length / 2;
|
53347
|
+
const versionPrefixLen = EvernodeConstants.LEASE_TOKEN_VERSION_PREFIX_HEX.length / 2;
|
53348
|
+
const versionLen = versionPrefixLen + 2; // ("LTV"<Version Number>)
|
53349
|
+
const indexLen = 2;
|
53342
53350
|
const halfToSLen = tosHash.length / 4;
|
53343
|
-
const
|
53351
|
+
const leaseAmountLen = 8;
|
53352
|
+
const identifierLen = 4;
|
53353
|
+
const ipDataLen = 17;
|
53354
|
+
|
53355
|
+
// Offsets of sub sections
|
53356
|
+
const versionPrefixOffset = prefixLen;
|
53357
|
+
const versionOffset = prefixLen + versionPrefixLen;
|
53358
|
+
const indexOffset = prefixLen + versionLen;
|
53359
|
+
const halfTosHashOffset = prefixLen + versionLen + indexLen;
|
53360
|
+
const leaseAmountOffset = prefixLen + versionLen + indexLen + halfToSLen;
|
53361
|
+
const identifierOffset = prefixLen + versionLen + indexLen + halfToSLen + leaseAmountLen;
|
53362
|
+
const ipDataOffset = prefixLen + versionLen + indexLen + halfToSLen + leaseAmountLen + identifierLen;
|
53363
|
+
|
53364
|
+
const uriBuf = Buffer.alloc((prefixLen + versionLen + indexLen + halfToSLen + leaseAmountLen + identifierLen + ipDataLen));
|
53365
|
+
|
53344
53366
|
Buffer.from(EvernodeConstants.LEASE_TOKEN_PREFIX_HEX, 'hex').copy(uriBuf);
|
53345
|
-
|
53346
|
-
|
53347
|
-
uriBuf.
|
53348
|
-
|
53367
|
+
Buffer.from(EvernodeConstants.LEASE_TOKEN_VERSION_PREFIX_HEX, 'hex').copy(uriBuf, versionPrefixOffset, 0, versionPrefixLen);
|
53368
|
+
uriBuf.writeUInt16BE(EvernodeConstants.LEASE_TOKEN_VERSION, versionOffset);
|
53369
|
+
uriBuf.writeUInt16BE(leaseIndex, indexOffset);
|
53370
|
+
Buffer.from(tosHash, 'hex').copy(uriBuf, halfTosHashOffset, 0, halfToSLen);
|
53371
|
+
uriBuf.writeBigInt64BE(XflHelpers.getXfl(leaseAmount.toString()), leaseAmountOffset);
|
53372
|
+
uriBuf.writeUInt32BE((await this.xrplAcc.getSequence()), identifierOffset);
|
53373
|
+
|
53374
|
+
if (outboundIPAddress) {
|
53375
|
+
if (outboundIPAddress.includes(":")) {
|
53376
|
+
uriBuf.writeUInt8(IPV6_FAMILY, ipDataOffset);
|
53377
|
+
const ipBuf = Buffer.from(outboundIPAddress.split(':').map(v => {
|
53378
|
+
const bytes = [];
|
53379
|
+
for (let i = 0; i < v.length; i += 2) {
|
53380
|
+
bytes.push(parseInt(v.substr(i, 2), 16));
|
53381
|
+
}
|
53382
|
+
return bytes;
|
53383
|
+
}).flat());
|
53384
|
+
|
53385
|
+
ipBuf.copy(uriBuf, ipDataOffset + 1, 0, ipDataLen);
|
53386
|
+
} else {
|
53387
|
+
throw "Invalid outbound IP address was provided";
|
53388
|
+
}
|
53389
|
+
}
|
53390
|
+
|
53349
53391
|
const uri = uriBuf.toString('base64');
|
53350
53392
|
|
53351
53393
|
try {
|
@@ -54779,6 +54821,8 @@ const EvernodeConstants = {
|
|
54779
54821
|
EVR: 'EVR',
|
54780
54822
|
TOKEN_PREFIX_HEX: '657672686F7374', // evrhost
|
54781
54823
|
LEASE_TOKEN_PREFIX_HEX: '6576726C65617365', // evrlease
|
54824
|
+
LEASE_TOKEN_VERSION_PREFIX_HEX: '4C5456', // LTV (Lease_Token_Version)
|
54825
|
+
LEASE_TOKEN_VERSION: 1,
|
54782
54826
|
HOOK_NAMESPACE: '01EAF09326B4911554384121FF56FA8FECC215FDDE2EC35D9E59F2C53EC665A0',
|
54783
54827
|
NOW_IN_EVRS: "0.00000001",
|
54784
54828
|
HOOKS: [
|
@@ -56200,23 +56244,45 @@ const { Buffer } = __nccwpck_require__(4300);
|
|
56200
56244
|
const { XflHelpers } = __nccwpck_require__(3243);
|
56201
56245
|
const { EvernodeConstants } = __nccwpck_require__(9849);
|
56202
56246
|
const { TransactionHelper } = __nccwpck_require__(7071);
|
56247
|
+
const { EvernodeHelpers } = __nccwpck_require__(2523);
|
56203
56248
|
|
56204
56249
|
// Utility helper functions.
|
56205
56250
|
class UtilHelpers {
|
56206
56251
|
|
56207
56252
|
static decodeLeaseTokenUri(hexUri) {
|
56208
56253
|
// Get the lease index from the token's URI.
|
56209
|
-
// <prefix><lease index 16)><half of tos hash><lease amount (int64)><identifier (uint32)>
|
56254
|
+
// <prefix><version>lease index 16)><half of tos hash><lease amount (int64)><identifier (uint32)><(ip numeric array)>
|
56210
56255
|
|
56211
56256
|
const asciiUri = TransactionHelper.hexToASCII(hexUri);
|
56212
56257
|
const uriBuf = Buffer.from(asciiUri, 'base64');
|
56258
|
+
// Lengths of sub sections.
|
56213
56259
|
const prefixLen = EvernodeConstants.LEASE_TOKEN_PREFIX_HEX.length / 2;
|
56260
|
+
const versionPrefixLen = EvernodeConstants.LEASE_TOKEN_VERSION_PREFIX_HEX.length / 2;
|
56261
|
+
const versionLen = versionPrefixLen + 2;
|
56262
|
+
const indexLen = 2;
|
56214
56263
|
const halfToSLen = 16;
|
56264
|
+
const leaseAmountLen = 8;
|
56265
|
+
const identifierLen = 4;
|
56266
|
+
const ipDataLen = 17;
|
56267
|
+
|
56268
|
+
const isVersionedURI = EvernodeHelpers.isValidURI(hexUri, `${EvernodeConstants.LEASE_TOKEN_PREFIX_HEX}${EvernodeConstants.LEASE_TOKEN_VERSION_PREFIX_HEX}`);
|
56269
|
+
|
56270
|
+
// Offsets of sub sections
|
56271
|
+
const versionPrefixOffset = prefixLen + versionPrefixLen;
|
56272
|
+
const halfTosHashOffset = isVersionedURI ? (prefixLen + versionLen + indexLen) : (prefixLen + indexLen);
|
56273
|
+
const leaseAmountOffset = isVersionedURI ? (prefixLen + versionLen + indexLen + halfToSLen) : (prefixLen + indexLen + halfToSLen);
|
56274
|
+
const identifierOffset = isVersionedURI ? (prefixLen + versionLen + indexLen + halfToSLen + leaseAmountLen) : (prefixLen + indexLen + halfToSLen + leaseAmountLen);
|
56275
|
+
const ipDataOffset = isVersionedURI ? (prefixLen + versionLen + indexLen + halfToSLen + leaseAmountLen + identifierLen) : (prefixLen + indexLen + halfToSLen + leaseAmountLen + identifierLen);
|
56276
|
+
|
56215
56277
|
return {
|
56216
|
-
|
56217
|
-
|
56218
|
-
|
56219
|
-
|
56278
|
+
version: isVersionedURI ? `${uriBuf.slice(prefixLen, versionPrefixOffset).toString()}${uriBuf.readUint16BE(prefixLen + versionPrefixLen)}` : null,
|
56279
|
+
leaseIndex: isVersionedURI ? uriBuf.readUint16BE(prefixLen + versionLen) : uriBuf.readUint16BE(prefixLen),
|
56280
|
+
halfTos: uriBuf.slice(halfTosHashOffset, halfTosHashOffset + halfToSLen),
|
56281
|
+
leaseAmount: parseFloat(XflHelpers.toString(uriBuf.readBigInt64BE(leaseAmountOffset))),
|
56282
|
+
identifier: uriBuf.length > identifierOffset ? uriBuf.readUInt32BE(identifierOffset) : null,
|
56283
|
+
outboundIP: (uriBuf.length > ipDataOffset && (uriBuf.readUint8(ipDataOffset) == 6))
|
56284
|
+
? { family: 6, address: uriBuf.slice(ipDataOffset + 1, ipDataOffset + 1 + ipDataLen).toString('hex').toUpperCase().replace(/(.{4})(?!$)/g, "$1:") }
|
56285
|
+
: null
|
56220
56286
|
}
|
56221
56287
|
}
|
56222
56288
|
|
@@ -56229,6 +56295,7 @@ class UtilHelpers {
|
|
56229
56295
|
return time;
|
56230
56296
|
}
|
56231
56297
|
}
|
56298
|
+
|
56232
56299
|
}
|
56233
56300
|
|
56234
56301
|
module.exports = {
|