Skip to content

Commit

Permalink
fix: review
Browse files Browse the repository at this point in the history
  • Loading branch information
janek26 committed Apr 20, 2022
1 parent 3394f11 commit 49b04e2
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 33 deletions.
10 changes: 3 additions & 7 deletions __tests__/accountContract.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
getSelectorFromName,
transactionVersion,
} from '../src/utils/hash';
import { fromCallsToExecuteCalldata } from '../src/utils/transaction';
import { fromCallsToExecuteCalldataWithNonce } from '../src/utils/transaction';
import { compiledArgentAccount, compiledErc20 } from './fixtures';

describe('getStarkAccountFromPrivateKey()', () => {
Expand Down Expand Up @@ -36,14 +36,10 @@ test('build tx', async () => {

const selector = hash.getSelectorFromName('transfer');

expect(selector).toBe(
number.toHex(
number.toBN('232670485425082704932579856502088130646006032362877466777181098476241604910')
)
);
expect(selector).toMatchInlineSnapshot();

const calls = [{ contractAddress: '1', entrypoint: 'transfer', calldata: ['6', '7'] }];
const calldata = [...fromCallsToExecuteCalldata(calls), '0'];
const calldata = fromCallsToExecuteCalldataWithNonce(calls, 0);

const msgHash = calculcateTransactionHash(
address,
Expand Down
4 changes: 2 additions & 2 deletions __tests__/utils/ellipticalCurve.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
transactionVersion,
} from '../../src/utils/hash';
import { toBN, toHex } from '../../src/utils/number';
import { fromCallsToExecuteCalldata } from '../../src/utils/transaction';
import { fromCallsToExecuteCalldataWithNonce } from '../../src/utils/transaction';

test('getKeyPair()', () => {
const privateKey = '0x019800ea6a9a73f94aee6a3d2edf018fc770443e90c7ba121e8303ec6b349279';
Expand Down Expand Up @@ -50,7 +50,7 @@ test('hashMessage()', () => {
];
const nonce = '3';
const maxFee = '0';
const calldata = [...fromCallsToExecuteCalldata(transactions), nonce];
const calldata = fromCallsToExecuteCalldataWithNonce(transactions, nonce);

const hashMsg = calculcateTransactionHash(
account,
Expand Down
4 changes: 2 additions & 2 deletions __tests__/utils/transactionHash.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { calculateTransactionHashCommon } from '../../src/utils/hash';

describe('calculateTransactionHashCommon()', () => {
test('should match most simple python output', () => {
const res = calculateTransactionHashCommon(
const result = calculateTransactionHashCommon(
TransactionHashPrefix.INVOKE,
'0x0',
'0x2a',
Expand All @@ -12,6 +12,6 @@ describe('calculateTransactionHashCommon()', () => {
'0x0',
StarknetChainId.TESTNET
);
expect(res).toBe('0x7d260744de9d8c55e7675a34512d1951a7b262c79e685d26599edd2948de959');
expect(result).toBe('0x7d260744de9d8c55e7675a34512d1951a7b262c79e685d26599edd2948de959');
});
});
33 changes: 17 additions & 16 deletions src/account/default.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
Call,
EstimateFeeResponse,
InvocationsDetails,
InvocationsSignerDetails,
InvokeFunctionTransaction,
KeyPair,
Signature,
Expand All @@ -25,7 +26,7 @@ import {
import { BigNumberish, bigNumberishArrayToDecimalStringArray, toBN, toHex } from '../utils/number';
import { encodeShortString } from '../utils/shortString';
import { compileCalldata, estimatedFeeToMaxFee } from '../utils/stark';
import { fromCallsToExecuteCalldata } from '../utils/transaction';
import { fromCallsToExecuteCalldataWithNonce } from '../utils/transaction';
import { TypedData, getMessageHash } from '../utils/typedData';
import { AccountInterface } from './interface';

Expand Down Expand Up @@ -60,15 +61,17 @@ export class Account extends Provider implements AccountInterface {
const nonce = providedNonce ?? (await this.getNonce());
const version = toBN(feeTransactionVersion);

const signature = await this.signer.signTransaction(transactions, {
const signerDetails: InvocationsSignerDetails = {
walletAddress: this.address,
nonce: toBN(nonce),
maxFee: ZERO,
version,
chainId: this.chainId,
});
};

const signature = await this.signer.signTransaction(transactions, signerDetails);

const calldata = [...fromCallsToExecuteCalldata(transactions), toBN(nonce).toString()];
const calldata = fromCallsToExecuteCalldataWithNonce(transactions, nonce);
return this.fetchEndpoint(
'estimate_fee',
{ blockIdentifier },
Expand Down Expand Up @@ -105,19 +108,17 @@ export class Account extends Provider implements AccountInterface {
maxFee = estimatedFeeToMaxFee(estimatedFee).toString();
}

const signature = await this.signer.signTransaction(
transactions,
{
walletAddress: this.address,
nonce,
maxFee,
version: toBN(transactionVersion),
chainId: this.chainId,
},
abis
);
const signerDetails: InvocationsSignerDetails = {
walletAddress: this.address,
nonce,
maxFee,
version: toBN(transactionVersion),
chainId: this.chainId,
};

const signature = await this.signer.signTransaction(transactions, signerDetails, abis);

const calldata = [...fromCallsToExecuteCalldata(transactions), nonce.toString()];
const calldata = fromCallsToExecuteCalldataWithNonce(transactions, nonce);
return this.fetchEndpoint('add_transaction', undefined, {
type: 'INVOKE_FUNCTION',
contract_address: this.address,
Expand Down
10 changes: 8 additions & 2 deletions src/provider/default.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,14 @@ export class Provider implements ProviderInterface {
}

protected static getChainIdFromBaseUrl(baseUrl: string): StarknetChainId {
if (baseUrl.includes('mainnet.starknet.io')) {
return StarknetChainId.MAINNET;
try {
const url = new URL(baseUrl);
if (url.host.includes('mainnet.starknet.io')) {
return StarknetChainId.MAINNET;
}
} catch {
// eslint-disable-next-line no-console
console.error(`Could not parse baseUrl: ${baseUrl}`);
}
return StarknetChainId.TESTNET;
}
Expand Down
4 changes: 2 additions & 2 deletions src/signer/default.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Abi, Invocation, InvocationsSignerDetails, KeyPair, Signature } from '../types';
import { getStarkKey, sign } from '../utils/ellipticCurve';
import { calculcateTransactionHash, getSelectorFromName } from '../utils/hash';
import { fromCallsToExecuteCalldata } from '../utils/transaction';
import { fromCallsToExecuteCalldataWithNonce } from '../utils/transaction';
import { TypedData, getMessageHash } from '../utils/typedData';
import { SignerInterface } from './interface';

Expand All @@ -26,7 +26,7 @@ export class Signer implements SignerInterface {
}
// now use abi to display decoded data somewhere, but as this signer is headless, we can't do that

const calldata = [...fromCallsToExecuteCalldata(transactions), transactionsDetail.nonce];
const calldata = fromCallsToExecuteCalldataWithNonce(transactions, transactionsDetail.nonce);

const msgHash = calculcateTransactionHash(
transactionsDetail.walletAddress,
Expand Down
4 changes: 2 additions & 2 deletions src/signer/ledger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import TransportWebHID from '@ledgerhq/hw-transport-webhid';
import { Invocation, InvocationsSignerDetails, Signature } from '../types';
import { addHexPrefix } from '../utils/encode';
import { calculcateTransactionHash, getSelectorFromName } from '../utils/hash';
import { fromCallsToExecuteCalldata } from '../utils/transaction';
import { fromCallsToExecuteCalldataWithNonce } from '../utils/transaction';
import { TypedData, getMessageHash } from '../utils/typedData';
import { SignerInterface } from './interface';

Expand Down Expand Up @@ -47,7 +47,7 @@ export class LedgerBlindSigner implements SignerInterface {
transactions: Invocation[],
transactionsDetail: InvocationsSignerDetails
): Promise<Signature> {
const calldata = [...fromCallsToExecuteCalldata(transactions), transactionsDetail.nonce];
const calldata = fromCallsToExecuteCalldataWithNonce(transactions, transactionsDetail.nonce);

const msgHash = calculcateTransactionHash(
transactionsDetail.walletAddress,
Expand Down
7 changes: 7 additions & 0 deletions src/utils/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,10 @@ export const fromCallsToExecuteCalldata = (calls: Call[]): string[] => {
...calldata,
];
};

export const fromCallsToExecuteCalldataWithNonce = (
calls: Call[],
nonce: BigNumberish
): string[] => {
return [...fromCallsToExecuteCalldata(calls), toBN(nonce).toString()];
};

0 comments on commit 49b04e2

Please sign in to comment.