@atomiqlabs/chain-starknet 8.1.11 → 8.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.js +72 -3
- package/dist/node/index.d.ts +10 -0
- package/dist/node/index.js +15 -0
- package/dist/starknet/StarknetInitializer.d.ts +39 -6
- package/dist/starknet/StarknetInitializer.js +3 -3
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +7 -6
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +8 -8
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +2 -0
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +2 -0
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +3 -1
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +3 -1
- package/dist/starknet/chain/StarknetAction.js +1 -1
- package/dist/starknet/chain/StarknetChainInterface.d.ts +25 -0
- package/dist/starknet/chain/StarknetChainInterface.js +7 -0
- package/dist/starknet/chain/modules/StarknetFees.d.ts +15 -19
- package/dist/starknet/chain/modules/StarknetFees.js +23 -29
- package/dist/starknet/chain/modules/StarknetTransactions.d.ts +32 -6
- package/dist/starknet/chain/modules/StarknetTransactions.js +47 -17
- package/dist/starknet/contract/StarknetContractBase.d.ts +12 -3
- package/dist/starknet/contract/StarknetContractBase.js +2 -2
- package/dist/starknet/contract/modules/StarknetContractEvents.js +1 -1
- package/dist/starknet/events/StarknetChainEvents.d.ts +3 -0
- package/dist/starknet/events/StarknetChainEvents.js +3 -0
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +45 -7
- package/dist/starknet/events/StarknetChainEventsBrowser.js +20 -9
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +4 -4
- package/dist/starknet/swaps/StarknetSwapContract.js +5 -5
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +2 -2
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +1 -1
- package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +9 -1
- package/dist/starknet/wallet/StarknetBrowserSigner.js +31 -1
- package/dist/starknet/wallet/StarknetSigner.d.ts +44 -3
- package/dist/starknet/wallet/StarknetSigner.js +52 -2
- package/dist/utils/Utils.d.ts +1 -1
- package/dist/utils/Utils.js +2 -2
- package/node/index.d.ts +1 -0
- package/node/index.js +3 -0
- package/package.json +5 -4
- package/src/index.ts +76 -2
- package/src/node/index.ts +10 -0
- package/src/starknet/StarknetInitializer.ts +40 -1
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -16
- package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +2 -0
- package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +3 -1
- package/src/starknet/chain/StarknetAction.ts +2 -2
- package/src/starknet/chain/StarknetChainInterface.ts +29 -1
- package/src/starknet/chain/modules/StarknetFees.ts +23 -27
- package/src/starknet/chain/modules/StarknetTransactions.ts +59 -18
- package/src/starknet/contract/StarknetContractBase.ts +14 -5
- package/src/starknet/contract/modules/StarknetContractEvents.ts +1 -1
- package/src/starknet/events/StarknetChainEvents.ts +3 -0
- package/src/starknet/events/StarknetChainEventsBrowser.ts +51 -10
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +4 -4
- package/src/starknet/swaps/StarknetSwapContract.ts +5 -5
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +1 -1
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +3 -3
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +2 -2
- package/src/starknet/wallet/StarknetBrowserSigner.ts +39 -2
- package/src/starknet/wallet/StarknetSigner.ts +62 -3
- package/src/utils/Utils.ts +3 -3
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import {AbstractSigner} from "@atomiqlabs/base";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Account,
|
|
4
|
+
DeployAccountContractPayload,
|
|
5
|
+
BlockTag,
|
|
6
|
+
Invocation,
|
|
7
|
+
DeployAccountContractTransaction,
|
|
8
|
+
shortString, constants
|
|
9
|
+
} from "starknet";
|
|
3
10
|
import {calculateHash, toHex} from "../../utils/Utils";
|
|
4
11
|
import {
|
|
5
12
|
isStarknetTxDeployAccount,
|
|
@@ -16,6 +23,59 @@ import {
|
|
|
16
23
|
* @category Wallets
|
|
17
24
|
*/
|
|
18
25
|
export class StarknetSigner implements AbstractSigner {
|
|
26
|
+
/**
|
|
27
|
+
* A static message (text message part), which should be signed by the Starknet wallets to generate reproducible entropy. Works when
|
|
28
|
+
* wallets use signing with deterministic nonce, such that signature over the same message always yields the
|
|
29
|
+
* same signature (same entropy).
|
|
30
|
+
*/
|
|
31
|
+
private static readonly STARKNET_REPRODUCIBLE_ENTROPY_MESSAGE = "Signing this messages generates a reproducible secret" +
|
|
32
|
+
" to be used on %APPNAME%.";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A static message (warning part), which should be signed by the Starknet wallets to generate reproducible entropy. Works when
|
|
36
|
+
* wallets use signing with deterministic nonce, such that signature over the same message always yields the
|
|
37
|
+
* same signature (same entropy).
|
|
38
|
+
*/
|
|
39
|
+
private static readonly STARKNET_REPRODUCIBLE_ENTROPY_WARNING = "PLEASE DOUBLE CHECK THAT YOU ARE ON THE %APPNAME%" +
|
|
40
|
+
" WEBSITE BEFORE SIGNING THE MESSAGE, SIGNING THIS MESSAGE ON ANY OTHER WEBSITE MIGHT LEAD TO LOSS OF FUNDS!";
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Returns a SNIP-12 message to be signed for extracting reproducible entropy. Works when wallets use signing with
|
|
44
|
+
* deterministic nonce, such that signature over the same message always yields the same signature (same entropy).
|
|
45
|
+
*
|
|
46
|
+
* @param starknetChainId Starknet chain ID to use for the SNIP-12 message
|
|
47
|
+
* @param appName Application name to differentiate reproducible entropy generated across different apps
|
|
48
|
+
*/
|
|
49
|
+
public static getReproducibleEntropyMessage(starknetChainId: constants.StarknetChainId, appName: string) {
|
|
50
|
+
const message = StarknetSigner.STARKNET_REPRODUCIBLE_ENTROPY_MESSAGE.replace(new RegExp("%APPNAME%", 'g'), appName);
|
|
51
|
+
const warning = StarknetSigner.STARKNET_REPRODUCIBLE_ENTROPY_WARNING.replace(new RegExp("%APPNAME%", 'g'), appName);
|
|
52
|
+
return {
|
|
53
|
+
types: {
|
|
54
|
+
StarknetDomain: [
|
|
55
|
+
{ name: 'name', type: 'shortstring' },
|
|
56
|
+
{ name: 'version', type: 'shortstring' },
|
|
57
|
+
{ name: 'chainId', type: 'shortstring' },
|
|
58
|
+
{ name: 'revision', type: 'shortstring' },
|
|
59
|
+
],
|
|
60
|
+
Message: [
|
|
61
|
+
{ name: 'Message', type: 'string' },
|
|
62
|
+
{ name: 'Warning', type: 'string' }
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
primaryType: 'Message',
|
|
66
|
+
domain: {
|
|
67
|
+
name: appName,
|
|
68
|
+
version: '1',
|
|
69
|
+
chainId: shortString.decodeShortString(starknetChainId),
|
|
70
|
+
revision: '1'
|
|
71
|
+
},
|
|
72
|
+
message: {
|
|
73
|
+
'Message': message,
|
|
74
|
+
'Warning': warning
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
19
79
|
type = "AtomiqAbstractSigner" as const;
|
|
20
80
|
|
|
21
81
|
public readonly isManagingNoncesInternally: boolean;
|
|
@@ -41,9 +101,8 @@ export class StarknetSigner implements AbstractSigner {
|
|
|
41
101
|
}
|
|
42
102
|
|
|
43
103
|
/**
|
|
44
|
-
*
|
|
45
104
|
* @param tx
|
|
46
|
-
* @
|
|
105
|
+
* @internal
|
|
47
106
|
*/
|
|
48
107
|
protected async _signTransaction(tx: StarknetTx): Promise<StarknetTx> {
|
|
49
108
|
if(isStarknetTxInvoke(tx)) {
|
package/src/utils/Utils.ts
CHANGED
|
@@ -155,12 +155,12 @@ export function calculateHash(tx: StarknetTx): string {
|
|
|
155
155
|
if(
|
|
156
156
|
tx.signed.constructorCalldata==null ||
|
|
157
157
|
tx.signed.addressSalt==null ||
|
|
158
|
-
tx.
|
|
158
|
+
tx.details.walletAddress==null
|
|
159
159
|
) throw new Error("TX not enough data to compute hash!");
|
|
160
160
|
|
|
161
161
|
const deployAccountData = CallData.compile(tx.signed.constructorCalldata);
|
|
162
162
|
return tx.txId = hash.calculateDeployAccountTransactionHash({
|
|
163
|
-
contractAddress: tx.
|
|
163
|
+
contractAddress: tx.details.walletAddress,
|
|
164
164
|
classHash: tx.signed.classHash,
|
|
165
165
|
compiledConstructorCalldata: deployAccountData,
|
|
166
166
|
salt: tx.signed.addressSalt,
|
|
@@ -288,7 +288,7 @@ export function bigIntMax(a: bigint, b: bigint) {
|
|
|
288
288
|
return a>b ? a : b;
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
export function serializeSignature(signature?: Signature):
|
|
291
|
+
export function serializeSignature(signature?: Signature): string[] | undefined {
|
|
292
292
|
return signature==null
|
|
293
293
|
? undefined
|
|
294
294
|
: Array.isArray(signature)
|