Skip to content

Commit

Permalink
v1.2.0 add sepolia (#87)
Browse files Browse the repository at this point in the history
* v1.2.0 add sepolia

* fix test
  • Loading branch information
jiajames committed Dec 6, 2023
1 parent a5abed1 commit cd3456b
Show file tree
Hide file tree
Showing 12 changed files with 89 additions and 84 deletions.
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

0 comments on commit cd3456b

Please sign in to comment.