algosdk 3.7.0-beta.1 → 3.8.0
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/README.md +4 -4
- package/dist/browser/algosdk.min.js +1 -1
- package/dist/browser/algosdk.min.js.map +1 -1
- package/dist/cjs/appAccess.js +4 -0
- package/dist/cjs/appAccess.js.map +1 -1
- package/dist/cjs/client/v2/algod/getPeers.js +20 -0
- package/dist/cjs/client/v2/algod/getPeers.js.map +1 -0
- package/dist/cjs/client/v2/algod/models/types.js +153 -5
- package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
- package/dist/cjs/client/v2/indexer/models/types.js +163 -12
- package/dist/cjs/client/v2/indexer/models/types.js.map +1 -1
- package/dist/cjs/composer.js +4 -6
- package/dist/cjs/composer.js.map +1 -1
- package/dist/cjs/ed25519-signer.js +18 -0
- package/dist/cjs/ed25519-signer.js.map +1 -1
- package/dist/cjs/encoding/address.js +9 -0
- package/dist/cjs/encoding/address.js.map +1 -1
- package/dist/cjs/falcon-signer.js +16 -0
- package/dist/cjs/falcon-signer.js.map +1 -1
- package/dist/cjs/heartbeat.js +7 -0
- package/dist/cjs/heartbeat.js.map +1 -1
- package/dist/cjs/logicsig.js +86 -6
- package/dist/cjs/logicsig.js.map +1 -1
- package/dist/cjs/makeTxn.js +11 -2
- package/dist/cjs/makeTxn.js.map +1 -1
- package/dist/cjs/mnemonic/mnemonic.js +2 -0
- package/dist/cjs/mnemonic/mnemonic.js.map +1 -1
- package/dist/cjs/pq-signer.js +51 -0
- package/dist/cjs/pq-signer.js.map +1 -1
- package/dist/cjs/signer.js.map +1 -1
- package/dist/cjs/signing.js +22 -0
- package/dist/cjs/signing.js.map +1 -1
- package/dist/cjs/transaction.js +8 -0
- package/dist/cjs/transaction.js.map +1 -1
- package/dist/cjs/types/block.js +28 -0
- package/dist/cjs/types/block.js.map +1 -1
- package/dist/cjs/types/statedelta.js +17 -0
- package/dist/cjs/types/statedelta.js.map +1 -1
- package/dist/cjs/utils/utils.js +14 -1
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/esm/appAccess.js +4 -0
- package/dist/esm/appAccess.js.map +1 -1
- package/dist/esm/client/v2/algod/getPeers.js +14 -0
- package/dist/esm/client/v2/algod/getPeers.js.map +1 -0
- package/dist/esm/client/v2/algod/models/types.js +149 -3
- package/dist/esm/client/v2/algod/models/types.js.map +1 -1
- package/dist/esm/client/v2/indexer/models/types.js +161 -11
- package/dist/esm/client/v2/indexer/models/types.js.map +1 -1
- package/dist/esm/composer.js +4 -6
- package/dist/esm/composer.js.map +1 -1
- package/dist/esm/ed25519-signer.js +18 -0
- package/dist/esm/ed25519-signer.js.map +1 -1
- package/dist/esm/encoding/address.js +9 -0
- package/dist/esm/encoding/address.js.map +1 -1
- package/dist/esm/falcon-signer.js +16 -0
- package/dist/esm/falcon-signer.js.map +1 -1
- package/dist/esm/heartbeat.js +8 -1
- package/dist/esm/heartbeat.js.map +1 -1
- package/dist/esm/logicsig.js +86 -6
- package/dist/esm/logicsig.js.map +1 -1
- package/dist/esm/makeTxn.js +11 -2
- package/dist/esm/makeTxn.js.map +1 -1
- package/dist/esm/mnemonic/mnemonic.js +2 -0
- package/dist/esm/mnemonic/mnemonic.js.map +1 -1
- package/dist/esm/pq-signer.js +51 -0
- package/dist/esm/pq-signer.js.map +1 -1
- package/dist/esm/signer.js.map +1 -1
- package/dist/esm/signing.js +22 -0
- package/dist/esm/signing.js.map +1 -1
- package/dist/esm/transaction.js +8 -0
- package/dist/esm/transaction.js.map +1 -1
- package/dist/esm/types/block.js +28 -0
- package/dist/esm/types/block.js.map +1 -1
- package/dist/esm/types/statedelta.js +17 -0
- package/dist/esm/types/statedelta.js.map +1 -1
- package/dist/esm/utils/utils.js +12 -0
- package/dist/esm/utils/utils.js.map +1 -1
- package/dist/types/client/v2/algod/getPeers.d.ts +7 -0
- package/dist/types/client/v2/algod/models/types.d.ts +90 -3
- package/dist/types/client/v2/indexer/models/types.d.ts +114 -7
- package/dist/types/composer.d.ts +3 -3
- package/dist/types/ed25519-signer.d.ts +29 -0
- package/dist/types/encoding/address.d.ts +9 -0
- package/dist/types/falcon-signer.d.ts +29 -2
- package/dist/types/heartbeat.d.ts +2 -0
- package/dist/types/logicsig.d.ts +91 -6
- package/dist/types/makeTxn.d.ts +8 -2
- package/dist/types/mnemonic/mnemonic.d.ts +2 -0
- package/dist/types/pq-signer.d.ts +39 -2
- package/dist/types/signer.d.ts +76 -5
- package/dist/types/signing.d.ts +22 -0
- package/dist/types/transaction.d.ts +1 -0
- package/dist/types/types/block.d.ts +22 -0
- package/dist/types/types/statedelta.d.ts +18 -0
- package/dist/types/types/transactions/base.d.ts +10 -0
- package/dist/types/utils/utils.d.ts +1 -0
- package/package.json +2 -2
- package/src/appAccess.ts +5 -0
- package/src/client/v2/algod/models/types.ts +234 -0
- package/src/client/v2/indexer/models/types.ts +280 -8
- package/src/composer.ts +7 -11
- package/src/ed25519-signer.ts +29 -0
- package/src/encoding/address.ts +9 -0
- package/src/falcon-signer.ts +31 -1
- package/src/heartbeat.ts +11 -0
- package/src/logicsig.ts +93 -6
- package/src/makeTxn.ts +13 -4
- package/src/mnemonic/mnemonic.ts +2 -0
- package/src/pq-signer.ts +71 -1
- package/src/signer.ts +77 -5
- package/src/signing.ts +22 -0
- package/src/transaction.ts +10 -0
- package/src/types/block.ts +54 -0
- package/src/types/statedelta.ts +34 -0
- package/src/types/transactions/base.ts +11 -0
- package/src/utils/utils.ts +13 -0
package/src/types/block.ts
CHANGED
|
@@ -112,6 +112,10 @@ export class TxnCommitments implements Encodable {
|
|
|
112
112
|
key: 'txn256', // sha256Commitment
|
|
113
113
|
valueSchema: new FixedLengthByteArraySchema(32),
|
|
114
114
|
},
|
|
115
|
+
{
|
|
116
|
+
key: 'txn512', // sha512Commitment
|
|
117
|
+
valueSchema: new FixedLengthByteArraySchema(64),
|
|
118
|
+
},
|
|
115
119
|
])
|
|
116
120
|
);
|
|
117
121
|
|
|
@@ -126,12 +130,19 @@ export class TxnCommitments implements Encodable {
|
|
|
126
130
|
*/
|
|
127
131
|
public sha256Commitment: Uint8Array;
|
|
128
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Root of transaction vector commitment merkle tree using SHA512 hash function
|
|
135
|
+
*/
|
|
136
|
+
public sha512Commitment: Uint8Array;
|
|
137
|
+
|
|
129
138
|
constructor(params: {
|
|
130
139
|
nativeSha512_256Commitment: Uint8Array;
|
|
131
140
|
sha256Commitment: Uint8Array;
|
|
141
|
+
sha512Commitment?: Uint8Array;
|
|
132
142
|
}) {
|
|
133
143
|
this.nativeSha512_256Commitment = params.nativeSha512_256Commitment;
|
|
134
144
|
this.sha256Commitment = params.sha256Commitment;
|
|
145
|
+
this.sha512Commitment = params.sha512Commitment ?? new Uint8Array(64);
|
|
135
146
|
}
|
|
136
147
|
|
|
137
148
|
// eslint-disable-next-line class-methods-use-this
|
|
@@ -143,6 +154,7 @@ export class TxnCommitments implements Encodable {
|
|
|
143
154
|
return new Map<string, unknown>([
|
|
144
155
|
['txn', this.nativeSha512_256Commitment],
|
|
145
156
|
['txn256', this.sha256Commitment],
|
|
157
|
+
['txn512', this.sha512Commitment],
|
|
146
158
|
]);
|
|
147
159
|
}
|
|
148
160
|
|
|
@@ -153,6 +165,7 @@ export class TxnCommitments implements Encodable {
|
|
|
153
165
|
return new TxnCommitments({
|
|
154
166
|
nativeSha512_256Commitment: data.get('txn'),
|
|
155
167
|
sha256Commitment: data.get('txn256'),
|
|
168
|
+
sha512Commitment: data.get('txn512'),
|
|
156
169
|
});
|
|
157
170
|
}
|
|
158
171
|
}
|
|
@@ -509,6 +522,10 @@ export class BlockHeader implements Encodable {
|
|
|
509
522
|
key: 'prev', // branch
|
|
510
523
|
valueSchema: new BlockHashSchema(),
|
|
511
524
|
},
|
|
525
|
+
{
|
|
526
|
+
key: 'prev512', // branch512
|
|
527
|
+
valueSchema: new FixedLengthByteArraySchema(64),
|
|
528
|
+
},
|
|
512
529
|
{
|
|
513
530
|
key: 'seed', // seed
|
|
514
531
|
valueSchema: new ByteArraySchema(),
|
|
@@ -574,6 +591,14 @@ export class BlockHeader implements Encodable {
|
|
|
574
591
|
valueSchema: ParticipationUpdates.encodingSchema,
|
|
575
592
|
embedded: true,
|
|
576
593
|
},
|
|
594
|
+
{
|
|
595
|
+
key: 'ld', // load
|
|
596
|
+
valueSchema: new Uint64Schema(),
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
key: 'ct', // congestionTax
|
|
600
|
+
valueSchema: new Uint64Schema(),
|
|
601
|
+
},
|
|
577
602
|
])
|
|
578
603
|
);
|
|
579
604
|
|
|
@@ -587,6 +612,11 @@ export class BlockHeader implements Encodable {
|
|
|
587
612
|
*/
|
|
588
613
|
public branch: Uint8Array;
|
|
589
614
|
|
|
615
|
+
/**
|
|
616
|
+
* Previous block hash, using SHA-512
|
|
617
|
+
*/
|
|
618
|
+
public branch512: Uint8Array;
|
|
619
|
+
|
|
590
620
|
/**
|
|
591
621
|
* Sortition seed
|
|
592
622
|
*/
|
|
@@ -655,9 +685,22 @@ export class BlockHeader implements Encodable {
|
|
|
655
685
|
|
|
656
686
|
public participationUpdates: ParticipationUpdates;
|
|
657
687
|
|
|
688
|
+
/**
|
|
689
|
+
* Load is the degree to which a block is full. Currently, it is based on the number of bytes in
|
|
690
|
+
* the final block, compared to the maximum allowed. It is expressed as a fixed-point integer with
|
|
691
|
+
* 6 digits of precision. So, 1,000,000 is a completely full block.
|
|
692
|
+
*/
|
|
693
|
+
public load: bigint;
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* CongestionTax is the fee required, beyond the MinFee, for "normal" transactions in this block.
|
|
697
|
+
*/
|
|
698
|
+
public congestionTax: bigint;
|
|
699
|
+
|
|
658
700
|
public constructor(params: {
|
|
659
701
|
round: bigint;
|
|
660
702
|
branch: Uint8Array;
|
|
703
|
+
branch512?: Uint8Array;
|
|
661
704
|
seed: Uint8Array;
|
|
662
705
|
txnCommitments: TxnCommitments;
|
|
663
706
|
timestamp: bigint;
|
|
@@ -673,9 +716,12 @@ export class BlockHeader implements Encodable {
|
|
|
673
716
|
txnCounter: bigint;
|
|
674
717
|
stateproofTracking: Map<number, StateProofTrackingData>;
|
|
675
718
|
participationUpdates: ParticipationUpdates;
|
|
719
|
+
load?: bigint;
|
|
720
|
+
congestionTax?: bigint;
|
|
676
721
|
}) {
|
|
677
722
|
this.round = params.round;
|
|
678
723
|
this.branch = params.branch;
|
|
724
|
+
this.branch512 = params.branch512 ?? new Uint8Array(64);
|
|
679
725
|
this.seed = params.seed;
|
|
680
726
|
this.txnCommitments = params.txnCommitments;
|
|
681
727
|
this.timestamp = params.timestamp;
|
|
@@ -691,6 +737,8 @@ export class BlockHeader implements Encodable {
|
|
|
691
737
|
this.txnCounter = params.txnCounter;
|
|
692
738
|
this.stateproofTracking = params.stateproofTracking;
|
|
693
739
|
this.participationUpdates = params.participationUpdates;
|
|
740
|
+
this.load = params.load ?? BigInt(0);
|
|
741
|
+
this.congestionTax = params.congestionTax ?? BigInt(0);
|
|
694
742
|
}
|
|
695
743
|
|
|
696
744
|
// eslint-disable-next-line class-methods-use-this
|
|
@@ -702,6 +750,7 @@ export class BlockHeader implements Encodable {
|
|
|
702
750
|
const data = new Map<string, unknown>([
|
|
703
751
|
['rnd', this.round],
|
|
704
752
|
['prev', this.branch],
|
|
753
|
+
['prev512', this.branch512],
|
|
705
754
|
['seed', this.seed],
|
|
706
755
|
['ts', this.timestamp],
|
|
707
756
|
['gen', this.genesisID],
|
|
@@ -711,6 +760,8 @@ export class BlockHeader implements Encodable {
|
|
|
711
760
|
['bi', this.bonus],
|
|
712
761
|
['pp', this.proposerPayout],
|
|
713
762
|
['tc', this.txnCounter],
|
|
763
|
+
['ld', this.load],
|
|
764
|
+
['ct', this.congestionTax],
|
|
714
765
|
[
|
|
715
766
|
'spt',
|
|
716
767
|
convertMap(this.stateproofTracking, (key, value) => [
|
|
@@ -736,6 +787,7 @@ export class BlockHeader implements Encodable {
|
|
|
736
787
|
return new BlockHeader({
|
|
737
788
|
round: data.get('rnd'),
|
|
738
789
|
branch: data.get('prev'),
|
|
790
|
+
branch512: data.get('prev512'),
|
|
739
791
|
seed: data.get('seed'),
|
|
740
792
|
txnCommitments: TxnCommitments.fromEncodingData(data),
|
|
741
793
|
timestamp: data.get('ts'),
|
|
@@ -757,6 +809,8 @@ export class BlockHeader implements Encodable {
|
|
|
757
809
|
]
|
|
758
810
|
),
|
|
759
811
|
participationUpdates: ParticipationUpdates.fromEncodingData(data),
|
|
812
|
+
load: data.get('ld'),
|
|
813
|
+
congestionTax: data.get('ct'),
|
|
760
814
|
});
|
|
761
815
|
}
|
|
762
816
|
}
|
package/src/types/statedelta.ts
CHANGED
|
@@ -139,6 +139,10 @@ export class AppParams implements Encodable {
|
|
|
139
139
|
{ key: 'lsch', valueSchema: StateSchema.encodingSchema }, // localStateSchema
|
|
140
140
|
{ key: 'gsch', valueSchema: StateSchema.encodingSchema }, // globalStateSchema
|
|
141
141
|
{ key: 'epp', valueSchema: new Uint64Schema() }, // extraProgramPages
|
|
142
|
+
{ key: 'v', valueSchema: new Uint64Schema() }, // version
|
|
143
|
+
{ key: 'ss', valueSchema: new AddressSchema() }, // sizeSponsor
|
|
144
|
+
{ key: 'fbr', valueSchema: new BooleanSchema() }, // foreignBoxReads
|
|
145
|
+
{ key: 'fba', valueSchema: new BooleanSchema() }, // familyBoxAccess
|
|
142
146
|
])
|
|
143
147
|
);
|
|
144
148
|
|
|
@@ -148,6 +152,20 @@ export class AppParams implements Encodable {
|
|
|
148
152
|
public localStateSchema: StateSchema;
|
|
149
153
|
public globalStateSchema: StateSchema;
|
|
150
154
|
public extraProgramPages: number;
|
|
155
|
+
public version: bigint;
|
|
156
|
+
/**
|
|
157
|
+
* If non-zero, the account that must hold MBR for extra program pages and the
|
|
158
|
+
* global schema.
|
|
159
|
+
*/
|
|
160
|
+
public sizeSponsor: Address;
|
|
161
|
+
/**
|
|
162
|
+
* When true, any app may read this app's boxes.
|
|
163
|
+
*/
|
|
164
|
+
public foreignBoxReads: boolean;
|
|
165
|
+
/**
|
|
166
|
+
* When true, apps with the same creator may read and write this app's boxes.
|
|
167
|
+
*/
|
|
168
|
+
public familyBoxAccess: boolean;
|
|
151
169
|
|
|
152
170
|
constructor(params: {
|
|
153
171
|
approvalProgram: Uint8Array;
|
|
@@ -156,6 +174,10 @@ export class AppParams implements Encodable {
|
|
|
156
174
|
localStateSchema: StateSchema;
|
|
157
175
|
globalStateSchema: StateSchema;
|
|
158
176
|
extraProgramPages: number;
|
|
177
|
+
version?: bigint;
|
|
178
|
+
sizeSponsor?: Address;
|
|
179
|
+
foreignBoxReads?: boolean;
|
|
180
|
+
familyBoxAccess?: boolean;
|
|
159
181
|
}) {
|
|
160
182
|
this.approvalProgram = params.approvalProgram;
|
|
161
183
|
this.clearStateProgram = params.clearStateProgram;
|
|
@@ -163,6 +185,10 @@ export class AppParams implements Encodable {
|
|
|
163
185
|
this.localStateSchema = params.localStateSchema;
|
|
164
186
|
this.globalStateSchema = params.globalStateSchema;
|
|
165
187
|
this.extraProgramPages = params.extraProgramPages;
|
|
188
|
+
this.version = params.version ?? BigInt(0);
|
|
189
|
+
this.sizeSponsor = params.sizeSponsor ?? Address.zeroAddress();
|
|
190
|
+
this.foreignBoxReads = params.foreignBoxReads ?? false;
|
|
191
|
+
this.familyBoxAccess = params.familyBoxAccess ?? false;
|
|
166
192
|
}
|
|
167
193
|
|
|
168
194
|
// eslint-disable-next-line class-methods-use-this
|
|
@@ -178,6 +204,10 @@ export class AppParams implements Encodable {
|
|
|
178
204
|
['lsch', this.localStateSchema.toEncodingData()],
|
|
179
205
|
['gsch', this.globalStateSchema.toEncodingData()],
|
|
180
206
|
['epp', this.extraProgramPages],
|
|
207
|
+
['v', this.version],
|
|
208
|
+
['ss', this.sizeSponsor],
|
|
209
|
+
['fbr', this.foreignBoxReads],
|
|
210
|
+
['fba', this.familyBoxAccess],
|
|
181
211
|
]);
|
|
182
212
|
}
|
|
183
213
|
|
|
@@ -195,6 +225,10 @@ export class AppParams implements Encodable {
|
|
|
195
225
|
localStateSchema: StateSchema.fromEncodingData(data.get('lsch')),
|
|
196
226
|
globalStateSchema: StateSchema.fromEncodingData(data.get('gsch')),
|
|
197
227
|
extraProgramPages: Number(data.get('epp')),
|
|
228
|
+
version: data.get('v'),
|
|
229
|
+
sizeSponsor: data.get('ss'),
|
|
230
|
+
foreignBoxReads: data.get('fbr'),
|
|
231
|
+
familyBoxAccess: data.get('fba'),
|
|
198
232
|
});
|
|
199
233
|
}
|
|
200
234
|
}
|
|
@@ -592,6 +592,17 @@ export interface HeartbeatTransactionParams {
|
|
|
592
592
|
* Must match hbAddress account's current KeyDilution.
|
|
593
593
|
*/
|
|
594
594
|
keyDilution: bigint;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Requests the challenge fee discount: when set, the required fee is reduced
|
|
598
|
+
* by one min fee. The network verifies that hbAddress is actually under
|
|
599
|
+
* challenge before granting it, and a heartbeat claiming the discount may not
|
|
600
|
+
* carry any extra fields (note, lease, group, etc.).
|
|
601
|
+
*
|
|
602
|
+
* Only allowed once transaction size pricing is enabled. Before that, the
|
|
603
|
+
* discount was inferred from an underpaid singleton heartbeat instead.
|
|
604
|
+
*/
|
|
605
|
+
challengeDiscount?: boolean;
|
|
595
606
|
}
|
|
596
607
|
|
|
597
608
|
/**
|
package/src/utils/utils.ts
CHANGED
|
@@ -205,3 +205,16 @@ export function ensureUint64(value: unknown): bigint {
|
|
|
205
205
|
}
|
|
206
206
|
return bigIntValue;
|
|
207
207
|
}
|
|
208
|
+
|
|
209
|
+
export function isEmptyObject(obj: any) {
|
|
210
|
+
if (!obj || typeof obj !== 'object') return false;
|
|
211
|
+
|
|
212
|
+
for (const key in obj) {
|
|
213
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
214
|
+
if (obj[key] !== undefined) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return true;
|
|
220
|
+
}
|