evernode-js-client 0.5.17-beta-v3.4 → 0.5.17-beta-v3.6
Sign up to get free protection for your applications and to get access to all the features.
- package/index.js +377 -244
- package/package.json +1 -1
package/index.js
CHANGED
@@ -11725,7 +11725,7 @@ const { Buffer } = __nccwpck_require__(4300);
|
|
11725
11725
|
const { XrplApi } = __nccwpck_require__(1850);
|
11726
11726
|
const { XrplAccount } = __nccwpck_require__(9329);
|
11727
11727
|
const { XrplApiEvents, XrplConstants } = __nccwpck_require__(3307);
|
11728
|
-
const { EvernodeEvents,
|
11728
|
+
const { EvernodeEvents, EventTypes, MemoFormats, EvernodeConstants, HookStateKeys, HookParamKeys } = __nccwpck_require__(9849);
|
11729
11729
|
const { DefaultValues } = __nccwpck_require__(8262);
|
11730
11730
|
const { EncryptionHelper } = __nccwpck_require__(4832);
|
11731
11731
|
const { EventEmitter } = __nccwpck_require__(6170);
|
@@ -11735,13 +11735,16 @@ const { StateHelpers } = __nccwpck_require__(3860);
|
|
11735
11735
|
const { EvernodeHelpers } = __nccwpck_require__(2523);
|
11736
11736
|
const { HookHelpers } = __nccwpck_require__(4675);
|
11737
11737
|
|
11738
|
-
const
|
11739
|
-
const
|
11740
|
-
const
|
11741
|
-
const
|
11738
|
+
const CANDIDATE_PROPOSE_HASHES_PARAM_OFFSET = 0;
|
11739
|
+
const CANDIDATE_PROPOSE_KEYLETS_PARAM_OFFSET = 96;
|
11740
|
+
const CANDIDATE_PROPOSE_UNIQUE_ID_PARAM_OFFSET = 198;
|
11741
|
+
const CANDIDATE_PROPOSE_SHORT_NAME_PARAM_OFFSET = 230;
|
11742
|
+
const CANDIDATE_PROPOSE_PARAM_SIZE = 250;
|
11742
11743
|
|
11743
11744
|
const DUD_HOST_CANDID_ADDRESS_OFFSET = 12;
|
11744
11745
|
|
11746
|
+
const MAX_HOOK_PARAM_SIZE = 128;
|
11747
|
+
|
11745
11748
|
class BaseEvernodeClient {
|
11746
11749
|
|
11747
11750
|
#watchEvents;
|
@@ -11959,11 +11962,18 @@ class BaseEvernodeClient {
|
|
11959
11962
|
/**
|
11960
11963
|
* Extracts the transaction info from a given transaction.
|
11961
11964
|
* @param {object} tx Transaction to be deserialized and extracted.
|
11962
|
-
* @returns The event object in the format {name: '', data: {}}. Returns null if not handled. Note: You need to deserialize
|
11965
|
+
* @returns The event object in the format {name: '', data: {}}. Returns null if not handled. Note: You need to deserialize HookParameters before passing the transaction to this function.
|
11963
11966
|
*/
|
11964
11967
|
async extractEvernodeEvent(tx) {
|
11965
|
-
|
11966
|
-
|
11968
|
+
let eventType;
|
11969
|
+
let eventData;
|
11970
|
+
if (tx.HookParameters.length) {
|
11971
|
+
eventType = tx.HookParameters.find(p => p.name === HookParamKeys.PARAM_EVENT_TYPE_KEY)?.value;
|
11972
|
+
eventData = tx.HookParameters.find(p => p.name === HookParamKeys.PARAM_EVENT_DATA1_KEY)?.value ?? '';
|
11973
|
+
eventData += tx.HookParameters.find(p => p.name === HookParamKeys.PARAM_EVENT_DATA2_KEY)?.value ?? '';
|
11974
|
+
}
|
11975
|
+
if (tx.TransactionType === 'URITokenBuy' && eventType === EventTypes.ACQUIRE_LEASE && tx.Memos.length &&
|
11976
|
+
tx.Memos[0].type === EventTypes.ACQUIRE_LEASE && tx.Memos[0].format === MemoFormats.BASE64 && tx.Memos[0].data) {
|
11967
11977
|
|
11968
11978
|
// If our account is the destination host account, then decrypt the payload.
|
11969
11979
|
let payload = tx.Memos[0].data;
|
@@ -11989,12 +11999,11 @@ class BaseEvernodeClient {
|
|
11989
11999
|
}
|
11990
12000
|
}
|
11991
12001
|
|
11992
|
-
else if (tx.Memos.length
|
11993
|
-
tx.Memos[0].type ===
|
11994
|
-
tx.Memos[1].type === MemoTypes.ACQUIRE_REF && tx.Memos[1].data) {
|
12002
|
+
else if (eventType === EventTypes.ACQUIRE_SUCCESS && eventData && tx.Memos.length &&
|
12003
|
+
tx.Memos[0].type === EventTypes.ACQUIRE_SUCCESS && tx.Memos[0].data) {
|
11995
12004
|
|
11996
12005
|
let payload = tx.Memos[0].data;
|
11997
|
-
const acquireRefId =
|
12006
|
+
const acquireRefId = eventData;
|
11998
12007
|
|
11999
12008
|
// If our account is the destination user account, then decrypt the payload.
|
12000
12009
|
if (tx.Memos[0].format === MemoFormats.BASE64 && tx.Destination === this.xrplAcc.address) {
|
@@ -12015,12 +12024,11 @@ class BaseEvernodeClient {
|
|
12015
12024
|
}
|
12016
12025
|
|
12017
12026
|
}
|
12018
|
-
else if (tx.Memos.length
|
12019
|
-
tx.Memos[0].type ===
|
12020
|
-
tx.Memos[1].type === MemoTypes.ACQUIRE_REF && tx.Memos[1].data) {
|
12027
|
+
else if (eventType === EventTypes.ACQUIRE_ERROR && eventData && tx.Memos.length &&
|
12028
|
+
tx.Memos[0].type === EventTypes.ACQUIRE_ERROR && tx.Memos[0].data) {
|
12021
12029
|
|
12022
12030
|
let error = tx.Memos[0].data;
|
12023
|
-
const acquireRefId =
|
12031
|
+
const acquireRefId = eventData;
|
12024
12032
|
|
12025
12033
|
if (tx.Memos[0].format === MemoFormats.JSON)
|
12026
12034
|
error = JSON.parse(error).reason;
|
@@ -12034,8 +12042,7 @@ class BaseEvernodeClient {
|
|
12034
12042
|
}
|
12035
12043
|
}
|
12036
12044
|
}
|
12037
|
-
else if (
|
12038
|
-
tx.Memos[0].type === MemoTypes.HOST_REG && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12045
|
+
else if (eventType === EventTypes.HOST_REG && eventData) {
|
12039
12046
|
|
12040
12047
|
return {
|
12041
12048
|
name: EvernodeEvents.HostRegistered,
|
@@ -12045,7 +12052,7 @@ class BaseEvernodeClient {
|
|
12045
12052
|
}
|
12046
12053
|
}
|
12047
12054
|
}
|
12048
|
-
else if (
|
12055
|
+
else if (eventType === EventTypes.HOST_DEREG && eventData) {
|
12049
12056
|
return {
|
12050
12057
|
name: EvernodeEvents.HostDeregistered,
|
12051
12058
|
data: {
|
@@ -12054,14 +12061,13 @@ class BaseEvernodeClient {
|
|
12054
12061
|
}
|
12055
12062
|
}
|
12056
12063
|
}
|
12057
|
-
else if (
|
12058
|
-
tx.Memos[0].type === MemoTypes.HEARTBEAT) {
|
12064
|
+
else if (eventType === EventTypes.HEARTBEAT) {
|
12059
12065
|
|
12060
|
-
const voteInfo = (
|
12066
|
+
const voteInfo = (eventData && eventData.length) ?
|
12061
12067
|
{
|
12062
12068
|
voteInfo: {
|
12063
|
-
candidateId:
|
12064
|
-
vote: Buffer.from(
|
12069
|
+
candidateId: eventData.substr(0, 64),
|
12070
|
+
vote: Buffer.from(eventData, 'hex').slice(32, 33).readUInt8()
|
12065
12071
|
}
|
12066
12072
|
} : {};
|
12067
12073
|
|
@@ -12074,10 +12080,9 @@ class BaseEvernodeClient {
|
|
12074
12080
|
}
|
12075
12081
|
}
|
12076
12082
|
}
|
12077
|
-
else if (
|
12078
|
-
tx.Memos[0].type === MemoTypes.EXTEND_LEASE && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12083
|
+
else if (eventType === EventTypes.EXTEND_LEASE && eventData) {
|
12079
12084
|
|
12080
|
-
let uriTokenId =
|
12085
|
+
let uriTokenId = eventData;
|
12081
12086
|
|
12082
12087
|
return {
|
12083
12088
|
name: EvernodeEvents.ExtendLease,
|
@@ -12091,12 +12096,11 @@ class BaseEvernodeClient {
|
|
12091
12096
|
}
|
12092
12097
|
}
|
12093
12098
|
}
|
12094
|
-
else if (tx.Memos.length
|
12095
|
-
tx.Memos[0].type ===
|
12096
|
-
tx.Memos[1].type === MemoTypes.EXTEND_REF && tx.Memos[1].format === MemoFormats.HEX && tx.Memos[1].data) {
|
12099
|
+
else if (eventType === EventTypes.EXTEND_SUCCESS && eventData && tx.Memos.length &&
|
12100
|
+
tx.Memos[0].type === EventTypes.EXTEND_SUCCESS && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12097
12101
|
|
12098
12102
|
const extendResBuf = Buffer.from(tx.Memos[0].data, 'hex');
|
12099
|
-
const extendRefId =
|
12103
|
+
const extendRefId = eventData;
|
12100
12104
|
|
12101
12105
|
return {
|
12102
12106
|
name: EvernodeEvents.ExtendSuccess,
|
@@ -12108,12 +12112,11 @@ class BaseEvernodeClient {
|
|
12108
12112
|
}
|
12109
12113
|
|
12110
12114
|
}
|
12111
|
-
else if (tx.Memos.length
|
12112
|
-
tx.Memos[0].type ===
|
12113
|
-
tx.Memos[1].type === MemoTypes.EXTEND_REF && tx.Memos[1].data) {
|
12115
|
+
else if (eventType === EventTypes.EXTEND_ERROR && eventData && tx.Memos.length &&
|
12116
|
+
tx.Memos[0].type === EventTypes.EXTEND_ERROR && tx.Memos[0].data) {
|
12114
12117
|
|
12115
12118
|
let error = tx.Memos[0].data;
|
12116
|
-
const extendRefId =
|
12119
|
+
const extendRefId = eventData;
|
12117
12120
|
|
12118
12121
|
if (tx.Memos[0].format === MemoFormats.JSON)
|
12119
12122
|
error = JSON.parse(error).reason;
|
@@ -12127,8 +12130,7 @@ class BaseEvernodeClient {
|
|
12127
12130
|
}
|
12128
12131
|
}
|
12129
12132
|
}
|
12130
|
-
else if (
|
12131
|
-
tx.Memos[0].type === MemoTypes.INIT && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12133
|
+
else if (eventType === EventTypes.INIT && eventData) {
|
12132
12134
|
|
12133
12135
|
return {
|
12134
12136
|
name: EvernodeEvents.Initialized,
|
@@ -12137,8 +12139,7 @@ class BaseEvernodeClient {
|
|
12137
12139
|
}
|
12138
12140
|
}
|
12139
12141
|
}
|
12140
|
-
else if (
|
12141
|
-
tx.Memos[0].type === MemoTypes.HOST_UPDATE_INFO && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12142
|
+
else if (eventType === EventTypes.HOST_UPDATE_INFO && eventData) {
|
12142
12143
|
|
12143
12144
|
return {
|
12144
12145
|
name: EvernodeEvents.HostRegUpdated,
|
@@ -12148,10 +12149,9 @@ class BaseEvernodeClient {
|
|
12148
12149
|
}
|
12149
12150
|
}
|
12150
12151
|
}
|
12151
|
-
else if (
|
12152
|
-
tx.Memos[0].type === MemoTypes.DEAD_HOST_PRUNE && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12152
|
+
else if (eventType === EventTypes.DEAD_HOST_PRUNE && eventData) {
|
12153
12153
|
|
12154
|
-
const addrsBuf = Buffer.from(
|
12154
|
+
const addrsBuf = Buffer.from(eventData, 'hex');
|
12155
12155
|
|
12156
12156
|
return {
|
12157
12157
|
name: EvernodeEvents.DeadHostPrune,
|
@@ -12161,8 +12161,7 @@ class BaseEvernodeClient {
|
|
12161
12161
|
}
|
12162
12162
|
}
|
12163
12163
|
}
|
12164
|
-
else if (
|
12165
|
-
tx.Memos[0].type === MemoTypes.HOST_REBATE) {
|
12164
|
+
else if (eventType === EventTypes.HOST_REBATE) {
|
12166
12165
|
|
12167
12166
|
return {
|
12168
12167
|
name: EvernodeEvents.HostRebate,
|
@@ -12172,10 +12171,9 @@ class BaseEvernodeClient {
|
|
12172
12171
|
}
|
12173
12172
|
}
|
12174
12173
|
}
|
12175
|
-
else if (
|
12176
|
-
tx.Memos[0].type === MemoTypes.HOST_TRANSFER && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12174
|
+
else if (eventType === EventTypes.HOST_TRANSFER && eventData) {
|
12177
12175
|
|
12178
|
-
const addrsBuf = Buffer.from(
|
12176
|
+
const addrsBuf = Buffer.from(eventData, 'hex');
|
12179
12177
|
|
12180
12178
|
return {
|
12181
12179
|
name: EvernodeEvents.HostTransfer,
|
@@ -12185,40 +12183,36 @@ class BaseEvernodeClient {
|
|
12185
12183
|
}
|
12186
12184
|
}
|
12187
12185
|
}
|
12188
|
-
else if (
|
12189
|
-
tx.Memos[0].type === MemoTypes.CANDIDATE_PROPOSE && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data &&
|
12190
|
-
tx.Memos[1].type === MemoTypes.CANDIDATE_PROPOSE_REF && tx.Memos[1].format === MemoFormats.HEX && tx.Memos[1].data) {
|
12186
|
+
else if (eventType === EventTypes.CANDIDATE_PROPOSE && eventData) {
|
12191
12187
|
|
12192
12188
|
return {
|
12193
12189
|
name: EvernodeEvents.CandidateProposed,
|
12194
12190
|
data: {
|
12195
12191
|
transaction: tx,
|
12196
12192
|
owner: tx.Account,
|
12197
|
-
candidateId:
|
12193
|
+
candidateId: eventData.substr(CANDIDATE_PROPOSE_UNIQUE_ID_PARAM_OFFSET * 2, 64)
|
12198
12194
|
}
|
12199
12195
|
}
|
12200
12196
|
}
|
12201
|
-
else if (
|
12202
|
-
tx.Memos[0].type === MemoTypes.CANDIDATE_WITHDRAW && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12197
|
+
else if (eventType === EventTypes.CANDIDATE_WITHDRAW && eventData) {
|
12203
12198
|
return {
|
12204
12199
|
name: EvernodeEvents.CandidateWithdrew,
|
12205
12200
|
data: {
|
12206
12201
|
transaction: tx,
|
12207
12202
|
owner: tx.Account,
|
12208
|
-
candidateId:
|
12203
|
+
candidateId: eventData.substr(0, 64)
|
12209
12204
|
}
|
12210
12205
|
}
|
12211
12206
|
}
|
12212
|
-
else if (
|
12213
|
-
|
12214
|
-
const
|
12215
|
-
const candidateId = memoBuf.slice(0, 32).toString('hex');
|
12207
|
+
else if (eventType === EventTypes.CANDIDATE_STATUS_CHANGE && eventData) {
|
12208
|
+
const eventDataBuf = Buffer.from(eventData, 'hex');
|
12209
|
+
const candidateId = eventDataBuf.slice(0, 32).toString('hex');
|
12216
12210
|
const candidateType = StateHelpers.getCandidateType(candidateId);
|
12217
12211
|
|
12218
12212
|
switch (candidateType) {
|
12219
12213
|
case (EvernodeConstants.CandidateTypes.DudHost):
|
12220
12214
|
return {
|
12221
|
-
name:
|
12215
|
+
name: eventDataBuf.readUInt8(32) === EvernodeConstants.CandidateStatuses.CANDIDATE_ELECTED ? EvernodeEvents.DudHostRemoved : EvernodeEvents.DudHostStatusChanged,
|
12222
12216
|
data: {
|
12223
12217
|
transaction: tx,
|
12224
12218
|
candidateId: candidateId,
|
@@ -12246,20 +12240,18 @@ class BaseEvernodeClient {
|
|
12246
12240
|
}
|
12247
12241
|
|
12248
12242
|
}
|
12249
|
-
else if (
|
12250
|
-
tx.Memos[0].type === MemoTypes.HOOK_UPDATE_RES && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
|
12243
|
+
else if (eventType === EventTypes.HOOK_UPDATE_RES && eventData) {
|
12251
12244
|
return {
|
12252
12245
|
name: EvernodeEvents.ChildHookUpdated,
|
12253
12246
|
data: {
|
12254
12247
|
transaction: tx,
|
12255
12248
|
account: tx.Account,
|
12256
|
-
candidateId:
|
12249
|
+
candidateId: eventData.substr(0, 64)
|
12257
12250
|
}
|
12258
12251
|
}
|
12259
12252
|
}
|
12260
|
-
else if (
|
12261
|
-
|
12262
|
-
const mode = Buffer.from(tx.Memos[0].data, 'hex').slice(0, 1).readUInt8();
|
12253
|
+
else if (eventType === EventTypes.GOVERNANCE_MODE_CHANGE && eventData) {
|
12254
|
+
const mode = Buffer.from(eventData, 'hex').slice(0, 1).readUInt8();
|
12263
12255
|
|
12264
12256
|
return {
|
12265
12257
|
name: EvernodeEvents.GovernanceModeChanged,
|
@@ -12269,22 +12261,20 @@ class BaseEvernodeClient {
|
|
12269
12261
|
}
|
12270
12262
|
}
|
12271
12263
|
}
|
12272
|
-
else if (
|
12273
|
-
|
12274
|
-
const vote = Buffer.from(tx.Memos[0].data, 'hex').slice(32, 33).readUInt8();
|
12264
|
+
else if (eventType === EventTypes.CANDIDATE_VOTE && eventData) {
|
12265
|
+
const vote = Buffer.from(eventData, 'hex').slice(32, 33).readUInt8();
|
12275
12266
|
|
12276
12267
|
return {
|
12277
12268
|
name: EvernodeEvents.FoundationVoted,
|
12278
12269
|
data: {
|
12279
12270
|
transaction: tx,
|
12280
|
-
candidateId:
|
12271
|
+
candidateId: eventData.substr(0, 64),
|
12281
12272
|
vote: vote
|
12282
12273
|
}
|
12283
12274
|
}
|
12284
12275
|
}
|
12285
|
-
else if (
|
12286
|
-
|
12287
|
-
const candidateId = tx.Memos[0].data.substr(0, 64);
|
12276
|
+
else if (eventType === EventTypes.DUD_HOST_REPORT && eventData) {
|
12277
|
+
const candidateId = eventData.substr(0, 64);
|
12288
12278
|
|
12289
12279
|
return {
|
12290
12280
|
name: EvernodeEvents.DudHostReported,
|
@@ -12449,8 +12439,8 @@ class BaseEvernodeClient {
|
|
12449
12439
|
if (this.xrplAcc.address === this.config.registryAddress)
|
12450
12440
|
throw 'Invalid function call';
|
12451
12441
|
|
12452
|
-
let
|
12453
|
-
codec.decodeAccountID(hostAddress).copy(
|
12442
|
+
let paramData = Buffer.allocUnsafe(20);
|
12443
|
+
codec.decodeAccountID(hostAddress).copy(paramData);
|
12454
12444
|
|
12455
12445
|
// To obtain registration NFT Page Keylet and index.
|
12456
12446
|
const hostAcc = new XrplAccount(hostAddress, null, { xrplApi: this.xrplApi });
|
@@ -12460,9 +12450,13 @@ class BaseEvernodeClient {
|
|
12460
12450
|
XrplConstants.MIN_XRP_AMOUNT,
|
12461
12451
|
XrplConstants.XRP,
|
12462
12452
|
null,
|
12463
|
-
|
12464
|
-
|
12465
|
-
|
12453
|
+
null,
|
12454
|
+
{
|
12455
|
+
hookParams: [
|
12456
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.DEAD_HOST_PRUNE },
|
12457
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramData.toString('hex') }
|
12458
|
+
]
|
12459
|
+
});
|
12466
12460
|
} else
|
12467
12461
|
throw "No Registration URI token was found for the Host account."
|
12468
12462
|
|
@@ -12615,10 +12609,11 @@ class BaseEvernodeClient {
|
|
12615
12609
|
}
|
12616
12610
|
|
12617
12611
|
const uniqueId = StateHelpers.getNewHookCandidateId(hashesBuf);
|
12618
|
-
const
|
12619
|
-
|
12620
|
-
Buffer.from(
|
12621
|
-
Buffer.from(
|
12612
|
+
const paramBuf = Buffer.alloc(CANDIDATE_PROPOSE_PARAM_SIZE);
|
12613
|
+
hashesBuf.copy(paramBuf, CANDIDATE_PROPOSE_HASHES_PARAM_OFFSET);
|
12614
|
+
Buffer.from(keylets.join(''), 'hex').copy(paramBuf, CANDIDATE_PROPOSE_KEYLETS_PARAM_OFFSET);
|
12615
|
+
Buffer.from(uniqueId, 'hex').copy(paramBuf, CANDIDATE_PROPOSE_UNIQUE_ID_PARAM_OFFSET);
|
12616
|
+
Buffer.from(shortName.substr(0, 20), "utf-8").copy(paramBuf, CANDIDATE_PROPOSE_SHORT_NAME_PARAM_OFFSET);
|
12622
12617
|
|
12623
12618
|
// Get the proposal fee. Proposal fee is current epochs moment worth of rewards.
|
12624
12619
|
const proposalFee = EvernodeHelpers.getEpochRewardQuota(this.config.rewardInfo.epoch, this.config.rewardConfiguration.firstEpochRewardQuota);
|
@@ -12627,11 +12622,15 @@ class BaseEvernodeClient {
|
|
12627
12622
|
proposalFee.toString(),
|
12628
12623
|
EvernodeConstants.EVR,
|
12629
12624
|
this.config.evrIssuerAddress,
|
12630
|
-
|
12631
|
-
|
12632
|
-
|
12633
|
-
|
12634
|
-
|
12625
|
+
null,
|
12626
|
+
{
|
12627
|
+
hookParams: [
|
12628
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.CANDIDATE_PROPOSE },
|
12629
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.slice(0, MAX_HOOK_PARAM_SIZE).toString('hex').toUpperCase() },
|
12630
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA2_KEY, value: paramBuf.slice(MAX_HOOK_PARAM_SIZE).toString('hex').toUpperCase() }
|
12631
|
+
],
|
12632
|
+
...options.transactionOptions
|
12633
|
+
});
|
12635
12634
|
|
12636
12635
|
return uniqueId;
|
12637
12636
|
}
|
@@ -12648,10 +12647,14 @@ class BaseEvernodeClient {
|
|
12648
12647
|
XrplConstants.MIN_XRP_AMOUNT,
|
12649
12648
|
XrplConstants.XRP,
|
12650
12649
|
null,
|
12651
|
-
|
12652
|
-
|
12653
|
-
|
12654
|
-
|
12650
|
+
null,
|
12651
|
+
{
|
12652
|
+
hookParams: [
|
12653
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.CANDIDATE_WITHDRAW },
|
12654
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: candidateIdBuf.toString('hex').toUpperCase() }
|
12655
|
+
],
|
12656
|
+
...options.transactionOptions
|
12657
|
+
});
|
12655
12658
|
}
|
12656
12659
|
|
12657
12660
|
/**
|
@@ -12670,10 +12673,14 @@ class BaseEvernodeClient {
|
|
12670
12673
|
proposalFee.toString(),
|
12671
12674
|
EvernodeConstants.EVR,
|
12672
12675
|
this.config.evrIssuerAddress,
|
12673
|
-
|
12674
|
-
|
12675
|
-
|
12676
|
-
|
12676
|
+
null,
|
12677
|
+
{
|
12678
|
+
hookParams: [
|
12679
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.DUD_HOST_REPORT },
|
12680
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: candidateId }
|
12681
|
+
],
|
12682
|
+
...options.transactionOptions
|
12683
|
+
});
|
12677
12684
|
}
|
12678
12685
|
}
|
12679
12686
|
|
@@ -12688,14 +12695,14 @@ module.exports = {
|
|
12688
12695
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
12689
12696
|
|
12690
12697
|
const { Buffer } = __nccwpck_require__(4300);
|
12691
|
-
const {
|
12698
|
+
const { EventTypes, HookParamKeys } = __nccwpck_require__(9849);
|
12692
12699
|
const { StateHelpers } = __nccwpck_require__(3860);
|
12693
12700
|
const { XrplConstants } = __nccwpck_require__(3307);
|
12694
12701
|
const { BaseEvernodeClient } = __nccwpck_require__(6263);
|
12695
12702
|
|
12696
|
-
const
|
12697
|
-
const
|
12698
|
-
const
|
12703
|
+
const CANDIDATE_VOTE_UNIQUE_ID_PARAM_OFFSET = 0;
|
12704
|
+
const CANDIDATE_VOTE_VALUE_PARAM_OFFSET = 32;
|
12705
|
+
const CANDIDATE_VOTE_PARAM_SIZE = 33;
|
12699
12706
|
|
12700
12707
|
const FoundationEvents = {}
|
12701
12708
|
|
@@ -12736,18 +12743,22 @@ class FoundationClient extends BaseEvernodeClient {
|
|
12736
12743
|
if (this.xrplAcc.address !== this.config.foundationAddress)
|
12737
12744
|
throw `Invalid foundation address ${this.xrplAcc.address}.`;
|
12738
12745
|
|
12739
|
-
const voteBuf = Buffer.alloc(
|
12740
|
-
Buffer.from(candidateId, 'hex').copy(voteBuf,
|
12741
|
-
voteBuf.writeUInt8(vote,
|
12746
|
+
const voteBuf = Buffer.alloc(CANDIDATE_VOTE_PARAM_SIZE);
|
12747
|
+
Buffer.from(candidateId, 'hex').copy(voteBuf, CANDIDATE_VOTE_UNIQUE_ID_PARAM_OFFSET);
|
12748
|
+
voteBuf.writeUInt8(vote, CANDIDATE_VOTE_VALUE_PARAM_OFFSET)
|
12742
12749
|
|
12743
12750
|
return await this.xrplAcc.makePayment(this.config.heartbeatAddress,
|
12744
12751
|
XrplConstants.MIN_XRP_AMOUNT,
|
12745
12752
|
XrplConstants.XRP,
|
12746
12753
|
null,
|
12747
|
-
|
12748
|
-
|
12749
|
-
|
12750
|
-
|
12754
|
+
null,
|
12755
|
+
{
|
12756
|
+
hookParams: [
|
12757
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.CANDIDATE_VOTE },
|
12758
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: voteBuf.toString('hex').toUpperCase() }
|
12759
|
+
],
|
12760
|
+
...options.transactionOptions
|
12761
|
+
});
|
12751
12762
|
}
|
12752
12763
|
|
12753
12764
|
async reportDudHost(hostAddress, options = {}) {
|
@@ -12803,10 +12814,14 @@ class FoundationClient extends BaseEvernodeClient {
|
|
12803
12814
|
XrplConstants.MIN_XRP_AMOUNT,
|
12804
12815
|
XrplConstants.XRP,
|
12805
12816
|
null,
|
12806
|
-
|
12807
|
-
|
12808
|
-
|
12809
|
-
|
12817
|
+
null,
|
12818
|
+
{
|
12819
|
+
hookParams: [
|
12820
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.GOVERNANCE_MODE_CHANGE },
|
12821
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: modeBuf.toString('hex').toUpperCase() }
|
12822
|
+
],
|
12823
|
+
...options.transactionOptions
|
12824
|
+
});
|
12810
12825
|
}
|
12811
12826
|
}
|
12812
12827
|
|
@@ -12993,7 +13008,7 @@ module.exports = {
|
|
12993
13008
|
|
12994
13009
|
const { XrplConstants } = __nccwpck_require__(3307);
|
12995
13010
|
const { BaseEvernodeClient } = __nccwpck_require__(6263);
|
12996
|
-
const { EvernodeEvents, EvernodeConstants, MemoFormats,
|
13011
|
+
const { EvernodeEvents, EvernodeConstants, MemoFormats, EventTypes, ErrorCodes, HookParamKeys } = __nccwpck_require__(9849);
|
12997
13012
|
const { XrplAccount } = __nccwpck_require__(9329);
|
12998
13013
|
const { EncryptionHelper } = __nccwpck_require__(4832);
|
12999
13014
|
const { Buffer } = __nccwpck_require__(4300);
|
@@ -13010,28 +13025,28 @@ const HostEvents = {
|
|
13010
13025
|
ExtendLease: EvernodeEvents.ExtendLease
|
13011
13026
|
}
|
13012
13027
|
|
13013
|
-
const
|
13014
|
-
const
|
13015
|
-
const
|
13016
|
-
const
|
13017
|
-
const
|
13018
|
-
const
|
13019
|
-
const
|
13020
|
-
const
|
13021
|
-
const
|
13022
|
-
const
|
13023
|
-
const
|
13024
|
-
|
13025
|
-
const
|
13026
|
-
const
|
13027
|
-
const
|
13028
|
-
const
|
13029
|
-
const
|
13030
|
-
const
|
13031
|
-
const
|
13032
|
-
const
|
13033
|
-
const
|
13034
|
-
const
|
13028
|
+
const HOST_COUNTRY_CODE_PARAM_OFFSET = 0;
|
13029
|
+
const HOST_CPU_MICROSEC_PARAM_OFFSET = 2;
|
13030
|
+
const HOST_RAM_MB_PARAM_OFFSET = 6;
|
13031
|
+
const HOST_DISK_MB_PARAM_OFFSET = 10;
|
13032
|
+
const HOST_TOT_INS_COUNT_PARAM_OFFSET = 14;
|
13033
|
+
const HOST_CPU_MODEL_NAME_PARAM_OFFSET = 18;
|
13034
|
+
const HOST_CPU_COUNT_PARAM_OFFSET = 58;
|
13035
|
+
const HOST_CPU_SPEED_PARAM_OFFSET = 60;
|
13036
|
+
const HOST_DESCRIPTION_PARAM_OFFSET = 62;
|
13037
|
+
const HOST_EMAIL_ADDRESS_PARAM_OFFSET = 88;
|
13038
|
+
const HOST_REG_PARAM_SIZE = 128;
|
13039
|
+
|
13040
|
+
const HOST_UPDATE_TOKEN_ID_PARAM_OFFSET = 0;
|
13041
|
+
const HOST_UPDATE_COUNTRY_CODE_PARAM_OFFSET = 32;
|
13042
|
+
const HOST_UPDATE_CPU_MICROSEC_PARAM_OFFSET = 34;
|
13043
|
+
const HOST_UPDATE_RAM_MB_PARAM_OFFSET = 38;
|
13044
|
+
const HOST_UPDATE_DISK_MB_PARAM_OFFSET = 42;
|
13045
|
+
const HOST_UPDATE_TOT_INS_COUNT_PARAM_OFFSET = 46;
|
13046
|
+
const HOST_UPDATE_ACT_INS_COUNT_PARAM_OFFSET = 50;
|
13047
|
+
const HOST_UPDATE_DESCRIPTION_PARAM_OFFSET = 54;
|
13048
|
+
const HOST_UPDATE_VERSION_PARAM_OFFSET = 80;
|
13049
|
+
const HOST_UPDATE_PARAM_SIZE = 83;
|
13035
13050
|
|
13036
13051
|
const VOTE_VALIDATION_ERR = "VOTE_VALIDATION_ERR";
|
13037
13052
|
|
@@ -13209,24 +13224,30 @@ class HostClient extends BaseEvernodeClient {
|
|
13209
13224
|
}
|
13210
13225
|
|
13211
13226
|
// <country_code(2)><cpu_microsec(4)><ram_mb(4)><disk_mb(4)><no_of_total_instances(4)><cpu_model(40)><cpu_count(2)><cpu_speed(2)><description(26)><email_address(40)>
|
13212
|
-
const
|
13213
|
-
Buffer.from(countryCode.substr(0, 2), "utf-8").copy(
|
13214
|
-
|
13215
|
-
|
13216
|
-
|
13217
|
-
|
13218
|
-
Buffer.from(cpuModel.substr(0, 40), "utf-8").copy(
|
13219
|
-
|
13220
|
-
|
13221
|
-
Buffer.from(description.substr(0, 26), "utf-8").copy(
|
13222
|
-
Buffer.from(emailAddress.substr(0, 40), "utf-8").copy(
|
13227
|
+
const paramBuf = Buffer.alloc(HOST_REG_PARAM_SIZE, 0);
|
13228
|
+
Buffer.from(countryCode.substr(0, 2), "utf-8").copy(paramBuf, HOST_COUNTRY_CODE_PARAM_OFFSET);
|
13229
|
+
paramBuf.writeUInt32LE(cpuMicroSec, HOST_CPU_MICROSEC_PARAM_OFFSET);
|
13230
|
+
paramBuf.writeUInt32LE(ramMb, HOST_RAM_MB_PARAM_OFFSET);
|
13231
|
+
paramBuf.writeUInt32LE(diskMb, HOST_DISK_MB_PARAM_OFFSET);
|
13232
|
+
paramBuf.writeUInt32LE(totalInstanceCount, HOST_TOT_INS_COUNT_PARAM_OFFSET);
|
13233
|
+
Buffer.from(cpuModel.substr(0, 40), "utf-8").copy(paramBuf, HOST_CPU_MODEL_NAME_PARAM_OFFSET);
|
13234
|
+
paramBuf.writeUInt16LE(cpuCount, HOST_CPU_COUNT_PARAM_OFFSET);
|
13235
|
+
paramBuf.writeUInt16LE(cpuSpeed, HOST_CPU_SPEED_PARAM_OFFSET);
|
13236
|
+
Buffer.from(description.substr(0, 26), "utf-8").copy(paramBuf, HOST_DESCRIPTION_PARAM_OFFSET);
|
13237
|
+
Buffer.from(emailAddress.substr(0, 40), "utf-8").copy(paramBuf, HOST_EMAIL_ADDRESS_PARAM_OFFSET);
|
13223
13238
|
|
13224
13239
|
const tx = await this.xrplAcc.makePayment(this.config.registryAddress,
|
13225
13240
|
(transferredNFTokenId) ? EvernodeConstants.NOW_IN_EVRS : this.config.hostRegFee.toString(),
|
13226
13241
|
EvernodeConstants.EVR,
|
13227
13242
|
this.config.evrIssuerAddress,
|
13228
|
-
|
13229
|
-
|
13243
|
+
null,
|
13244
|
+
{
|
13245
|
+
hookParams: [
|
13246
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_REG },
|
13247
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex').toUpperCase() }
|
13248
|
+
],
|
13249
|
+
...options.transactionOptions
|
13250
|
+
});
|
13230
13251
|
|
13231
13252
|
console.log('Waiting for the sell offer', tx.id)
|
13232
13253
|
let sellOffer = null;
|
@@ -13278,54 +13299,62 @@ class HostClient extends BaseEvernodeClient {
|
|
13278
13299
|
XrplConstants.MIN_XRP_AMOUNT,
|
13279
13300
|
XrplConstants.XRP,
|
13280
13301
|
null,
|
13281
|
-
|
13282
|
-
|
13283
|
-
|
13284
|
-
|
13302
|
+
null,
|
13303
|
+
{
|
13304
|
+
hookParams: [
|
13305
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_DEREG },
|
13306
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: regUriToken.index }
|
13307
|
+
],
|
13308
|
+
...options.transactionOptions
|
13309
|
+
});
|
13285
13310
|
|
13286
13311
|
return await this.isRegistered();
|
13287
13312
|
}
|
13288
13313
|
|
13289
13314
|
async updateRegInfo(activeInstanceCount = null, version = null, totalInstanceCount = null, tokenID = null, countryCode = null, cpuMicroSec = null, ramMb = null, diskMb = null, description = null, options = {}) {
|
13290
13315
|
// <token_id(32)><country_code(2)><cpu_microsec(4)><ram_mb(4)><disk_mb(4)><total_instance_count(4)><active_instances(4)><description(26)><version(3)>
|
13291
|
-
const
|
13316
|
+
const paramBuf = Buffer.alloc(HOST_UPDATE_PARAM_SIZE, 0);
|
13292
13317
|
if (tokenID)
|
13293
|
-
Buffer.from(tokenID.substr(0, 32), "hex").copy(
|
13318
|
+
Buffer.from(tokenID.substr(0, 32), "hex").copy(paramBuf, HOST_UPDATE_TOKEN_ID_PARAM_OFFSET);
|
13294
13319
|
if (countryCode)
|
13295
|
-
Buffer.from(countryCode.substr(0, 2), "utf-8").copy(
|
13320
|
+
Buffer.from(countryCode.substr(0, 2), "utf-8").copy(paramBuf, HOST_UPDATE_COUNTRY_CODE_PARAM_OFFSET);
|
13296
13321
|
if (cpuMicroSec)
|
13297
|
-
|
13322
|
+
paramBuf.writeUInt32LE(cpuMicroSec, HOST_UPDATE_CPU_MICROSEC_PARAM_OFFSET);
|
13298
13323
|
if (ramMb)
|
13299
|
-
|
13324
|
+
paramBuf.writeUInt32LE(ramMb, HOST_UPDATE_RAM_MB_PARAM_OFFSET);
|
13300
13325
|
if (diskMb)
|
13301
|
-
|
13326
|
+
paramBuf.writeUInt32LE(diskMb, HOST_UPDATE_DISK_MB_PARAM_OFFSET);
|
13302
13327
|
if (totalInstanceCount)
|
13303
|
-
|
13328
|
+
paramBuf.writeUInt32LE(totalInstanceCount, HOST_UPDATE_TOT_INS_COUNT_PARAM_OFFSET);
|
13304
13329
|
if (activeInstanceCount)
|
13305
|
-
|
13330
|
+
paramBuf.writeUInt32LE(activeInstanceCount, HOST_UPDATE_ACT_INS_COUNT_PARAM_OFFSET);
|
13306
13331
|
if (description)
|
13307
|
-
Buffer.from(description.substr(0, 26), "utf-8").copy(
|
13332
|
+
Buffer.from(description.substr(0, 26), "utf-8").copy(paramBuf, HOST_UPDATE_DESCRIPTION_PARAM_OFFSET);
|
13308
13333
|
if (version) {
|
13309
13334
|
const components = version.split('.').map(v => parseInt(v));
|
13310
13335
|
if (components.length != 3)
|
13311
13336
|
throw 'Invalid version format.';
|
13312
|
-
|
13313
|
-
|
13314
|
-
|
13337
|
+
paramBuf.writeUInt8(components[0], HOST_UPDATE_VERSION_PARAM_OFFSET);
|
13338
|
+
paramBuf.writeUInt8(components[1], HOST_UPDATE_VERSION_PARAM_OFFSET + 1);
|
13339
|
+
paramBuf.writeUInt8(components[2], HOST_UPDATE_VERSION_PARAM_OFFSET + 2);
|
13315
13340
|
}
|
13316
13341
|
|
13317
13342
|
return await this.xrplAcc.makePayment(this.config.registryAddress,
|
13318
13343
|
XrplConstants.MIN_XRP_AMOUNT,
|
13319
13344
|
XrplConstants.XRP,
|
13320
13345
|
null,
|
13321
|
-
|
13322
|
-
|
13323
|
-
|
13324
|
-
|
13346
|
+
null,
|
13347
|
+
{
|
13348
|
+
hookParams: [
|
13349
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_UPDATE_INFO },
|
13350
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex') }
|
13351
|
+
],
|
13352
|
+
...options.transactionOptions
|
13353
|
+
});
|
13325
13354
|
}
|
13326
13355
|
|
13327
13356
|
async heartbeat(voteInfo = {}, options = {}) {
|
13328
|
-
let data
|
13357
|
+
let data;
|
13329
13358
|
// Prepare voteInfo
|
13330
13359
|
if (Object.keys(voteInfo).length > 1) {
|
13331
13360
|
let voteBuf = Buffer.alloc(33);
|
@@ -13339,10 +13368,14 @@ class HostClient extends BaseEvernodeClient {
|
|
13339
13368
|
XrplConstants.MIN_XRP_AMOUNT,
|
13340
13369
|
XrplConstants.XRP,
|
13341
13370
|
null,
|
13342
|
-
|
13343
|
-
|
13344
|
-
|
13345
|
-
|
13371
|
+
null,
|
13372
|
+
{
|
13373
|
+
hookParams: [
|
13374
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HEARTBEAT },
|
13375
|
+
...(data ? [{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: data }] : [])
|
13376
|
+
],
|
13377
|
+
...options.transactionOptions
|
13378
|
+
});
|
13346
13379
|
return res;
|
13347
13380
|
}
|
13348
13381
|
catch (e) {
|
@@ -13367,74 +13400,94 @@ class HostClient extends BaseEvernodeClient {
|
|
13367
13400
|
throw "Tenant encryption key not set.";
|
13368
13401
|
|
13369
13402
|
const encrypted = await EncryptionHelper.encrypt(encKey, instanceInfo);
|
13370
|
-
const memos = [
|
13371
|
-
{ type: MemoTypes.ACQUIRE_SUCCESS, format: MemoFormats.BASE64, data: encrypted },
|
13372
|
-
{ type: MemoTypes.ACQUIRE_REF, format: MemoFormats.HEX, data: txHash }];
|
13373
|
-
|
13374
13403
|
return this.xrplAcc.makePayment(tenantAddress,
|
13375
13404
|
XrplConstants.MIN_XRP_AMOUNT,
|
13376
13405
|
XrplConstants.XRP,
|
13377
13406
|
null,
|
13378
|
-
|
13379
|
-
|
13407
|
+
[
|
13408
|
+
{ type: EventTypes.ACQUIRE_SUCCESS, format: MemoFormats.BASE64, data: encrypted }
|
13409
|
+
],
|
13410
|
+
{
|
13411
|
+
hookParams: [
|
13412
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.ACQUIRE_SUCCESS },
|
13413
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
|
13414
|
+
],
|
13415
|
+
...options.transactionOptions
|
13416
|
+
});
|
13380
13417
|
}
|
13381
13418
|
|
13382
13419
|
async acquireError(txHash, tenantAddress, leaseAmount, reason, options = {}) {
|
13383
13420
|
|
13384
|
-
const memos = [
|
13385
|
-
{ type: MemoTypes.ACQUIRE_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.ACQUIRE_ERR, reason: reason } },
|
13386
|
-
{ type: MemoTypes.ACQUIRE_REF, format: MemoFormats.HEX, data: txHash }];
|
13387
|
-
|
13388
13421
|
return this.xrplAcc.makePayment(tenantAddress,
|
13389
13422
|
leaseAmount.toString(),
|
13390
13423
|
EvernodeConstants.EVR,
|
13391
13424
|
this.config.evrIssuerAddress,
|
13392
|
-
|
13393
|
-
|
13425
|
+
[
|
13426
|
+
{ type: EventTypes.ACQUIRE_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.ACQUIRE_ERR, reason: reason } }
|
13427
|
+
],
|
13428
|
+
{
|
13429
|
+
hookParams: [
|
13430
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.ACQUIRE_ERROR },
|
13431
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
|
13432
|
+
],
|
13433
|
+
...options.transactionOptions
|
13434
|
+
});
|
13394
13435
|
}
|
13395
13436
|
|
13396
13437
|
async extendSuccess(txHash, tenantAddress, expiryMoment, options = {}) {
|
13397
13438
|
let buf = Buffer.allocUnsafe(4);
|
13398
13439
|
buf.writeUInt32BE(expiryMoment);
|
13399
13440
|
|
13400
|
-
const memos = [
|
13401
|
-
{ type: MemoTypes.EXTEND_SUCCESS, format: MemoFormats.HEX, data: buf.toString('hex') },
|
13402
|
-
{ type: MemoTypes.EXTEND_REF, format: MemoFormats.HEX, data: txHash }];
|
13403
|
-
|
13404
13441
|
return this.xrplAcc.makePayment(tenantAddress,
|
13405
13442
|
XrplConstants.MIN_XRP_AMOUNT,
|
13406
13443
|
XrplConstants.XRP,
|
13407
13444
|
null,
|
13408
|
-
|
13409
|
-
|
13445
|
+
[
|
13446
|
+
{ type: EventTypes.EXTEND_SUCCESS, format: MemoFormats.HEX, data: buf.toString('hex') }
|
13447
|
+
],
|
13448
|
+
{
|
13449
|
+
hookParams: [
|
13450
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.EXTEND_SUCCESS },
|
13451
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
|
13452
|
+
],
|
13453
|
+
...options.transactionOptions
|
13454
|
+
});
|
13410
13455
|
}
|
13411
13456
|
|
13412
13457
|
async extendError(txHash, tenantAddress, reason, refund, options = {}) {
|
13413
13458
|
|
13414
|
-
const memos = [
|
13415
|
-
{ type: MemoTypes.EXTEND_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.EXTEND_ERR, reason: reason } },
|
13416
|
-
{ type: MemoTypes.EXTEND_REF, format: MemoFormats.HEX, data: txHash }];
|
13417
|
-
|
13418
13459
|
// Required to refund the paid EVR amount as the offer extention is not successfull.
|
13419
13460
|
return this.xrplAcc.makePayment(tenantAddress,
|
13420
13461
|
refund.toString(),
|
13421
13462
|
EvernodeConstants.EVR,
|
13422
13463
|
this.config.evrIssuerAddress,
|
13423
|
-
|
13424
|
-
|
13464
|
+
[
|
13465
|
+
{ type: EventTypes.EXTEND_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.EXTEND_ERR, reason: reason } }
|
13466
|
+
],
|
13467
|
+
{
|
13468
|
+
hookParams: [
|
13469
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.EXTEND_ERROR },
|
13470
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
|
13471
|
+
],
|
13472
|
+
...options.transactionOptions
|
13473
|
+
});
|
13425
13474
|
}
|
13426
13475
|
|
13427
13476
|
async refundTenant(txHash, tenantAddress, refundAmount, options = {}) {
|
13428
|
-
const memos = [
|
13429
|
-
{ type: MemoTypes.REFUND, format: '', data: '' },
|
13430
|
-
{ type: MemoTypes.REFUND_REF, format: MemoFormats.HEX, data: txHash }];
|
13431
|
-
|
13432
13477
|
return this.xrplAcc.makePayment(tenantAddress,
|
13433
13478
|
refundAmount.toString(),
|
13434
13479
|
EvernodeConstants.EVR,
|
13435
13480
|
this.config.evrIssuerAddress,
|
13436
|
-
|
13437
|
-
|
13481
|
+
[
|
13482
|
+
{ type: EventTypes.REFUND, format: '', data: '' }
|
13483
|
+
],
|
13484
|
+
{
|
13485
|
+
hookParams: [
|
13486
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.REFUND },
|
13487
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
|
13488
|
+
],
|
13489
|
+
...options.transactionOptions
|
13490
|
+
});
|
13438
13491
|
}
|
13439
13492
|
|
13440
13493
|
async requestRebate(options = {}) {
|
@@ -13443,9 +13496,14 @@ class HostClient extends BaseEvernodeClient {
|
|
13443
13496
|
XrplConstants.XRP,
|
13444
13497
|
null,
|
13445
13498
|
[
|
13446
|
-
{ type:
|
13499
|
+
{ type: EventTypes.HOST_REBATE, format: "", data: "" }
|
13447
13500
|
],
|
13448
|
-
|
13501
|
+
{
|
13502
|
+
hookParams: [
|
13503
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_REBATE }
|
13504
|
+
],
|
13505
|
+
...options.transactionOptions
|
13506
|
+
});
|
13449
13507
|
}
|
13450
13508
|
|
13451
13509
|
getLeaseNFTokenIdPrefix() {
|
@@ -13469,8 +13527,7 @@ class HostClient extends BaseEvernodeClient {
|
|
13469
13527
|
throw "The transferee is already registered in Evernode.";
|
13470
13528
|
}
|
13471
13529
|
|
13472
|
-
|
13473
|
-
codec.decodeAccountID(transfereeAddress).copy(memoData);
|
13530
|
+
const paramData = codec.decodeAccountID(transfereeAddress);
|
13474
13531
|
|
13475
13532
|
const regUriToken = await this.getRegistrationUriToken();
|
13476
13533
|
|
@@ -13479,10 +13536,14 @@ class HostClient extends BaseEvernodeClient {
|
|
13479
13536
|
XrplConstants.XRP,
|
13480
13537
|
null,
|
13481
13538
|
this.config.registryAddress,
|
13482
|
-
|
13483
|
-
|
13484
|
-
|
13485
|
-
|
13539
|
+
null,
|
13540
|
+
{
|
13541
|
+
hookParams: [
|
13542
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_TRANSFER },
|
13543
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramData.toString('hex') }
|
13544
|
+
],
|
13545
|
+
...options.transactionOptions
|
13546
|
+
});
|
13486
13547
|
|
13487
13548
|
let token = null;
|
13488
13549
|
let attempts = 0;
|
@@ -13546,7 +13607,7 @@ module.exports = {
|
|
13546
13607
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
13547
13608
|
|
13548
13609
|
const { BaseEvernodeClient } = __nccwpck_require__(6263);
|
13549
|
-
const { EvernodeEvents, MemoFormats,
|
13610
|
+
const { EvernodeEvents, MemoFormats, EventTypes, ErrorCodes, ErrorReasons, EvernodeConstants, HookParamKeys } = __nccwpck_require__(9849);
|
13550
13611
|
const { EncryptionHelper } = __nccwpck_require__(4832);
|
13551
13612
|
const { XrplAccount } = __nccwpck_require__(9329);
|
13552
13613
|
const { UtilHelpers } = __nccwpck_require__(6687);
|
@@ -13642,7 +13703,17 @@ class TenantClient extends BaseEvernodeClient {
|
|
13642
13703
|
ephemPrivateKey: options.ephemPrivateKey // Must be null or 32 bytes.
|
13643
13704
|
});
|
13644
13705
|
|
13645
|
-
return this.xrplAcc.buyURIToken(
|
13706
|
+
return this.xrplAcc.buyURIToken(
|
13707
|
+
buyUriOffer,
|
13708
|
+
[
|
13709
|
+
{ type: EventTypes.ACQUIRE_LEASE, format: MemoFormats.BASE64, data: ecrypted }
|
13710
|
+
],
|
13711
|
+
{
|
13712
|
+
hookParams: [
|
13713
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.ACQUIRE_LEASE }
|
13714
|
+
],
|
13715
|
+
...options.transactionOptions
|
13716
|
+
});
|
13646
13717
|
}
|
13647
13718
|
|
13648
13719
|
/**
|
@@ -13666,6 +13737,7 @@ class TenantClient extends BaseEvernodeClient {
|
|
13666
13737
|
const txList = await this.xrplAcc.getAccountTrx(tx.details.ledger_index);
|
13667
13738
|
for (let t of txList) {
|
13668
13739
|
t.tx.Memos = TransactionHelper.deserializeMemos(t.tx?.Memos);
|
13740
|
+
t.tx.HookParameters = TransactionHelper.deserializeHookParams(t.tx?.HookParameters);
|
13669
13741
|
const res = await this.extractEvernodeEvent(t.tx);
|
13670
13742
|
if ((res?.name === EvernodeEvents.AcquireSuccess || res?.name === EvernodeEvents.AcquireError) && res?.data?.acquireRefId === tx.id) {
|
13671
13743
|
clearTimeout(failTimeout);
|
@@ -13728,8 +13800,18 @@ class TenantClient extends BaseEvernodeClient {
|
|
13728
13800
|
*/
|
13729
13801
|
async extendLeaseSubmit(hostAddress, amount, tokenID, options = {}) {
|
13730
13802
|
const host = await this.getLeaseHost(hostAddress);
|
13731
|
-
return this.xrplAcc.makePayment(
|
13732
|
-
|
13803
|
+
return this.xrplAcc.makePayment(
|
13804
|
+
host.address, amount.toString(),
|
13805
|
+
EvernodeConstants.EVR,
|
13806
|
+
this.config.evrIssuerAddress,
|
13807
|
+
null,
|
13808
|
+
{
|
13809
|
+
hookParams: [
|
13810
|
+
{ name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.EXTEND_LEASE },
|
13811
|
+
{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: tokenID }
|
13812
|
+
],
|
13813
|
+
...options.transactionOptions
|
13814
|
+
});
|
13733
13815
|
}
|
13734
13816
|
|
13735
13817
|
/**
|
@@ -13753,6 +13835,7 @@ class TenantClient extends BaseEvernodeClient {
|
|
13753
13835
|
const txList = await this.xrplAcc.getAccountTrx(tx.details.ledger_index);
|
13754
13836
|
for (let t of txList) {
|
13755
13837
|
t.tx.Memos = TransactionHelper.deserializeMemos(t.tx.Memos);
|
13838
|
+
t.tx.HookParameters = TransactionHelper.deserializeHookParams(t.tx?.HookParameters);
|
13756
13839
|
const res = await this.extractEvernodeEvent(t.tx);
|
13757
13840
|
if ((res?.name === TenantEvents.ExtendSuccess || res?.name === TenantEvents.ExtendError) && res?.data?.extendRefId === tx.id) {
|
13758
13841
|
clearTimeout(failTimeout);
|
@@ -13795,7 +13878,7 @@ class TenantClient extends BaseEvernodeClient {
|
|
13795
13878
|
const uriToken = (await this.xrplAcc.getURITokens())?.find(n => n.index == tokenID);
|
13796
13879
|
|
13797
13880
|
if (!uriToken) {
|
13798
|
-
reject({ error: ErrorCodes.EXTEND_ERR, reason: ErrorReasons.
|
13881
|
+
reject({ error: ErrorCodes.EXTEND_ERR, reason: ErrorReasons.NO_TOKEN, content: 'Could not find the uri token for lease extend request.' });
|
13799
13882
|
return;
|
13800
13883
|
}
|
13801
13884
|
|
@@ -14316,7 +14399,7 @@ const EvernodeConstants = {
|
|
14316
14399
|
}
|
14317
14400
|
}
|
14318
14401
|
|
14319
|
-
const
|
14402
|
+
const EventTypes = {
|
14320
14403
|
ACQUIRE_LEASE: 'evnAcquireLease',
|
14321
14404
|
ACQUIRE_SUCCESS: 'evnAcquireSuccess',
|
14322
14405
|
ACQUIRE_ERROR: 'evnAcquireError',
|
@@ -14361,7 +14444,7 @@ const ErrorCodes = {
|
|
14361
14444
|
const ErrorReasons = {
|
14362
14445
|
TRANSACTION_FAILURE: 'TRANSACTION_FAILURE',
|
14363
14446
|
NO_OFFER: 'NO_OFFER',
|
14364
|
-
|
14447
|
+
NO_TOKEN: 'NO_TOKEN',
|
14365
14448
|
INTERNAL_ERR: 'INTERNAL_ERR',
|
14366
14449
|
TIMEOUT: 'TIMEOUT',
|
14367
14450
|
HOST_INVALID: 'HOST_INVALID',
|
@@ -14404,6 +14487,14 @@ const HookStateKeys = {
|
|
14404
14487
|
PREFIX_CANDIDATE_ID: "45565206",
|
14405
14488
|
}
|
14406
14489
|
|
14490
|
+
// All keys are prefixed with 'EVR' (0x455652)
|
14491
|
+
const HookParamKeys = {
|
14492
|
+
PARAM_STATE_HOOK_KEY: "4556520100000000000000000000000000000000000000000000000000000001",
|
14493
|
+
PARAM_EVENT_TYPE_KEY: "4556520100000000000000000000000000000000000000000000000000000002",
|
14494
|
+
PARAM_EVENT_DATA1_KEY: "4556520100000000000000000000000000000000000000000000000000000003",
|
14495
|
+
PARAM_EVENT_DATA2_KEY: "4556520100000000000000000000000000000000000000000000000000000004",
|
14496
|
+
}
|
14497
|
+
|
14407
14498
|
const EvernodeEvents = {
|
14408
14499
|
HostRegistered: "HostRegistered",
|
14409
14500
|
HostDeregistered: "HostDeregistered",
|
@@ -14439,13 +14530,14 @@ const URITokenTypes = {
|
|
14439
14530
|
|
14440
14531
|
module.exports = {
|
14441
14532
|
EvernodeConstants,
|
14442
|
-
|
14533
|
+
EventTypes,
|
14443
14534
|
MemoFormats,
|
14444
14535
|
ErrorCodes,
|
14445
14536
|
ErrorReasons,
|
14446
14537
|
HookStateKeys,
|
14447
14538
|
EvernodeEvents,
|
14448
|
-
URITokenTypes
|
14539
|
+
URITokenTypes,
|
14540
|
+
HookParamKeys
|
14449
14541
|
}
|
14450
14542
|
|
14451
14543
|
/***/ }),
|
@@ -14888,7 +14980,7 @@ const { FoundationClient, FoundationEvents } = __nccwpck_require__(2466);
|
|
14888
14980
|
const { XrplApi } = __nccwpck_require__(1850);
|
14889
14981
|
const { XrplApiEvents, XrplConstants } = __nccwpck_require__(3307);
|
14890
14982
|
const { XrplAccount } = __nccwpck_require__(9329);
|
14891
|
-
const { EvernodeConstants, HookStateKeys,
|
14983
|
+
const { EvernodeConstants, HookStateKeys, HookParamKeys, EventTypes } = __nccwpck_require__(9849);
|
14892
14984
|
const { XflHelpers } = __nccwpck_require__(3243);
|
14893
14985
|
const { FirestoreHandler } = __nccwpck_require__(9718);
|
14894
14986
|
const { StateHelpers } = __nccwpck_require__(3860);
|
@@ -14924,7 +15016,8 @@ module.exports = {
|
|
14924
15016
|
TransactionHelper,
|
14925
15017
|
EncryptionHelper,
|
14926
15018
|
HookStateKeys,
|
14927
|
-
|
15019
|
+
HookParamKeys,
|
15020
|
+
EventTypes,
|
14928
15021
|
HookTypes,
|
14929
15022
|
HookClientFactory,
|
14930
15023
|
EvernodeHelpers
|
@@ -15553,7 +15646,7 @@ module.exports = {
|
|
15553
15646
|
/***/ 7071:
|
15554
15647
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
15555
15648
|
|
15556
|
-
const { MemoFormats } = __nccwpck_require__(9849);
|
15649
|
+
const { MemoFormats, HookParamKeys } = __nccwpck_require__(9849);
|
15557
15650
|
|
15558
15651
|
class TransactionHelper {
|
15559
15652
|
|
@@ -15589,26 +15682,47 @@ class TransactionHelper {
|
|
15589
15682
|
})
|
15590
15683
|
}
|
15591
15684
|
|
15685
|
+
// Convert hook params from our object type to xrpl lib object type.
|
15686
|
+
static formatHookParams(params) {
|
15687
|
+
return params ? params.filter(m => m.name).map(m => {
|
15688
|
+
return {
|
15689
|
+
HookParameter: {
|
15690
|
+
HookParameterName: m.name,
|
15691
|
+
HookParameterValue: m.value ?
|
15692
|
+
(m.name === HookParamKeys.PARAM_EVENT_TYPE_KEY ? TransactionHelper.asciiToHex(m.value) :
|
15693
|
+
m.value.toUpperCase()) : ''
|
15694
|
+
}
|
15695
|
+
}
|
15696
|
+
}) : [];
|
15697
|
+
}
|
15698
|
+
|
15699
|
+
// Convert hook params from xrpl lib object type to our object type.
|
15700
|
+
static deserializeHookParams(params) {
|
15701
|
+
if (!params)
|
15702
|
+
return [];
|
15703
|
+
|
15704
|
+
return params.filter(m => m.HookParameter).map(m => {
|
15705
|
+
return {
|
15706
|
+
name: m.HookParameter.HookParameterName,
|
15707
|
+
value: m.HookParameter.HookParameterValue ?
|
15708
|
+
(m.HookParameter.HookParameterName === HookParamKeys.PARAM_EVENT_TYPE_KEY ? TransactionHelper.hexToASCII(m.HookParameter.HookParameterValue) :
|
15709
|
+
m.HookParameter.HookParameterValue.toUpperCase()) : '',
|
15710
|
+
}
|
15711
|
+
})
|
15712
|
+
}
|
15713
|
+
|
15592
15714
|
static hexToASCII(hex) {
|
15593
15715
|
if (!hex)
|
15594
15716
|
return "";
|
15595
15717
|
|
15596
|
-
|
15597
|
-
for (let n = 0; n < hex.length; n += 2) {
|
15598
|
-
str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
|
15599
|
-
}
|
15600
|
-
return str;
|
15718
|
+
return Buffer.from(hex, 'hex').toString();
|
15601
15719
|
}
|
15602
15720
|
|
15603
15721
|
static asciiToHex(str) {
|
15604
15722
|
if (!str)
|
15605
15723
|
return "";
|
15606
15724
|
|
15607
|
-
|
15608
|
-
for (let n = 0; n < str.length; n++) {
|
15609
|
-
hex += str.charCodeAt(n).toString(16)
|
15610
|
-
}
|
15611
|
-
return hex;
|
15725
|
+
return Buffer.from(str).toString('hex').toUpperCase();
|
15612
15726
|
}
|
15613
15727
|
}
|
15614
15728
|
|
@@ -16046,7 +16160,8 @@ class XrplAccount {
|
|
16046
16160
|
Account: this.address,
|
16047
16161
|
Amount: amountObj,
|
16048
16162
|
Destination: toAddr,
|
16049
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16163
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16164
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16050
16165
|
}, options);
|
16051
16166
|
}
|
16052
16167
|
|
@@ -16063,7 +16178,8 @@ class XrplAccount {
|
|
16063
16178
|
issuer: issuer,
|
16064
16179
|
value: limit
|
16065
16180
|
},
|
16066
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16181
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16182
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16067
16183
|
};
|
16068
16184
|
|
16069
16185
|
if (!allowRippling)
|
@@ -16078,7 +16194,8 @@ class XrplAccount {
|
|
16078
16194
|
TransactionType: 'SetRegularKey',
|
16079
16195
|
Account: this.address,
|
16080
16196
|
RegularKey: regularKey,
|
16081
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16197
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16198
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16082
16199
|
}, options);
|
16083
16200
|
}
|
16084
16201
|
|
@@ -16115,7 +16232,8 @@ class XrplAccount {
|
|
16115
16232
|
TakerGets: sellAmountObj,
|
16116
16233
|
TakerPays: forAmountObj,
|
16117
16234
|
Expiration: expiration,
|
16118
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16235
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16236
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16119
16237
|
}, options);
|
16120
16238
|
}
|
16121
16239
|
|
@@ -16130,7 +16248,8 @@ class XrplAccount {
|
|
16130
16248
|
TakerGets: forAmountObj,
|
16131
16249
|
TakerPays: buyAmountObj,
|
16132
16250
|
Expiration: expiration,
|
16133
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16251
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16252
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16134
16253
|
}, options);
|
16135
16254
|
}
|
16136
16255
|
|
@@ -16139,7 +16258,8 @@ class XrplAccount {
|
|
16139
16258
|
TransactionType: 'OfferCancel',
|
16140
16259
|
Account: this.address,
|
16141
16260
|
OfferSequence: offerSequence,
|
16142
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16261
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16262
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16143
16263
|
}, options);
|
16144
16264
|
}
|
16145
16265
|
|
@@ -16151,7 +16271,8 @@ class XrplAccount {
|
|
16151
16271
|
NFTokenTaxon: taxon,
|
16152
16272
|
TransferFee: transferFee,
|
16153
16273
|
Flags: (flags.isBurnable ? 1 : 0) | (flags.isOnlyXRP ? 2 : 0) | (flags.isTrustLine ? 4 : 0) | (flags.isTransferable ? 8 : 0),
|
16154
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16274
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16275
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16155
16276
|
}, options);
|
16156
16277
|
}
|
16157
16278
|
|
@@ -16165,7 +16286,8 @@ class XrplAccount {
|
|
16165
16286
|
Amount: amountObj,
|
16166
16287
|
Expiration: expiration,
|
16167
16288
|
Flags: 1, // tfSellToken
|
16168
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16289
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16290
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16169
16291
|
};
|
16170
16292
|
|
16171
16293
|
return this.#submitAndVerifyTransaction(destination ? { ...tx, Destination: destination } : tx, options);
|
@@ -16183,7 +16305,8 @@ class XrplAccount {
|
|
16183
16305
|
Amount: amountObj,
|
16184
16306
|
Expiration: expiration,
|
16185
16307
|
Flags: 0, // Buy offer
|
16186
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16308
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16309
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16187
16310
|
}, options);
|
16188
16311
|
}
|
16189
16312
|
|
@@ -16193,7 +16316,8 @@ class XrplAccount {
|
|
16193
16316
|
TransactionType: 'NFTokenAcceptOffer',
|
16194
16317
|
Account: this.address,
|
16195
16318
|
NFTokenBuyOffer: offerId,
|
16196
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16319
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16320
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16197
16321
|
}, options);
|
16198
16322
|
}
|
16199
16323
|
|
@@ -16203,7 +16327,8 @@ class XrplAccount {
|
|
16203
16327
|
TransactionType: 'NFTokenAcceptOffer',
|
16204
16328
|
Account: this.address,
|
16205
16329
|
NFTokenSellOffer: offerId,
|
16206
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16330
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16331
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16207
16332
|
}, options);
|
16208
16333
|
}
|
16209
16334
|
|
@@ -16213,7 +16338,8 @@ class XrplAccount {
|
|
16213
16338
|
TransactionType: 'NFTokenBurn',
|
16214
16339
|
Account: this.address,
|
16215
16340
|
NFTokenID: nfTokenId,
|
16216
|
-
Memos: TransactionHelper.formatMemos(memos)
|
16341
|
+
Memos: TransactionHelper.formatMemos(memos),
|
16342
|
+
HookParameters: TransactionHelper.formatHookParams(options.hookParams)
|
16217
16343
|
};
|
16218
16344
|
|
16219
16345
|
return this.#submitAndVerifyTransaction(owner ? { ...tx, Owner: owner } : tx, options);
|
@@ -16301,7 +16427,7 @@ class XrplAccount {
|
|
16301
16427
|
const hookExecRes = txResult.details?.meta?.HookExecutions?.map(o => {
|
16302
16428
|
return {
|
16303
16429
|
result: o.HookExecution?.HookResult,
|
16304
|
-
returnCode: o.HookExecution?.HookReturnCode,
|
16430
|
+
returnCode: parseInt(o.HookExecution?.HookReturnCode, 16),
|
16305
16431
|
message: TransactionHelper.hexToASCII(o.HookExecution?.HookReturnString).replace(/\x00+$/, '')
|
16306
16432
|
}
|
16307
16433
|
});
|
@@ -16346,7 +16472,7 @@ class XrplAccount {
|
|
16346
16472
|
const hookExecRes = txResult.details?.meta?.HookExecutions?.map(o => {
|
16347
16473
|
return {
|
16348
16474
|
result: o.HookExecution?.HookResult,
|
16349
|
-
returnCode: o.HookExecution?.HookReturnCode,
|
16475
|
+
returnCode: parseInt(o.HookExecution?.HookReturnCode, 16),
|
16350
16476
|
message: TransactionHelper.hexToASCII(o.HookExecution?.HookReturnString).replace(/\x00+$/, '')
|
16351
16477
|
}
|
16352
16478
|
});
|
@@ -16414,6 +16540,9 @@ class XrplAccount {
|
|
16414
16540
|
if (memos)
|
16415
16541
|
tx.Memos = TransactionHelper.formatMemos(memos);
|
16416
16542
|
|
16543
|
+
if (options.hookParams)
|
16544
|
+
tx.HookParameters = TransactionHelper.formatHookParams(options.hookParams);
|
16545
|
+
|
16417
16546
|
return this.#submitAndVerifyTransaction(tx, options);
|
16418
16547
|
}
|
16419
16548
|
|
@@ -16428,6 +16557,9 @@ class XrplAccount {
|
|
16428
16557
|
if (memos)
|
16429
16558
|
tx.Memos = TransactionHelper.formatMemos(memos);
|
16430
16559
|
|
16560
|
+
if (options.hookParams)
|
16561
|
+
tx.HookParameters = TransactionHelper.formatHookParams(options.hookParams);
|
16562
|
+
|
16431
16563
|
return this.#submitAndVerifyTransaction(tx, options);
|
16432
16564
|
}
|
16433
16565
|
|
@@ -16596,6 +16728,7 @@ class XrplApi {
|
|
16596
16728
|
// Emit the event only for successful transactions, Otherwise emit error.
|
16597
16729
|
if (data.engine_result === "tesSUCCESS") {
|
16598
16730
|
tx.Memos = TransactionHelper.deserializeMemos(tx.Memos);
|
16731
|
+
tx.HookParameters = TransactionHelper.deserializeHookParams(tx.HookParameters);
|
16599
16732
|
matches.forEach(s => s.handler(eventName, tx));
|
16600
16733
|
}
|
16601
16734
|
else {
|
package/package.json
CHANGED