Socket
Socket
Sign inDemoInstall

starknet

Package Overview
Dependencies
Maintainers
1
Versions
220
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

starknet - npm Package Compare versions

Comparing version 1.7.0 to 2.0.0

__mocks__/Readme.md

12

__tests__/account.test.ts

@@ -84,3 +84,3 @@ import fs from 'fs';

test('read nonce', async () => {
const { nonce } = await wallet.call('get_current_nonce');
const { nonce } = await wallet.call('get_nonce');

@@ -97,6 +97,6 @@ expect(number.toBN(nonce as string).toString()).toStrictEqual(number.toBN(0).toString());

test('execute by wallet owner', async () => {
const { nonce } = await wallet.call('get_current_nonce');
const { nonce } = await wallet.call('get_nonce');
const msgHash = encode.addHexPrefix(
hash.hashMessage(
'0', // needs to be walletAddress once it's possible to retrieve address(self) in cairo
wallet.connectedTo,
erc20Address,

@@ -152,3 +152,3 @@ stark.getSelectorFromName('transfer'),

number
.toBN('2221651675559331189881349481637314109810712322791057846116415219218634672652')
.toBN('2154230509011102177917341711834485670139815171447919056633262592518907948680')
.toString()

@@ -159,7 +159,7 @@ );

expect(r.toString()).toBe(
'2220702546012141050051149396887481489960265709213083422658245644097500180866'
'706800951915233622090196542158919402159816118214143837213294331713137614072'
);
expect(s.toString()).toBe(
'1542316446019190634489932498001415389924394685441251344076931639569381539117'
'1857147121895075123389037565321926580259282654271568123966453051614350474888'
);
});

@@ -55,3 +55,3 @@ import fs from 'fs';

defaultProvider.getTransactionStatus(
'0x2086ff26645fb0e31a3e252302f3cb1e7612c60389102e5473dfc89758a3aa9'
'0x774f7856b1ce6d5ce023a18cd5a06ab67e3a6d81c7bfcd01f99f32243c2d2ef'
)

@@ -63,3 +63,3 @@ ).resolves.not.toThrow();

defaultProvider.getTransaction(
'0x2086ff26645fb0e31a3e252302f3cb1e7612c60389102e5473dfc89758a3aa9'
'0x774f7856b1ce6d5ce023a18cd5a06ab67e3a6d81c7bfcd01f99f32243c2d2ef'
)

@@ -71,6 +71,6 @@ ).resolves.not.toThrow();

defaultProvider.callContract({
contract_address: '0x58bceda58a83a5a100117ddc893234bad9c84a6833c2008f0f1ca90150149af',
contract_address: '0x9ff64f4ab0e1fe88df4465ade98d1ea99d5732761c39279b8e1374fa943e9b',
entry_point_selector: stark.getSelectorFromName('balance_of'),
calldata: compileCalldata({
user: '0x58bceda58a83a5a100117ddc893234bad9c84a6833c2008f0f1ca90150149af',
user: '0x9ff64f4ab0e1fe88df4465ade98d1ea99d5732761c39279b8e1374fa943e9b',
}),

@@ -77,0 +77,0 @@ })

@@ -71,3 +71,3 @@ import fs from 'fs';

contract_address: signer.address,
entry_point_selector: stark.getSelectorFromName('get_current_nonce'),
entry_point_selector: stark.getSelectorFromName('get_nonce'),
});

@@ -74,0 +74,0 @@ const nonce = result[0];

@@ -23,3 +23,3 @@ import { getKeyPair, getStarkKey, sign } from '../../src/utils/ellipticCurve';

expect(hashCalldata(array)).toBe(
'0x1439c58e1c389a2ac51f8462ecc0a4ec7f812be1c04e3b82ce2af1c2cf959ef'
'0x66bd4335902683054d08a0572747ea78ebd9e531536fb43125424ca9f902084'
);

@@ -29,3 +29,3 @@ expect(array).toStrictEqual(['1', '2', '3', '4']);

