Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.2.0 add sepolia #87

Merged
merged 2 commits into from
Dec 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions __tests__/constants.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ describe('Constants', () => {
expect(COLLATERAL_ASSET_ID_BY_NETWORK_ID[NetworkId.ROPSTEN]).toBe(
'0x02c04d8b650f44092278a7cb1e1028c82025dff622db96c934b611b84cc8de5a',
);
expect(COLLATERAL_ASSET_ID_BY_NETWORK_ID[NetworkId.SEPOLIA]).toBe(
'0x01e70c509c4c6bfafe8b73d2fc1819444b2c0b435d4b82c0f24addff9565ce25',
);
});

it('generates the expected synthetic asset IDs', () => {
Expand Down
12 changes: 6 additions & 6 deletions __tests__/helpers/assets.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@ describe('assets helpers', () => {
side: StarkwareOrderSide.SELL,
humanSize: '250.0000000001',
humanPrice: '1.23456789',
}, NetworkId.GOERLI),
}, NetworkId.SEPOLIA),
).toStrictEqual({
quantumsAmountSynthetic: '2500000000001',
quantumsAmountCollateral: '308641972',
assetIdSynthetic: SYNTHETIC_ASSET_ID_MAP[DydxAsset.BTC],
assetIdCollateral: COLLATERAL_ASSET_ID_BY_NETWORK_ID[NetworkId.GOERLI],
assetIdCollateral: COLLATERAL_ASSET_ID_BY_NETWORK_ID[NetworkId.SEPOLIA],
isBuyingSynthetic: false,
});
});
Expand All @@ -68,12 +68,12 @@ describe('assets helpers', () => {
side: StarkwareOrderSide.SELL,
humanSize: '250.0000000001',
humanQuoteAmount: '308.641972',
}, NetworkId.GOERLI),
}, NetworkId.SEPOLIA),
).toStrictEqual({
quantumsAmountSynthetic: '2500000000001',
quantumsAmountCollateral: '308641972',
assetIdSynthetic: SYNTHETIC_ASSET_ID_MAP[DydxAsset.BTC],
assetIdCollateral: COLLATERAL_ASSET_ID_BY_NETWORK_ID[NetworkId.GOERLI],
assetIdCollateral: COLLATERAL_ASSET_ID_BY_NETWORK_ID[NetworkId.SEPOLIA],
isBuyingSynthetic: false,
});
});
Expand All @@ -85,7 +85,7 @@ describe('assets helpers', () => {
side: StarkwareOrderSide.SELL,
humanSize: '250.00000000001',
humanPrice: '1.23456789',
}, NetworkId.GOERLI);
}, NetworkId.SEPOLIA);
}).toThrow('not a multiple of the quantum size');
});

Expand All @@ -96,7 +96,7 @@ describe('assets helpers', () => {
side: StarkwareOrderSide.SELL,
humanSize: '250.0000000001',
humanQuoteAmount: '308.6419721',
}, NetworkId.GOERLI);
}, NetworkId.SEPOLIA);
}).toThrow('not a multiple of the quantum size');
});
});
Expand Down
20 changes: 10 additions & 10 deletions __tests__/signable/conditional-transfer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,30 +33,30 @@ const mockParams: ConditionalTransferParams = {
fact: '0x12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff12ff',
};
const mockSignature = (
'01b437ac15bb89417edcfb2d304c3efad6256def3cc24e60c4980a88d08cb953' +
'045df9fbe4a4895409e1011c60be439d65c1a2637013b74a19cb5b8ab62db434'
'030044e03ab5efbaeaa43f472aa637bca8542835da60e8dcda8d145a619546d2' +
'03c7f9007fd6b1963de156bfadf6e90fe4fe4b29674013b7de32f61527c70f00'
);

