@xyo-network/xl1-protocol-sdk 1.15.10 → 1.15.11
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/dist/neutral/config/Config.d.ts +9 -0
- package/dist/neutral/config/Config.d.ts.map +1 -1
- package/dist/neutral/config/Validation.d.ts +9 -0
- package/dist/neutral/config/Validation.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +2 -0
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +121 -27
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/primitives/index.d.ts +3 -0
- package/dist/neutral/primitives/index.d.ts.map +1 -0
- package/dist/neutral/primitives/step/completedStepRewardAddress.d.ts +4 -0
- package/dist/neutral/primitives/step/completedStepRewardAddress.d.ts.map +1 -0
- package/dist/neutral/primitives/step/derivedReceiveAddress.d.ts +3 -0
- package/dist/neutral/primitives/step/derivedReceiveAddress.d.ts.map +1 -0
- package/dist/neutral/primitives/step/index.d.ts +5 -0
- package/dist/neutral/primitives/step/index.d.ts.map +1 -0
- package/dist/neutral/primitives/step/spec/stepTransferIndex.spec.d.ts +2 -0
- package/dist/neutral/primitives/step/spec/stepTransferIndex.spec.d.ts.map +1 -0
- package/dist/neutral/primitives/step/stepBlockRange.d.ts +3 -0
- package/dist/neutral/primitives/step/stepBlockRange.d.ts.map +1 -0
- package/dist/neutral/primitives/step/stepTransferIndex.d.ts +2 -0
- package/dist/neutral/primitives/step/stepTransferIndex.d.ts.map +1 -0
- package/dist/neutral/primitives/transaction/elevatedPayloads.d.ts +4 -0
- package/dist/neutral/primitives/transaction/elevatedPayloads.d.ts.map +1 -0
- package/dist/neutral/primitives/transaction/index.d.ts +2 -0
- package/dist/neutral/primitives/transaction/index.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/config/RewardRedemptionApi.ts +3 -3
- package/src/config/Validation.ts +10 -1
- package/src/index.ts +2 -0
- package/src/primitives/index.ts +2 -0
- package/src/primitives/step/completedStepRewardAddress.ts +8 -0
- package/src/primitives/step/derivedReceiveAddress.ts +8 -0
- package/src/primitives/step/index.ts +4 -0
- package/src/primitives/step/spec/stepTransferIndex.spec.ts +23 -0
- package/src/primitives/step/stepBlockRange.ts +8 -0
- package/src/primitives/step/stepTransferIndex.ts +18 -0
- package/src/primitives/transaction/elevatedPayloads.ts +21 -0
- package/src/primitives/transaction/index.ts +1 -0
|
@@ -85,6 +85,15 @@ export declare const ConfigZod: z.ZodObject<{
|
|
|
85
85
|
}>, {
|
|
86
86
|
readonly __address: true;
|
|
87
87
|
}>, unknown>>>>>;
|
|
88
|
+
allowedRewardEscrowAccountSigners: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodType<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
89
|
+
readonly __hex: true;
|
|
90
|
+
}>, {
|
|
91
|
+
readonly __address: true;
|
|
92
|
+
}>, unknown, z.core.$ZodTypeInternals<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
93
|
+
readonly __hex: true;
|
|
94
|
+
}>, {
|
|
95
|
+
readonly __address: true;
|
|
96
|
+
}>, unknown>>>>>;
|
|
88
97
|
}, z.core.$strip>>;
|
|
89
98
|
logLevel: z.ZodDefault<z.ZodEnum<{
|
|
90
99
|
error: "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/config/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAAmF,CAAA;AAErH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/config/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAAmF,CAAA;AAErH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYpB,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAE9C,eAAO,MAAM,gBAAgB,QAAO,MAA6B,CAAA"}
|
|
@@ -9,6 +9,15 @@ export declare const ValidationConfigZod: z.ZodObject<{
|
|
|
9
9
|
}>, {
|
|
10
10
|
readonly __address: true;
|
|
11
11
|
}>, unknown>>>>>;
|
|
12
|
+
allowedRewardEscrowAccountSigners: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodType<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
13
|
+
readonly __hex: true;
|
|
14
|
+
}>, {
|
|
15
|
+
readonly __address: true;
|
|
16
|
+
}>, unknown, z.core.$ZodTypeInternals<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
17
|
+
readonly __hex: true;
|
|
18
|
+
}>, {
|
|
19
|
+
readonly __address: true;
|
|
20
|
+
}>, unknown>>>>>;
|
|
12
21
|
}, z.core.$strip>;
|
|
13
22
|
export type ValidationConfig = z.infer<typeof ValidationConfigZod>;
|
|
14
23
|
//# sourceMappingURL=Validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../../src/config/Validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../../src/config/Validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;iBAqB9B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export * from './map/index.ts';
|
|
|
8
8
|
export * from './model/index.ts';
|
|
9
9
|
export * from './multipliers.ts';
|
|
10
10
|
export * from './payload/index.ts';
|
|
11
|
+
export * from './primitives/index.ts';
|
|
12
|
+
export * from './primitives/index.ts';
|
|
11
13
|
export * from './SignedBigInt.ts';
|
|
12
14
|
export * from './time/index.ts';
|
|
13
15
|
export * from './transaction/index.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -772,18 +772,18 @@ var RewardRedemptionApiConfigZod = z9.object({
|
|
|
772
772
|
host: z9.string().default("localhost").register(globalRegistry8, {
|
|
773
773
|
default: "localhost",
|
|
774
774
|
description: "Host for the Redemption API",
|
|
775
|
-
title: "
|
|
775
|
+
title: "rewardRedemptionApi.host",
|
|
776
776
|
type: "string"
|
|
777
777
|
}),
|
|
778
778
|
mnemonic: MnemonicStringZod.optional().register(globalRegistry8, {
|
|
779
779
|
description: "Mnemonic for the Redemption API wallet",
|
|
780
|
-
title: "
|
|
780
|
+
title: "rewardRedemptionApi.mnemonic",
|
|
781
781
|
type: "string"
|
|
782
782
|
}),
|
|
783
783
|
port: z9.coerce.number().default(8082).register(globalRegistry8, {
|
|
784
784
|
default: 8082,
|
|
785
785
|
description: "Port for the Redemption API",
|
|
786
|
-
title: "
|
|
786
|
+
title: "rewardRedemptionApi.port",
|
|
787
787
|
type: "number"
|
|
788
788
|
})
|
|
789
789
|
});
|
|
@@ -867,6 +867,16 @@ var ValidationConfigZod = z13.object({
|
|
|
867
867
|
description: "List of allowed reward redeemer addresses, if undefined anyone can participate",
|
|
868
868
|
title: "allowedRewardRedeemers",
|
|
869
869
|
type: "array"
|
|
870
|
+
})),
|
|
871
|
+
allowedRewardEscrowAccountSigners: z13.preprocess((val) => {
|
|
872
|
+
if (typeof val === "string") {
|
|
873
|
+
return val.split(",").map((s) => asAddress4(s.trim()));
|
|
874
|
+
}
|
|
875
|
+
return val;
|
|
876
|
+
}, z13.array(AddressZod2).optional().register(globalRegistry12, {
|
|
877
|
+
description: "List of allowed reward escrow account signer addresses, if undefined anyone can participate",
|
|
878
|
+
title: "allowedRewardEscrowAccountSigners",
|
|
879
|
+
type: "array"
|
|
870
880
|
}))
|
|
871
881
|
});
|
|
872
882
|
|
|
@@ -949,8 +959,87 @@ var RewardMultipliers = {
|
|
|
949
959
|
]
|
|
950
960
|
};
|
|
951
961
|
|
|
952
|
-
// src/
|
|
962
|
+
// src/primitives/step/completedStepRewardAddress.ts
|
|
963
|
+
import { toAddress as toAddress2 } from "@xylabs/hex";
|
|
964
|
+
import { keccak256 } from "ethers";
|
|
965
|
+
function completedStepRewardAddress({ block, step }) {
|
|
966
|
+
const addressKey = new TextEncoder().encode(`${block}|${step}`);
|
|
967
|
+
return toAddress2(keccak256(addressKey).slice(-40), {
|
|
968
|
+
prefix: false
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
__name(completedStepRewardAddress, "completedStepRewardAddress");
|
|
972
|
+
|
|
973
|
+
// src/primitives/step/derivedReceiveAddress.ts
|
|
974
|
+
import { toAddress as toAddress3 } from "@xylabs/hex";
|
|
975
|
+
import { isDefined as isDefined5 } from "@xylabs/typeof";
|
|
976
|
+
import { keccak256 as keccak2562 } from "ethers";
|
|
977
|
+
function derivedReceiveAddress(address, scope) {
|
|
978
|
+
const addressKey = new TextEncoder().encode(isDefined5(scope) ? `${scope}|${address}` : address);
|
|
979
|
+
return toAddress3(keccak2562(addressKey).slice(-40), {
|
|
980
|
+
prefix: false
|
|
981
|
+
});
|
|
982
|
+
}
|
|
983
|
+
__name(derivedReceiveAddress, "derivedReceiveAddress");
|
|
984
|
+
|
|
985
|
+
// src/primitives/step/stepBlockRange.ts
|
|
986
|
+
import { asXL1BlockRange, StepSizes as StepSizes5 } from "@xyo-network/xl1-protocol";
|
|
987
|
+
function stepBlockRange({ block, step }) {
|
|
988
|
+
const stepSize2 = StepSizes5[step];
|
|
989
|
+
const start = block - stepSize2;
|
|
990
|
+
return asXL1BlockRange([
|
|
991
|
+
start,
|
|
992
|
+
start + stepSize2 - 1
|
|
993
|
+
]);
|
|
994
|
+
}
|
|
995
|
+
__name(stepBlockRange, "stepBlockRange");
|
|
996
|
+
|
|
997
|
+
// src/primitives/step/stepTransferIndex.ts
|
|
953
998
|
import { assertEx as assertEx6 } from "@xylabs/assert";
|
|
999
|
+
import { StepSizes as StepSizes6 } from "@xyo-network/xl1-protocol";
|
|
1000
|
+
function stepTransferIndex(block, step) {
|
|
1001
|
+
let rewardTransferCount = 0;
|
|
1002
|
+
let rewardTransferIndex = -1;
|
|
1003
|
+
for (let i = 3; i < StepSizes6.length; i++) {
|
|
1004
|
+
const stepSize2 = StepSizes6[i];
|
|
1005
|
+
if (block % stepSize2 === 0) {
|
|
1006
|
+
if (stepSize2 === StepSizes6[step]) {
|
|
1007
|
+
rewardTransferIndex = rewardTransferCount;
|
|
1008
|
+
}
|
|
1009
|
+
rewardTransferCount++;
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
assertEx6(rewardTransferIndex >= 0, () => `Error: Could not find step size for step ${step} at block ${block}`);
|
|
1013
|
+
return [
|
|
1014
|
+
rewardTransferIndex,
|
|
1015
|
+
rewardTransferCount
|
|
1016
|
+
];
|
|
1017
|
+
}
|
|
1018
|
+
__name(stepTransferIndex, "stepTransferIndex");
|
|
1019
|
+
|
|
1020
|
+
// src/primitives/transaction/elevatedPayloads.ts
|
|
1021
|
+
import { isAllowedBlockPayload } from "@xyo-network/xl1-protocol";
|
|
1022
|
+
function elevatedPayloads([tx, payloads]) {
|
|
1023
|
+
const opCodes = (tx.script ?? []).filter((operation) => operation.startsWith("elevate|"));
|
|
1024
|
+
const elevatedPayloads2 = [];
|
|
1025
|
+
for (const opCode of opCodes) {
|
|
1026
|
+
const [code, hash] = opCode.split("|");
|
|
1027
|
+
if (code === "elevated") {
|
|
1028
|
+
const elevatedPayload = payloads.find((payload) => payload._hash === hash);
|
|
1029
|
+
if (isAllowedBlockPayload(elevatedPayload)) {
|
|
1030
|
+
elevatedPayloads2.push(elevatedPayload);
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
if (opCodes.length === elevatedPayloads2.length) {
|
|
1035
|
+
return elevatedPayloads2;
|
|
1036
|
+
}
|
|
1037
|
+
throw new Error("Not all elevated payloads could be found in the transaction payloads");
|
|
1038
|
+
}
|
|
1039
|
+
__name(elevatedPayloads, "elevatedPayloads");
|
|
1040
|
+
|
|
1041
|
+
// src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
|
|
1042
|
+
import { assertEx as assertEx7 } from "@xylabs/assert";
|
|
954
1043
|
import { asTimePayload, TimeSchema } from "@xyo-network/xl1-protocol";
|
|
955
1044
|
async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
|
|
956
1045
|
const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
|
|
@@ -958,12 +1047,12 @@ async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
|
|
|
958
1047
|
const timePayload = asTimePayload(hydratedBlock[1].find((p) => p.schema === TimeSchema), {
|
|
959
1048
|
required: true
|
|
960
1049
|
});
|
|
961
|
-
return
|
|
1050
|
+
return assertEx7(timePayload.ethereum, () => "No ethereum timestamp found on block");
|
|
962
1051
|
}
|
|
963
1052
|
__name(xl1BlockNumberToEthBlockNumber, "xl1BlockNumberToEthBlockNumber");
|
|
964
1053
|
|
|
965
1054
|
// src/transaction/buildTransaction.ts
|
|
966
|
-
import { assertEx as
|
|
1055
|
+
import { assertEx as assertEx8 } from "@xylabs/assert";
|
|
967
1056
|
import { toHex as toHex2 } from "@xylabs/hex";
|
|
968
1057
|
import { BoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
|
|
969
1058
|
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
|
|
@@ -990,7 +1079,7 @@ async function buildTransaction(chain, onChainPayloads, offChainPayloads, signer
|
|
|
990
1079
|
}
|
|
991
1080
|
const fields = {
|
|
992
1081
|
...txBoundWitnessFields,
|
|
993
|
-
from: from ?? (Array.isArray(signer) ?
|
|
1082
|
+
from: from ?? (Array.isArray(signer) ? assertEx8(signer.at(0)?.address) : signer.address)
|
|
994
1083
|
};
|
|
995
1084
|
if (script.length > 0) {
|
|
996
1085
|
fields.script = script;
|
|
@@ -1054,7 +1143,7 @@ __name(buildUnsignedTransaction, "buildUnsignedTransaction");
|
|
|
1054
1143
|
|
|
1055
1144
|
// src/transaction/confirmSubmittedTransaction.ts
|
|
1056
1145
|
import { delay } from "@xylabs/delay";
|
|
1057
|
-
import { isDefined as
|
|
1146
|
+
import { isDefined as isDefined6 } from "@xylabs/typeof";
|
|
1058
1147
|
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
|
|
1059
1148
|
var DEFAULT_CONFIRMATION_ATTEMPTS = 20;
|
|
1060
1149
|
var DEFAULT_DELAY_BETWEEN_ATTEMPTS = 1e3;
|
|
@@ -1065,7 +1154,7 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
|
|
|
1065
1154
|
let attempts = 0;
|
|
1066
1155
|
while (true) {
|
|
1067
1156
|
const tx = await viewer.transactionByHash(txBWHash) ?? void 0;
|
|
1068
|
-
if (
|
|
1157
|
+
if (isDefined6(tx)) {
|
|
1069
1158
|
options?.logger?.log("\u2705 Transaction confirmed:", txBWHash, "\n");
|
|
1070
1159
|
return tx;
|
|
1071
1160
|
} else {
|
|
@@ -1082,9 +1171,9 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
|
|
|
1082
1171
|
}, "confirmSubmittedTransaction");
|
|
1083
1172
|
|
|
1084
1173
|
// src/transaction/hydrateTransaction.ts
|
|
1085
|
-
import { assertEx as
|
|
1174
|
+
import { assertEx as assertEx9 } from "@xylabs/assert";
|
|
1086
1175
|
import { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from "@xyo-network/archivist-model";
|
|
1087
|
-
import { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
1176
|
+
import { isAllowedBlockPayload as isAllowedBlockPayload2, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
1088
1177
|
var tryHydrateTransaction = /* @__PURE__ */ __name(async ({ chainMap }, hash) => {
|
|
1089
1178
|
return await tryHydrateTypedBoundWitness({
|
|
1090
1179
|
get(hashes) {
|
|
@@ -1122,26 +1211,26 @@ var tryHydrateElevatedTransaction = /* @__PURE__ */ __name(async ({ chainMap },
|
|
|
1122
1211
|
}
|
|
1123
1212
|
const [transaction, payloads] = hydratedTransaction;
|
|
1124
1213
|
const opCodes = (transaction.script ?? []).filter((operation) => operation.startsWith("elevate|"));
|
|
1125
|
-
const
|
|
1214
|
+
const elevatedPayloads2 = [];
|
|
1126
1215
|
for (const opCode of opCodes) {
|
|
1127
1216
|
const [code, hash2] = opCode.split("|");
|
|
1128
1217
|
if (code === "elevated") {
|
|
1129
1218
|
const elevatedPayload = payloads.find((payload) => payload._hash === hash2);
|
|
1130
|
-
if (
|
|
1131
|
-
|
|
1219
|
+
if (isAllowedBlockPayload2(elevatedPayload)) {
|
|
1220
|
+
elevatedPayloads2.push(elevatedPayload);
|
|
1132
1221
|
}
|
|
1133
1222
|
}
|
|
1134
1223
|
}
|
|
1135
|
-
if (opCodes.length ===
|
|
1224
|
+
if (opCodes.length === elevatedPayloads2.length) {
|
|
1136
1225
|
return [
|
|
1137
1226
|
transaction,
|
|
1138
|
-
|
|
1227
|
+
elevatedPayloads2
|
|
1139
1228
|
];
|
|
1140
1229
|
}
|
|
1141
1230
|
return void 0;
|
|
1142
1231
|
}, "tryHydrateElevatedTransaction");
|
|
1143
1232
|
var hydrateElevatedTransaction = /* @__PURE__ */ __name(async (context, hash) => {
|
|
1144
|
-
return
|
|
1233
|
+
return assertEx9(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
|
|
1145
1234
|
}, "hydrateElevatedTransaction");
|
|
1146
1235
|
|
|
1147
1236
|
// src/transaction/primitives/transactionBlockByteCount.ts
|
|
@@ -1182,8 +1271,8 @@ function transactionElevatedPayloadHashes(transaction) {
|
|
|
1182
1271
|
__name(transactionElevatedPayloadHashes, "transactionElevatedPayloadHashes");
|
|
1183
1272
|
function transactionElevatedPayloads([transaction, payloads]) {
|
|
1184
1273
|
const hashes = transactionElevatedPayloadHashes(transaction);
|
|
1185
|
-
const
|
|
1186
|
-
return
|
|
1274
|
+
const elevatedPayloads2 = payloads.filter((payload) => hashes.includes(payload._hash));
|
|
1275
|
+
return elevatedPayloads2;
|
|
1187
1276
|
}
|
|
1188
1277
|
__name(transactionElevatedPayloads, "transactionElevatedPayloads");
|
|
1189
1278
|
|
|
@@ -1198,16 +1287,16 @@ function transactionBytesRequiredGas([transaction, payloads]) {
|
|
|
1198
1287
|
}
|
|
1199
1288
|
__name(transactionBytesRequiredGas, "transactionBytesRequiredGas");
|
|
1200
1289
|
function transactionRequiredGas(hydratedTransaction) {
|
|
1201
|
-
const
|
|
1202
|
-
const hashes =
|
|
1290
|
+
const elevatedPayloads2 = transactionElevatedPayloads(hydratedTransaction);
|
|
1291
|
+
const hashes = elevatedPayloads2.length + 1;
|
|
1203
1292
|
const signatures = hydratedTransaction[0].addresses.length;
|
|
1204
|
-
return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(
|
|
1293
|
+
return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads2.length));
|
|
1205
1294
|
}
|
|
1206
1295
|
__name(transactionRequiredGas, "transactionRequiredGas");
|
|
1207
1296
|
|
|
1208
1297
|
// src/transaction/script.ts
|
|
1209
1298
|
import { filterAs as filterAs2 } from "@xylabs/array";
|
|
1210
|
-
import { assertEx as
|
|
1299
|
+
import { assertEx as assertEx10 } from "@xylabs/assert";
|
|
1211
1300
|
import { asHash as asHash3 } from "@xylabs/hex";
|
|
1212
1301
|
import { isAllowedBlockPayloadWithHashStorageMeta } from "@xyo-network/xl1-protocol";
|
|
1213
1302
|
var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
|
|
@@ -1217,7 +1306,7 @@ var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
|
|
|
1217
1306
|
var extractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
|
|
1218
1307
|
const hashes = strings.filter((str) => str.startsWith("elevate|")).map((str) => str.split("|")[1]);
|
|
1219
1308
|
const filtered = filterAs2(hashes, (h) => asHash3(h));
|
|
1220
|
-
|
|
1309
|
+
assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
|
|
1221
1310
|
return filtered;
|
|
1222
1311
|
}, "extractElevatedHashesFromScript");
|
|
1223
1312
|
var tryExtractElevatedHashes = /* @__PURE__ */ __name((tx) => {
|
|
@@ -1231,17 +1320,17 @@ var extractElevatedHashes = /* @__PURE__ */ __name((tx) => {
|
|
|
1231
1320
|
const { script } = bw;
|
|
1232
1321
|
const hashes = script ? tryExtractElevatedHashesFromScript(script) : [];
|
|
1233
1322
|
const filtered = payloads.filter((p) => hashes.includes(p._hash)).filter(isAllowedBlockPayloadWithHashStorageMeta);
|
|
1234
|
-
|
|
1323
|
+
assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
|
|
1235
1324
|
return filtered;
|
|
1236
1325
|
}, "extractElevatedHashes");
|
|
1237
1326
|
|
|
1238
1327
|
// src/transaction/signTransaction.ts
|
|
1239
1328
|
import { toArrayBuffer } from "@xylabs/arraybuffer";
|
|
1240
|
-
import { assertEx as
|
|
1329
|
+
import { assertEx as assertEx11 } from "@xylabs/assert";
|
|
1241
1330
|
import { hexFromArrayBuffer } from "@xylabs/hex";
|
|
1242
1331
|
import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/payload-builder";
|
|
1243
1332
|
async function signTransaction(tx, account) {
|
|
1244
|
-
|
|
1333
|
+
assertEx11(tx.from === account.address, () => "Signer address does not match transaction from address");
|
|
1245
1334
|
const signedTx = structuredClone(tx);
|
|
1246
1335
|
signedTx.addresses = [
|
|
1247
1336
|
account.address
|
|
@@ -1322,10 +1411,13 @@ export {
|
|
|
1322
1411
|
buildTransaction,
|
|
1323
1412
|
buildUnsignedTransaction,
|
|
1324
1413
|
calculateFramesFromRange,
|
|
1414
|
+
completedStepRewardAddress,
|
|
1325
1415
|
confirmSubmittedTransaction,
|
|
1326
1416
|
crackOperation,
|
|
1327
1417
|
crackOperations,
|
|
1328
1418
|
deepCalculateFramesFromRange,
|
|
1419
|
+
derivedReceiveAddress,
|
|
1420
|
+
elevatedPayloads,
|
|
1329
1421
|
extractElevatedHashes,
|
|
1330
1422
|
extractElevatedHashesFromScript,
|
|
1331
1423
|
flattenHydratedBlock,
|
|
@@ -1354,6 +1446,8 @@ export {
|
|
|
1354
1446
|
parseSignedBigInt,
|
|
1355
1447
|
readPayloadMapFromStore,
|
|
1356
1448
|
signTransaction,
|
|
1449
|
+
stepBlockRange,
|
|
1450
|
+
stepTransferIndex,
|
|
1357
1451
|
toPositiveBigInt,
|
|
1358
1452
|
toSignedBigInt,
|
|
1359
1453
|
transactionBlockByteCount,
|