@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,155 +1,155 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetBtcStoredHeader = void 0;
|
|
4
|
-
const base_1 = require("@atomiqlabs/base");
|
|
5
|
-
const StarknetBtcHeader_1 = require("./StarknetBtcHeader");
|
|
6
|
-
const buffer_1 = require("buffer");
|
|
7
|
-
const starknet_1 = require("starknet");
|
|
8
|
-
const Utils_1 = require("../../../utils/Utils");
|
|
9
|
-
/**
|
|
10
|
-
* Representing a bitcoin blockheader struct which has already been saved and committed inside the
|
|
11
|
-
* Starknet BTC relay smart contract
|
|
12
|
-
*
|
|
13
|
-
* @category BTC Relay
|
|
14
|
-
*/
|
|
15
|
-
class StarknetBtcStoredHeader {
|
|
16
|
-
/**
|
|
17
|
-
* Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
|
|
18
|
-
*
|
|
19
|
-
* @param obj Struct as returned by the starknet.js lib
|
|
20
|
-
*/
|
|
21
|
-
constructor(obj) {
|
|
22
|
-
this.blockheader = obj.blockheader instanceof StarknetBtcHeader_1.StarknetBtcHeader ? obj.blockheader : new StarknetBtcHeader_1.StarknetBtcHeader(obj.blockheader);
|
|
23
|
-
this.block_hash = obj.block_hash.map(val => Number(val));
|
|
24
|
-
this.chain_work = (0, Utils_1.isUint256)(obj.chain_work) ? obj.chain_work : starknet_1.cairo.uint256(obj.chain_work);
|
|
25
|
-
this.block_height = Number(obj.block_height);
|
|
26
|
-
this.last_diff_adjustment = Number(obj.last_diff_adjustment);
|
|
27
|
-
this.prev_block_timestamps = obj.prev_block_timestamps.map(val => Number(val));
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* @inheritDoc
|
|
31
|
-
*/
|
|
32
|
-
getBlockheight() {
|
|
33
|
-
return this.block_height;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @inheritDoc
|
|
37
|
-
*/
|
|
38
|
-
getChainWork() {
|
|
39
|
-
return (0, Utils_1.bigNumberishToBuffer)(this.chain_work, 32);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* @inheritDoc
|
|
43
|
-
*/
|
|
44
|
-
getHeader() {
|
|
45
|
-
return this.blockheader;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* @inheritDoc
|
|
49
|
-
*/
|
|
50
|
-
getLastDiffAdjustment() {
|
|
51
|
-
return this.last_diff_adjustment;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* @inheritDoc
|
|
55
|
-
*/
|
|
56
|
-
getPrevBlockTimestamps() {
|
|
57
|
-
return this.prev_block_timestamps;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* @inheritDoc
|
|
61
|
-
*/
|
|
62
|
-
getBlockHash() {
|
|
63
|
-
return (0, Utils_1.u32ArrayToBuffer)(this.block_hash).reverse();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending
|
|
67
|
-
* this block's timestamp to the end
|
|
68
|
-
*
|
|
69
|
-
* @private
|
|
70
|
-
*/
|
|
71
|
-
computeNextBlockTimestamps() {
|
|
72
|
-
const prevBlockTimestamps = [...this.prev_block_timestamps];
|
|
73
|
-
for (let i = 1; i < 10; i++) {
|
|
74
|
-
prevBlockTimestamps[i - 1] = prevBlockTimestamps[i];
|
|
75
|
-
}
|
|
76
|
-
prevBlockTimestamps[9] = this.blockheader.getTimestamp();
|
|
77
|
-
return prevBlockTimestamps;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Computes total chain work after a new header with "nbits" is added to the chain
|
|
81
|
-
*
|
|
82
|
-
* @param nbits
|
|
83
|
-
* @private
|
|
84
|
-
*/
|
|
85
|
-
computeNextChainWork(nbits) {
|
|
86
|
-
const chainWork = [...this.getChainWork()];
|
|
87
|
-
base_1.StatePredictorUtils.addInPlace(chainWork, [...base_1.StatePredictorUtils.getChainwork(nbits)]);
|
|
88
|
-
return buffer_1.Buffer.from(chainWork);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks
|
|
92
|
-
*
|
|
93
|
-
* @param headerTimestamp
|
|
94
|
-
* @private
|
|
95
|
-
*/
|
|
96
|
-
computeNextLastDiffAdjustment(headerTimestamp) {
|
|
97
|
-
const blockheight = this.block_height + 1;
|
|
98
|
-
let lastDiffAdjustment = this.last_diff_adjustment;
|
|
99
|
-
if (blockheight % base_1.StatePredictorUtils.DIFF_ADJUSTMENT_PERIOD === 0) {
|
|
100
|
-
lastDiffAdjustment = headerTimestamp;
|
|
101
|
-
}
|
|
102
|
-
return lastDiffAdjustment;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* @inheritDoc
|
|
106
|
-
*/
|
|
107
|
-
computeNext(header) {
|
|
108
|
-
return new StarknetBtcStoredHeader({
|
|
109
|
-
chain_work: "0x" + this.computeNextChainWork(header.getNbits()).toString("hex"),
|
|
110
|
-
prev_block_timestamps: this.computeNextBlockTimestamps(),
|
|
111
|
-
block_height: this.block_height + 1,
|
|
112
|
-
last_diff_adjustment: this.computeNextLastDiffAdjustment(header.getTimestamp()),
|
|
113
|
-
block_hash: (0, Utils_1.bufferToU32Array)(header.getHash()),
|
|
114
|
-
blockheader: header
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Serializes the bitcoin stored blockheader struct to an array of felt252 of length 42
|
|
119
|
-
*/
|
|
120
|
-
serialize() {
|
|
121
|
-
return [
|
|
122
|
-
...this.blockheader.serialize(),
|
|
123
|
-
...this.block_hash,
|
|
124
|
-
this.chain_work.low,
|
|
125
|
-
this.chain_work.high,
|
|
126
|
-
this.block_height,
|
|
127
|
-
this.last_diff_adjustment,
|
|
128
|
-
...this.prev_block_timestamps
|
|
129
|
-
];
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
133
|
-
*
|
|
134
|
-
* @param span felt252 array encoding the stored blockheader, has to be at least 42 felts long
|
|
135
|
-
*/
|
|
136
|
-
static fromSerializedFeltArray(span) {
|
|
137
|
-
const blockheader = StarknetBtcHeader_1.StarknetBtcHeader.fromSerializedFeltArray(span);
|
|
138
|
-
if (span.length < 22)
|
|
139
|
-
throw new Error("Invalid serialized data size");
|
|
140
|
-
const block_hash = span.splice(0, 8).map(val => (0, Utils_1.toHex)(val));
|
|
141
|
-
const chain_work = { low: span.shift(), high: span.shift() };
|
|
142
|
-
const block_height = (0, Utils_1.toHex)(span.shift());
|
|
143
|
-
const last_diff_adjustment = (0, Utils_1.toHex)(span.shift());
|
|
144
|
-
const prev_block_timestamps = span.splice(0, 10).map(val => (0, Utils_1.toHex)(val));
|
|
145
|
-
return new StarknetBtcStoredHeader({
|
|
146
|
-
blockheader,
|
|
147
|
-
block_hash,
|
|
148
|
-
chain_work,
|
|
149
|
-
block_height,
|
|
150
|
-
last_diff_adjustment,
|
|
151
|
-
prev_block_timestamps
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
exports.StarknetBtcStoredHeader = StarknetBtcStoredHeader;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetBtcStoredHeader = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
const StarknetBtcHeader_1 = require("./StarknetBtcHeader");
|
|
6
|
+
const buffer_1 = require("buffer");
|
|
7
|
+
const starknet_1 = require("starknet");
|
|
8
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
9
|
+
/**
|
|
10
|
+
* Representing a bitcoin blockheader struct which has already been saved and committed inside the
|
|
11
|
+
* Starknet BTC relay smart contract
|
|
12
|
+
*
|
|
13
|
+
* @category BTC Relay
|
|
14
|
+
*/
|
|
15
|
+
class StarknetBtcStoredHeader {
|
|
16
|
+
/**
|
|
17
|
+
* Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
|
|
18
|
+
*
|
|
19
|
+
* @param obj Struct as returned by the starknet.js lib
|
|
20
|
+
*/
|
|
21
|
+
constructor(obj) {
|
|
22
|
+
this.blockheader = obj.blockheader instanceof StarknetBtcHeader_1.StarknetBtcHeader ? obj.blockheader : new StarknetBtcHeader_1.StarknetBtcHeader(obj.blockheader);
|
|
23
|
+
this.block_hash = obj.block_hash.map(val => Number(val));
|
|
24
|
+
this.chain_work = (0, Utils_1.isUint256)(obj.chain_work) ? obj.chain_work : starknet_1.cairo.uint256(obj.chain_work);
|
|
25
|
+
this.block_height = Number(obj.block_height);
|
|
26
|
+
this.last_diff_adjustment = Number(obj.last_diff_adjustment);
|
|
27
|
+
this.prev_block_timestamps = obj.prev_block_timestamps.map(val => Number(val));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @inheritDoc
|
|
31
|
+
*/
|
|
32
|
+
getBlockheight() {
|
|
33
|
+
return this.block_height;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @inheritDoc
|
|
37
|
+
*/
|
|
38
|
+
getChainWork() {
|
|
39
|
+
return (0, Utils_1.bigNumberishToBuffer)(this.chain_work, 32);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @inheritDoc
|
|
43
|
+
*/
|
|
44
|
+
getHeader() {
|
|
45
|
+
return this.blockheader;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* @inheritDoc
|
|
49
|
+
*/
|
|
50
|
+
getLastDiffAdjustment() {
|
|
51
|
+
return this.last_diff_adjustment;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @inheritDoc
|
|
55
|
+
*/
|
|
56
|
+
getPrevBlockTimestamps() {
|
|
57
|
+
return this.prev_block_timestamps;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @inheritDoc
|
|
61
|
+
*/
|
|
62
|
+
getBlockHash() {
|
|
63
|
+
return (0, Utils_1.u32ArrayToBuffer)(this.block_hash).reverse();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending
|
|
67
|
+
* this block's timestamp to the end
|
|
68
|
+
*
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
computeNextBlockTimestamps() {
|
|
72
|
+
const prevBlockTimestamps = [...this.prev_block_timestamps];
|
|
73
|
+
for (let i = 1; i < 10; i++) {
|
|
74
|
+
prevBlockTimestamps[i - 1] = prevBlockTimestamps[i];
|
|
75
|
+
}
|
|
76
|
+
prevBlockTimestamps[9] = this.blockheader.getTimestamp();
|
|
77
|
+
return prevBlockTimestamps;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Computes total chain work after a new header with "nbits" is added to the chain
|
|
81
|
+
*
|
|
82
|
+
* @param nbits
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
computeNextChainWork(nbits) {
|
|
86
|
+
const chainWork = [...this.getChainWork()];
|
|
87
|
+
base_1.StatePredictorUtils.addInPlace(chainWork, [...base_1.StatePredictorUtils.getChainwork(nbits)]);
|
|
88
|
+
return buffer_1.Buffer.from(chainWork);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks
|
|
92
|
+
*
|
|
93
|
+
* @param headerTimestamp
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
computeNextLastDiffAdjustment(headerTimestamp) {
|
|
97
|
+
const blockheight = this.block_height + 1;
|
|
98
|
+
let lastDiffAdjustment = this.last_diff_adjustment;
|
|
99
|
+
if (blockheight % base_1.StatePredictorUtils.DIFF_ADJUSTMENT_PERIOD === 0) {
|
|
100
|
+
lastDiffAdjustment = headerTimestamp;
|
|
101
|
+
}
|
|
102
|
+
return lastDiffAdjustment;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @inheritDoc
|
|
106
|
+
*/
|
|
107
|
+
computeNext(header) {
|
|
108
|
+
return new StarknetBtcStoredHeader({
|
|
109
|
+
chain_work: "0x" + this.computeNextChainWork(header.getNbits()).toString("hex"),
|
|
110
|
+
prev_block_timestamps: this.computeNextBlockTimestamps(),
|
|
111
|
+
block_height: this.block_height + 1,
|
|
112
|
+
last_diff_adjustment: this.computeNextLastDiffAdjustment(header.getTimestamp()),
|
|
113
|
+
block_hash: (0, Utils_1.bufferToU32Array)(header.getHash()),
|
|
114
|
+
blockheader: header
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Serializes the bitcoin stored blockheader struct to an array of felt252 of length 42
|
|
119
|
+
*/
|
|
120
|
+
serialize() {
|
|
121
|
+
return [
|
|
122
|
+
...this.blockheader.serialize(),
|
|
123
|
+
...this.block_hash,
|
|
124
|
+
this.chain_work.low,
|
|
125
|
+
this.chain_work.high,
|
|
126
|
+
this.block_height,
|
|
127
|
+
this.last_diff_adjustment,
|
|
128
|
+
...this.prev_block_timestamps
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Deserializes the store bitcoin blockheader from its felt252 array representation
|
|
133
|
+
*
|
|
134
|
+
* @param span felt252 array encoding the stored blockheader, has to be at least 42 felts long
|
|
135
|
+
*/
|
|
136
|
+
static fromSerializedFeltArray(span) {
|
|
137
|
+
const blockheader = StarknetBtcHeader_1.StarknetBtcHeader.fromSerializedFeltArray(span);
|
|
138
|
+
if (span.length < 22)
|
|
139
|
+
throw new Error("Invalid serialized data size");
|
|
140
|
+
const block_hash = span.splice(0, 8).map(val => (0, Utils_1.toHex)(val));
|
|
141
|
+
const chain_work = { low: span.shift(), high: span.shift() };
|
|
142
|
+
const block_height = (0, Utils_1.toHex)(span.shift());
|
|
143
|
+
const last_diff_adjustment = (0, Utils_1.toHex)(span.shift());
|
|
144
|
+
const prev_block_timestamps = span.splice(0, 10).map(val => (0, Utils_1.toHex)(val));
|
|
145
|
+
return new StarknetBtcStoredHeader({
|
|
146
|
+
blockheader,
|
|
147
|
+
block_hash,
|
|
148
|
+
chain_work,
|
|
149
|
+
block_height,
|
|
150
|
+
last_diff_adjustment,
|
|
151
|
+
prev_block_timestamps
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.StarknetBtcStoredHeader = StarknetBtcStoredHeader;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { Call } from "starknet";
|
|
2
|
-
import { StarknetChainInterface } from "./StarknetChainInterface";
|
|
3
|
-
import { StarknetTx } from "./modules/StarknetTransactions";
|
|
4
|
-
import { StarknetGas } from "./modules/StarknetFees";
|
|
5
|
-
export declare class StarknetAction {
|
|
6
|
-
gas: StarknetGas;
|
|
7
|
-
readonly mainSigner: string;
|
|
8
|
-
private readonly root;
|
|
9
|
-
private readonly instructions;
|
|
10
|
-
private feeRate?;
|
|
11
|
-
constructor(mainSigner: string, root: StarknetChainInterface, instructions?: Call[] | Call, gasLimit?: StarknetGas, feeRate?: string);
|
|
12
|
-
private estimateFeeRate;
|
|
13
|
-
addIx(instruction: Call, gasLimit?: StarknetGas): void;
|
|
14
|
-
add(action: StarknetAction): this;
|
|
15
|
-
addAction(action: StarknetAction, index?: number): this;
|
|
16
|
-
tx(feeRate?: string): Promise<StarknetTx>;
|
|
17
|
-
addToTxs(txs: StarknetTx[], feeRate?: string): Promise<void>;
|
|
18
|
-
ixsLength(): number;
|
|
19
|
-
}
|
|
1
|
+
import { Call } from "starknet";
|
|
2
|
+
import { StarknetChainInterface } from "./StarknetChainInterface";
|
|
3
|
+
import { StarknetTx } from "./modules/StarknetTransactions";
|
|
4
|
+
import { StarknetGas } from "./modules/StarknetFees";
|
|
5
|
+
export declare class StarknetAction {
|
|
6
|
+
gas: StarknetGas;
|
|
7
|
+
readonly mainSigner: string;
|
|
8
|
+
private readonly root;
|
|
9
|
+
private readonly instructions;
|
|
10
|
+
private feeRate?;
|
|
11
|
+
constructor(mainSigner: string, root: StarknetChainInterface, instructions?: Call[] | Call, gasLimit?: StarknetGas, feeRate?: string);
|
|
12
|
+
private estimateFeeRate;
|
|
13
|
+
addIx(instruction: Call, gasLimit?: StarknetGas): void;
|
|
14
|
+
add(action: StarknetAction): this;
|
|
15
|
+
addAction(action: StarknetAction, index?: number): this;
|
|
16
|
+
tx(feeRate?: string): Promise<StarknetTx>;
|
|
17
|
+
addToTxs(txs: StarknetTx[], feeRate?: string): Promise<void>;
|
|
18
|
+
ixsLength(): number;
|
|
19
|
+
}
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetAction = void 0;
|
|
4
|
-
const StarknetFees_1 = require("./modules/StarknetFees");
|
|
5
|
-
class StarknetAction {
|
|
6
|
-
constructor(mainSigner, root, instructions = [], gasLimit, feeRate) {
|
|
7
|
-
this.mainSigner = mainSigner;
|
|
8
|
-
this.root = root;
|
|
9
|
-
this.instructions = Array.isArray(instructions) ? instructions : [instructions];
|
|
10
|
-
this.gas = {
|
|
11
|
-
l1Gas: gasLimit?.l1Gas ?? 0,
|
|
12
|
-
l2Gas: gasLimit?.l2Gas ?? 0,
|
|
13
|
-
l1DataGas: gasLimit?.l1DataGas ?? 0,
|
|
14
|
-
};
|
|
15
|
-
this.feeRate = feeRate;
|
|
16
|
-
}
|
|
17
|
-
estimateFeeRate() {
|
|
18
|
-
return this.root.Fees.getFeeRate();
|
|
19
|
-
}
|
|
20
|
-
addIx(instruction, gasLimit) {
|
|
21
|
-
this.instructions.push(instruction);
|
|
22
|
-
if (gasLimit != null)
|
|
23
|
-
this.gas = (0, StarknetFees_1.starknetGasAdd)(this.gas, gasLimit);
|
|
24
|
-
}
|
|
25
|
-
add(action) {
|
|
26
|
-
return this.addAction(action);
|
|
27
|
-
}
|
|
28
|
-
addAction(action, index = this.instructions.length) {
|
|
29
|
-
if (action.mainSigner !== this.mainSigner)
|
|
30
|
-
throw new Error("Actions need to have the same signer!");
|
|
31
|
-
if (this.gas.l1Gas == null && action.gas.l1Gas != null)
|
|
32
|
-
this.gas.l1Gas = action.gas.l1Gas;
|
|
33
|
-
if (this.gas.l2Gas == null && action.gas.l2Gas != null)
|
|
34
|
-
this.gas.l2Gas = action.gas.l2Gas;
|
|
35
|
-
if (this.gas.l1DataGas == null && action.gas.l1DataGas != null)
|
|
36
|
-
this.gas.l1DataGas = action.gas.l1DataGas;
|
|
37
|
-
if (this.gas.l1Gas != null && action.gas.l1Gas != null)
|
|
38
|
-
this.gas.l1Gas += action.gas.l1Gas;
|
|
39
|
-
if (this.gas.l2Gas != null && action.gas.l2Gas != null)
|
|
40
|
-
this.gas.l2Gas += action.gas.l2Gas;
|
|
41
|
-
if (this.gas.l1DataGas != null && action.gas.l1DataGas != null)
|
|
42
|
-
this.gas.l1DataGas += action.gas.l1DataGas;
|
|
43
|
-
this.instructions.splice(index, 0, ...action.instructions);
|
|
44
|
-
if (this.feeRate == null)
|
|
45
|
-
this.feeRate = action.feeRate;
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
async tx(feeRate) {
|
|
49
|
-
if (feeRate == null)
|
|
50
|
-
feeRate = this.feeRate;
|
|
51
|
-
if (feeRate == null)
|
|
52
|
-
feeRate = await this.estimateFeeRate();
|
|
53
|
-
return {
|
|
54
|
-
type: "INVOKE",
|
|
55
|
-
tx: this.instructions,
|
|
56
|
-
details: {
|
|
57
|
-
...this.root.Fees.getFeeDetails(this.gas, feeRate),
|
|
58
|
-
walletAddress: this.mainSigner,
|
|
59
|
-
cairoVersion: "1",
|
|
60
|
-
chainId: this.root.starknetChainId,
|
|
61
|
-
nonce: null,
|
|
62
|
-
accountDeploymentData: [],
|
|
63
|
-
skipValidate: false
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
async addToTxs(txs, feeRate) {
|
|
68
|
-
txs.push(await this.tx(feeRate));
|
|
69
|
-
}
|
|
70
|
-
ixsLength() {
|
|
71
|
-
return this.instructions.length;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.StarknetAction = StarknetAction;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetAction = void 0;
|
|
4
|
+
const StarknetFees_1 = require("./modules/StarknetFees");
|
|
5
|
+
class StarknetAction {
|
|
6
|
+
constructor(mainSigner, root, instructions = [], gasLimit, feeRate) {
|
|
7
|
+
this.mainSigner = mainSigner;
|
|
8
|
+
this.root = root;
|
|
9
|
+
this.instructions = Array.isArray(instructions) ? instructions : [instructions];
|
|
10
|
+
this.gas = {
|
|
11
|
+
l1Gas: gasLimit?.l1Gas ?? 0,
|
|
12
|
+
l2Gas: gasLimit?.l2Gas ?? 0,
|
|
13
|
+
l1DataGas: gasLimit?.l1DataGas ?? 0,
|
|
14
|
+
};
|
|
15
|
+
this.feeRate = feeRate;
|
|
16
|
+
}
|
|
17
|
+
estimateFeeRate() {
|
|
18
|
+
return this.root.Fees.getFeeRate();
|
|
19
|
+
}
|
|
20
|
+
addIx(instruction, gasLimit) {
|
|
21
|
+
this.instructions.push(instruction);
|
|
22
|
+
if (gasLimit != null)
|
|
23
|
+
this.gas = (0, StarknetFees_1.starknetGasAdd)(this.gas, gasLimit);
|
|
24
|
+
}
|
|
25
|
+
add(action) {
|
|
26
|
+
return this.addAction(action);
|
|
27
|
+
}
|
|
28
|
+
addAction(action, index = this.instructions.length) {
|
|
29
|
+
if (action.mainSigner !== this.mainSigner)
|
|
30
|
+
throw new Error("Actions need to have the same signer!");
|
|
31
|
+
if (this.gas.l1Gas == null && action.gas.l1Gas != null)
|
|
32
|
+
this.gas.l1Gas = action.gas.l1Gas;
|
|
33
|
+
if (this.gas.l2Gas == null && action.gas.l2Gas != null)
|
|
34
|
+
this.gas.l2Gas = action.gas.l2Gas;
|
|
35
|
+
if (this.gas.l1DataGas == null && action.gas.l1DataGas != null)
|
|
36
|
+
this.gas.l1DataGas = action.gas.l1DataGas;
|
|
37
|
+
if (this.gas.l1Gas != null && action.gas.l1Gas != null)
|
|
38
|
+
this.gas.l1Gas += action.gas.l1Gas;
|
|
39
|
+
if (this.gas.l2Gas != null && action.gas.l2Gas != null)
|
|
40
|
+
this.gas.l2Gas += action.gas.l2Gas;
|
|
41
|
+
if (this.gas.l1DataGas != null && action.gas.l1DataGas != null)
|
|
42
|
+
this.gas.l1DataGas += action.gas.l1DataGas;
|
|
43
|
+
this.instructions.splice(index, 0, ...action.instructions);
|
|
44
|
+
if (this.feeRate == null)
|
|
45
|
+
this.feeRate = action.feeRate;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
async tx(feeRate) {
|
|
49
|
+
if (feeRate == null)
|
|
50
|
+
feeRate = this.feeRate;
|
|
51
|
+
if (feeRate == null)
|
|
52
|
+
feeRate = await this.estimateFeeRate();
|
|
53
|
+
return {
|
|
54
|
+
type: "INVOKE",
|
|
55
|
+
tx: this.instructions,
|
|
56
|
+
details: {
|
|
57
|
+
...this.root.Fees.getFeeDetails(this.gas, feeRate),
|
|
58
|
+
walletAddress: this.mainSigner,
|
|
59
|
+
cairoVersion: "1",
|
|
60
|
+
chainId: this.root.starknetChainId,
|
|
61
|
+
nonce: null,
|
|
62
|
+
accountDeploymentData: [],
|
|
63
|
+
skipValidate: false
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async addToTxs(txs, feeRate) {
|
|
68
|
+
txs.push(await this.tx(feeRate));
|
|
69
|
+
}
|
|
70
|
+
ixsLength() {
|
|
71
|
+
return this.instructions.length;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.StarknetAction = StarknetAction;
|