describe('SignableConditionalTransfer', () => {

describe('verifySignature()', () => {

it('returns true for a valid signature', async () => {
const result = await SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.GOERLI)
const result = await SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.SEPOLIA)
.verifySignature(mockSignature, mockKeyPair.publicKey);
expect(result).toBe(true);
});

it('returns false for an invalid signature', async () => {
// Mutate a single character in r.
const badSignatureR: string = mutateHexStringAt(mockSignature, 1);
const result1 = await SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.GOERLI)
const result1 = await SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.SEPOLIA)
.verifySignature(badSignatureR, mockKeyPair.publicKey);
expect(result1).toBe(false);

// Mutate a single character in s.
const badSignatureS: string = mutateHexStringAt(mockSignature, 65);
const result2 = await SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.GOERLI)
const result2 = await SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.SEPOLIA)
.verifySignature(badSignatureS, mockKeyPair.publicKey);
expect(result2).toBe(false);
});
Expand All @@ -67,7 +67,7 @@ describe('SignableConditionalTransfer', () => {
it('signs a transfer', async () => {
const signature = await SignableConditionalTransfer.fromTransfer(
mockParams,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).sign(mockKeyPair.privateKey);
expect(signature).toEqual(mockSignature);
});
Expand All @@ -77,7 +77,7 @@ describe('SignableConditionalTransfer', () => {
...mockParams,
clientId: `${mockParams.clientId}!`,
};
const signature = await SignableConditionalTransfer.fromTransfer(transfer, NetworkId.GOERLI)
const signature = await SignableConditionalTransfer.fromTransfer(transfer, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).not.toEqual(mockSignature);
});
Expand All @@ -87,7 +87,7 @@ describe('SignableConditionalTransfer', () => {
...mockParams,
receiverPositionId: (Number.parseInt(mockParams.receiverPositionId, 10) + 1).toString(),
};
const signature = await SignableConditionalTransfer.fromTransfer(transfer, NetworkId.GOERLI)
const signature = await SignableConditionalTransfer.fromTransfer(transfer, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).not.toEqual(mockSignature);
});
Expand All @@ -97,7 +97,7 @@ describe('SignableConditionalTransfer', () => {

it('converts human amounts to quantum amounts and converts expiration to hours', () => {
const starkwareConditionalTransfer: StarkwareConditionalTransfer = (
SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.GOERLI).toStarkware()
SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.SEPOLIA).toStarkware()
);
expect(starkwareConditionalTransfer.quantumsAmount).toEqual('49478023');
expect(starkwareConditionalTransfer.expirationEpochHours).toBe(444533);
Expand All @@ -108,7 +108,7 @@ describe('SignableConditionalTransfer', () => {
// Repeat some number of times.
await Promise.all(_.range(3).map(async () => {
const keyPair: KeyPair = generateKeyPairUnsafe();
const signable = SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.GOERLI);
const signable = SignableConditionalTransfer.fromTransfer(mockParams, NetworkId.SEPOLIA);
const signature = await signable.sign(keyPair.privateKey);

// Expect to be valid when verifying with the right public key.
Expand Down
24 changes: 12 additions & 12 deletions __tests__/signable/hashes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,15 @@ describe('Pedersen hashes', () => {
);
await (SignableConditionalTransfer as typeof SignableConditionalTransferOrig).fromTransfer(
mockConditionalTransfer,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(5);

// Expect fewer hashes the second time.
mockPedersen.resetHistory();
await (SignableConditionalTransfer as typeof SignableConditionalTransferOrig).fromTransfer(
mockConditionalTransfer,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(4);
});
Expand All @@ -113,15 +113,15 @@ describe('Pedersen hashes', () => {
const { SignableOrder } = proxyquire('../../src/signable/order', mocks);
await (SignableOrder as typeof SignableOrderOrig).fromOrder(
mockOrder,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(4);

// Expect fewer hashes the second time.
mockPedersen.resetHistory();
await (SignableOrder as typeof SignableOrderOrig).fromOrder(
mockOrder,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(2);
});
Expand All @@ -132,15 +132,15 @@ describe('Pedersen hashes', () => {
);
await (SignableTransfer as typeof SignableTransferOrig).fromTransfer(
mockTransfer,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(4);

// Expect fewer hashes the second time.
mockPedersen.resetHistory();
await (SignableTransfer as typeof SignableTransferOrig).fromTransfer(
mockTransfer,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(3);
});
Expand All @@ -149,7 +149,7 @@ describe('Pedersen hashes', () => {
const { SignableWithdrawal } = proxyquire('../../src/signable/withdrawal', mocks);
await (SignableWithdrawal as typeof SignableWithdrawalOrig).fromWithdrawal(
mockWithdrawal,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(1);
});
Expand All @@ -158,7 +158,7 @@ describe('Pedersen hashes', () => {
describe.skip('after pre-computing hashes', () => {

beforeEach(async () => {
await proxyquiredHashes.preComputeHashes(NetworkId.GOERLI);
await proxyquiredHashes.preComputeHashes(NetworkId.SEPOLIA);
mockPedersen.resetHistory();
});

Expand All @@ -168,7 +168,7 @@ describe('Pedersen hashes', () => {
);
await (SignableConditionalTransfer as typeof SignableConditionalTransferOrig).fromTransfer(
mockConditionalTransfer,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(4);
});
Expand All @@ -177,7 +177,7 @@ describe('Pedersen hashes', () => {
const { SignableOrder } = proxyquire('../../src/signable/order', mocks);
await (SignableOrder as typeof SignableOrderOrig).fromOrder(
mockOrder,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen!.callCount).toBe(2);
});
Expand All @@ -188,7 +188,7 @@ describe('Pedersen hashes', () => {
);
await (SignableTransfer as typeof SignableTransferOrig).fromTransfer(
mockTransfer,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(3);
});
Expand All @@ -197,7 +197,7 @@ describe('Pedersen hashes', () => {
const { SignableWithdrawal } = proxyquire('../../src/signable/withdrawal', mocks);
await (SignableWithdrawal as typeof SignableWithdrawalOrig).fromWithdrawal(
mockWithdrawal,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
).getHash();
expect(mockPedersen.callCount).toBe(1);
});
Expand Down
20 changes: 10 additions & 10 deletions __tests__/signable/oracle-price.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('SignableOraclePrice', () => {

it('returns true for a valid signature', async () => {
const result = await SignableOraclePrice
.fromPriceWithMarket(mockOraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(mockOraclePrice, NetworkId.SEPOLIA)
.verifySignature(mockSignature, mockKeyPair.publicKey);
expect(result).toBe(true);
});
Expand All @@ -50,7 +50,7 @@ describe('SignableOraclePrice', () => {
await Promise.all(_.range(1, 4).map(async (i) => {
const badSignature: string = mutateHexStringAt(mockSignature, i);
const result = await SignableOraclePrice
.fromPriceWithMarket(mockOraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(mockOraclePrice, NetworkId.SEPOLIA)
.verifySignature(badSignature, mockKeyPair.publicKey);
expect(result).toBe(false);
}));
Expand All @@ -59,7 +59,7 @@ describe('SignableOraclePrice', () => {
await Promise.all(_.range(1, 4).map(async (i) => {
const badSignature: string = mutateHexStringAt(mockSignature, i + 64);
const result = await SignableOraclePrice
.fromPriceWithMarket(mockOraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(mockOraclePrice, NetworkId.SEPOLIA)
.verifySignature(badSignature, mockKeyPair.publicKey);
expect(result).toBe(false);
}));
Expand All @@ -70,7 +70,7 @@ describe('SignableOraclePrice', () => {

it('signs an oracle price, with a market', async () => {
const signature = await SignableOraclePrice
.fromPriceWithMarket(mockOraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(mockOraclePrice, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).toEqual(mockSignature);
});
Expand All @@ -80,7 +80,7 @@ describe('SignableOraclePrice', () => {
.fromPriceWithAssetName({
...mockOraclePrice,
assetName: getSignedAssetName(mockOraclePrice.market),
}, NetworkId.GOERLI)
}, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).toEqual(mockSignature);
});
Expand All @@ -91,7 +91,7 @@ describe('SignableOraclePrice', () => {
market: DydxMarket.ETH_USD,
};
const signature = await SignableOraclePrice
.fromPriceWithMarket(oraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(oraclePrice, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).not.toEqual(mockSignature);
});
Expand All @@ -102,7 +102,7 @@ describe('SignableOraclePrice', () => {
oracleName: 'Other',
};
const signature = await SignableOraclePrice
.fromPriceWithMarket(oraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(oraclePrice, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).not.toEqual(mockSignature);
});
Expand All @@ -113,7 +113,7 @@ describe('SignableOraclePrice', () => {
isoTimestamp: new Date().toISOString(),
};
const signature = await SignableOraclePrice
.fromPriceWithMarket(oraclePrice, NetworkId.GOERLI)
.fromPriceWithMarket(oraclePrice, NetworkId.SEPOLIA)
.sign(mockKeyPair.privateKey);
expect(signature).not.toEqual(mockSignature);
});
Expand All @@ -124,7 +124,7 @@ describe('SignableOraclePrice', () => {
oracleName: 'Other2',
};
expect(
() => SignableOraclePrice.fromPriceWithMarket(oraclePrice, NetworkId.GOERLI),
() => SignableOraclePrice.fromPriceWithMarket(oraclePrice, NetworkId.SEPOLIA),
).toThrow('Input does not fit in numBits=40 bits');
});
});
Expand All @@ -135,7 +135,7 @@ describe('SignableOraclePrice', () => {
const keyPair: KeyPair = generateKeyPairUnsafe();
const signableOraclePrice = SignableOraclePrice.fromPriceWithMarket(
mockOraclePrice,
NetworkId.GOERLI,
NetworkId.SEPOLIA,
);
const signature = await signableOraclePrice.sign(keyPair.privateKey);

Expand Down
Loading