@xyo-network/xl1-protocol-sdk 1.15.10 → 1.15.12
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 +10 -0
- package/dist/neutral/config/Config.d.ts.map +1 -1
- package/dist/neutral/config/RewardRedemptionApi.d.ts +1 -0
- package/dist/neutral/config/RewardRedemptionApi.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 +149 -37
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/payload/AddressPairPayload.d.ts +15 -0
- package/dist/neutral/payload/AddressPairPayload.d.ts.map +1 -0
- package/dist/neutral/payload/index.d.ts +1 -0
- package/dist/neutral/payload/index.d.ts.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 +23 -22
- package/src/config/RewardRedemptionApi.ts +9 -3
- package/src/config/Validation.ts +10 -1
- package/src/index.ts +2 -0
- package/src/payload/AddressPairPayload.ts +19 -0
- package/src/payload/index.ts +1 -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
|
@@ -56,6 +56,7 @@ export declare const ConfigZod: z.ZodObject<{
|
|
|
56
56
|
rewardAddress: z.ZodOptional<z.ZodString>;
|
|
57
57
|
}, z.core.$strip>>;
|
|
58
58
|
rewardRedemptionApi: z.ZodDefault<z.ZodObject<{
|
|
59
|
+
chainRpcApiUrl: z.ZodDefault<z.ZodString>;
|
|
59
60
|
host: z.ZodDefault<z.ZodString>;
|
|
60
61
|
mnemonic: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
|
|
61
62
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
@@ -85,6 +86,15 @@ export declare const ConfigZod: z.ZodObject<{
|
|
|
85
86
|
}>, {
|
|
86
87
|
readonly __address: true;
|
|
87
88
|
}>, unknown>>>>>;
|
|
89
|
+
allowedRewardEscrowAccountSigners: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodType<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
90
|
+
readonly __hex: true;
|
|
91
|
+
}>, {
|
|
92
|
+
readonly __address: true;
|
|
93
|
+
}>, unknown, z.core.$ZodTypeInternals<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
94
|
+
readonly __hex: true;
|
|
95
|
+
}>, {
|
|
96
|
+
readonly __address: true;
|
|
97
|
+
}>, unknown>>>>>;
|
|
88
98
|
}, z.core.$strip>>;
|
|
89
99
|
logLevel: z.ZodDefault<z.ZodEnum<{
|
|
90
100
|
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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
export declare const RewardRedemptionApiConfigZod: z.ZodObject<{
|
|
3
|
+
chainRpcApiUrl: z.ZodDefault<z.ZodString>;
|
|
3
4
|
host: z.ZodDefault<z.ZodString>;
|
|
4
5
|
mnemonic: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
|
|
5
6
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RewardRedemptionApi.d.ts","sourceRoot":"","sources":["../../../src/config/RewardRedemptionApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"RewardRedemptionApi.d.ts","sourceRoot":"","sources":["../../../src/config/RewardRedemptionApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,eAAO,MAAM,4BAA4B;;;;;iBAwBvC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,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
|
@@ -38,6 +38,14 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
|
38
38
|
import { isAnyPayload } from "@xyo-network/payload-model";
|
|
39
39
|
import { StepSizes as StepSizes3 } from "@xyo-network/xl1-protocol";
|
|
40
40
|
|
|
41
|
+
// src/payload/AddressPairPayload.ts
|
|
42
|
+
import { AsObjectFactory } from "@xylabs/object";
|
|
43
|
+
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
44
|
+
var AddressPairSchema = "network.xyo.address.pair";
|
|
45
|
+
var isAddressPairPayload = isPayloadOfSchemaType(AddressPairSchema);
|
|
46
|
+
var asAddressPairPayload = AsObjectFactory.create(isAddressPairPayload);
|
|
47
|
+
var asOptionalAddressPairPayload = AsObjectFactory.createOptional(isAddressPairPayload);
|
|
48
|
+
|
|
41
49
|
// src/payload/netBalancesForPayloads.ts
|
|
42
50
|
import { hexToBigInt, toAddress } from "@xylabs/hex";
|
|
43
51
|
import { span } from "@xylabs/telemetry";
|
|
@@ -232,29 +240,29 @@ async function hashFromBlockNumber(context, blockNumber) {
|
|
|
232
240
|
__name(hashFromBlockNumber, "hashFromBlockNumber");
|
|
233
241
|
|
|
234
242
|
// src/block/primitives/payloads/BalancesStepSummary.ts
|
|
235
|
-
import { AsObjectFactory } from "@xylabs/object";
|
|
236
|
-
import { isPayloadOfSchemaType, isStorageMeta } from "@xyo-network/payload-model";
|
|
243
|
+
import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
|
|
244
|
+
import { isPayloadOfSchemaType as isPayloadOfSchemaType2, isStorageMeta } from "@xyo-network/payload-model";
|
|
237
245
|
var BalancesStepSummarySchema = "network.xyo.step.summary.balances";
|
|
238
|
-
var isBalancesStepSummary =
|
|
239
|
-
var asBalancesStepSummary =
|
|
246
|
+
var isBalancesStepSummary = isPayloadOfSchemaType2(BalancesStepSummarySchema);
|
|
247
|
+
var asBalancesStepSummary = AsObjectFactory2.create(isBalancesStepSummary);
|
|
240
248
|
var isBalancesStepSummaryWithStorageMeta = /* @__PURE__ */ __name((value) => {
|
|
241
249
|
return isBalancesStepSummary(value) && isStorageMeta(value);
|
|
242
250
|
}, "isBalancesStepSummaryWithStorageMeta");
|
|
243
|
-
var asBalancesStepSummaryWithStorageMeta =
|
|
251
|
+
var asBalancesStepSummaryWithStorageMeta = AsObjectFactory2.create(isBalancesStepSummaryWithStorageMeta);
|
|
244
252
|
|
|
245
253
|
// src/block/primitives/payloads/StepSummary.ts
|
|
246
254
|
var StepSummarySchema = "network.xyo.step.summary";
|
|
247
255
|
|
|
248
256
|
// src/block/primitives/payloads/TransfersSummary.ts
|
|
249
|
-
import { AsObjectFactory as
|
|
250
|
-
import { isPayloadOfSchemaType as
|
|
257
|
+
import { AsObjectFactory as AsObjectFactory3 } from "@xylabs/object";
|
|
258
|
+
import { isPayloadOfSchemaType as isPayloadOfSchemaType3, isStorageMeta as isStorageMeta2 } from "@xyo-network/payload-model";
|
|
251
259
|
var TransfersStepSummarySchema = "network.xyo.step.summary.transfer";
|
|
252
|
-
var isTransfersStepSummary =
|
|
253
|
-
var asTransfersStepSummary =
|
|
260
|
+
var isTransfersStepSummary = isPayloadOfSchemaType3(TransfersStepSummarySchema);
|
|
261
|
+
var asTransfersStepSummary = AsObjectFactory3.create(isTransfersStepSummary);
|
|
254
262
|
var isTransfersStepSummaryWithStorageMeta = /* @__PURE__ */ __name((value) => {
|
|
255
263
|
return isTransfersStepSummary(value) && isStorageMeta2(value);
|
|
256
264
|
}, "isTransfersStepSummaryWithStorageMeta");
|
|
257
|
-
var asTransfersStepSummaryWithStorageMeta =
|
|
265
|
+
var asTransfersStepSummaryWithStorageMeta = AsObjectFactory3.create(isTransfersStepSummaryWithStorageMeta);
|
|
258
266
|
|
|
259
267
|
// src/block/primitives/balances/balancesStepSummaryFromRange.ts
|
|
260
268
|
async function balancesStepSummaryFromRange(context, range) {
|
|
@@ -769,21 +777,27 @@ var ProducerConfigZod = z8.object({
|
|
|
769
777
|
import { globalRegistry as globalRegistry8 } from "zod";
|
|
770
778
|
import * as z9 from "zod";
|
|
771
779
|
var RewardRedemptionApiConfigZod = z9.object({
|
|
780
|
+
chainRpcApiUrl: z9.string().default("http://localhost:8080/rpc").register(globalRegistry8, {
|
|
781
|
+
default: "http://localhost:8080/rpc",
|
|
782
|
+
description: "URL for the Chain RPC API",
|
|
783
|
+
title: "rewardRedemptionApi.chainRpcApiUrl",
|
|
784
|
+
type: "string"
|
|
785
|
+
}),
|
|
772
786
|
host: z9.string().default("localhost").register(globalRegistry8, {
|
|
773
787
|
default: "localhost",
|
|
774
788
|
description: "Host for the Redemption API",
|
|
775
|
-
title: "
|
|
789
|
+
title: "rewardRedemptionApi.host",
|
|
776
790
|
type: "string"
|
|
777
791
|
}),
|
|
778
792
|
mnemonic: MnemonicStringZod.optional().register(globalRegistry8, {
|
|
779
793
|
description: "Mnemonic for the Redemption API wallet",
|
|
780
|
-
title: "
|
|
794
|
+
title: "rewardRedemptionApi.mnemonic",
|
|
781
795
|
type: "string"
|
|
782
796
|
}),
|
|
783
797
|
port: z9.coerce.number().default(8082).register(globalRegistry8, {
|
|
784
798
|
default: 8082,
|
|
785
799
|
description: "Port for the Redemption API",
|
|
786
|
-
title: "
|
|
800
|
+
title: "rewardRedemptionApi.port",
|
|
787
801
|
type: "number"
|
|
788
802
|
})
|
|
789
803
|
});
|
|
@@ -867,6 +881,16 @@ var ValidationConfigZod = z13.object({
|
|
|
867
881
|
description: "List of allowed reward redeemer addresses, if undefined anyone can participate",
|
|
868
882
|
title: "allowedRewardRedeemers",
|
|
869
883
|
type: "array"
|
|
884
|
+
})),
|
|
885
|
+
allowedRewardEscrowAccountSigners: z13.preprocess((val) => {
|
|
886
|
+
if (typeof val === "string") {
|
|
887
|
+
return val.split(",").map((s) => asAddress4(s.trim()));
|
|
888
|
+
}
|
|
889
|
+
return val;
|
|
890
|
+
}, z13.array(AddressZod2).optional().register(globalRegistry12, {
|
|
891
|
+
description: "List of allowed reward escrow account signer addresses, if undefined anyone can participate",
|
|
892
|
+
title: "allowedRewardEscrowAccountSigners",
|
|
893
|
+
type: "array"
|
|
870
894
|
}))
|
|
871
895
|
});
|
|
872
896
|
|
|
@@ -949,8 +973,87 @@ var RewardMultipliers = {
|
|
|
949
973
|
]
|
|
950
974
|
};
|
|
951
975
|
|
|
952
|
-
// src/
|
|
976
|
+
// src/primitives/step/completedStepRewardAddress.ts
|
|
977
|
+
import { toAddress as toAddress2 } from "@xylabs/hex";
|
|
978
|
+
import { keccak256 } from "ethers";
|
|
979
|
+
function completedStepRewardAddress({ block, step }) {
|
|
980
|
+
const addressKey = new TextEncoder().encode(`${block}|${step}`);
|
|
981
|
+
return toAddress2(keccak256(addressKey).slice(-40), {
|
|
982
|
+
prefix: false
|
|
983
|
+
});
|
|
984
|
+
}
|
|
985
|
+
__name(completedStepRewardAddress, "completedStepRewardAddress");
|
|
986
|
+
|
|
987
|
+
// src/primitives/step/derivedReceiveAddress.ts
|
|
988
|
+
import { toAddress as toAddress3 } from "@xylabs/hex";
|
|
989
|
+
import { isDefined as isDefined5 } from "@xylabs/typeof";
|
|
990
|
+
import { keccak256 as keccak2562 } from "ethers";
|
|
991
|
+
function derivedReceiveAddress(address, scope) {
|
|
992
|
+
const addressKey = new TextEncoder().encode(isDefined5(scope) ? `${scope}|${address}` : address);
|
|
993
|
+
return toAddress3(keccak2562(addressKey).slice(-40), {
|
|
994
|
+
prefix: false
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
__name(derivedReceiveAddress, "derivedReceiveAddress");
|
|
998
|
+
|
|
999
|
+
// src/primitives/step/stepBlockRange.ts
|
|
1000
|
+
import { asXL1BlockRange, StepSizes as StepSizes5 } from "@xyo-network/xl1-protocol";
|
|
1001
|
+
function stepBlockRange({ block, step }) {
|
|
1002
|
+
const stepSize2 = StepSizes5[step];
|
|
1003
|
+
const start = block - stepSize2;
|
|
1004
|
+
return asXL1BlockRange([
|
|
1005
|
+
start,
|
|
1006
|
+
start + stepSize2 - 1
|
|
1007
|
+
]);
|
|
1008
|
+
}
|
|
1009
|
+
__name(stepBlockRange, "stepBlockRange");
|
|
1010
|
+
|
|
1011
|
+
// src/primitives/step/stepTransferIndex.ts
|
|
953
1012
|
import { assertEx as assertEx6 } from "@xylabs/assert";
|
|
1013
|
+
import { StepSizes as StepSizes6 } from "@xyo-network/xl1-protocol";
|
|
1014
|
+
function stepTransferIndex(block, step) {
|
|
1015
|
+
let rewardTransferCount = 0;
|
|
1016
|
+
let rewardTransferIndex = -1;
|
|
1017
|
+
for (let i = 3; i < StepSizes6.length; i++) {
|
|
1018
|
+
const stepSize2 = StepSizes6[i];
|
|
1019
|
+
if (block % stepSize2 === 0) {
|
|
1020
|
+
if (stepSize2 === StepSizes6[step]) {
|
|
1021
|
+
rewardTransferIndex = rewardTransferCount;
|
|
1022
|
+
}
|
|
1023
|
+
rewardTransferCount++;
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
assertEx6(rewardTransferIndex >= 0, () => `Error: Could not find step size for step ${step} at block ${block}`);
|
|
1027
|
+
return [
|
|
1028
|
+
rewardTransferIndex,
|
|
1029
|
+
rewardTransferCount
|
|
1030
|
+
];
|
|
1031
|
+
}
|
|
1032
|
+
__name(stepTransferIndex, "stepTransferIndex");
|
|
1033
|
+
|
|
1034
|
+
// src/primitives/transaction/elevatedPayloads.ts
|
|
1035
|
+
import { isAllowedBlockPayload } from "@xyo-network/xl1-protocol";
|
|
1036
|
+
function elevatedPayloads([tx, payloads]) {
|
|
1037
|
+
const opCodes = (tx.script ?? []).filter((operation) => operation.startsWith("elevate|"));
|
|
1038
|
+
const elevatedPayloads2 = [];
|
|
1039
|
+
for (const opCode of opCodes) {
|
|
1040
|
+
const [code, hash] = opCode.split("|");
|
|
1041
|
+
if (code === "elevated") {
|
|
1042
|
+
const elevatedPayload = payloads.find((payload) => payload._hash === hash);
|
|
1043
|
+
if (isAllowedBlockPayload(elevatedPayload)) {
|
|
1044
|
+
elevatedPayloads2.push(elevatedPayload);
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
if (opCodes.length === elevatedPayloads2.length) {
|
|
1049
|
+
return elevatedPayloads2;
|
|
1050
|
+
}
|
|
1051
|
+
throw new Error("Not all elevated payloads could be found in the transaction payloads");
|
|
1052
|
+
}
|
|
1053
|
+
__name(elevatedPayloads, "elevatedPayloads");
|
|
1054
|
+
|
|
1055
|
+
// src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
|
|
1056
|
+
import { assertEx as assertEx7 } from "@xylabs/assert";
|
|
954
1057
|
import { asTimePayload, TimeSchema } from "@xyo-network/xl1-protocol";
|
|
955
1058
|
async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
|
|
956
1059
|
const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
|
|
@@ -958,12 +1061,12 @@ async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
|
|
|
958
1061
|
const timePayload = asTimePayload(hydratedBlock[1].find((p) => p.schema === TimeSchema), {
|
|
959
1062
|
required: true
|
|
960
1063
|
});
|
|
961
|
-
return
|
|
1064
|
+
return assertEx7(timePayload.ethereum, () => "No ethereum timestamp found on block");
|
|
962
1065
|
}
|
|
963
1066
|
__name(xl1BlockNumberToEthBlockNumber, "xl1BlockNumberToEthBlockNumber");
|
|
964
1067
|
|
|
965
1068
|
// src/transaction/buildTransaction.ts
|
|
966
|
-
import { assertEx as
|
|
1069
|
+
import { assertEx as assertEx8 } from "@xylabs/assert";
|
|
967
1070
|
import { toHex as toHex2 } from "@xylabs/hex";
|
|
968
1071
|
import { BoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
|
|
969
1072
|
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
|
|
@@ -990,7 +1093,7 @@ async function buildTransaction(chain, onChainPayloads, offChainPayloads, signer
|
|
|
990
1093
|
}
|
|
991
1094
|
const fields = {
|
|
992
1095
|
...txBoundWitnessFields,
|
|
993
|
-
from: from ?? (Array.isArray(signer) ?
|
|
1096
|
+
from: from ?? (Array.isArray(signer) ? assertEx8(signer.at(0)?.address) : signer.address)
|
|
994
1097
|
};
|
|
995
1098
|
if (script.length > 0) {
|
|
996
1099
|
fields.script = script;
|
|
@@ -1054,7 +1157,7 @@ __name(buildUnsignedTransaction, "buildUnsignedTransaction");
|
|
|
1054
1157
|
|
|
1055
1158
|
// src/transaction/confirmSubmittedTransaction.ts
|
|
1056
1159
|
import { delay } from "@xylabs/delay";
|
|
1057
|
-
import { isDefined as
|
|
1160
|
+
import { isDefined as isDefined6 } from "@xylabs/typeof";
|
|
1058
1161
|
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
|
|
1059
1162
|
var DEFAULT_CONFIRMATION_ATTEMPTS = 20;
|
|
1060
1163
|
var DEFAULT_DELAY_BETWEEN_ATTEMPTS = 1e3;
|
|
@@ -1065,7 +1168,7 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
|
|
|
1065
1168
|
let attempts = 0;
|
|
1066
1169
|
while (true) {
|
|
1067
1170
|
const tx = await viewer.transactionByHash(txBWHash) ?? void 0;
|
|
1068
|
-
if (
|
|
1171
|
+
if (isDefined6(tx)) {
|
|
1069
1172
|
options?.logger?.log("\u2705 Transaction confirmed:", txBWHash, "\n");
|
|
1070
1173
|
return tx;
|
|
1071
1174
|
} else {
|
|
@@ -1082,9 +1185,9 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
|
|
|
1082
1185
|
}, "confirmSubmittedTransaction");
|
|
1083
1186
|
|
|
1084
1187
|
// src/transaction/hydrateTransaction.ts
|
|
1085
|
-
import { assertEx as
|
|
1188
|
+
import { assertEx as assertEx9 } from "@xylabs/assert";
|
|
1086
1189
|
import { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from "@xyo-network/archivist-model";
|
|
1087
|
-
import { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
1190
|
+
import { isAllowedBlockPayload as isAllowedBlockPayload2, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
1088
1191
|
var tryHydrateTransaction = /* @__PURE__ */ __name(async ({ chainMap }, hash) => {
|
|
1089
1192
|
return await tryHydrateTypedBoundWitness({
|
|
1090
1193
|
get(hashes) {
|
|
@@ -1122,26 +1225,26 @@ var tryHydrateElevatedTransaction = /* @__PURE__ */ __name(async ({ chainMap },
|
|
|
1122
1225
|
}
|
|
1123
1226
|
const [transaction, payloads] = hydratedTransaction;
|
|
1124
1227
|
const opCodes = (transaction.script ?? []).filter((operation) => operation.startsWith("elevate|"));
|
|
1125
|
-
const
|
|
1228
|
+
const elevatedPayloads2 = [];
|
|
1126
1229
|
for (const opCode of opCodes) {
|
|
1127
1230
|
const [code, hash2] = opCode.split("|");
|
|
1128
1231
|
if (code === "elevated") {
|
|
1129
1232
|
const elevatedPayload = payloads.find((payload) => payload._hash === hash2);
|
|
1130
|
-
if (
|
|
1131
|
-
|
|
1233
|
+
if (isAllowedBlockPayload2(elevatedPayload)) {
|
|
1234
|
+
elevatedPayloads2.push(elevatedPayload);
|
|
1132
1235
|
}
|
|
1133
1236
|
}
|
|
1134
1237
|
}
|
|
1135
|
-
if (opCodes.length ===
|
|
1238
|
+
if (opCodes.length === elevatedPayloads2.length) {
|
|
1136
1239
|
return [
|
|
1137
1240
|
transaction,
|
|
1138
|
-
|
|
1241
|
+
elevatedPayloads2
|
|
1139
1242
|
];
|
|
1140
1243
|
}
|
|
1141
1244
|
return void 0;
|
|
1142
1245
|
}, "tryHydrateElevatedTransaction");
|
|
1143
1246
|
var hydrateElevatedTransaction = /* @__PURE__ */ __name(async (context, hash) => {
|
|
1144
|
-
return
|
|
1247
|
+
return assertEx9(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
|
|
1145
1248
|
}, "hydrateElevatedTransaction");
|
|
1146
1249
|
|
|
1147
1250
|
// src/transaction/primitives/transactionBlockByteCount.ts
|
|
@@ -1182,8 +1285,8 @@ function transactionElevatedPayloadHashes(transaction) {
|
|
|
1182
1285
|
__name(transactionElevatedPayloadHashes, "transactionElevatedPayloadHashes");
|
|
1183
1286
|
function transactionElevatedPayloads([transaction, payloads]) {
|
|
1184
1287
|
const hashes = transactionElevatedPayloadHashes(transaction);
|
|
1185
|
-
const
|
|
1186
|
-
return
|
|
1288
|
+
const elevatedPayloads2 = payloads.filter((payload) => hashes.includes(payload._hash));
|
|
1289
|
+
return elevatedPayloads2;
|
|
1187
1290
|
}
|
|
1188
1291
|
__name(transactionElevatedPayloads, "transactionElevatedPayloads");
|
|
1189
1292
|
|
|
@@ -1198,16 +1301,16 @@ function transactionBytesRequiredGas([transaction, payloads]) {
|
|
|
1198
1301
|
}
|
|
1199
1302
|
__name(transactionBytesRequiredGas, "transactionBytesRequiredGas");
|
|
1200
1303
|
function transactionRequiredGas(hydratedTransaction) {
|
|
1201
|
-
const
|
|
1202
|
-
const hashes =
|
|
1304
|
+
const elevatedPayloads2 = transactionElevatedPayloads(hydratedTransaction);
|
|
1305
|
+
const hashes = elevatedPayloads2.length + 1;
|
|
1203
1306
|
const signatures = hydratedTransaction[0].addresses.length;
|
|
1204
|
-
return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(
|
|
1307
|
+
return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads2.length));
|
|
1205
1308
|
}
|
|
1206
1309
|
__name(transactionRequiredGas, "transactionRequiredGas");
|
|
1207
1310
|
|
|
1208
1311
|
// src/transaction/script.ts
|
|
1209
1312
|
import { filterAs as filterAs2 } from "@xylabs/array";
|
|
1210
|
-
import { assertEx as
|
|
1313
|
+
import { assertEx as assertEx10 } from "@xylabs/assert";
|
|
1211
1314
|
import { asHash as asHash3 } from "@xylabs/hex";
|
|
1212
1315
|
import { isAllowedBlockPayloadWithHashStorageMeta } from "@xyo-network/xl1-protocol";
|
|
1213
1316
|
var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
|
|
@@ -1217,7 +1320,7 @@ var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
|
|
|
1217
1320
|
var extractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
|
|
1218
1321
|
const hashes = strings.filter((str) => str.startsWith("elevate|")).map((str) => str.split("|")[1]);
|
|
1219
1322
|
const filtered = filterAs2(hashes, (h) => asHash3(h));
|
|
1220
|
-
|
|
1323
|
+
assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
|
|
1221
1324
|
return filtered;
|
|
1222
1325
|
}, "extractElevatedHashesFromScript");
|
|
1223
1326
|
var tryExtractElevatedHashes = /* @__PURE__ */ __name((tx) => {
|
|
@@ -1231,17 +1334,17 @@ var extractElevatedHashes = /* @__PURE__ */ __name((tx) => {
|
|
|
1231
1334
|
const { script } = bw;
|
|
1232
1335
|
const hashes = script ? tryExtractElevatedHashesFromScript(script) : [];
|
|
1233
1336
|
const filtered = payloads.filter((p) => hashes.includes(p._hash)).filter(isAllowedBlockPayloadWithHashStorageMeta);
|
|
1234
|
-
|
|
1337
|
+
assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
|
|
1235
1338
|
return filtered;
|
|
1236
1339
|
}, "extractElevatedHashes");
|
|
1237
1340
|
|
|
1238
1341
|
// src/transaction/signTransaction.ts
|
|
1239
1342
|
import { toArrayBuffer } from "@xylabs/arraybuffer";
|
|
1240
|
-
import { assertEx as
|
|
1343
|
+
import { assertEx as assertEx11 } from "@xylabs/assert";
|
|
1241
1344
|
import { hexFromArrayBuffer } from "@xylabs/hex";
|
|
1242
1345
|
import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/payload-builder";
|
|
1243
1346
|
async function signTransaction(tx, account) {
|
|
1244
|
-
|
|
1347
|
+
assertEx11(tx.from === account.address, () => "Signer address does not match transaction from address");
|
|
1245
1348
|
const signedTx = structuredClone(tx);
|
|
1246
1349
|
signedTx.addresses = [
|
|
1247
1350
|
account.address
|
|
@@ -1289,6 +1392,7 @@ var generateXyoBaseWalletFromPhrase = /* @__PURE__ */ __name((walletPhrase) => {
|
|
|
1289
1392
|
export {
|
|
1290
1393
|
ACCOUNT_TYPE,
|
|
1291
1394
|
ADDRESS_INDEX,
|
|
1395
|
+
AddressPairSchema,
|
|
1292
1396
|
BalancesStepSummarySchema,
|
|
1293
1397
|
CHANGE_ADDRESS,
|
|
1294
1398
|
COIN_TYPES,
|
|
@@ -1311,8 +1415,10 @@ export {
|
|
|
1311
1415
|
XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_REWARDS,
|
|
1312
1416
|
Xl1CommonConfigSchema,
|
|
1313
1417
|
allHashesPresent,
|
|
1418
|
+
asAddressPairPayload,
|
|
1314
1419
|
asBalancesStepSummary,
|
|
1315
1420
|
asBalancesStepSummaryWithStorageMeta,
|
|
1421
|
+
asOptionalAddressPairPayload,
|
|
1316
1422
|
asTransfersStepSummary,
|
|
1317
1423
|
asTransfersStepSummaryWithStorageMeta,
|
|
1318
1424
|
balancesStepSummaryFromRange,
|
|
@@ -1322,10 +1428,13 @@ export {
|
|
|
1322
1428
|
buildTransaction,
|
|
1323
1429
|
buildUnsignedTransaction,
|
|
1324
1430
|
calculateFramesFromRange,
|
|
1431
|
+
completedStepRewardAddress,
|
|
1325
1432
|
confirmSubmittedTransaction,
|
|
1326
1433
|
crackOperation,
|
|
1327
1434
|
crackOperations,
|
|
1328
1435
|
deepCalculateFramesFromRange,
|
|
1436
|
+
derivedReceiveAddress,
|
|
1437
|
+
elevatedPayloads,
|
|
1329
1438
|
extractElevatedHashes,
|
|
1330
1439
|
extractElevatedHashesFromScript,
|
|
1331
1440
|
flattenHydratedBlock,
|
|
@@ -1340,6 +1449,7 @@ export {
|
|
|
1340
1449
|
hydrateBlock,
|
|
1341
1450
|
hydrateElevatedTransaction,
|
|
1342
1451
|
hydrateTransaction,
|
|
1452
|
+
isAddressPairPayload,
|
|
1343
1453
|
isBalancesStepSummary,
|
|
1344
1454
|
isBalancesStepSummaryWithStorageMeta,
|
|
1345
1455
|
isLocalhost,
|
|
@@ -1354,6 +1464,8 @@ export {
|
|
|
1354
1464
|
parseSignedBigInt,
|
|
1355
1465
|
readPayloadMapFromStore,
|
|
1356
1466
|
signTransaction,
|
|
1467
|
+
stepBlockRange,
|
|
1468
|
+
stepTransferIndex,
|
|
1357
1469
|
toPositiveBigInt,
|
|
1358
1470
|
toSignedBigInt,
|
|
1359
1471
|
transactionBlockByteCount,
|