expect(hashCalldata(['1', '2'])).toBe(
'0x2ab889bd35e684623df9b4ea4a4a1f6d9e0ef39b67c1293b8a89dd17e351235'
'0x501a3a8e6cd4f5241c639c74052aaa34557aafa84dd4ba983d6443c590ab7df'
);

@@ -43,11 +43,11 @@ });

);
expect(hashMsg).toBe('0xf7ec4a68876819eed838be83b5d5dc337081f4a5fb8e421f3d9bdef7c69e9b');
expect(hashMsg).toBe('0x7f15c38ea577a26f4f553282fcfe4f1feeb8ecfaad8f221ae41abf8224cbddd');
const keyPair = getKeyPair(privateKey);
const { r, s } = sign(keyPair, removeHexPrefix(hashMsg));
expect(r.toString()).toStrictEqual(
toBN('2699852629692218907583414128365108566181098618321049245303767746418549764831').toString()
toBN('2458502865976494910213617956670505342647705497324144349552978333078363662855').toString()
);
expect(s.toString()).toStrictEqual(
toBN('2362979021721299440845279407227912881357338080403308888611869245024056250189').toString()
toBN('3439514492576562277095748549117516048613512930236865921315982886313695689433').toString()
);
});
import fs from 'fs';
import { constants, json, number, stark } from '../../src';
import { constants, hash, json, number, stark } from '../../src';

@@ -64,3 +64,3 @@ const { IS_BROWSER } = constants;

