algosdk 3.6.0 → 3.7.0-beta.1

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.
Files changed (109) hide show
  1. package/dist/browser/algosdk.min.js +1 -1
  2. package/dist/browser/algosdk.min.js.map +1 -1
  3. package/dist/cjs/client/v2/algod/algod.js +0 -18
  4. package/dist/cjs/client/v2/algod/algod.js.map +1 -1
  5. package/dist/cjs/client/v2/algod/models/types.js +2 -434
  6. package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
  7. package/dist/cjs/ed25519-signer.js +76 -0
  8. package/dist/cjs/ed25519-signer.js.map +1 -0
  9. package/dist/cjs/encoding/address.js +61 -1
  10. package/dist/cjs/encoding/address.js.map +1 -1
  11. package/dist/cjs/falcon-signer.js +17 -0
  12. package/dist/cjs/falcon-signer.js.map +1 -0
  13. package/dist/cjs/logicsig.js +201 -16
  14. package/dist/cjs/logicsig.js.map +1 -1
  15. package/dist/cjs/main.js +32 -63
  16. package/dist/cjs/main.js.map +1 -1
  17. package/dist/cjs/mnemonic/mnemonic.js +26 -1
  18. package/dist/cjs/mnemonic/mnemonic.js.map +1 -1
  19. package/dist/cjs/multisigSigning.js +78 -1
  20. package/dist/cjs/multisigSigning.js.map +1 -1
  21. package/dist/cjs/pq-signer.js +54 -0
  22. package/dist/cjs/pq-signer.js.map +1 -0
  23. package/dist/cjs/signedTransaction.js +15 -1
  24. package/dist/cjs/signedTransaction.js.map +1 -1
  25. package/dist/cjs/signer.js.map +1 -1
  26. package/dist/cjs/signing.js +94 -7
  27. package/dist/cjs/signing.js.map +1 -1
  28. package/dist/cjs/transaction.js +9 -1
  29. package/dist/cjs/transaction.js.map +1 -1
  30. package/dist/cjs/types/transactions/encoded.js +51 -1
  31. package/dist/cjs/types/transactions/encoded.js.map +1 -1
  32. package/dist/cjs/utils/ed25519-check.js +69 -0
  33. package/dist/cjs/utils/ed25519-check.js.map +1 -0
  34. package/dist/esm/client/v2/algod/algod.js +0 -18
  35. package/dist/esm/client/v2/algod/algod.js.map +1 -1
  36. package/dist/esm/client/v2/algod/models/types.js +0 -427
  37. package/dist/esm/client/v2/algod/models/types.js.map +1 -1
  38. package/dist/esm/ed25519-signer.js +72 -0
  39. package/dist/esm/ed25519-signer.js.map +1 -0
  40. package/dist/esm/encoding/address.js +58 -0
  41. package/dist/esm/encoding/address.js.map +1 -1
  42. package/dist/esm/falcon-signer.js +13 -0
  43. package/dist/esm/falcon-signer.js.map +1 -0
  44. package/dist/esm/logicsig.js +200 -15
  45. package/dist/esm/logicsig.js.map +1 -1
  46. package/dist/esm/main.js +8 -56
  47. package/dist/esm/main.js.map +1 -1
  48. package/dist/esm/mnemonic/mnemonic.js +25 -1
  49. package/dist/esm/mnemonic/mnemonic.js.map +1 -1
  50. package/dist/esm/multisigSigning.js +75 -0
  51. package/dist/esm/multisigSigning.js.map +1 -1
  52. package/dist/esm/pq-signer.js +50 -0
  53. package/dist/esm/pq-signer.js.map +1 -0
  54. package/dist/esm/signedTransaction.js +16 -2
  55. package/dist/esm/signedTransaction.js.map +1 -1
  56. package/dist/esm/signer.js.map +1 -1
  57. package/dist/esm/signing.js +91 -8
  58. package/dist/esm/signing.js.map +1 -1
  59. package/dist/esm/transaction.js +9 -1
  60. package/dist/esm/transaction.js.map +1 -1
  61. package/dist/esm/types/transactions/encoded.js +49 -1
  62. package/dist/esm/types/transactions/encoded.js.map +1 -1
  63. package/dist/esm/utils/ed25519-check.js +65 -0
  64. package/dist/esm/utils/ed25519-check.js.map +1 -0
  65. package/dist/types/client/v2/algod/algod.d.ts +0 -16
  66. package/dist/types/client/v2/algod/models/types.d.ts +0 -217
  67. package/dist/types/ed25519-signer.d.ts +7 -0
  68. package/dist/types/encoding/address.d.ts +37 -0
  69. package/dist/types/falcon-signer.d.ts +11 -0
  70. package/dist/types/logicsig.d.ts +72 -1
  71. package/dist/types/main.d.ts +8 -44
  72. package/dist/types/mnemonic/mnemonic.d.ts +13 -0
  73. package/dist/types/multisigSigning.d.ts +49 -0
  74. package/dist/types/pq-signer.d.ts +8 -0
  75. package/dist/types/signedTransaction.d.ts +7 -2
  76. package/dist/types/signer.d.ts +38 -0
  77. package/dist/types/signing.d.ts +45 -0
  78. package/dist/types/transaction.d.ts +9 -0
  79. package/dist/types/types/transactions/encoded.d.ts +27 -0
  80. package/dist/types/utils/ed25519-check.d.ts +10 -0
  81. package/package.json +2 -1
  82. package/src/client/v2/algod/algod.ts +0 -19
  83. package/src/client/v2/algod/models/types.ts +0 -700
  84. package/src/ed25519-signer.ts +125 -0
  85. package/src/encoding/address.ts +80 -0
  86. package/src/falcon-signer.ts +30 -0
  87. package/src/logicsig.ts +258 -16
  88. package/src/main.ts +30 -60
  89. package/src/mnemonic/mnemonic.ts +34 -1
  90. package/src/multisigSigning.ts +111 -0
  91. package/src/pq-signer.ts +90 -0
  92. package/src/signedTransaction.ts +24 -0
  93. package/src/signer.ts +53 -0
  94. package/src/signing.ts +109 -8
  95. package/src/transaction.ts +9 -1
  96. package/src/types/transactions/encoded.ts +88 -0
  97. package/src/utils/ed25519-check.ts +67 -0
  98. package/dist/cjs/client/v2/algod/dryrun.js +0 -34
  99. package/dist/cjs/client/v2/algod/dryrun.js.map +0 -1
  100. package/dist/cjs/dryrun.js +0 -214
  101. package/dist/cjs/dryrun.js.map +0 -1
  102. package/dist/esm/client/v2/algod/dryrun.js +0 -28
  103. package/dist/esm/client/v2/algod/dryrun.js.map +0 -1
  104. package/dist/esm/dryrun.js +0 -208
  105. package/dist/esm/dryrun.js.map +0 -1
  106. package/dist/types/client/v2/algod/dryrun.d.ts +0 -11
  107. package/dist/types/dryrun.d.ts +0 -28
  108. package/src/client/v2/algod/dryrun.ts +0 -38
  109. package/src/dryrun.ts +0 -292
@@ -0,0 +1,67 @@
1
+ /* eslint-disable no-bitwise */
2
+
3
+ const p = (1n << 255n) - 19n;
4
+
5
+ const ED25519_PUBLIC_KEY_LENGTH = 32;
6
+
7
+ function powMod(base: bigint, exp: bigint) {
8
+ let res = 1n;
9
+
10
+ let currentExp = exp;
11
+ let currentBase = ((base % p) + p) % p;
12
+
13
+ while (currentExp > 0n) {
14
+ if (currentExp & 1n) res = (res * currentBase) % p;
15
+ currentBase = (currentBase * currentBase) % p;
16
+ currentExp >>= 1n;
17
+ }
18
+ return res;
19
+ }
20
+
21
+ const d = (((-121665n * powMod(121666n, p - 2n)) % p) + p) % p;
22
+ const I = powMod(2n, (p - 1n) / 4n);
23
+
24
+ /**
25
+ * Decode the little-endian y coordinate of an Ed25519 point encoding, dropping
26
+ * the sign-of-x bit. The result is not reduced mod p; `hasValidX` reduces it.
27
+ */
28
+ function decodeY(keyBytes: Uint8Array): bigint {
29
+ const bytes = keyBytes.slice();
30
+ bytes[31] &= 0x7f;
31
+ let y = 0n;
32
+ for (let i = 31; i >= 0; i--) y = (y << 8n) | BigInt(bytes[i]);
33
+ return y;
34
+ }
35
+
36
+ function hasValidX(y: bigint): boolean {
37
+ // Reducing here is what makes this the broad predicate: non-canonical
38
+ // encodings with y >= p are accepted if their reduced value is on the curve.
39
+ const yr = ((y % p) + p) % p;
40
+ const y2 = (yr * yr) % p;
41
+ const u = (y2 - 1n + p) % p;
42
+ const v = (d * y2 + 1n) % p;
43
+ if (v === 0n) return false; // no x exists for this y
44
+ const vInv = powMod(v, p - 2n);
45
+ const x2 = (u * vInv) % p;
46
+ const x1 = powMod(x2, (p + 3n) / 8n);
47
+ if ((x1 * x1) % p === x2) return true;
48
+ const x1b = (x1 * I) % p;
49
+ if ((x1b * x1b) % p === x2) return true;
50
+ return false;
51
+ }
52
+
53
+ /**
54
+ * Report whether the given bytes decode to an Edwards25519 curve point.
55
+ *
56
+ * This over-approximates whatever the verifier's decoder accepts: small-order
57
+ * points and non-canonical encodings (such as y == p) count as curve points,
58
+ * matching decoders like filippo.io/edwards25519. Over-approximating is the
59
+ * safe direction here, because the only caller uses this to *reject* candidate
60
+ * post-quantum addresses that an Ed25519 key could also occupy.
61
+ */
62
+ export function couldBeCurvePoint(keyBytes: Uint8Array): boolean {
63
+ // An Ed25519 public key is always exactly 32 bytes, so nothing else can
64
+ // collide with one.
65
+ if (keyBytes.length !== ED25519_PUBLIC_KEY_LENGTH) return false;
66
+ return hasValidX(decodeY(keyBytes));
67
+ }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const encoding_js_1 = require("../../../encoding/encoding.js");
7
- const jsonrequest_js_1 = __importDefault(require("../jsonrequest.js"));
8
- const compile_js_1 = require("./compile.js");
9
- const types_js_1 = require("./models/types.js");
10
- class Dryrun extends jsonrequest_js_1.default {
11
- constructor(c, dr) {
12
- super(c);
13
- this.blob = (0, encoding_js_1.encodeMsgpack)(dr);
14
- }
15
- // eslint-disable-next-line class-methods-use-this
16
- path() {
17
- return '/v2/teal/dryrun';
18
- }
19
- executeRequest(headers, customOptions) {
20
- const txHeaders = (0, compile_js_1.setHeaders)(headers);
21
- return this.c.post({
22
- relativePath: this.path(),
23
- data: this.blob,
24
- requestHeaders: txHeaders,
25
- customOptions,
26
- });
27
- }
28
- // eslint-disable-next-line class-methods-use-this
29
- prepare(response) {
30
- return (0, encoding_js_1.decodeJSON)(response.getJSONText(), types_js_1.DryrunResponse);
31
- }
32
- }
33
- exports.default = Dryrun;
34
- //# sourceMappingURL=dryrun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dryrun.js","sourceRoot":"","sources":["../../../../../src/client/v2/algod/dryrun.ts"],"names":[],"mappings":";;;;;AACA,+DAA0E;AAC1E,uEAA4C;AAC5C,6CAA0C;AAC1C,gDAAmD;AAGnD,MAAqB,MAAO,SAAQ,wBAA2B;IAG7D,YAAY,CAAa,EAAE,EAA0B;QACnD,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,IAAI,CAAC,IAAI,GAAG,IAAA,2BAAa,EAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,kDAAkD;IAClD,IAAI;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,cAAc,CACtB,OAAgC,EAChC,aAAuC;QAEvC,MAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACjB,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,SAAS;YACzB,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,QAA4B;QAClC,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,yBAAc,CAAC,CAAC;IAC5D,CAAC;CACF;AA9BD,yBA8BC"}
@@ -1,214 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dryrunTxnResultLogicSigTrace = exports.dryrunTxnResultAppTrace = exports.createDryrun = void 0;
4
- const types_js_1 = require("./client/v2/algod/models/types.js");
5
- const address_js_1 = require("./encoding/address.js");
6
- const binarydata_js_1 = require("./encoding/binarydata.js");
7
- const index_js_1 = require("./types/transactions/index.js");
8
- const utils_js_1 = require("./utils/utils.js");
9
- const defaultAppId = 1380011588;
10
- const defaultMaxWidth = 30;
11
- /**
12
- * createDryrun takes an Algod Client (from algod.AlgodV2Client) and an array of Signed Transactions
13
- * from (transaction.SignedTransaction) and creates a DryrunRequest object with relevant balances
14
- * @param client - the AlgodClient to make requests against
15
- * @param txns - the array of SignedTransaction to use for generating the DryrunRequest object
16
- * @param protocolVersion - the string representing the protocol version to use
17
- * @param latestTimestamp - the timestamp
18
- * @param round - the round available to some TEAL scripts. Defaults to the current round on the network.
19
- * @param sources - TEAL source text that gets uploaded, compiled, and inserted into transactions or application state.
20
- * @returns the DryrunRequest object constructed from the SignedTransactions passed
21
- */
22
- async function createDryrun({ client, txns, protocolVersion, latestTimestamp, round, sources, }) {
23
- const appInfos = [];
24
- const acctInfos = [];
25
- const apps = [];
26
- const assets = [];
27
- const accts = [];
28
- for (const t of txns) {
29
- if (t.txn.type === index_js_1.TransactionType.appl) {
30
- accts.push(t.txn.sender.toString());
31
- accts.push(...t.txn.applicationCall.accounts.map((a) => a.toString()));
32
- apps.push(...t.txn.applicationCall.foreignApps);
33
- accts.push(...t.txn
34
- .applicationCall.foreignApps.map(address_js_1.getApplicationAddress)
35
- .map((a) => a.toString()));
36
- assets.push(...t.txn.applicationCall.foreignAssets);
37
- // Create application,
38
- if (t.txn.applicationCall.appIndex === BigInt(0)) {
39
- appInfos.push(new types_js_1.Application({
40
- id: defaultAppId,
41
- params: new types_js_1.ApplicationParams({
42
- creator: t.txn.sender.toString(),
43
- approvalProgram: t.txn.applicationCall.approvalProgram,
44
- clearStateProgram: t.txn.applicationCall.clearProgram,
45
- localStateSchema: new types_js_1.ApplicationStateSchema({
46
- numUint: t.txn.applicationCall.numLocalInts,
47
- numByteSlice: t.txn.applicationCall.numLocalByteSlices,
48
- }),
49
- globalStateSchema: new types_js_1.ApplicationStateSchema({
50
- numUint: t.txn.applicationCall.numGlobalInts,
51
- numByteSlice: t.txn.applicationCall.numGlobalByteSlices,
52
- }),
53
- }),
54
- }));
55
- }
56
- else {
57
- const { appIndex } = t.txn.applicationCall;
58
- apps.push(appIndex);
59
- accts.push((0, address_js_1.getApplicationAddress)(appIndex).toString());
60
- }
61
- }
62
- }
63
- // Dedupe and add creator to accts array
64
- const assetPromises = [];
65
- for (const assetId of new Set(assets)) {
66
- assetPromises.push(client
67
- .getAssetByID(assetId)
68
- .do()
69
- .then((assetInfo) => {
70
- accts.push(assetInfo.params.creator);
71
- }));
72
- }
73
- // Wait for assets to finish since we append to accts array
74
- await Promise.all(assetPromises);
75
- // Dedupe and get app info for all apps
76
- const appPromises = [];
77
- for (const appId of new Set(apps)) {
78
- appPromises.push(client
79
- .getApplicationByID(appId)
80
- .do()
81
- .then((appInfo) => {
82
- appInfos.push(appInfo);
83
- accts.push(appInfo.params.creator.toString());
84
- }));
85
- }
86
- await Promise.all(appPromises);
87
- const acctPromises = [];
88
- for (const acct of new Set(accts)) {
89
- acctPromises.push(client
90
- .accountInformation(acct)
91
- .do()
92
- .then((acctInfo) => {
93
- acctInfos.push(acctInfo);
94
- }));
95
- }
96
- await Promise.all(acctPromises);
97
- return new types_js_1.DryrunRequest({
98
- txns: txns.slice(),
99
- accounts: acctInfos,
100
- apps: appInfos,
101
- latestTimestamp: latestTimestamp ?? 0,
102
- round: round ?? 0,
103
- protocolVersion: protocolVersion ?? '',
104
- sources: sources ?? [],
105
- });
106
- }
107
- exports.createDryrun = createDryrun;
108
- function truncate(str, maxValueWidth) {
109
- if (str.length > maxValueWidth && maxValueWidth > 0) {
110
- return `${str.slice(0, maxValueWidth)}...`;
111
- }
112
- return str;
113
- }
114
- function scratchToString(prevScratch, currScratch) {
115
- if (currScratch.length === 0)
116
- return '';
117
- let newScratchIdx = null;
118
- for (let idx = 0; idx < currScratch.length; idx++) {
119
- if (idx > prevScratch.length) {
120
- newScratchIdx = idx;
121
- continue;
122
- }
123
- if ((0, utils_js_1.stringifyJSON)(prevScratch[idx]) !== (0, utils_js_1.stringifyJSON)(currScratch[idx])) {
124
- newScratchIdx = idx;
125
- }
126
- }
127
- if (newScratchIdx == null)
128
- return '';
129
- const newScratch = currScratch[newScratchIdx];
130
- if (newScratch.bytes.length > 0) {
131
- return `${newScratchIdx} = 0x${(0, binarydata_js_1.bytesToHex)(newScratch.bytes)}`;
132
- }
133
- return `${newScratchIdx} = ${newScratch.uint.toString()}`;
134
- }
135
- function stackToString(stack, reverse) {
136
- const svs = reverse ? stack.reverse() : stack;
137
- return `[${svs
138
- .map((sv) => {
139
- switch (sv.type) {
140
- case 1:
141
- return `0x${(0, binarydata_js_1.bytesToHex)(sv.bytes)}`;
142
- case 2:
143
- return sv.uint.toString();
144
- default:
145
- return '';
146
- }
147
- })
148
- .join(', ')}]`;
149
- }
150
- function dryrunTrace(trace, disassembly, spc) {
151
- const maxWidth = spc.maxValueWidth || defaultMaxWidth;
152
- // Create the array of arrays, each sub array contains N columns
153
- const lines = [['pc#', 'ln#', 'source', 'scratch', 'stack']];
154
- for (let idx = 0; idx < trace.length; idx++) {
155
- const { line, error, pc, scratch, stack } = trace[idx];
156
- const currScratch = scratch !== undefined ? scratch : [];
157
- const prevScratch = idx > 0 && trace[idx - 1].scratch !== undefined
158
- ? trace[idx - 1].scratch
159
- : [];
160
- const src = !error ? disassembly[line] : `!! ${error} !!`;
161
- lines.push([
162
- pc.toString().padEnd(3, ' '),
163
- line.toString().padEnd(3, ' '),
164
- truncate(src, maxWidth),
165
- truncate(scratchToString(prevScratch, currScratch), maxWidth),
166
- truncate(stackToString(stack, spc.topOfStackFirst), maxWidth),
167
- ]);
168
- }
169
- // Get the max length for each column
170
- const maxLengths = lines.reduce((prev, curr) => {
171
- const newVal = new Array(lines[0].length).fill(0);
172
- for (let idx = 0; idx < prev.length; idx++) {
173
- newVal[idx] = curr[idx].length > prev[idx] ? curr[idx].length : prev[idx];
174
- }
175
- return newVal;
176
- }, new Array(lines[0].length).fill(0));
177
- return `${lines
178
- .map((line) => line
179
- .map((v, idx) => v.padEnd(maxLengths[idx] + 1, ' '))
180
- .join('|')
181
- .trim())
182
- .join('\n')}\n`;
183
- }
184
- function dryrunTxnResultAppTrace(result, spc) {
185
- if (!result.appCallTrace || !result.disassembly)
186
- return '';
187
- let conf = spc;
188
- if (spc !== undefined)
189
- conf = spc;
190
- else {
191
- conf = {
192
- maxValueWidth: defaultMaxWidth,
193
- topOfStackFirst: false,
194
- };
195
- }
196
- return dryrunTrace(result.appCallTrace, result.disassembly, conf);
197
- }
198
- exports.dryrunTxnResultAppTrace = dryrunTxnResultAppTrace;
199
- function dryrunTxnResultLogicSigTrace(result, spc) {
200
- if (!result.logicSigTrace || !result.logicSigDisassembly)
201
- return '';
202
- let conf;
203
- if (spc !== undefined)
204
- conf = spc;
205
- else {
206
- conf = {
207
- maxValueWidth: defaultMaxWidth,
208
- topOfStackFirst: true,
209
- };
210
- }
211
- return dryrunTrace(result.logicSigTrace, result.logicSigDisassembly, conf);
212
- }
213
- exports.dryrunTxnResultLogicSigTrace = dryrunTxnResultLogicSigTrace;
214
- //# sourceMappingURL=dryrun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dryrun.js","sourceRoot":"","sources":["../../src/dryrun.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { decodeJSON, encodeMsgpack } from '../../../encoding/encoding.js';
2
- import JSONRequest from '../jsonrequest.js';
3
- import { setHeaders } from './compile.js';
4
- import { DryrunResponse } from './models/types.js';
5
- export default class Dryrun extends JSONRequest {
6
- constructor(c, dr) {
7
- super(c);
8
- this.blob = encodeMsgpack(dr);
9
- }
10
- // eslint-disable-next-line class-methods-use-this
11
- path() {
12
- return '/v2/teal/dryrun';
13
- }
14
- executeRequest(headers, customOptions) {
15
- const txHeaders = setHeaders(headers);
16
- return this.c.post({
17
- relativePath: this.path(),
18
- data: this.blob,
19
- requestHeaders: txHeaders,
20
- customOptions,
21
- });
22
- }
23
- // eslint-disable-next-line class-methods-use-this
24
- prepare(response) {
25
- return decodeJSON(response.getJSONText(), DryrunResponse);
26
- }
27
- }
28
- //# sourceMappingURL=dryrun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dryrun.js","sourceRoot":"","sources":["../../../../../src/client/v2/algod/dryrun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAA2B;IAG7D,YAAY,CAAa,EAAE,EAA0B;QACnD,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,kDAAkD;IAClD,IAAI;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,cAAc,CACtB,OAAgC,EAChC,aAAuC;QAEvC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACjB,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,SAAS;YACzB,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,QAA4B;QAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -1,208 +0,0 @@
1
- import { Application, ApplicationParams, ApplicationStateSchema, DryrunRequest, } from './client/v2/algod/models/types.js';
2
- import { getApplicationAddress } from './encoding/address.js';
3
- import { bytesToHex } from './encoding/binarydata.js';
4
- import { TransactionType } from './types/transactions/index.js';
5
- import { stringifyJSON } from './utils/utils.js';
6
- const defaultAppId = 1380011588;
7
- const defaultMaxWidth = 30;
8
- /**
9
- * createDryrun takes an Algod Client (from algod.AlgodV2Client) and an array of Signed Transactions
10
- * from (transaction.SignedTransaction) and creates a DryrunRequest object with relevant balances
11
- * @param client - the AlgodClient to make requests against
12
- * @param txns - the array of SignedTransaction to use for generating the DryrunRequest object
13
- * @param protocolVersion - the string representing the protocol version to use
14
- * @param latestTimestamp - the timestamp
15
- * @param round - the round available to some TEAL scripts. Defaults to the current round on the network.
16
- * @param sources - TEAL source text that gets uploaded, compiled, and inserted into transactions or application state.
17
- * @returns the DryrunRequest object constructed from the SignedTransactions passed
18
- */
19
- export async function createDryrun({ client, txns, protocolVersion, latestTimestamp, round, sources, }) {
20
- const appInfos = [];
21
- const acctInfos = [];
22
- const apps = [];
23
- const assets = [];
24
- const accts = [];
25
- for (const t of txns) {
26
- if (t.txn.type === TransactionType.appl) {
27
- accts.push(t.txn.sender.toString());
28
- accts.push(...t.txn.applicationCall.accounts.map((a) => a.toString()));
29
- apps.push(...t.txn.applicationCall.foreignApps);
30
- accts.push(...t.txn
31
- .applicationCall.foreignApps.map(getApplicationAddress)
32
- .map((a) => a.toString()));
33
- assets.push(...t.txn.applicationCall.foreignAssets);
34
- // Create application,
35
- if (t.txn.applicationCall.appIndex === BigInt(0)) {
36
- appInfos.push(new Application({
37
- id: defaultAppId,
38
- params: new ApplicationParams({
39
- creator: t.txn.sender.toString(),
40
- approvalProgram: t.txn.applicationCall.approvalProgram,
41
- clearStateProgram: t.txn.applicationCall.clearProgram,
42
- localStateSchema: new ApplicationStateSchema({
43
- numUint: t.txn.applicationCall.numLocalInts,
44
- numByteSlice: t.txn.applicationCall.numLocalByteSlices,
45
- }),
46
- globalStateSchema: new ApplicationStateSchema({
47
- numUint: t.txn.applicationCall.numGlobalInts,
48
- numByteSlice: t.txn.applicationCall.numGlobalByteSlices,
49
- }),
50
- }),
51
- }));
52
- }
53
- else {
54
- const { appIndex } = t.txn.applicationCall;
55
- apps.push(appIndex);
56
- accts.push(getApplicationAddress(appIndex).toString());
57
- }
58
- }
59
- }
60
- // Dedupe and add creator to accts array
61
- const assetPromises = [];
62
- for (const assetId of new Set(assets)) {
63
- assetPromises.push(client
64
- .getAssetByID(assetId)
65
- .do()
66
- .then((assetInfo) => {
67
- accts.push(assetInfo.params.creator);
68
- }));
69
- }
70
- // Wait for assets to finish since we append to accts array
71
- await Promise.all(assetPromises);
72
- // Dedupe and get app info for all apps
73
- const appPromises = [];
74
- for (const appId of new Set(apps)) {
75
- appPromises.push(client
76
- .getApplicationByID(appId)
77
- .do()
78
- .then((appInfo) => {
79
- appInfos.push(appInfo);
80
- accts.push(appInfo.params.creator.toString());
81
- }));
82
- }
83
- await Promise.all(appPromises);
84
- const acctPromises = [];
85
- for (const acct of new Set(accts)) {
86
- acctPromises.push(client
87
- .accountInformation(acct)
88
- .do()
89
- .then((acctInfo) => {
90
- acctInfos.push(acctInfo);
91
- }));
92
- }
93
- await Promise.all(acctPromises);
94
- return new DryrunRequest({
95
- txns: txns.slice(),
96
- accounts: acctInfos,
97
- apps: appInfos,
98
- latestTimestamp: latestTimestamp ?? 0,
99
- round: round ?? 0,
100
- protocolVersion: protocolVersion ?? '',
101
- sources: sources ?? [],
102
- });
103
- }
104
- function truncate(str, maxValueWidth) {
105
- if (str.length > maxValueWidth && maxValueWidth > 0) {
106
- return `${str.slice(0, maxValueWidth)}...`;
107
- }
108
- return str;
109
- }
110
- function scratchToString(prevScratch, currScratch) {
111
- if (currScratch.length === 0)
112
- return '';
113
- let newScratchIdx = null;
114
- for (let idx = 0; idx < currScratch.length; idx++) {
115
- if (idx > prevScratch.length) {
116
- newScratchIdx = idx;
117
- continue;
118
- }
119
- if (stringifyJSON(prevScratch[idx]) !== stringifyJSON(currScratch[idx])) {
120
- newScratchIdx = idx;
121
- }
122
- }
123
- if (newScratchIdx == null)
124
- return '';
125
- const newScratch = currScratch[newScratchIdx];
126
- if (newScratch.bytes.length > 0) {
127
- return `${newScratchIdx} = 0x${bytesToHex(newScratch.bytes)}`;
128
- }
129
- return `${newScratchIdx} = ${newScratch.uint.toString()}`;
130
- }
131
- function stackToString(stack, reverse) {
132
- const svs = reverse ? stack.reverse() : stack;
133
- return `[${svs
134
- .map((sv) => {
135
- switch (sv.type) {
136
- case 1:
137
- return `0x${bytesToHex(sv.bytes)}`;
138
- case 2:
139
- return sv.uint.toString();
140
- default:
141
- return '';
142
- }
143
- })
144
- .join(', ')}]`;
145
- }
146
- function dryrunTrace(trace, disassembly, spc) {
147
- const maxWidth = spc.maxValueWidth || defaultMaxWidth;
148
- // Create the array of arrays, each sub array contains N columns
149
- const lines = [['pc#', 'ln#', 'source', 'scratch', 'stack']];
150
- for (let idx = 0; idx < trace.length; idx++) {
151
- const { line, error, pc, scratch, stack } = trace[idx];
152
- const currScratch = scratch !== undefined ? scratch : [];
153
- const prevScratch = idx > 0 && trace[idx - 1].scratch !== undefined
154
- ? trace[idx - 1].scratch
155
- : [];
156
- const src = !error ? disassembly[line] : `!! ${error} !!`;
157
- lines.push([
158
- pc.toString().padEnd(3, ' '),
159
- line.toString().padEnd(3, ' '),
160
- truncate(src, maxWidth),
161
- truncate(scratchToString(prevScratch, currScratch), maxWidth),
162
- truncate(stackToString(stack, spc.topOfStackFirst), maxWidth),
163
- ]);
164
- }
165
- // Get the max length for each column
166
- const maxLengths = lines.reduce((prev, curr) => {
167
- const newVal = new Array(lines[0].length).fill(0);
168
- for (let idx = 0; idx < prev.length; idx++) {
169
- newVal[idx] = curr[idx].length > prev[idx] ? curr[idx].length : prev[idx];
170
- }
171
- return newVal;
172
- }, new Array(lines[0].length).fill(0));
173
- return `${lines
174
- .map((line) => line
175
- .map((v, idx) => v.padEnd(maxLengths[idx] + 1, ' '))
176
- .join('|')
177
- .trim())
178
- .join('\n')}\n`;
179
- }
180
- export function dryrunTxnResultAppTrace(result, spc) {
181
- if (!result.appCallTrace || !result.disassembly)
182
- return '';
183
- let conf = spc;
184
- if (spc !== undefined)
185
- conf = spc;
186
- else {
187
- conf = {
188
- maxValueWidth: defaultMaxWidth,
189
- topOfStackFirst: false,
190
- };
191
- }
192
- return dryrunTrace(result.appCallTrace, result.disassembly, conf);
193
- }
194
- export function dryrunTxnResultLogicSigTrace(result, spc) {
195
- if (!result.logicSigTrace || !result.logicSigDisassembly)
196
- return '';
197
- let conf;
198
- if (spc !== undefined)
199
- conf = spc;
200
- else {
201
- conf = {
202
- maxValueWidth: defaultMaxWidth,
203
- topOfStackFirst: true,
204
- };
205
- }
206
- return dryrunTrace(result.logicSigTrace, result.logicSigDisassembly, conf);
207
- }
208
- //# sourceMappingURL=dryrun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dryrun.js","sourceRoot":"","sources":["../../src/dryrun.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { HTTPClient, HTTPClientResponse } from '../../client.js';
2
- import JSONRequest from '../jsonrequest.js';
3
- import { DryrunResponse } from './models/types.js';
4
- import * as modelsv2 from './models/types.js';
5
- export default class Dryrun extends JSONRequest<DryrunResponse> {
6
- private blob;
7
- constructor(c: HTTPClient, dr: modelsv2.DryrunRequest);
8
- path(): string;
9
- protected executeRequest(headers?: Record<string, string>, customOptions?: Record<string, unknown>): Promise<HTTPClientResponse>;
10
- prepare(response: HTTPClientResponse): DryrunResponse;
11
- }
@@ -1,28 +0,0 @@
1
- import { AlgodClient } from './client/v2/algod/algod.js';
2
- import { DryrunRequest, DryrunSource, DryrunTxnResult } from './client/v2/algod/models/types.js';
3
- import { SignedTransaction } from './signedTransaction.js';
4
- /**
5
- * createDryrun takes an Algod Client (from algod.AlgodV2Client) and an array of Signed Transactions
6
- * from (transaction.SignedTransaction) and creates a DryrunRequest object with relevant balances
7
- * @param client - the AlgodClient to make requests against
8
- * @param txns - the array of SignedTransaction to use for generating the DryrunRequest object
9
- * @param protocolVersion - the string representing the protocol version to use
10
- * @param latestTimestamp - the timestamp
11
- * @param round - the round available to some TEAL scripts. Defaults to the current round on the network.
12
- * @param sources - TEAL source text that gets uploaded, compiled, and inserted into transactions or application state.
13
- * @returns the DryrunRequest object constructed from the SignedTransactions passed
14
- */
15
- export declare function createDryrun({ client, txns, protocolVersion, latestTimestamp, round, sources, }: {
16
- client: AlgodClient;
17
- txns: SignedTransaction[];
18
- protocolVersion?: string;
19
- latestTimestamp?: number | bigint;
20
- round?: number | bigint;
21
- sources?: DryrunSource[];
22
- }): Promise<DryrunRequest>;
23
- export interface StackPrinterConfig {
24
- maxValueWidth: number | undefined;
25
- topOfStackFirst: boolean | undefined;
26
- }
27
- export declare function dryrunTxnResultAppTrace(result: DryrunTxnResult, spc?: StackPrinterConfig): string;
28
- export declare function dryrunTxnResultLogicSigTrace(result: DryrunTxnResult, spc?: StackPrinterConfig): string;