@atomiqlabs/chain-starknet 8.0.13 → 8.1.10
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/index.d.ts +18 -18
- package/dist/index.js +42 -42
- package/dist/starknet/StarknetChainType.d.ts +19 -19
- package/dist/starknet/StarknetChainType.js +2 -2
- package/dist/starknet/StarknetInitializer.d.ts +66 -63
- package/dist/starknet/StarknetInitializer.js +101 -101
- package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
- package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +196 -196
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +419 -411
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +70 -70
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +115 -115
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +91 -91
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +155 -155
- package/dist/starknet/chain/StarknetAction.d.ts +19 -19
- package/dist/starknet/chain/StarknetAction.js +74 -74
- package/dist/starknet/chain/StarknetChainInterface.d.ts +142 -143
- package/dist/starknet/chain/StarknetChainInterface.js +198 -199
- package/dist/starknet/chain/StarknetModule.d.ts +8 -8
- package/dist/starknet/chain/StarknetModule.js +12 -12
- package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
- package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
- package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
- package/dist/starknet/chain/modules/StarknetAccounts.js +26 -26
- package/dist/starknet/chain/modules/StarknetAddresses.d.ts +10 -10
- package/dist/starknet/chain/modules/StarknetAddresses.js +27 -27
- package/dist/starknet/chain/modules/StarknetBlocks.d.ts +27 -27
- package/dist/starknet/chain/modules/StarknetBlocks.js +82 -82
- package/dist/starknet/chain/modules/StarknetEvents.d.ts +47 -47
- package/dist/starknet/chain/modules/StarknetEvents.js +90 -90
- package/dist/starknet/chain/modules/StarknetFees.d.ts +118 -104
- package/dist/starknet/chain/modules/StarknetFees.js +150 -146
- package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
- package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
- package/dist/starknet/chain/modules/StarknetTokens.d.ts +66 -66
- package/dist/starknet/chain/modules/StarknetTokens.js +99 -99
- package/dist/starknet/chain/modules/StarknetTransactions.d.ts +122 -115
- package/dist/starknet/chain/modules/StarknetTransactions.js +633 -612
- package/dist/starknet/contract/StarknetContractBase.d.ts +14 -13
- package/dist/starknet/contract/StarknetContractBase.js +21 -20
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
- package/dist/starknet/contract/StarknetContractModule.js +11 -11
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +56 -57
- package/dist/starknet/contract/modules/StarknetContractEvents.js +111 -111
- package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
- package/dist/starknet/events/StarknetChainEvents.js +61 -61
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +178 -190
- package/dist/starknet/events/StarknetChainEventsBrowser.js +523 -582
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +49 -53
- package/dist/starknet/provider/RpcProviderWithRetries.js +94 -94
- package/dist/starknet/provider/WebSocketChannelWithRetries.d.ts +21 -21
- package/dist/starknet/provider/WebSocketChannelWithRetries.js +46 -46
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +225 -219
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +663 -621
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +108 -108
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +190 -190
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +56 -56
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +103 -103
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
- package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +309 -278
- package/dist/starknet/swaps/StarknetSwapContract.js +755 -579
- package/dist/starknet/swaps/StarknetSwapData.d.ts +234 -234
- package/dist/starknet/swaps/StarknetSwapData.js +474 -474
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
- package/dist/starknet/swaps/StarknetSwapModule.js +12 -12
- package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
- package/dist/starknet/swaps/handlers/IHandler.js +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +42 -45
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +50 -54
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +67 -67
- package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +52 -52
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +99 -99
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -94
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +239 -239
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +60 -60
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +126 -126
- package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +11 -11
- package/dist/starknet/wallet/StarknetBrowserSigner.js +17 -17
- package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +76 -76
- package/dist/starknet/wallet/StarknetPersistentSigner.js +291 -291
- package/dist/starknet/wallet/StarknetSigner.d.ts +72 -72
- package/dist/starknet/wallet/StarknetSigner.js +114 -114
- package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +18 -18
- package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +45 -45
- package/dist/utils/Utils.d.ts +77 -77
- package/dist/utils/Utils.js +304 -303
- package/package.json +2 -2
- package/src/starknet/StarknetInitializer.ts +6 -3
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -6
- package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +7 -7
- package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +6 -6
- package/src/starknet/chain/StarknetAction.ts +1 -0
- package/src/starknet/chain/StarknetChainInterface.ts +0 -2
- package/src/starknet/chain/modules/StarknetFees.ts +15 -2
- package/src/starknet/chain/modules/StarknetTransactions.ts +24 -0
- package/src/starknet/contract/StarknetContractBase.ts +7 -4
- package/src/starknet/contract/StarknetContractModule.ts +1 -1
- package/src/starknet/contract/modules/StarknetContractEvents.ts +7 -7
- package/src/starknet/events/StarknetChainEventsBrowser.ts +2 -64
- package/src/starknet/provider/RpcProviderWithRetries.ts +1 -1
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +84 -18
- package/src/starknet/swaps/StarknetSwapContract.ts +242 -6
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +0 -4
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import { BtcHeader } from "@atomiqlabs/base";
|
|
2
|
-
import { Buffer } from "buffer";
|
|
3
|
-
import { BigNumberish } from "starknet";
|
|
4
|
-
export type StarknetBtcHeaderType = {
|
|
5
|
-
reversed_version: BigNumberish;
|
|
6
|
-
previous_blockhash: BigNumberish[];
|
|
7
|
-
merkle_root: BigNumberish[];
|
|
8
|
-
reversed_timestamp: BigNumberish;
|
|
9
|
-
nbits: BigNumberish;
|
|
10
|
-
nonce: BigNumberish;
|
|
11
|
-
hash?: Buffer;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Representing a new bitcoin blockheader struct to be submitted to the Starknet BTC relay smart contract
|
|
15
|
-
*
|
|
16
|
-
* @category BTC Relay
|
|
17
|
-
*/
|
|
18
|
-
export declare class StarknetBtcHeader implements BtcHeader {
|
|
19
|
-
reversed_version
|
|
20
|
-
previous_blockhash
|
|
21
|
-
merkle_root
|
|
22
|
-
reversed_timestamp
|
|
23
|
-
nbits
|
|
24
|
-
nonce
|
|
25
|
-
hash
|
|
26
|
-
/**
|
|
27
|
-
* Constructs the bitcoin blockheader from a struct as returned by the starknet.js lib
|
|
28
|
-
*
|
|
29
|
-
* @param obj Struct as returned by the starknet.js lib
|
|
30
|
-
*/
|
|
31
|
-
constructor(obj: StarknetBtcHeaderType);
|
|
32
|
-
/**
|
|
33
|
-
* @inheritDoc
|
|
34
|
-
*/
|
|
35
|
-
getMerkleRoot(): Buffer;
|
|
36
|
-
/**
|
|
37
|
-
* @inheritDoc
|
|
38
|
-
*/
|
|
39
|
-
getNbits(): number;
|
|
40
|
-
/**
|
|
41
|
-
* @inheritDoc
|
|
42
|
-
*/
|
|
43
|
-
getNonce(): number;
|
|
44
|
-
/**
|
|
45
|
-
* @inheritDoc
|
|
46
|
-
*/
|
|
47
|
-
getReversedPrevBlockhash(): Buffer;
|
|
48
|
-
/**
|
|
49
|
-
* @inheritDoc
|
|
50
|
-
*/
|
|
51
|
-
getTimestamp(): number;
|
|
52
|
-
/**
|
|
53
|
-
* @inheritDoc
|
|
54
|
-
*/
|
|
55
|
-
getVersion(): number;
|
|
56
|
-
/**
|
|
57
|
-
* @inheritDoc
|
|
58
|
-
*/
|
|
59
|
-
getHash(): Buffer;
|
|
60
|
-
/**
|
|
61
|
-
* Serializes the bitcoin blockheader struct to an array of felt252 of length 20
|
|
62
|
-
*/
|
|
63
|
-
serialize(): BigNumberish[];
|
|
64
|
-
/**
|
|
65
|
-
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
66
|
-
*
|
|
67
|
-
* @param span felt252 array encoding the stored blockheader, has to be at least 20 felts long
|
|
68
|
-
*/
|
|
69
|
-
static fromSerializedFeltArray(span: BigNumberish[]): StarknetBtcHeader;
|
|
70
|
-
}
|
|
1
|
+
import { BtcHeader } from "@atomiqlabs/base";
|
|
2
|
+
import { Buffer } from "buffer";
|
|
3
|
+
import { BigNumberish } from "starknet";
|
|
4
|
+
export type StarknetBtcHeaderType = {
|
|
5
|
+
reversed_version: BigNumberish;
|
|
6
|
+
previous_blockhash: BigNumberish[];
|
|
7
|
+
merkle_root: BigNumberish[];
|
|
8
|
+
reversed_timestamp: BigNumberish;
|
|
9
|
+
nbits: BigNumberish;
|
|
10
|
+
nonce: BigNumberish;
|
|
11
|
+
hash?: Buffer;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Representing a new bitcoin blockheader struct to be submitted to the Starknet BTC relay smart contract
|
|
15
|
+
*
|
|
16
|
+
* @category BTC Relay
|
|
17
|
+
*/
|
|
18
|
+
export declare class StarknetBtcHeader implements BtcHeader {
|
|
19
|
+
private readonly reversed_version;
|
|
20
|
+
private readonly previous_blockhash;
|
|
21
|
+
private readonly merkle_root;
|
|
22
|
+
private readonly reversed_timestamp;
|
|
23
|
+
private readonly nbits;
|
|
24
|
+
private readonly nonce;
|
|
25
|
+
private readonly hash?;
|
|
26
|
+
/**
|
|
27
|
+
* Constructs the bitcoin blockheader from a struct as returned by the starknet.js lib
|
|
28
|
+
*
|
|
29
|
+
* @param obj Struct as returned by the starknet.js lib
|
|
30
|
+
*/
|
|
31
|
+
constructor(obj: StarknetBtcHeaderType);
|
|
32
|
+
/**
|
|
33
|
+
* @inheritDoc
|
|
34
|
+
*/
|
|
35
|
+
getMerkleRoot(): Buffer;
|
|
36
|
+
/**
|
|
37
|
+
* @inheritDoc
|
|
38
|
+
*/
|
|
39
|
+
getNbits(): number;
|
|
40
|
+
/**
|
|
41
|
+
* @inheritDoc
|
|
42
|
+
*/
|
|
43
|
+
getNonce(): number;
|
|
44
|
+
/**
|
|
45
|
+
* @inheritDoc
|
|
46
|
+
*/
|
|
47
|
+
getReversedPrevBlockhash(): Buffer;
|
|
48
|
+
/**
|
|
49
|
+
* @inheritDoc
|
|
50
|
+
*/
|
|
51
|
+
getTimestamp(): number;
|
|
52
|
+
/**
|
|
53
|
+
* @inheritDoc
|
|
54
|
+
*/
|
|
55
|
+
getVersion(): number;
|
|
56
|
+
/**
|
|
57
|
+
* @inheritDoc
|
|
58
|
+
*/
|
|
59
|
+
getHash(): Buffer;
|
|
60
|
+
/**
|
|
61
|
+
* Serializes the bitcoin blockheader struct to an array of felt252 of length 20
|
|
62
|
+
*/
|
|
63
|
+
serialize(): BigNumberish[];
|
|
64
|
+
/**
|
|
65
|
+
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
66
|
+
*
|
|
67
|
+
* @param span felt252 array encoding the stored blockheader, has to be at least 20 felts long
|
|
68
|
+
*/
|
|
69
|
+
static fromSerializedFeltArray(span: BigNumberish[]): StarknetBtcHeader;
|
|
70
|
+
}
|
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetBtcHeader = void 0;
|
|
4
|
-
const buffer_1 = require("buffer");
|
|
5
|
-
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
-
const sha2_1 = require("@noble/hashes/sha2");
|
|
7
|
-
/**
|
|
8
|
-
* Representing a new bitcoin blockheader struct to be submitted to the Starknet BTC relay smart contract
|
|
9
|
-
*
|
|
10
|
-
* @category BTC Relay
|
|
11
|
-
*/
|
|
12
|
-
class StarknetBtcHeader {
|
|
13
|
-
/**
|
|
14
|
-
* Constructs the bitcoin blockheader from a struct as returned by the starknet.js lib
|
|
15
|
-
*
|
|
16
|
-
* @param obj Struct as returned by the starknet.js lib
|
|
17
|
-
*/
|
|
18
|
-
constructor(obj) {
|
|
19
|
-
this.reversed_version = Number(obj.reversed_version);
|
|
20
|
-
this.previous_blockhash = obj.previous_blockhash.map(val => Number(val));
|
|
21
|
-
this.merkle_root = obj.merkle_root.map(val => Number(val));
|
|
22
|
-
this.reversed_timestamp = Number(obj.reversed_timestamp);
|
|
23
|
-
this.nbits = Number(obj.nbits);
|
|
24
|
-
this.nonce = Number(obj.nonce);
|
|
25
|
-
this.hash = obj.hash;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @inheritDoc
|
|
29
|
-
*/
|
|
30
|
-
getMerkleRoot() {
|
|
31
|
-
return (0, Utils_1.u32ArrayToBuffer)(this.merkle_root);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* @inheritDoc
|
|
35
|
-
*/
|
|
36
|
-
getNbits() {
|
|
37
|
-
return (0, Utils_1.u32ReverseEndianness)(this.nbits);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* @inheritDoc
|
|
41
|
-
*/
|
|
42
|
-
getNonce() {
|
|
43
|
-
return (0, Utils_1.u32ReverseEndianness)(this.nonce);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* @inheritDoc
|
|
47
|
-
*/
|
|
48
|
-
getReversedPrevBlockhash() {
|
|
49
|
-
return (0, Utils_1.u32ArrayToBuffer)(this.previous_blockhash);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @inheritDoc
|
|
53
|
-
*/
|
|
54
|
-
getTimestamp() {
|
|
55
|
-
return (0, Utils_1.u32ReverseEndianness)(this.reversed_timestamp);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* @inheritDoc
|
|
59
|
-
*/
|
|
60
|
-
getVersion() {
|
|
61
|
-
return (0, Utils_1.u32ReverseEndianness)(this.reversed_version);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* @inheritDoc
|
|
65
|
-
*/
|
|
66
|
-
getHash() {
|
|
67
|
-
if (this.hash != null)
|
|
68
|
-
return this.hash;
|
|
69
|
-
const buffer = buffer_1.Buffer.alloc(80);
|
|
70
|
-
buffer.writeUInt32BE(this.reversed_version, 0);
|
|
71
|
-
(0, Utils_1.u32ArrayToBuffer)(this.previous_blockhash).copy(buffer, 4);
|
|
72
|
-
(0, Utils_1.u32ArrayToBuffer)(this.merkle_root).copy(buffer, 36);
|
|
73
|
-
buffer.writeUInt32BE(this.reversed_timestamp, 68);
|
|
74
|
-
buffer.writeUInt32BE(this.nbits, 72);
|
|
75
|
-
buffer.writeUInt32BE(this.nonce, 76);
|
|
76
|
-
return buffer_1.Buffer.from((0, sha2_1.sha256)((0, sha2_1.sha256)(buffer)));
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Serializes the bitcoin blockheader struct to an array of felt252 of length 20
|
|
80
|
-
*/
|
|
81
|
-
serialize() {
|
|
82
|
-
return [
|
|
83
|
-
this.reversed_version,
|
|
84
|
-
...this.previous_blockhash,
|
|
85
|
-
...this.merkle_root,
|
|
86
|
-
this.reversed_timestamp,
|
|
87
|
-
this.nbits,
|
|
88
|
-
this.nonce
|
|
89
|
-
];
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
93
|
-
*
|
|
94
|
-
* @param span felt252 array encoding the stored blockheader, has to be at least 20 felts long
|
|
95
|
-
*/
|
|
96
|
-
static fromSerializedFeltArray(span) {
|
|
97
|
-
if (span.length < 20)
|
|
98
|
-
throw new Error("Invalid serialized data size!");
|
|
99
|
-
const reversed_version = (0, Utils_1.toHex)(span.shift());
|
|
100
|
-
const previous_blockhash = span.splice(0, 8).map(val => (0, Utils_1.toHex)(val));
|
|
101
|
-
const merkle_root = span.splice(0, 8).map(val => (0, Utils_1.toHex)(val));
|
|
102
|
-
const reversed_timestamp = (0, Utils_1.toHex)(span.shift());
|
|
103
|
-
const nbits = (0, Utils_1.toHex)(span.shift());
|
|
104
|
-
const nonce = (0, Utils_1.toHex)(span.shift());
|
|
105
|
-
return new StarknetBtcHeader({
|
|
106
|
-
reversed_version,
|
|
107
|
-
previous_blockhash,
|
|
108
|
-
merkle_root,
|
|
109
|
-
reversed_timestamp,
|
|
110
|
-
nbits,
|
|
111
|
-
nonce
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.StarknetBtcHeader = StarknetBtcHeader;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetBtcHeader = void 0;
|
|
4
|
+
const buffer_1 = require("buffer");
|
|
5
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
+
const sha2_1 = require("@noble/hashes/sha2");
|
|
7
|
+
/**
|
|
8
|
+
* Representing a new bitcoin blockheader struct to be submitted to the Starknet BTC relay smart contract
|
|
9
|
+
*
|
|
10
|
+
* @category BTC Relay
|
|
11
|
+
*/
|
|
12
|
+
class StarknetBtcHeader {
|
|
13
|
+
/**
|
|
14
|
+
* Constructs the bitcoin blockheader from a struct as returned by the starknet.js lib
|
|
15
|
+
*
|
|
16
|
+
* @param obj Struct as returned by the starknet.js lib
|
|
17
|
+
*/
|
|
18
|
+
constructor(obj) {
|
|
19
|
+
this.reversed_version = Number(obj.reversed_version);
|
|
20
|
+
this.previous_blockhash = obj.previous_blockhash.map(val => Number(val));
|
|
21
|
+
this.merkle_root = obj.merkle_root.map(val => Number(val));
|
|
22
|
+
this.reversed_timestamp = Number(obj.reversed_timestamp);
|
|
23
|
+
this.nbits = Number(obj.nbits);
|
|
24
|
+
this.nonce = Number(obj.nonce);
|
|
25
|
+
this.hash = obj.hash;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @inheritDoc
|
|
29
|
+
*/
|
|
30
|
+
getMerkleRoot() {
|
|
31
|
+
return (0, Utils_1.u32ArrayToBuffer)(this.merkle_root);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
36
|
+
getNbits() {
|
|
37
|
+
return (0, Utils_1.u32ReverseEndianness)(this.nbits);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @inheritDoc
|
|
41
|
+
*/
|
|
42
|
+
getNonce() {
|
|
43
|
+
return (0, Utils_1.u32ReverseEndianness)(this.nonce);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @inheritDoc
|
|
47
|
+
*/
|
|
48
|
+
getReversedPrevBlockhash() {
|
|
49
|
+
return (0, Utils_1.u32ArrayToBuffer)(this.previous_blockhash);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @inheritDoc
|
|
53
|
+
*/
|
|
54
|
+
getTimestamp() {
|
|
55
|
+
return (0, Utils_1.u32ReverseEndianness)(this.reversed_timestamp);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @inheritDoc
|
|
59
|
+
*/
|
|
60
|
+
getVersion() {
|
|
61
|
+
return (0, Utils_1.u32ReverseEndianness)(this.reversed_version);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @inheritDoc
|
|
65
|
+
*/
|
|
66
|
+
getHash() {
|
|
67
|
+
if (this.hash != null)
|
|
68
|
+
return this.hash;
|
|
69
|
+
const buffer = buffer_1.Buffer.alloc(80);
|
|
70
|
+
buffer.writeUInt32BE(this.reversed_version, 0);
|
|
71
|
+
(0, Utils_1.u32ArrayToBuffer)(this.previous_blockhash).copy(buffer, 4);
|
|
72
|
+
(0, Utils_1.u32ArrayToBuffer)(this.merkle_root).copy(buffer, 36);
|
|
73
|
+
buffer.writeUInt32BE(this.reversed_timestamp, 68);
|
|
74
|
+
buffer.writeUInt32BE(this.nbits, 72);
|
|
75
|
+
buffer.writeUInt32BE(this.nonce, 76);
|
|
76
|
+
return buffer_1.Buffer.from((0, sha2_1.sha256)((0, sha2_1.sha256)(buffer)));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Serializes the bitcoin blockheader struct to an array of felt252 of length 20
|
|
80
|
+
*/
|
|
81
|
+
serialize() {
|
|
82
|
+
return [
|
|
83
|
+
this.reversed_version,
|
|
84
|
+
...this.previous_blockhash,
|
|
85
|
+
...this.merkle_root,
|
|
86
|
+
this.reversed_timestamp,
|
|
87
|
+
this.nbits,
|
|
88
|
+
this.nonce
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
93
|
+
*
|
|
94
|
+
* @param span felt252 array encoding the stored blockheader, has to be at least 20 felts long
|
|
95
|
+
*/
|
|
96
|
+
static fromSerializedFeltArray(span) {
|
|
97
|
+
if (span.length < 20)
|
|
98
|
+
throw new Error("Invalid serialized data size!");
|
|
99
|
+
const reversed_version = (0, Utils_1.toHex)(span.shift());
|
|
100
|
+
const previous_blockhash = span.splice(0, 8).map(val => (0, Utils_1.toHex)(val));
|
|
101
|
+
const merkle_root = span.splice(0, 8).map(val => (0, Utils_1.toHex)(val));
|
|
102
|
+
const reversed_timestamp = (0, Utils_1.toHex)(span.shift());
|
|
103
|
+
const nbits = (0, Utils_1.toHex)(span.shift());
|
|
104
|
+
const nonce = (0, Utils_1.toHex)(span.shift());
|
|
105
|
+
return new StarknetBtcHeader({
|
|
106
|
+
reversed_version,
|
|
107
|
+
previous_blockhash,
|
|
108
|
+
merkle_root,
|
|
109
|
+
reversed_timestamp,
|
|
110
|
+
nbits,
|
|
111
|
+
nonce
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.StarknetBtcHeader = StarknetBtcHeader;
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import { BtcStoredHeader } from "@atomiqlabs/base";
|
|
2
|
-
import { StarknetBtcHeader, StarknetBtcHeaderType } from "./StarknetBtcHeader";
|
|
3
|
-
import { Buffer } from "buffer";
|
|
4
|
-
import { BigNumberish, Uint256 } from "starknet";
|
|
5
|
-
export type StarknetBtcStoredHeaderType = {
|
|
6
|
-
blockheader: StarknetBtcHeader | StarknetBtcHeaderType;
|
|
7
|
-
block_hash: BigNumberish[];
|
|
8
|
-
chain_work: BigNumberish | Uint256;
|
|
9
|
-
block_height: BigNumberish;
|
|
10
|
-
last_diff_adjustment: BigNumberish;
|
|
11
|
-
prev_block_timestamps: BigNumberish[];
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Representing a bitcoin blockheader struct which has already been saved and committed inside the
|
|
15
|
-
* Starknet BTC relay smart contract
|
|
16
|
-
*
|
|
17
|
-
* @category BTC Relay
|
|
18
|
-
*/
|
|
19
|
-
export declare class StarknetBtcStoredHeader implements BtcStoredHeader<StarknetBtcHeader> {
|
|
20
|
-
blockheader
|
|
21
|
-
block_hash
|
|
22
|
-
chain_work
|
|
23
|
-
block_height
|
|
24
|
-
last_diff_adjustment
|
|
25
|
-
prev_block_timestamps
|
|
26
|
-
/**
|
|
27
|
-
* Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
|
|
28
|
-
*
|
|
29
|
-
* @param obj Struct as returned by the starknet.js lib
|
|
30
|
-
*/
|
|
31
|
-
constructor(obj: StarknetBtcStoredHeaderType);
|
|
32
|
-
/**
|
|
33
|
-
* @inheritDoc
|
|
34
|
-
*/
|
|
35
|
-
getBlockheight(): number;
|
|
36
|
-
/**
|
|
37
|
-
* @inheritDoc
|
|
38
|
-
*/
|
|
39
|
-
getChainWork(): Buffer;
|
|
40
|
-
/**
|
|
41
|
-
* @inheritDoc
|
|
42
|
-
*/
|
|
43
|
-
getHeader(): StarknetBtcHeader;
|
|
44
|
-
/**
|
|
45
|
-
* @inheritDoc
|
|
46
|
-
*/
|
|
47
|
-
getLastDiffAdjustment(): number;
|
|
48
|
-
/**
|
|
49
|
-
* @inheritDoc
|
|
50
|
-
*/
|
|
51
|
-
getPrevBlockTimestamps(): number[];
|
|
52
|
-
/**
|
|
53
|
-
* @inheritDoc
|
|
54
|
-
*/
|
|
55
|
-
getBlockHash(): Buffer;
|
|
56
|
-
/**
|
|
57
|
-
* Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending
|
|
58
|
-
* this block's timestamp to the end
|
|
59
|
-
*
|
|
60
|
-
* @private
|
|
61
|
-
*/
|
|
62
|
-
private computeNextBlockTimestamps;
|
|
63
|
-
/**
|
|
64
|
-
* Computes total chain work after a new header with "nbits" is added to the chain
|
|
65
|
-
*
|
|
66
|
-
* @param nbits
|
|
67
|
-
* @private
|
|
68
|
-
*/
|
|
69
|
-
private computeNextChainWork;
|
|
70
|
-
/**
|
|
71
|
-
* Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks
|
|
72
|
-
*
|
|
73
|
-
* @param headerTimestamp
|
|
74
|
-
* @private
|
|
75
|
-
*/
|
|
76
|
-
private computeNextLastDiffAdjustment;
|
|
77
|
-
/**
|
|
78
|
-
* @inheritDoc
|
|
79
|
-
*/
|
|
80
|
-
computeNext(header: StarknetBtcHeader): StarknetBtcStoredHeader;
|
|
81
|
-
/**
|
|
82
|
-
* Serializes the bitcoin stored blockheader struct to an array of felt252 of length 42
|
|
83
|
-
*/
|
|
84
|
-
serialize(): BigNumberish[];
|
|
85
|
-
/**
|
|
86
|
-
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
87
|
-
*
|
|
88
|
-
* @param span felt252 array encoding the stored blockheader, has to be at least 42 felts long
|
|
89
|
-
*/
|
|
90
|
-
static fromSerializedFeltArray(span: BigNumberish[]): StarknetBtcStoredHeader;
|
|
91
|
-
}
|
|
1
|
+
import { BtcStoredHeader } from "@atomiqlabs/base";
|
|
2
|
+
import { StarknetBtcHeader, StarknetBtcHeaderType } from "./StarknetBtcHeader";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
4
|
+
import { BigNumberish, Uint256 } from "starknet";
|
|
5
|
+
export type StarknetBtcStoredHeaderType = {
|
|
6
|
+
blockheader: StarknetBtcHeader | StarknetBtcHeaderType;
|
|
7
|
+
block_hash: BigNumberish[];
|
|
8
|
+
chain_work: BigNumberish | Uint256;
|
|
9
|
+
block_height: BigNumberish;
|
|
10
|
+
last_diff_adjustment: BigNumberish;
|
|
11
|
+
prev_block_timestamps: BigNumberish[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Representing a bitcoin blockheader struct which has already been saved and committed inside the
|
|
15
|
+
* Starknet BTC relay smart contract
|
|
16
|
+
*
|
|
17
|
+
* @category BTC Relay
|
|
18
|
+
*/
|
|
19
|
+
export declare class StarknetBtcStoredHeader implements BtcStoredHeader<StarknetBtcHeader> {
|
|
20
|
+
private readonly blockheader;
|
|
21
|
+
private readonly block_hash;
|
|
22
|
+
private readonly chain_work;
|
|
23
|
+
private readonly block_height;
|
|
24
|
+
private readonly last_diff_adjustment;
|
|
25
|
+
private readonly prev_block_timestamps;
|
|
26
|
+
/**
|
|
27
|
+
* Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
|
|
28
|
+
*
|
|
29
|
+
* @param obj Struct as returned by the starknet.js lib
|
|
30
|
+
*/
|
|
31
|
+
constructor(obj: StarknetBtcStoredHeaderType);
|
|
32
|
+
/**
|
|
33
|
+
* @inheritDoc
|
|
34
|
+
*/
|
|
35
|
+
getBlockheight(): number;
|
|
36
|
+
/**
|
|
37
|
+
* @inheritDoc
|
|
38
|
+
*/
|
|
39
|
+
getChainWork(): Buffer;
|
|
40
|
+
/**
|
|
41
|
+
* @inheritDoc
|
|
42
|
+
*/
|
|
43
|
+
getHeader(): StarknetBtcHeader;
|
|
44
|
+
/**
|
|
45
|
+
* @inheritDoc
|
|
46
|
+
*/
|
|
47
|
+
getLastDiffAdjustment(): number;
|
|
48
|
+
/**
|
|
49
|
+
* @inheritDoc
|
|
50
|
+
*/
|
|
51
|
+
getPrevBlockTimestamps(): number[];
|
|
52
|
+
/**
|
|
53
|
+
* @inheritDoc
|
|
54
|
+
*/
|
|
55
|
+
getBlockHash(): Buffer;
|
|
56
|
+
/**
|
|
57
|
+
* Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending
|
|
58
|
+
* this block's timestamp to the end
|
|
59
|
+
*
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
private computeNextBlockTimestamps;
|
|
63
|
+
/**
|
|
64
|
+
* Computes total chain work after a new header with "nbits" is added to the chain
|
|
65
|
+
*
|
|
66
|
+
* @param nbits
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
private computeNextChainWork;
|
|
70
|
+
/**
|
|
71
|
+
* Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks
|
|
72
|
+
*
|
|
73
|
+
* @param headerTimestamp
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
private computeNextLastDiffAdjustment;
|
|
77
|
+
/**
|
|
78
|
+
* @inheritDoc
|
|
79
|
+
*/
|
|
80
|
+
computeNext(header: StarknetBtcHeader): StarknetBtcStoredHeader;
|
|
81
|
+
/**
|
|
82
|
+
* Serializes the bitcoin stored blockheader struct to an array of felt252 of length 42
|
|
83
|
+
*/
|
|
84
|
+
serialize(): BigNumberish[];
|
|
85
|
+
/**
|
|
86
|
+
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
87
|
+
*
|
|
88
|
+
* @param span felt252 array encoding the stored blockheader, has to be at least 42 felts long
|
|
89
|
+
*/
|
|
90
|
+
static fromSerializedFeltArray(span: BigNumberish[]): StarknetBtcStoredHeader;
|
|
91
|
+
}
|