Skip to content

Commit 316ae27

Browse files
authored
Implement RPC 0.8 and V3 transactions (#1328)
BREAKING CHANGE: Library defaults to RPC 0.8 with the corresponding API changes, dropped RPC 0.6 support
1 parent a6fff86 commit 316ae27

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+1235
-2817
lines changed

__tests__/account.outsideExecution.test.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,25 @@ import {
2323
} from '../src';
2424
import { getSelectorFromName } from '../src/utils/hash';
2525
import { getDecimalString } from '../src/utils/num';
26-
import { contracts, getTestAccount, getTestProvider } from './config/fixtures';
26+
import { contracts, createTestProvider, getTestAccount } from './config/fixtures';
2727

2828
describe('Account and OutsideExecution', () => {
2929
const ethAddress = '0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7';
30-
const provider = new Provider(getTestProvider());
31-
const executorAccount = getTestAccount(provider);
30+
let provider: Provider;
31+
let executorAccount: Account;
3232
let signerAccount: Account;
3333
const targetPK = stark.randomAddress();
3434
const targetPubK = ec.starkCurve.getStarkKey(targetPK);
3535
// For ERC20 transfer outside call
36-
const recipientAccount = executorAccount;
37-
const ethContract = new Contract(contracts.Erc20OZ.sierra.abi, ethAddress, provider);
36+
let recipientAccount: Account;
37+
let ethContract: Contract;
3838

3939
beforeAll(async () => {
40+
provider = new Provider(await createTestProvider());
41+
executorAccount = getTestAccount(provider);
42+
recipientAccount = executorAccount;
43+
ethContract = new Contract(contracts.Erc20OZ.sierra.abi, ethAddress, provider);
44+
4045
// Deploy the SNIP-9 signer account (ArgentX v 0.4.0, using SNIP-9 v2):
4146
const calldataAX = new CallData(contracts.ArgentX4Account.sierra.abi);
4247
const axSigner = new CairoCustomEnum({ Starknet: { pubkey: targetPubK } });

__tests__/account.starknetId.test.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
import { Provider, num, shortString } from '../src';
2-
import { contracts, getTestAccount, getTestProvider } from './config/fixtures';
1+
import { Account, Provider, num, shortString } from '../src';
2+
import { contracts, createTestProvider, getTestAccount } from './config/fixtures';
33

44
const { hexToDecimalString } = num;
55

66
describe('deploy and test Wallet', () => {
7-
const provider = new Provider(getTestProvider());
8-
const account = getTestAccount(provider);
7+
let provider: Provider;
8+
let account: Account;
99
let identityAddress: string;
1010
let namingAddress: string;
1111
let multicallAddress: string;
1212
const devnetERC20Address = '0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7';
1313

1414
beforeAll(async () => {
15+
provider = new Provider(await createTestProvider());
16+
account = getTestAccount(provider);
17+
1518
// Deploy Starknet id contract
1619
const idResponse = await account.declareAndDeploy({
1720
contract: contracts.starknetId.StarknetId.sierra,

__tests__/account.test.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
Contract,
77
DeclareDeployUDCResponse,
88
Provider,
9+
ProviderInterface,
910
RpcError,
1011
TransactionType,
1112
cairo,
@@ -22,10 +23,11 @@ import {
2223
import {
2324
TEST_TX_VERSION,
2425
contracts,
26+
createTestProvider,
2527
describeIfDevnet,
28+
devnetFeeTokenAddress,
2629
erc20ClassHash,
2730
getTestAccount,
28-
getTestProvider,
2931
} from './config/fixtures';
3032
import { initializeMatcher } from './config/schema';
3133

@@ -36,15 +38,18 @@ const { uint256 } = cairo;
3638
const { Signature } = ec.starkCurve;
3739

3840
describe('deploy and test Wallet', () => {
39-
const provider = new Provider(getTestProvider());
40-
const account = getTestAccount(provider);
41+
let provider: Provider;
42+
let account: Account;
4143
let erc20: Contract;
4244
let erc20Address: string;
4345
let dapp: Contract;
4446
let dd: DeclareDeployUDCResponse;
4547

4648
beforeAll(async () => {
4749
initializeMatcher(expect);
50+
51+
provider = new Provider(await createTestProvider());
52+
account = getTestAccount(provider);
4853
expect(account).toBeInstanceOf(Account);
4954

5055
dd = await account.declareAndDeploy({
@@ -129,10 +134,9 @@ describe('deploy and test Wallet', () => {
129134
calldata,
130135
0
131136
);
132-
const devnetERC20Address =
133-
'0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7';
137+
134138
const { transaction_hash } = await account.execute({
135-
contractAddress: devnetERC20Address,
139+
contractAddress: devnetFeeTokenAddress,
136140
entrypoint: 'transfer',
137141
calldata: {
138142
recipient: tobeAccountAddress,
@@ -359,7 +363,8 @@ describe('deploy and test Wallet', () => {
359363
expect(balance.low).toStrictEqual(toBigInt(990));
360364
});
361365

362-
test('execute with and without deprecated abis parameter', async () => {
366+
// TODO: @penovicp this is your space, for some reson this return Object, disabled at the moment
367+
xtest('execute with and without deprecated abis parameter', async () => {
363368
const transaction = {
364369
contractAddress: erc20Address,
365370
entrypoint: 'transfer',
@@ -842,8 +847,13 @@ describe('deploy and test Wallet', () => {
842847
describe('unit', () => {
843848
describeIfDevnet('Devnet', () => {
844849
initializeMatcher(expect);
845-
const provider = getTestProvider();
846-
const account = getTestAccount(provider);
850+
let provider: ProviderInterface;
851+
let account: Account;
852+
853+
beforeAll(async () => {
854+
provider = await createTestProvider();
855+
account = getTestAccount(provider);
856+
});
847857

848858
test('declareIfNot', async () => {
849859
const declare = await account.declareIfNot({

__tests__/cairo1.test.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
CallData,
1010
Contract,
1111
ContractFactory,
12+
ProviderInterface,
1213
cairo,
1314
ec,
1415
hash,
@@ -18,11 +19,13 @@ import {
1819
stark,
1920
} from '../src';
2021
import {
21-
TEST_TX_VERSION,
22+
// TEST_TX_VERSION,
2223
contracts,
24+
createTestProvider,
2325
describeIfDevnet,
26+
devnetFeeTokenAddress,
2427
getTestAccount,
25-
getTestProvider,
28+
TEST_TX_VERSION,
2629
} from './config/fixtures';
2730
import { initializeMatcher } from './config/schema';
2831

@@ -32,14 +35,17 @@ const { starknetKeccak } = selector;
3235

3336
describeIfDevnet('Cairo 1 Devnet', () => {
3437
describe('API & Contract interactions', () => {
35-
const provider = getTestProvider();
36-
const account = getTestAccount(provider);
38+
let provider: ProviderInterface;
39+
let account: Account;
3740
let dd: DeclareDeployUDCResponse;
3841
let cairo1Contract: Contract;
3942
let onlyConstructorContract: Contract;
4043
initializeMatcher(expect);
4144

4245
beforeAll(async () => {
46+
provider = await createTestProvider();
47+
account = getTestAccount(provider);
48+
4349
dd = await account.declareAndDeploy({
4450
contract: contracts.HelloSierra.sierra,
4551
casm: contracts.HelloSierra.casm,
@@ -509,11 +515,14 @@ describeIfDevnet('Cairo 1 Devnet', () => {
509515
});
510516

511517
describe('Cairo1 Account contract', () => {
512-
const provider = getTestProvider();
513-
const account = getTestAccount(provider);
518+
let provider: ProviderInterface;
519+
let account: Account;
514520
let accountC1: Account;
515521

516522
beforeAll(async () => {
523+
provider = await createTestProvider();
524+
account = getTestAccount(provider);
525+
517526
// Deploy Cairo 1 Account
518527
const priKey = stark.randomAddress();
519528
const pubKey = ec.starkCurve.getStarkKey(priKey);
@@ -537,10 +546,9 @@ describeIfDevnet('Cairo 1 Devnet', () => {
537546
calldata,
538547
0
539548
);
540-
const devnetERC20Address =
541-
'0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7';
549+
542550
const { transaction_hash } = await account.execute({
543-
contractAddress: devnetERC20Address,
551+
contractAddress: devnetFeeTokenAddress,
544552
entrypoint: 'transfer',
545553
calldata: {
546554
recipient: toBeAccountAddress,

__tests__/cairo1v2.test.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
CompiledSierra,
1515
Contract,
1616
DeclareDeployUDCResponse,
17+
ProviderInterface,
1718
RawArgsArray,
1819
RawArgsObject,
1920
cairo,
@@ -27,16 +28,28 @@ import {
2728
stark,
2829
types,
2930
} from '../src';
30-
import { TEST_TX_VERSION, contracts, getTestAccount, getTestProvider } from './config/fixtures';
31+
import {
32+
contracts,
33+
createTestProvider,
34+
devnetFeeTokenAddress,
35+
getTestAccount,
36+
TEST_TX_VERSION,
37+
} from './config/fixtures';
3138
import { initializeMatcher } from './config/schema';
3239

3340
const { uint256, tuple, isCairo1Abi } = cairo;
3441
const { toHex } = num;
3542
const { starknetKeccak } = selector;
3643

3744
describe('Cairo 1', () => {
38-
const provider = getTestProvider();
39-
const account = getTestAccount(provider);
45+
let provider: ProviderInterface;
46+
let account: Account;
47+
48+
beforeAll(async () => {
49+
provider = await createTestProvider();
50+
account = getTestAccount(provider);
51+
});
52+
4053
describe('API & Contract interactions', () => {
4154
let dd: DeclareDeployUDCResponse;
4255
let cairo1Contract: Contract;
@@ -750,7 +763,7 @@ describe('Cairo 1', () => {
750763
});
751764
});
752765

753-
describe('Cairo1 Account contract', () => {
766+
describe('Cairo1 Account contract - RPC 0.7 V2', () => {
754767
let accountC1: Account;
755768

756769
beforeAll(async () => {
@@ -777,10 +790,9 @@ describe('Cairo 1', () => {
777790
calldata,
778791
0
779792
);
780-
const devnetERC20Address =
781-
'0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7';
793+
782794
const { transaction_hash } = await account.execute({
783-
contractAddress: devnetERC20Address,
795+
contractAddress: devnetFeeTokenAddress,
784796
entrypoint: 'transfer',
785797
calldata: {
786798
recipient: toBeAccountAddress,

__tests__/cairo1v2_typed.test.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
CompiledSierra,
1414
Contract,
1515
DeclareDeployUDCResponse,
16+
ProviderInterface,
1617
RawArgsArray,
1718
RawArgsObject,
1819
TypedContractV2,
@@ -29,16 +30,28 @@ import {
2930
import { hexToDecimalString } from '../src/utils/num';
3031
import { encodeShortString } from '../src/utils/shortString';
3132
import { isString } from '../src/utils/typed';
32-
import { TEST_TX_VERSION, contracts, getTestAccount, getTestProvider } from './config/fixtures';
33+
import {
34+
contracts,
35+
createTestProvider,
36+
devnetFeeTokenAddress,
37+
getTestAccount,
38+
TEST_TX_VERSION,
39+
} from './config/fixtures';
3340
import { initializeMatcher } from './config/schema';
3441

3542
const { uint256, tuple, isCairo1Abi } = cairo;
3643
const { toHex } = num;
3744
const { starknetKeccak } = selector;
3845

3946
describe('Cairo 1', () => {
40-
const provider = getTestProvider();
41-
const account = getTestAccount(provider);
47+
let provider: ProviderInterface;
48+
let account: Account;
49+
50+
beforeAll(async () => {
51+
provider = await createTestProvider();
52+
account = getTestAccount(provider);
53+
});
54+
4255
describe('API & Contract interactions', () => {
4356
let dd: DeclareDeployUDCResponse;
4457
let cairo1Contract: TypedContractV2<typeof tAbi>;
@@ -714,10 +727,9 @@ describe('Cairo 1', () => {
714727
calldata,
715728
0
716729
);
717-
const devnetERC20Address =
718-
'0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7';
730+
719731
const { transaction_hash } = await account.execute({
720-
contractAddress: devnetERC20Address,
732+
contractAddress: devnetFeeTokenAddress,
721733
entrypoint: 'transfer',
722734
calldata: {
723735
recipient: toBeAccountAddress,

__tests__/cairov24onward.test.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
Account,
23
BigNumberish,
34
CairoCustomEnum,
45
CairoOption,
@@ -9,18 +10,24 @@ import {
910
CairoUint512,
1011
CallData,
1112
Contract,
13+
ProviderInterface,
1214
byteArray,
1315
cairo,
1416
num,
1517
type Uint512,
1618
} from '../src';
1719
import { hexToDecimalString } from '../src/utils/num';
1820
import { encodeShortString } from '../src/utils/shortString';
19-
import { contracts, getTestAccount, getTestProvider } from './config/fixtures';
21+
import { contracts, createTestProvider, getTestAccount } from './config/fixtures';
2022

2123
describe('Cairo v2.4 onwards', () => {
22-
const provider = getTestProvider();
23-
const account = getTestAccount(provider);
24+
let provider: ProviderInterface;
25+
let account: Account;
26+
27+
beforeAll(async () => {
28+
provider = await createTestProvider();
29+
account = getTestAccount(provider);
30+
});
2431

2532
describe('cairo v2.4.0 new types', () => {
2633
let stringContract: Contract;

0 commit comments

Comments
 (0)