@atomiqlabs/chain-starknet 1.0.9 → 2.0.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.
- package/dist/index.d.ts +13 -9
- package/dist/index.js +13 -9
- package/dist/starknet/StarknetChainType.d.ts +6 -2
- package/dist/starknet/StarknetInitializer.d.ts +3 -2
- package/dist/starknet/StarknetInitializer.js +17 -6
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +28 -7
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +75 -20
- package/dist/starknet/{base → chain}/StarknetAction.d.ts +2 -2
- package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -0
- package/dist/starknet/chain/StarknetChainInterface.js +91 -0
- package/dist/starknet/{base → chain}/StarknetModule.d.ts +3 -3
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.d.ts +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.js +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetSignatures.d.ts +2 -2
- package/dist/starknet/{base → chain}/modules/StarknetTokens.js +2 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.d.ts +7 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.js +45 -16
- package/dist/starknet/contract/StarknetContractBase.d.ts +5 -5
- package/dist/starknet/contract/StarknetContractBase.js +5 -7
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -0
- package/dist/starknet/contract/StarknetContractModule.js +11 -0
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +15 -4
- package/dist/starknet/contract/modules/StarknetContractEvents.js +26 -6
- package/dist/starknet/events/StarknetChainEvents.d.ts +3 -1
- package/dist/starknet/events/StarknetChainEvents.js +9 -9
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +23 -6
- package/dist/starknet/events/StarknetChainEventsBrowser.js +104 -13
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -0
- package/dist/starknet/provider/RpcProviderWithRetries.js +32 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +65 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +372 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +144 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +24 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +61 -0
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +4 -22
- package/dist/starknet/swaps/StarknetSwapContract.js +23 -80
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +6 -5
- package/dist/starknet/swaps/StarknetSwapModule.js +5 -6
- package/dist/starknet/swaps/handlers/IHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +2 -21
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +7 -41
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +2 -2
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetLpVault.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +1 -3
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +8 -11
- package/dist/starknet/wallet/StarknetSigner.js +1 -1
- package/dist/utils/Utils.d.ts +2 -2
- package/dist/utils/Utils.js +3 -1
- package/package.json +2 -2
- package/src/index.ts +15 -9
- package/src/starknet/StarknetChainType.ts +10 -2
- package/src/starknet/StarknetInitializer.ts +23 -7
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +104 -30
- package/src/starknet/{base → chain}/StarknetAction.ts +3 -3
- package/src/starknet/chain/StarknetChainInterface.ts +149 -0
- package/src/starknet/{base → chain}/StarknetModule.ts +3 -3
- package/src/starknet/{base → chain}/modules/StarknetAddresses.ts +1 -1
- package/src/starknet/{base → chain}/modules/StarknetSignatures.ts +2 -2
- package/src/starknet/{base → chain}/modules/StarknetTokens.ts +2 -1
- package/src/starknet/{base → chain}/modules/StarknetTransactions.ts +43 -18
- package/src/starknet/contract/StarknetContractBase.ts +9 -12
- package/src/starknet/contract/StarknetContractModule.ts +16 -0
- package/src/starknet/contract/modules/StarknetContractEvents.ts +33 -7
- package/src/starknet/events/StarknetChainEvents.ts +15 -11
- package/src/starknet/events/StarknetChainEventsBrowser.ts +157 -26
- package/src/starknet/provider/RpcProviderWithRetries.ts +43 -0
- package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -0
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +475 -0
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +194 -0
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +68 -0
- package/src/starknet/swaps/StarknetSwapContract.ts +28 -116
- package/src/starknet/swaps/StarknetSwapModule.ts +8 -8
- package/src/starknet/swaps/handlers/IHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
- package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +12 -61
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +2 -2
- package/src/starknet/swaps/modules/StarknetLpVault.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +9 -9
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +9 -13
- package/src/starknet/wallet/StarknetSigner.ts +1 -1
- package/src/utils/Utils.ts +4 -3
- package/dist/starknet/base/StarknetBase.d.ts +0 -34
- package/dist/starknet/base/StarknetBase.js +0 -29
- package/src/starknet/base/StarknetBase.ts +0 -56
- /package/dist/starknet/{base → chain}/StarknetAction.js +0 -0
- /package/dist/starknet/{base → chain}/StarknetModule.js +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetSignatures.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetTokens.d.ts +0 -0
- /package/src/starknet/{base → chain}/modules/ERC20Abi.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetAccounts.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetBlocks.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetEvents.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetFees.ts +0 -0
|
@@ -2,11 +2,11 @@ import {ChainSwapType, RelaySynchronizer, SwapDataVerificationError} from "@atom
|
|
|
2
2
|
import {toHex} from "../../../utils/Utils";
|
|
3
3
|
import {StarknetSwapModule} from "../StarknetSwapModule";
|
|
4
4
|
import {StarknetSwapData} from "../StarknetSwapData";
|
|
5
|
-
import {StarknetAction, StarknetGas, sumStarknetGas} from "../../
|
|
5
|
+
import {StarknetAction, StarknetGas, sumStarknetGas} from "../../chain/StarknetAction";
|
|
6
6
|
import {BigNumberish} from "starknet";
|
|
7
7
|
import {IClaimHandler} from "../handlers/claim/ClaimHandlers";
|
|
8
|
-
import {StarknetTx} from "../../
|
|
9
|
-
import {StarknetFees} from "../../
|
|
8
|
+
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
9
|
+
import {StarknetFees} from "../../chain/modules/StarknetFees";
|
|
10
10
|
import {StarknetBtcStoredHeader} from "../../btcrelay/headers/StarknetBtcStoredHeader";
|
|
11
11
|
import {BitcoinOutputWitnessData} from "../handlers/claim/btc/BitcoinOutputClaimHandler";
|
|
12
12
|
import {BitcoinWitnessData} from "../handlers/claim/btc/IBitcoinClaimHandler";
|
|
@@ -36,7 +36,7 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
36
36
|
claimHandlerGas?: StarknetGas
|
|
37
37
|
): StarknetAction {
|
|
38
38
|
return new StarknetAction(signer, this.root,
|
|
39
|
-
this.
|
|
39
|
+
this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness),
|
|
40
40
|
sumStarknetGas(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas)
|
|
41
41
|
);
|
|
42
42
|
}
|
|
@@ -60,11 +60,11 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
60
60
|
): Promise<StarknetTx[]> {
|
|
61
61
|
//We need to be sure that this transaction confirms in time, otherwise we reveal the secret to the counterparty
|
|
62
62
|
// and won't claim the funds
|
|
63
|
-
if(checkExpiry && await this.
|
|
63
|
+
if(checkExpiry && await this.contract.isExpired(swapData.claimer.toString(), swapData)) {
|
|
64
64
|
throw new SwapDataVerificationError("Not enough time to reliably pay the invoice");
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
const claimHandler: IClaimHandler<Buffer, string> = this.
|
|
67
|
+
const claimHandler: IClaimHandler<Buffer, string> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
68
68
|
if(claimHandler==null) throw new SwapDataVerificationError("Unknown claim handler!");
|
|
69
69
|
if(claimHandler.getType()!==ChainSwapType.HTLC) throw new SwapDataVerificationError("Invalid claim handler!");
|
|
70
70
|
|
|
@@ -101,7 +101,7 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
101
101
|
synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>,
|
|
102
102
|
feeRate?: string
|
|
103
103
|
): Promise<StarknetTx[] | null> {
|
|
104
|
-
const claimHandler: IClaimHandler<any, BitcoinOutputWitnessData | BitcoinWitnessData> = this.
|
|
104
|
+
const claimHandler: IClaimHandler<any, BitcoinOutputWitnessData | BitcoinWitnessData> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
105
105
|
if(claimHandler==null) throw new SwapDataVerificationError("Unknown claim handler!");
|
|
106
106
|
if(
|
|
107
107
|
claimHandler.getType()!==ChainSwapType.CHAIN_NONCED &&
|
|
@@ -116,7 +116,7 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
116
116
|
vout,
|
|
117
117
|
requiredConfirmations,
|
|
118
118
|
commitedHeader,
|
|
119
|
-
btcRelay: this.
|
|
119
|
+
btcRelay: this.contract.btcRelay,
|
|
120
120
|
synchronizer,
|
|
121
121
|
}, feeRate);
|
|
122
122
|
const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));
|
|
@@ -133,7 +133,7 @@ export class StarknetSwapClaim extends StarknetSwapModule {
|
|
|
133
133
|
|
|
134
134
|
let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;
|
|
135
135
|
|
|
136
|
-
const claimHandler: IClaimHandler<any, any> = this.
|
|
136
|
+
const claimHandler: IClaimHandler<any, any> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
137
137
|
if(claimHandler!=null) gasRequired = sumStarknetGas(gasRequired, claimHandler.getGas(swapData));
|
|
138
138
|
|
|
139
139
|
return StarknetFees.getGasFee(gasRequired.l1, feeRate);
|
|
@@ -2,12 +2,12 @@ import {SignatureVerificationError, SwapCommitStatus, SwapDataVerificationError}
|
|
|
2
2
|
import {bufferToBytes31Span, toBigInt, toHex, tryWithRetries} from "../../../utils/Utils";
|
|
3
3
|
import {Buffer} from "buffer";
|
|
4
4
|
import {StarknetSwapData} from "../StarknetSwapData";
|
|
5
|
-
import {StarknetAction} from "../../
|
|
5
|
+
import {StarknetAction} from "../../chain/StarknetAction";
|
|
6
6
|
import {StarknetSwapModule} from "../StarknetSwapModule";
|
|
7
7
|
import {BigNumberish} from "starknet";
|
|
8
8
|
import {StarknetSigner} from "../../wallet/StarknetSigner";
|
|
9
|
-
import {StarknetFees} from "../../
|
|
10
|
-
import {StarknetTx} from "../../
|
|
9
|
+
import {StarknetFees} from "../../chain/modules/StarknetFees";
|
|
10
|
+
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
11
11
|
|
|
12
12
|
export type StarknetPreFetchVerification = {
|
|
13
13
|
pendingBlockTime?: number
|
|
@@ -37,7 +37,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
37
37
|
return new StarknetAction(
|
|
38
38
|
swapData.payIn ? swapData.offerer : swapData.claimer,
|
|
39
39
|
this.root,
|
|
40
|
-
this.
|
|
40
|
+
this.swapContract.populateTransaction.initialize(
|
|
41
41
|
swapData.toEscrowStruct(),
|
|
42
42
|
signature,
|
|
43
43
|
timeout,
|
|
@@ -112,7 +112,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
112
112
|
const sender = swapData.isPayIn() ? swapData.offerer : swapData.claimer;
|
|
113
113
|
const signer = swapData.isPayIn() ? swapData.claimer : swapData.offerer;
|
|
114
114
|
|
|
115
|
-
if(!swapData.isPayIn() && await this.
|
|
115
|
+
if(!swapData.isPayIn() && await this.contract.isExpired(sender.toString(), swapData)) {
|
|
116
116
|
throw new SignatureVerificationError("Swap will expire too soon!");
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -120,7 +120,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
120
120
|
|
|
121
121
|
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
122
122
|
const timeoutBN = BigInt(timeout);
|
|
123
|
-
const isExpired = (timeoutBN - currentTimestamp) < BigInt(this.
|
|
123
|
+
const isExpired = (timeoutBN - currentTimestamp) < BigInt(this.contract.authGracePeriod);
|
|
124
124
|
if (isExpired) throw new SignatureVerificationError("Authorization expired!");
|
|
125
125
|
if(await this.isSignatureExpired(timeout, preFetchData)) throw new SignatureVerificationError("Authorization expired!");
|
|
126
126
|
|
|
@@ -144,7 +144,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
144
144
|
timeout: string
|
|
145
145
|
): Promise<number> {
|
|
146
146
|
const now = Date.now();
|
|
147
|
-
const timeoutExpiryTime = (parseInt(timeout)-this.
|
|
147
|
+
const timeoutExpiryTime = (parseInt(timeout)-this.contract.authGracePeriod)*1000;
|
|
148
148
|
|
|
149
149
|
if(timeoutExpiryTime<now) return 0;
|
|
150
150
|
|
|
@@ -194,7 +194,7 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
194
194
|
() => this.isSignatureValid(swapData, timeout, prefix, signature),
|
|
195
195
|
this.retryPolicy, (e) => e instanceof SignatureVerificationError
|
|
196
196
|
),
|
|
197
|
-
tryWithRetries(() => this.
|
|
197
|
+
tryWithRetries(() => this.contract.getCommitStatus(sender, swapData), this.retryPolicy)
|
|
198
198
|
]);
|
|
199
199
|
if(payStatus!==SwapCommitStatus.NOT_COMMITED) throw new SwapDataVerificationError("Invoice already being paid for or paid");
|
|
200
200
|
}
|
|
@@ -203,10 +203,10 @@ export class StarknetSwapInit extends StarknetSwapModule {
|
|
|
203
203
|
|
|
204
204
|
const initAction = this.Init(swapData, BigInt(timeout), JSON.parse(signature));
|
|
205
205
|
if(swapData.payIn) initAction.addAction(
|
|
206
|
-
this.root.Tokens.Approve(sender, this.
|
|
206
|
+
this.root.Tokens.Approve(sender, this.swapContract.address, swapData.token, swapData.amount), 0
|
|
207
207
|
); //Add erc20 approve
|
|
208
208
|
if(swapData.getTotalDeposit() !== 0n) initAction.addAction(
|
|
209
|
-
this.root.Tokens.Approve(sender, this.
|
|
209
|
+
this.root.Tokens.Approve(sender, this.swapContract.address, swapData.feeToken, swapData.getTotalDeposit()), 0
|
|
210
210
|
); //Add deposit erc20 approve
|
|
211
211
|
|
|
212
212
|
this.logger.debug("txsInitPayIn(): create swap init TX, swap: "+swapData.getClaimHash()+
|
|
@@ -2,13 +2,13 @@ import {SignatureVerificationError, SwapDataVerificationError} from "@atomiqlabs
|
|
|
2
2
|
import {toHex, tryWithRetries} from "../../../utils/Utils";
|
|
3
3
|
import {StarknetSwapModule} from "../StarknetSwapModule";
|
|
4
4
|
import {StarknetSwapData} from "../StarknetSwapData";
|
|
5
|
-
import {StarknetAction, StarknetGas, sumStarknetGas} from "../../
|
|
5
|
+
import {StarknetAction, StarknetGas, sumStarknetGas} from "../../chain/StarknetAction";
|
|
6
6
|
import {StarknetSwapContract} from "../StarknetSwapContract";
|
|
7
7
|
import {IHandler} from "../handlers/IHandler";
|
|
8
8
|
import {BigNumberish} from "starknet";
|
|
9
|
-
import {StarknetTx} from "../../
|
|
9
|
+
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
10
10
|
import {StarknetSigner} from "../../wallet/StarknetSigner";
|
|
11
|
-
import {StarknetFees} from "../../
|
|
11
|
+
import {StarknetFees} from "../../chain/modules/StarknetFees";
|
|
12
12
|
|
|
13
13
|
const Refund = [
|
|
14
14
|
{ name: 'Swap hash', type: 'felt' },
|
|
@@ -39,7 +39,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
|
|
|
39
39
|
handlerGas?: StarknetGas
|
|
40
40
|
): StarknetAction {
|
|
41
41
|
return new StarknetAction(signer, this.root,
|
|
42
|
-
this.
|
|
42
|
+
this.swapContract.populateTransaction.refund(swapData.toEscrowStruct(), witness),
|
|
43
43
|
sumStarknetGas(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
|
|
44
44
|
);
|
|
45
45
|
}
|
|
@@ -61,15 +61,11 @@ export class StarknetSwapRefund extends StarknetSwapModule {
|
|
|
61
61
|
signature: BigNumberish[]
|
|
62
62
|
): StarknetAction {
|
|
63
63
|
return new StarknetAction(sender, this.root,
|
|
64
|
-
this.
|
|
64
|
+
this.swapContract.populateTransaction.cooperative_refund(swapData.toEscrowStruct(), signature, BigInt(timeout)),
|
|
65
65
|
swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND
|
|
66
66
|
);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
constructor(root: StarknetSwapContract) {
|
|
70
|
-
super(root);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
69
|
public async signSwapRefund(
|
|
74
70
|
signer: StarknetSigner,
|
|
75
71
|
swapData: StarknetSwapData,
|
|
@@ -101,7 +97,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
|
|
|
101
97
|
const expiryTimestamp = BigInt(timeout);
|
|
102
98
|
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
103
99
|
|
|
104
|
-
const isExpired = (expiryTimestamp - currentTimestamp) < BigInt(this.
|
|
100
|
+
const isExpired = (expiryTimestamp - currentTimestamp) < BigInt(this.contract.authGracePeriod);
|
|
105
101
|
if(isExpired) throw new SignatureVerificationError("Authorization expired!");
|
|
106
102
|
|
|
107
103
|
const valid = await this.root.Signatures.isValidSignature(signature, swapData.claimer, Refund, "Refund", {
|
|
@@ -132,10 +128,10 @@ export class StarknetSwapRefund extends StarknetSwapModule {
|
|
|
132
128
|
feeRate?: string,
|
|
133
129
|
witnessData?: T
|
|
134
130
|
): Promise<StarknetTx[]> {
|
|
135
|
-
const refundHandler: IHandler<any, T> = this.
|
|
131
|
+
const refundHandler: IHandler<any, T> = this.contract.refundHandlersByAddress[swapData.refundHandler.toLowerCase()];
|
|
136
132
|
if(refundHandler==null) throw new Error("Invalid refund handler");
|
|
137
133
|
|
|
138
|
-
if(check && !await tryWithRetries(() => this.
|
|
134
|
+
if(check && !await tryWithRetries(() => this.contract.isRequestRefundable(swapData.offerer.toString(), swapData), this.retryPolicy)) {
|
|
139
135
|
throw new SwapDataVerificationError("Not refundable yet!");
|
|
140
136
|
}
|
|
141
137
|
|
|
@@ -171,7 +167,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
|
|
|
171
167
|
check?: boolean,
|
|
172
168
|
feeRate?: string
|
|
173
169
|
): Promise<StarknetTx[]> {
|
|
174
|
-
if(check && !await tryWithRetries(() => this.
|
|
170
|
+
if(check && !await tryWithRetries(() => this.contract.isCommited(swapData), this.retryPolicy)) {
|
|
175
171
|
throw new SwapDataVerificationError("Not correctly committed");
|
|
176
172
|
}
|
|
177
173
|
await tryWithRetries(
|
|
@@ -27,7 +27,7 @@ export class StarknetSigner implements AbstractSigner {
|
|
|
27
27
|
//TODO: Introduce proper nonce management!
|
|
28
28
|
async getNonce(): Promise<bigint> {
|
|
29
29
|
try {
|
|
30
|
-
return BigInt(await this.account.getNonceForAddress(this.getAddress()));
|
|
30
|
+
return BigInt(await this.account.getNonceForAddress(this.getAddress(), "pending"));
|
|
31
31
|
} catch (e) {
|
|
32
32
|
if(e.message!=null && e.message.includes("20: Contract not found")) {
|
|
33
33
|
return BigInt(0);
|
package/src/utils/Utils.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {EDAMode} from "starknet-types-07";
|
|
2
2
|
import {BigNumberish, CallData, hash, Uint256} from "starknet";
|
|
3
|
-
import {StarknetTx} from "../starknet/
|
|
3
|
+
import {StarknetTx} from "../starknet/chain/modules/StarknetTransactions";
|
|
4
4
|
import {Buffer} from "buffer";
|
|
5
5
|
import {StarknetSwapData} from "../starknet/swaps/StarknetSwapData";
|
|
6
6
|
import {IClaimHandler} from "../starknet/swaps/handlers/claim/ClaimHandlers";
|
|
@@ -150,7 +150,7 @@ export function u32ReverseEndianness(value: number): number {
|
|
|
150
150
|
((valueBN >> 24n) & 0xFFn));
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
export function bigNumberishToBuffer(value: BigNumberish | Uint256, length
|
|
153
|
+
export function bigNumberishToBuffer(value: BigNumberish | Uint256, length?: number): Buffer {
|
|
154
154
|
if(isUint256(value)) {
|
|
155
155
|
return Buffer.concat([bigNumberishToBuffer(value.high, 16), bigNumberishToBuffer(value.low, 16)])
|
|
156
156
|
}
|
|
@@ -163,7 +163,8 @@ export function bigNumberishToBuffer(value: BigNumberish | Uint256, length: numb
|
|
|
163
163
|
} else {
|
|
164
164
|
value = value.toString(16);
|
|
165
165
|
}
|
|
166
|
-
|
|
166
|
+
if(length!=null) value = value.padStart(length*2, "0");
|
|
167
|
+
const buff = Buffer.from(value, "hex");
|
|
167
168
|
if(buff.length > length) return buff.slice(buff.length-length);
|
|
168
169
|
return buff;
|
|
169
170
|
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Provider, constants } from "starknet";
|
|
2
|
-
import { StarknetTransactions } from "./modules/StarknetTransactions";
|
|
3
|
-
import { StarknetFees } from "./modules/StarknetFees";
|
|
4
|
-
import { StarknetAddresses } from "./modules/StarknetAddresses";
|
|
5
|
-
import { StarknetTokens } from "./modules/StarknetTokens";
|
|
6
|
-
import { StarknetEvents } from "./modules/StarknetEvents";
|
|
7
|
-
import { StarknetSignatures } from "./modules/StarknetSignatures";
|
|
8
|
-
import { StarknetAccounts } from "./modules/StarknetAccounts";
|
|
9
|
-
import { StarknetBlocks } from "./modules/StarknetBlocks";
|
|
10
|
-
export type StarknetRetryPolicy = {
|
|
11
|
-
maxRetries?: number;
|
|
12
|
-
delay?: number;
|
|
13
|
-
exponential?: boolean;
|
|
14
|
-
};
|
|
15
|
-
export declare class StarknetBase {
|
|
16
|
-
readonly provider: Provider;
|
|
17
|
-
readonly retryPolicy: StarknetRetryPolicy;
|
|
18
|
-
readonly starknetChainId: constants.StarknetChainId;
|
|
19
|
-
Fees: StarknetFees;
|
|
20
|
-
readonly Tokens: StarknetTokens;
|
|
21
|
-
readonly Transactions: StarknetTransactions;
|
|
22
|
-
readonly Addresses: StarknetAddresses;
|
|
23
|
-
readonly Signatures: StarknetSignatures;
|
|
24
|
-
readonly Events: StarknetEvents;
|
|
25
|
-
readonly Accounts: StarknetAccounts;
|
|
26
|
-
readonly Blocks: StarknetBlocks;
|
|
27
|
-
protected readonly logger: {
|
|
28
|
-
debug: (msg: any, ...args: any[]) => void;
|
|
29
|
-
info: (msg: any, ...args: any[]) => void;
|
|
30
|
-
warn: (msg: any, ...args: any[]) => void;
|
|
31
|
-
error: (msg: any, ...args: any[]) => void;
|
|
32
|
-
};
|
|
33
|
-
constructor(chainId: constants.StarknetChainId, provider: Provider, retryPolicy?: StarknetRetryPolicy, solanaFeeEstimator?: StarknetFees);
|
|
34
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetBase = void 0;
|
|
4
|
-
const Utils_1 = require("../../utils/Utils");
|
|
5
|
-
const StarknetTransactions_1 = require("./modules/StarknetTransactions");
|
|
6
|
-
const StarknetFees_1 = require("./modules/StarknetFees");
|
|
7
|
-
const StarknetAddresses_1 = require("./modules/StarknetAddresses");
|
|
8
|
-
const StarknetTokens_1 = require("./modules/StarknetTokens");
|
|
9
|
-
const StarknetEvents_1 = require("./modules/StarknetEvents");
|
|
10
|
-
const StarknetSignatures_1 = require("./modules/StarknetSignatures");
|
|
11
|
-
const StarknetAccounts_1 = require("./modules/StarknetAccounts");
|
|
12
|
-
const StarknetBlocks_1 = require("./modules/StarknetBlocks");
|
|
13
|
-
class StarknetBase {
|
|
14
|
-
constructor(chainId, provider, retryPolicy, solanaFeeEstimator = new StarknetFees_1.StarknetFees(provider)) {
|
|
15
|
-
this.logger = (0, Utils_1.getLogger)(this.constructor.name + ": ");
|
|
16
|
-
this.starknetChainId = chainId;
|
|
17
|
-
this.provider = provider;
|
|
18
|
-
this.retryPolicy = retryPolicy;
|
|
19
|
-
this.Fees = solanaFeeEstimator;
|
|
20
|
-
this.Tokens = new StarknetTokens_1.StarknetTokens(this);
|
|
21
|
-
this.Transactions = new StarknetTransactions_1.StarknetTransactions(this);
|
|
22
|
-
this.Addresses = new StarknetAddresses_1.StarknetAddresses(this);
|
|
23
|
-
this.Signatures = new StarknetSignatures_1.StarknetSignatures(this);
|
|
24
|
-
this.Events = new StarknetEvents_1.StarknetEvents(this);
|
|
25
|
-
this.Accounts = new StarknetAccounts_1.StarknetAccounts(this);
|
|
26
|
-
this.Blocks = new StarknetBlocks_1.StarknetBlocks(this);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.StarknetBase = StarknetBase;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import {Provider, constants} from "starknet";
|
|
2
|
-
import {getLogger} from "../../utils/Utils";
|
|
3
|
-
import {StarknetTransactions} from "./modules/StarknetTransactions";
|
|
4
|
-
import {StarknetFees} from "./modules/StarknetFees";
|
|
5
|
-
import {StarknetAddresses} from "./modules/StarknetAddresses";
|
|
6
|
-
import {StarknetTokens} from "./modules/StarknetTokens";
|
|
7
|
-
import {StarknetEvents} from "./modules/StarknetEvents";
|
|
8
|
-
import {StarknetSignatures} from "./modules/StarknetSignatures";
|
|
9
|
-
import {StarknetAccounts} from "./modules/StarknetAccounts";
|
|
10
|
-
import {StarknetBlocks} from "./modules/StarknetBlocks";
|
|
11
|
-
|
|
12
|
-
export type StarknetRetryPolicy = {
|
|
13
|
-
maxRetries?: number,
|
|
14
|
-
delay?: number,
|
|
15
|
-
exponential?: boolean
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export class StarknetBase {
|
|
19
|
-
|
|
20
|
-
readonly provider: Provider;
|
|
21
|
-
readonly retryPolicy: StarknetRetryPolicy;
|
|
22
|
-
|
|
23
|
-
public readonly starknetChainId: constants.StarknetChainId;
|
|
24
|
-
|
|
25
|
-
public Fees: StarknetFees;
|
|
26
|
-
public readonly Tokens: StarknetTokens;
|
|
27
|
-
public readonly Transactions: StarknetTransactions;
|
|
28
|
-
public readonly Addresses: StarknetAddresses;
|
|
29
|
-
public readonly Signatures: StarknetSignatures;
|
|
30
|
-
public readonly Events: StarknetEvents;
|
|
31
|
-
public readonly Accounts: StarknetAccounts;
|
|
32
|
-
public readonly Blocks: StarknetBlocks;
|
|
33
|
-
|
|
34
|
-
protected readonly logger = getLogger(this.constructor.name+": ");
|
|
35
|
-
|
|
36
|
-
constructor(
|
|
37
|
-
chainId: constants.StarknetChainId,
|
|
38
|
-
provider: Provider,
|
|
39
|
-
retryPolicy?: StarknetRetryPolicy,
|
|
40
|
-
solanaFeeEstimator: StarknetFees = new StarknetFees(provider)
|
|
41
|
-
) {
|
|
42
|
-
this.starknetChainId = chainId;
|
|
43
|
-
this.provider = provider;
|
|
44
|
-
this.retryPolicy = retryPolicy;
|
|
45
|
-
|
|
46
|
-
this.Fees = solanaFeeEstimator;
|
|
47
|
-
this.Tokens = new StarknetTokens(this);
|
|
48
|
-
this.Transactions = new StarknetTransactions(this);
|
|
49
|
-
this.Addresses = new StarknetAddresses(this);
|
|
50
|
-
this.Signatures = new StarknetSignatures(this);
|
|
51
|
-
this.Events = new StarknetEvents(this);
|
|
52
|
-
this.Accounts = new StarknetAccounts(this);
|
|
53
|
-
this.Blocks = new StarknetBlocks(this);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|