test('should return valid hash for empty array', () => {
const res = stark.computeHashOnElements([]);
const res = hash.computeHashOnElements([]);
expect(res).toMatchInlineSnapshot(

@@ -71,3 +71,3 @@ `"0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804"`

test('should return valid hash for valid array', () => {
const res = stark.computeHashOnElements([
const res = hash.computeHashOnElements([
number.toBN(123782376),

@@ -74,0 +74,0 @@ number.toBN(213984),

@@ -0,1 +1,11 @@

# [2.0.0](https://github.com/seanjameshan/starknet.js/compare/v1.7.0...v2.0.0) (2021-11-18)
### Features
- alpha 4 ([f12db5a](https://github.com/seanjameshan/starknet.js/commit/f12db5a9d3d00902792a292e5258263edb7ac7a2))
### BREAKING CHANGES
- implements alpha 4
# [1.7.0](https://github.com/seanjameshan/starknet.js/compare/v1.6.0...v1.7.0) (2021-11-17)

@@ -2,0 +12,0 @@

@@ -80,3 +80,3 @@ "use strict";

default:
return 'https://alpha3.starknet.io';
return 'https://alpha4.starknet.io';
}

@@ -300,5 +300,5 @@ };

Provider.prototype.waitForTx = function (txHash, retryInterval) {
if (retryInterval === void 0) { retryInterval = 2000; }
if (retryInterval === void 0) { retryInterval = 5000; }
return __awaiter(this, void 0, void 0, function () {
var onchain, res;
var onchain, firstRun, res;
return __generator(this, function (_a) {

@@ -308,2 +308,3 @@ switch (_a.label) {

onchain = false;
firstRun = true;
_a.label = 1;

@@ -326,5 +327,6 @@ case 1:

}
else if (res.tx_status === 'NOT_RECEIVED') {
else if (res.tx_status === 'NOT_RECEIVED' && !firstRun) {
throw Error('NOT_RECEIVED');
}
firstRun = false;
return [3 /*break*/, 1];

@@ -331,0 +333,0 @@ case 4: return [2 /*return*/];

@@ -117,3 +117,3 @@ "use strict";

contract_address: this.address,
entry_point_selector: (0, stark_1.getSelectorFromName)('get_current_nonce'),
entry_point_selector: (0, stark_1.getSelectorFromName)('get_nonce'),
})];

@@ -124,4 +124,3 @@ case 1:

calldataDecimal = (tx.calldata || []).map(function (x) { return (0, number_1.toBN)(x).toString(); });
msgHash = (0, encode_1.addHexPrefix)((0, hash_1.hashMessage)('0', // needs to be walletAddress once it's possible to retrieve address(self) in cairo
tx.contract_address, tx.entry_point_selector, calldataDecimal, nonceBn.toString()));
msgHash = (0, encode_1.addHexPrefix)((0, hash_1.hashMessage)(this.address, tx.contract_address, tx.entry_point_selector, calldataDecimal, nonceBn.toString()));
_a = (0, ellipticCurve_1.sign)(this.keyPair, msgHash), r = _a.r, s = _a.s;

@@ -128,0 +127,0 @@ return [2 /*return*/, _super.prototype.addTransaction.call(this, {

@@ -98,3 +98,3 @@ import type { ec as EC } from 'elliptic';

transaction_hash: string;
address: string;
address?: string;
};

@@ -12,3 +12,4 @@ import BN from 'bn.js';

export declare function pedersen(input: [BigNumberish, BigNumberish]): string;
export declare function computeHashOnElements(data: BigNumberish[]): string;
export declare function hashCalldata(calldata: string[]): string;
export declare function hashMessage(account: string, to: string, selector: string, calldata: string[], nonce: string): string;

@@ -31,3 +31,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.hashMessage = exports.hashCalldata = exports.pedersen = exports.starknetKeccak = void 0;
exports.hashMessage = exports.hashCalldata = exports.computeHashOnElements = exports.pedersen = exports.starknetKeccak = void 0;
var keccak_1 = require("ethereum-cryptography/keccak");

@@ -73,22 +73,14 @@ var minimalistic_assert_1 = __importDefault(require("minimalistic-assert"));

exports.pedersen = pedersen;
function computeHashOnElements(data) {
return __spreadArray(__spreadArray([], __read(data), false), [data.length], false).reduce(function (x, y) { return pedersen([x, y]); }, 0).toString();
}
exports.computeHashOnElements = computeHashOnElements;
function hashCalldata(calldata) {
var calldataCopy = __spreadArray([], __read(calldata), false);
if (calldataCopy.length === 0) {
return '0';
}
if (calldataCopy.length === 1) {
return calldataCopy[0];
}
// calldata element will always be there as it was checked by an if statement before (!)
var calldataEl = calldataCopy.shift();
return pedersen([hashCalldata(calldataCopy), calldataEl]);
return computeHashOnElements(calldata);
}
exports.hashCalldata = hashCalldata;
function hashMessage(account, to, selector, calldata, nonce) {
var hash0 = pedersen([account, to]);
var hash1 = pedersen([hash0, selector]);
var calldataHash = hashCalldata(calldata);
var hash2 = pedersen([hash1, calldataHash]);
return pedersen([hash2, nonce]);
return computeHashOnElements([account, to, selector, calldataHash, nonce]);
}
exports.hashMessage = hashMessage;

@@ -22,2 +22,1 @@ import { CompressedProgram, Program } from '../types';

export declare function formatSignature(sig?: [BigNumberish, BigNumberish]): [string, string] | [];
export declare function computeHashOnElements(data: BigNumberish[]): BigNumberish;
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeHashOnElements = exports.formatSignature = exports.makeAddress = exports.randomAddress = exports.getSelectorFromName = exports.compressProgram = void 0;
exports.formatSignature = exports.makeAddress = exports.randomAddress = exports.getSelectorFromName = exports.compressProgram = void 0;
var pako_1 = require("pako");

@@ -80,5 +55,1 @@ var ellipticCurve_1 = require("./ellipticCurve");

exports.formatSignature = formatSignature;
function computeHashOnElements(data) {
return __spreadArray(__spreadArray([], __read(data), false), [data.length], false).reduce(function (x, y) { return (0, hash_1.pedersen)([x, y]); }, 0);
}
exports.computeHashOnElements = computeHashOnElements;
{
"name": "starknet",
"version": "1.7.0",
"version": "2.0.0",
"description": "JavaScript library for StarkNet",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -182,3 +182,3 @@ 'use strict';

default:
return 'https://alpha3.starknet.io';
return 'https://alpha4.starknet.io';
}

@@ -488,6 +488,6 @@ };

if (retryInterval === void 0) {
retryInterval = 2000;
retryInterval = 5000;
}
return __awaiter(this, void 0, void 0, function () {
var onchain, res;
var onchain, firstRun, res;
return __generator(this, function (_a) {

@@ -497,2 +497,3 @@ switch (_a.label) {

onchain = false;
firstRun = true;
_a.label = 1;

@@ -513,5 +514,6 @@ case 1:

throw Error('REJECTED');
} else if (res.tx_status === 'NOT_RECEIVED') {
} else if (res.tx_status === 'NOT_RECEIVED' && !firstRun) {
throw Error('NOT_RECEIVED');
}
firstRun = false;
return [3 /*break*/, 1];

@@ -518,0 +520,0 @@ case 4:

@@ -236,3 +236,3 @@ 'use strict';

contract_address: this.address,
entry_point_selector: (0, stark_1.getSelectorFromName)('get_current_nonce'),
entry_point_selector: (0, stark_1.getSelectorFromName)('get_nonce'),
}),

@@ -248,3 +248,3 @@ ];

(0, hash_1.hashMessage)(
'0', // needs to be walletAddress once it's possible to retrieve address(self) in cairo
this.address,
tx.contract_address,

@@ -251,0 +251,0 @@ tx.entry_point_selector,

@@ -55,3 +55,3 @@ import axios from 'axios';

default:
return 'https://alpha3.starknet.io';
return 'https://alpha4.starknet.io';
}

@@ -261,4 +261,5 @@ }

public async waitForTx(txHash: BigNumberish, retryInterval: number = 2000) {
public async waitForTx(txHash: BigNumberish, retryInterval: number = 5000) {
let onchain = false;
let firstRun = true;
while (!onchain) {

@@ -274,7 +275,8 @@ // eslint-disable-next-line no-await-in-loop

throw Error('REJECTED');
} else if (res.tx_status === 'NOT_RECEIVED') {
} else if (res.tx_status === 'NOT_RECEIVED' && !firstRun) {
throw Error('NOT_RECEIVED');
}
firstRun = false;
}
}
}

@@ -38,3 +38,3 @@ import assert from 'minimalistic-assert';

contract_address: this.address,
entry_point_selector: getSelectorFromName('get_current_nonce'),
entry_point_selector: getSelectorFromName('get_nonce'),
});

@@ -46,3 +46,3 @@ const nonceBn = toBN(result[0]);

hashMessage(
'0', // needs to be walletAddress once it's possible to retrieve address(self) in cairo
this.address,
tx.contract_address,

@@ -49,0 +49,0 @@ tx.entry_point_selector,

@@ -109,3 +109,3 @@ import type { ec as EC } from 'elliptic';

transaction_hash: string;
address: string;
address?: string;
};

@@ -46,13 +46,8 @@ import BN from 'bn.js';

export function computeHashOnElements(data: BigNumberish[]) {
return [...data, data.length].reduce((x, y) => pedersen([x, y]), 0).toString();
}
export function hashCalldata(calldata: string[]): string {
const calldataCopy = [...calldata];
if (calldataCopy.length === 0) {
return '0';
}
if (calldataCopy.length === 1) {
return calldataCopy[0];
}
// calldata element will always be there as it was checked by an if statement before (!)
const calldataEl = calldataCopy.shift()!;
return pedersen([hashCalldata(calldataCopy), calldataEl]);
return computeHashOnElements(calldata);
}

@@ -67,7 +62,4 @@

) {
const hash0 = pedersen([account, to]);
const hash1 = pedersen([hash0, selector]);
const calldataHash = hashCalldata(calldata);
const hash2 = pedersen([hash1, calldataHash]);
return pedersen([hash2, nonce]);
return computeHashOnElements([account, to, selector, calldataHash, nonce]);
}

@@ -6,3 +6,3 @@ import { gzip } from 'pako';

import { addHexPrefix, btoaUniversal } from './encode';
import { pedersen, starknetKeccak } from './hash';
import { starknetKeccak } from './hash';
import { stringify } from './json';

@@ -53,5 +53,1 @@ import { BigNumberish, toBN, toHex } from './number';

}
export function computeHashOnElements(data: BigNumberish[]) {
return [...data, data.length].reduce((x, y) => pedersen([x, y]), 0);
}

@@ -104,3 +104,3 @@ import type { ec as EC } from 'elliptic';

transaction_hash: string;
address: string;
address?: string;
};

@@ -13,2 +13,3 @@ import BN from 'bn.js';

export declare function pedersen(input: [BigNumberish, BigNumberish]): string;
export declare function computeHashOnElements(data: BigNumberish[]): string;
export declare function hashCalldata(calldata: string[]): string;

@@ -15,0 +16,0 @@ export declare function hashMessage(

@@ -42,3 +42,8 @@ 'use strict';

Object.defineProperty(exports, '__esModule', { value: true });
exports.hashMessage = exports.hashCalldata = exports.pedersen = exports.starknetKeccak = void 0;
exports.hashMessage =
exports.hashCalldata =
exports.computeHashOnElements =
exports.pedersen =
exports.starknetKeccak =
void 0;
var keccak_1 = require('ethereum-cryptography/keccak');

@@ -90,22 +95,18 @@ var minimalistic_assert_1 = __importDefault(require('minimalistic-assert'));

exports.pedersen = pedersen;
function computeHashOnElements(data) {
return __spreadArray(__spreadArray([], __read(data), false), [data.length], false)
.reduce(function (x, y) {
return pedersen([x, y]);
}, 0)
.toString();
}
exports.computeHashOnElements = computeHashOnElements;
function hashCalldata(calldata) {
var calldataCopy = __spreadArray([], __read(calldata), false);
if (calldataCopy.length === 0) {
return '0';
}
if (calldataCopy.length === 1) {
return calldataCopy[0];
}
// calldata element will always be there as it was checked by an if statement before (!)
var calldataEl = calldataCopy.shift();
return pedersen([hashCalldata(calldataCopy), calldataEl]);
return computeHashOnElements(calldata);
}
exports.hashCalldata = hashCalldata;
function hashMessage(account, to, selector, calldata, nonce) {
var hash0 = pedersen([account, to]);
var hash1 = pedersen([hash0, selector]);
var calldataHash = hashCalldata(calldata);
var hash2 = pedersen([hash1, calldataHash]);
return pedersen([hash2, nonce]);
return computeHashOnElements([account, to, selector, calldataHash, nonce]);
}
exports.hashMessage = hashMessage;

@@ -22,2 +22,1 @@ import { CompressedProgram, Program } from '../types';

export declare function formatSignature(sig?: [BigNumberish, BigNumberish]): [string, string] | [];
export declare function computeHashOnElements(data: BigNumberish[]): BigNumberish;
'use strict';
var __read =
(this && this.__read) ||
function (o, n) {
var m = typeof Symbol === 'function' && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o),
r,
ar = [],
e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
} catch (error) {
e = { error: error };
} finally {
try {
if (r && !r.done && (m = i['return'])) m.call(i);
} finally {
if (e) throw e.error;
}
}
return ar;
};
var __spreadArray =
(this && this.__spreadArray) ||
function (to, from, pack) {
if (pack || arguments.length === 2)
for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, '__esModule', { value: true });
exports.computeHashOnElements =
exports.formatSignature =
exports.formatSignature =
exports.makeAddress =

@@ -100,10 +65,1 @@ exports.randomAddress =

exports.formatSignature = formatSignature;
function computeHashOnElements(data) {
return __spreadArray(__spreadArray([], __read(data), false), [data.length], false).reduce(
function (x, y) {
return (0, hash_1.pedersen)([x, y]);
},
0
);
}
exports.computeHashOnElements = computeHashOnElements;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc