@atomiqlabs/chain-starknet 8.2.2 → 8.3.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/dist/starknet/btcrelay/StarknetBtcRelay.js +3 -3
- package/dist/starknet/swaps/StarknetSwapData.d.ts +4 -0
- package/dist/starknet/swaps/StarknetSwapData.js +6 -0
- package/dist/utils/Utils.d.ts +1 -0
- package/dist/utils/Utils.js +19 -1
- package/package.json +2 -2
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +3 -3
- package/src/starknet/swaps/StarknetSwapData.ts +8 -1
- package/src/utils/Utils.ts +19 -0
|
@@ -23,7 +23,7 @@ function serializeBlockHeader(e) {
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
const GAS_PER_BLOCKHEADER = { l1DataGas: 600, l2Gas: 24000000, l1Gas: 0 };
|
|
26
|
-
const
|
|
26
|
+
const GAS_PER_BLOCKHEADER_FORK_REORG = { l1DataGas: 1000, l2Gas: 4000000, l1Gas: 0 };
|
|
27
27
|
const btcRelayAddreses = {
|
|
28
28
|
[base_1.BitcoinNetwork.TESTNET4]: "0x0099b63f39f0cabb767361de3d8d3e97212351a51540e2687c2571f4da490dbe",
|
|
29
29
|
[base_1.BitcoinNetwork.TESTNET]: "0x068601c79da2231d21e015ccfd59c243861156fa523a12c9f987ec28eb8dbc8c",
|
|
@@ -94,7 +94,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
|
|
|
94
94
|
contractAddress: this.contract.address,
|
|
95
95
|
entrypoint: "submit_fork_blockheaders",
|
|
96
96
|
calldata: serializeCalldata(forkHeaders, storedHeader, [(0, Utils_1.toHex)(forkId)])
|
|
97
|
-
}, StarknetFees_1.StarknetFees.starknetGasAdd(StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER, forkHeaders.length), StarknetFees_1.StarknetFees.starknetGasMul(
|
|
97
|
+
}, StarknetFees_1.StarknetFees.starknetGasAdd(StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER, forkHeaders.length), StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER_FORK_REORG, totalForkHeaders)));
|
|
98
98
|
}
|
|
99
99
|
constructor(chainInterface, bitcoinRpc, bitcoinNetwork, contractAddress = btcRelayAddreses[bitcoinNetwork], contractDeploymentHeight) {
|
|
100
100
|
if (contractAddress == null)
|
|
@@ -104,7 +104,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
|
|
|
104
104
|
? btcRelayDeploymentHeights[bitcoinNetwork]
|
|
105
105
|
: undefined));
|
|
106
106
|
this.maxHeadersPerTx = 40;
|
|
107
|
-
this.maxForkHeadersPerTx =
|
|
107
|
+
this.maxForkHeadersPerTx = 25;
|
|
108
108
|
this.maxShortForkHeadersPerTx = 40;
|
|
109
109
|
this._bitcoinRpc = bitcoinRpc;
|
|
110
110
|
}
|
|
@@ -469,6 +469,12 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
469
469
|
hasSuccessAction() {
|
|
470
470
|
return this.successAction != null;
|
|
471
471
|
}
|
|
472
|
+
/**
|
|
473
|
+
* @inheritDoc
|
|
474
|
+
*/
|
|
475
|
+
getEscrowStruct() {
|
|
476
|
+
return (0, Utils_1.replaceBigInts)(this.toEscrowStruct());
|
|
477
|
+
}
|
|
472
478
|
}
|
|
473
479
|
exports.StarknetSwapData = StarknetSwapData;
|
|
474
480
|
base_1.SwapData.deserializers["strk"] = StarknetSwapData;
|
package/dist/utils/Utils.d.ts
CHANGED
package/dist/utils/Utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deserializeResourceBounds = exports.serializeResourceBounds = exports.deserializeSignature = exports.serializeSignature = exports.bigIntMax = exports.findLastIndex = exports.poseidonHashRange = exports.bufferToByteArray = exports.bufferToBytes31Span = exports.bytes31SpanToBuffer = exports.toBigInt = exports.bigNumberishToBuffer = exports.u32ReverseEndianness = exports.bufferToU32Array = exports.u32ArrayToBuffer = exports.calculateHash = exports.toHex = exports.tryWithRetries = exports.getLogger = exports.onceAsync = exports.timeoutPromise = exports.isUint256 = void 0;
|
|
3
|
+
exports.replaceBigInts = exports.deserializeResourceBounds = exports.serializeResourceBounds = exports.deserializeSignature = exports.serializeSignature = exports.bigIntMax = exports.findLastIndex = exports.poseidonHashRange = exports.bufferToByteArray = exports.bufferToBytes31Span = exports.bytes31SpanToBuffer = exports.toBigInt = exports.bigNumberishToBuffer = exports.u32ReverseEndianness = exports.bufferToU32Array = exports.u32ArrayToBuffer = exports.calculateHash = exports.toHex = exports.tryWithRetries = exports.getLogger = exports.onceAsync = exports.timeoutPromise = exports.isUint256 = void 0;
|
|
4
4
|
const starknet_1 = require("starknet");
|
|
5
5
|
const buffer_1 = require("buffer");
|
|
6
6
|
function isUint256(val) {
|
|
@@ -302,3 +302,21 @@ function deserializeResourceBounds(resourceBounds) {
|
|
|
302
302
|
};
|
|
303
303
|
}
|
|
304
304
|
exports.deserializeResourceBounds = deserializeResourceBounds;
|
|
305
|
+
function replaceBigInts(obj) {
|
|
306
|
+
const replace = (value) => {
|
|
307
|
+
if (typeof (value) === "bigint")
|
|
308
|
+
return "0x" + value.toString(16);
|
|
309
|
+
if (value == null || typeof (value) !== "object")
|
|
310
|
+
return value;
|
|
311
|
+
if (Array.isArray(value)) {
|
|
312
|
+
return value.map(replace);
|
|
313
|
+
}
|
|
314
|
+
const mapped = Object.create(Object.getPrototypeOf(value));
|
|
315
|
+
for (const key of Object.keys(value)) {
|
|
316
|
+
mapped[key] = replace(value[key]);
|
|
317
|
+
}
|
|
318
|
+
return mapped;
|
|
319
|
+
};
|
|
320
|
+
return replace(obj);
|
|
321
|
+
}
|
|
322
|
+
exports.replaceBigInts = replaceBigInts;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomiqlabs/chain-starknet",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.3.0",
|
|
4
4
|
"description": "Starknet specific base implementation",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"url": "git+https://github.com/atomiqlabs/atomiq-chain-starknet.git"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@atomiqlabs/base": "^13.
|
|
34
|
+
"@atomiqlabs/base": "^13.3.0",
|
|
35
35
|
"@noble/hashes": "^1.7.1",
|
|
36
36
|
"@scure/btc-signer": "^1.6.0",
|
|
37
37
|
"abi-wan-kanabi": "2.2.4",
|
|
@@ -29,7 +29,7 @@ function serializeBlockHeader(e: BtcBlock): StarknetBtcHeader {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const GAS_PER_BLOCKHEADER = {l1DataGas: 600, l2Gas: 24_000_000, l1Gas: 0};
|
|
32
|
-
const
|
|
32
|
+
const GAS_PER_BLOCKHEADER_FORK_REORG = {l1DataGas: 1000, l2Gas: 4_000_000, l1Gas: 0};
|
|
33
33
|
|
|
34
34
|
const btcRelayAddreses: {[network in BitcoinNetwork]?: string} = {
|
|
35
35
|
[BitcoinNetwork.TESTNET4]: "0x0099b63f39f0cabb767361de3d8d3e97212351a51540e2687c2571f4da490dbe",
|
|
@@ -121,7 +121,7 @@ export class StarknetBtcRelay<B extends BtcBlock>
|
|
|
121
121
|
},
|
|
122
122
|
StarknetFees.starknetGasAdd(
|
|
123
123
|
StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER, forkHeaders.length),
|
|
124
|
-
StarknetFees.starknetGasMul(
|
|
124
|
+
StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER_FORK_REORG, totalForkHeaders)
|
|
125
125
|
)
|
|
126
126
|
)
|
|
127
127
|
}
|
|
@@ -132,7 +132,7 @@ export class StarknetBtcRelay<B extends BtcBlock>
|
|
|
132
132
|
readonly _bitcoinRpc: BitcoinRpc<B>;
|
|
133
133
|
|
|
134
134
|
readonly maxHeadersPerTx: number = 40;
|
|
135
|
-
readonly maxForkHeadersPerTx: number =
|
|
135
|
+
readonly maxForkHeadersPerTx: number = 25;
|
|
136
136
|
readonly maxShortForkHeadersPerTx: number = 40;
|
|
137
137
|
|
|
138
138
|
constructor(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {SwapData, ChainSwapType} from "@atomiqlabs/base";
|
|
2
2
|
import {TimelockRefundHandler} from "./handlers/refund/TimelockRefundHandler";
|
|
3
3
|
import {BigNumberish, cairo, CairoOption, CairoOptionVariant, hash} from "starknet";
|
|
4
|
-
import {Serialized, toBigInt, toHex} from "../../utils/Utils";
|
|
4
|
+
import {replaceBigInts, Serialized, toBigInt, toHex} from "../../utils/Utils";
|
|
5
5
|
import {
|
|
6
6
|
StringToPrimitiveType
|
|
7
7
|
} from "abi-wan-kanabi/dist/kanabi";
|
|
@@ -582,6 +582,13 @@ export class StarknetSwapData extends SwapData {
|
|
|
582
582
|
return this.successAction != null;
|
|
583
583
|
}
|
|
584
584
|
|
|
585
|
+
/**
|
|
586
|
+
* @inheritDoc
|
|
587
|
+
*/
|
|
588
|
+
getEscrowStruct(): any {
|
|
589
|
+
return replaceBigInts(this.toEscrowStruct());
|
|
590
|
+
}
|
|
591
|
+
|
|
585
592
|
}
|
|
586
593
|
|
|
587
594
|
SwapData.deserializers["strk"] = StarknetSwapData;
|
package/src/utils/Utils.ts
CHANGED
|
@@ -341,3 +341,22 @@ export function deserializeResourceBounds(resourceBounds: ResourceBounds): Resou
|
|
|
341
341
|
}
|
|
342
342
|
};
|
|
343
343
|
}
|
|
344
|
+
|
|
345
|
+
export function replaceBigInts<T>(obj: T): ReplaceBigInt<T> {
|
|
346
|
+
const replace = (value: any): any => {
|
|
347
|
+
if(typeof(value)==="bigint") return "0x"+value.toString(16);
|
|
348
|
+
if(value==null || typeof(value)!=="object") return value;
|
|
349
|
+
|
|
350
|
+
if(Array.isArray(value)) {
|
|
351
|
+
return value.map(replace);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
const mapped: any = {};
|
|
355
|
+
for(const key of Object.keys(value)) {
|
|
356
|
+
mapped[key] = replace(value[key]);
|
|
357
|
+
}
|
|
358
|
+
return mapped;
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
return replace(obj);
|
|
362
|
+
}
|