feat: add block number to quote report data [TKR-314] (#448)

* feat: add blockNumber to MarketSideLiquidity response

* fix: return block number back in swap quote response

* chore: add asset-swapper changelog entry
This commit is contained in:
Kim Persson
2022-03-31 15:42:34 +02:00
committed by GitHub
parent c881723578
commit c9c7ac8559
10 changed files with 23 additions and 2 deletions

View File

@@ -9,6 +9,10 @@
{
"note": "Use neon-router in asset-swapper tests",
"pr": 453
},
{
"note": "Add sampler blocknumber to quote report data",
"pr": 448
}
]
},

View File

@@ -519,7 +519,7 @@ function createSwapQuote(
: calculateQuoteInfo(optimizedOrders, operation, assetFillAmount, gasPrice, gasSchedule, slippage);
// Put together the swap quote
const { makerTokenDecimals, takerTokenDecimals } = optimizerResult.marketSideLiquidity;
const { makerTokenDecimals, takerTokenDecimals, blockNumber } = optimizerResult.marketSideLiquidity;
const swapQuote = {
makerToken,
takerToken,
@@ -536,6 +536,7 @@ function createSwapQuote(
extendedQuoteReportSources,
isTwoHop,
priceComparisonsReport,
blockNumber,
};
if (operation === MarketOperation.Buy) {

View File

@@ -179,6 +179,7 @@ export interface SwapQuoteBase {
takerTokenDecimals: number;
takerAmountPerEth: BigNumber;
makerAmountPerEth: BigNumber;
blockNumber: number;
}
/**

View File

@@ -241,6 +241,7 @@ export class MarketOperationUtils {
dexQuotes,
},
isRfqSupported,
blockNumber: blockNumber.toNumber(),
};
}
@@ -269,6 +270,7 @@ export class MarketOperationUtils {
// Call the sampler contract.
const samplerPromise = this._sampler.executeAsync(
this._sampler.getBlockNumber(),
this._sampler.getTokenDecimals([makerToken, takerToken]),
// Get native order fillable amounts.
this._sampler.getLimitOrderFillableMakerAmounts(nativeOrders, this.contractAddresses.exchangeProxy),
@@ -302,6 +304,7 @@ export class MarketOperationUtils {
const [
[
blockNumber,
tokenDecimals,
orderFillableMakerAmounts,
ethToMakerAssetRate,
@@ -342,6 +345,7 @@ export class MarketOperationUtils {
dexQuotes,
},
isRfqSupported,
blockNumber: blockNumber.toNumber(),
};
}
@@ -372,6 +376,7 @@ export class MarketOperationUtils {
const feeSourceFilters = this._feeSources.exclude(_opts.excludedFeeSources);
const ops = [
this._sampler.getBlockNumber(),
...batchNativeOrders.map(orders =>
this._sampler.getLimitOrderFillableMakerAmounts(orders, this.contractAddresses.exchangeProxy),
),
@@ -396,13 +401,15 @@ export class MarketOperationUtils {
),
];
const executeResults = await this._sampler.executeBatchAsync(ops);
const [blockNumberRaw, ...executeResults] = await this._sampler.executeBatchAsync(ops);
const batchOrderFillableMakerAmounts = executeResults.splice(0, batchNativeOrders.length) as BigNumber[][];
const batchEthToTakerAssetRate = executeResults.splice(0, batchNativeOrders.length) as BigNumber[];
const batchDexQuotes = executeResults.splice(0, batchNativeOrders.length) as DexSample[][][];
const batchTokenDecimals = executeResults.splice(0, batchNativeOrders.length) as number[][];
const inputAmountPerEth = ZERO_AMOUNT;
const blockNumber: number = (blockNumberRaw as BigNumber).toNumber();
return Promise.all(
batchNativeOrders.map(async (nativeOrders, i) => {
if (nativeOrders.length === 0) {
@@ -435,6 +442,7 @@ export class MarketOperationUtils {
twoHopQuotes: [],
},
isRfqSupported: false,
blockNumber,
},
{
bridgeSlippage: _opts.bridgeSlippage,

View File

@@ -610,6 +610,7 @@ export interface MarketSideLiquidity {
takerTokenDecimals: number;
quotes: RawQuotes;
isRfqSupported: boolean;
blockNumber: number;
}
export interface RawQuotes {

View File

@@ -106,6 +106,7 @@ export interface ExtendedQuoteReport {
decodedUniqueId?: string;
sourcesConsidered: ExtendedQuoteReportIndexedEntryOutbound[];
sourcesDelivered: ExtendedQuoteReportIndexedEntryOutbound[] | undefined;
blockNumber: number | undefined;
}
export interface PriceComparisonsReport {

View File

@@ -66,6 +66,7 @@ const buyMarketSideLiquidity: MarketSideLiquidity = {
},
quoteSourceFilters: new SourceFilters(),
isRfqSupported: false,
blockNumber: 1337420,
};
const sellMarketSideLiquidity: MarketSideLiquidity = {
@@ -87,6 +88,7 @@ const sellMarketSideLiquidity: MarketSideLiquidity = {
},
quoteSourceFilters: new SourceFilters(),
isRfqSupported: false,
blockNumber: 1337420,
};
describe('getComparisonPrices', async () => {

View File

@@ -141,6 +141,7 @@ describe('ExchangeProxySwapQuoteConsumer', () => {
...(side === MarketOperation.Buy
? { type: MarketOperation.Buy, makerTokenFillAmount }
: { type: MarketOperation.Sell, takerTokenFillAmount }),
blockNumber: 1337420,
};
}

View File

@@ -748,6 +748,7 @@ describe('MarketOperationUtils tests', () => {
],
},
isRfqSupported: true,
blockNumber: 1337420,
};
});
const result = await mockedMarketOpUtils.object.getOptimizerResultAsync(

View File

@@ -44,6 +44,7 @@ export async function getFullyFillableSwapQuoteWithNoFeesAsync(
makerAmountPerEth: constants.ZERO_AMOUNT,
makerTokenDecimals: 18,
takerTokenDecimals: 18,
blockNumber: 1337420,
};
if (operation === MarketOperation.Buy) {