sidebar_position |
---|
101 |
This document only covers the features present in v6 which have changed in some significant way in v7.
If you encounter any missing changes, please let us know and we will update this guide.
isomorphic-fetch
and fetch-cookie
have been removed as dependencies.
For users who might require the features of either library, a baseFetch
override parameter has been enabled for the RpcProvider
and RpcChannel
classes, including classes that inherit from them such as Account
and WalletAccount
.
import makeFetchCookie from 'fetch-cookie';
import isomorphicFetch from 'isomorphic-fetch';
const provider = new RpcProvider({
baseFetch: makeFetchCookie(isomorphicFetch),
});
Starknet.js v6 is compatible with Starknet RPC 0.6 and 0.7 nodes.
Starknet.js v7 drops support for RPC 0.6, and introduces support for RPC 0.8, it supports RPC 0.7 and 0.8 nodes.
By default, Starknet.js v7 uses RPC 0.8 with V3 transactions (STRK fees). This means that you can no longer execute V1 transactions (ETH fees) by default.
RPC 0.7 | RPC 0.8 (default) |
|
---|---|---|
V1 tx (ETH fees) | Possible | Impossible |
V3 tx (STRK fees) | Default | Default |
You can configure your code to use RPC 0.7 with ETH and STRK fees available by using the following options:
- Define
specVersion: '0.7'
when instantiating an RpcProvider - Use
config.set('legacyMode', true)
to enable V1 transactions - Use
logger.setLogLevel('ERROR')
if you want to remove the warnings when processing V1 transactions
import { RpcProvider, Account, config, logger, ETransactionVersion } from 'starknet';
const myProvider = new RpcProvider({
nodeUrl: 'https://free-rpc.nethermind.io/sepolia-juno/v0_7',
specVersion: '0.7',
});
config.set('legacyMode', true);
logger.setLogLevel('ERROR');
With the above settings the code still uses V3 transactions with RPC 0.7 by default. To utilize V1 transactions there are two approaches:
- either configure it at the
Account
instance level by setting the appropriate constructor parameter:
const account0 = new Account(
myProvider,
accountAddress0,
privateKey0,
undefined,
ETransactionVersion.V2
);
- or configure it for individual method invocations by setting the corresponding options parameter property:
const res = await account0.execute(myCall, { version: 1 });
In the ReceiptTx
class, the status isRejected
has been removed.
method | details |
---|---|
execute(...) |
The deprecated execute(transactions, abis?, transactionsDetail?) override with the optional (and unused) abis parameter has been removed.execute(transactions, transactionsDetail?) now only accepts two parameters and should be used as such. |
verifyMessage(...) verifyMessageHash(...) |
The deprecated Account message verification methods have been removed. The RpcProvider verifyMessageInStarknet(...) method should be used instead. |
When initializing a WalletAccount
instance through the constructor new WalletAccount(...)
the address
parameter has been made mandatory with the deprecated eager address retrieval removed.
To initialize a WalletAccount
instance WalletAccount.connect(...)
should be used.
The number
namespace alias has been removed in favor of num
as noted in the v5 migration guide.
namespace | function | replacement |
---|---|---|
encode |
stringToArrayBuffer(...) |
utf8ToArray(...) |
json |
stringifyAlwaysAsBig(...) |
stringify(...) |
stark |
makeAddress(...) |
validateAndParseAddress(...) |
transaction |
fromCallsToExecuteCalldataWithNonce(...) transformCallsToMulticallArrays_cairo1(...) |
/ |
- the
CallStruct
type that was used by thetransaction
methods has also been removed
Multiple TypeScript types have had their old location re-exports removed. They are no longer available within their old namespace but are available as direct imports: import { *type* } from 'starknet'
.
namespace | type |
---|---|
num |
BigNumberish |
typedData |
TypedDataRevision StarknetEnumType StarknetMerkleType StarknetType StarknetDomain TypedData |
uint256 |
UINT_128_MAX UINT_256_MAX |