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

feat: Add protection against computing LP fees for future quote timestamps #944

Merged
merged 23 commits into from
Sep 28, 2023

Conversation

nicholaspai
Copy link
Member

@nicholaspai nicholaspai commented Sep 20, 2023

This resolves the reverted SDK PR and re-introduces protection from deposit quote timestamps that are impossible to compute.

This PR essentially moves that protection to the production version of Hub and Spoke clients so that the unit tests can continue to work and not have to add additional logic to set quote times correctly. Ideally in the future we set the quote times how they would in production but for now this solution results in a much smaller code diff

nicholaspai and others added 17 commits September 13, 2023 15:17
Fixes ACX-1537

Removes a lot of code needed to support deprecated config store variable that is always set to 0 in production
* fix(Dataworker): Dereference originChainId by index, not key

Temporary fix to resolve an issue with future quoteTimestamps. We need a
more robust solution than this in the long run.

* Extract originToken from array

* lint

* WIP

Signed-off-by: Matt Rice <[email protected]>

---------

Signed-off-by: Matt Rice <[email protected]>
Co-authored-by: Matt Rice <[email protected]>
* improve: leverage default TTL

* improve: set fn signature to default
* feat: add dataworker force bundle range

* docs: add documentation to example env

* improve: allow for boba

* improve: allow forced proposal range with sending

---------

Co-authored-by: Paul <[email protected]>
* feat: Script for automating SpokePool deposits

This is useful for making deposits to the zkSync SpokePool(s) because
zkSync's block explorer doesn't yet support making transactions via
proxy contracts.

* Add yarn script target + tweak usage

* Add basic support for dumping SpokePool config

* lint

* fix: Gracefully handle token searches where token missing

Not all tokens are defined on all chains, so don't try to drop case
unless the token actually exists on a chain.

* Add "fetch" for dumping deposit and fill information

Currently limitations:
 - Does not display updated values (i.e. after a speed-up).
 - Does not display message data.
 - Should normalise from the token decimals for better readability.
 - Does not gracefully handle when the txnHash is not found.

* lint

* fix conflict

* lint

* chore: allow base-units to easily be sent

* chore: allow token to be passed as origin token addr or symbol

* feat: test chain routes

* nit: improve docs

* docs: add docs

* improve: account for checksummed value

Co-authored-by: Paul <[email protected]>

* improve: remove unneeded flag

Co-authored-by: Paul <[email protected]>

* improve: docs

Co-authored-by: Paul <[email protected]>

* improve: do not hardcode amounts

* improve: modification

* improve: dynamically compute price

---------

Co-authored-by: Paul <[email protected]>
Co-authored-by: nicholaspai <[email protected]>
This reverts commit 381e5bf.
…tamps

This resolves the [reverted SDK PR](across-protocol/sdk#399) and re-introduces protection from deposit quote timestamps that are impossible to compute.

This PR essentially moves that protection to the production version of Hub and Spoke clients so that the unit tests can continue to work and not have to add additional logic to set quote times correctly. Ideally in the future we set the quote times how they would in production but for now this solution results in a much smaller code diff
@nicholaspai nicholaspai changed the title Npai/protection feat: Add protection against computing LP fees for future quote timestamps Sep 20, 2023
@nicholaspai nicholaspai marked this pull request as ready for review September 21, 2023 14:17
@nicholaspai nicholaspai force-pushed the npai/transfer-threshold-removal branch from d7b9666 to 90cb0d1 Compare September 26, 2023 14:18
Comment on lines +23 to +37
async computeRealizedLpFeePct(
deposit: Pick<
DepositWithBlock,
"quoteTimestamp" | "amount" | "destinationChainId" | "originChainId" | "blockNumber"
>,
l1Token: string
): Promise<{ realizedLpFeePct: BigNumber | undefined; quoteBlock: number }> {
if (deposit.quoteTimestamp > this.currentTime) {
throw new Error(
`Cannot compute lp fee percent for quote timestamp ${deposit.quoteTimestamp} in the future. Current time: ${this.currentTime}.`
);
}

return await super.computeRealizedLpFeePct(deposit, l1Token);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we add this check directly into the SDK?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, we could, but it seriously messes up the tests :) The main point of putting it here is we don't actually test this client. A lot of the tests make don't opine on the quote timestamps so we'd have to change a lot

Copy link
Contributor

@james-a-morris james-a-morris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a comment

@james-a-morris james-a-morris self-requested a review September 28, 2023 22:57
@nicholaspai nicholaspai merged commit 3ea5360 into npai/transfer-threshold-removal Sep 28, 2023
nicholaspai added a commit that referenced this pull request Sep 29, 2023
* improve(dataworker): Remove `transferThreshold`

Fixes ACX-1537

Removes a lot of code needed to support deprecated config store variable that is always set to 0 in production

* Update Dataworker.ts

* Update Dataworker.ts

* Update package.json

* Update yarn.lock

* wip

* WIP

* Update yarn.lock

* Revert "WIP"

This reverts commit 381e5bf.

* chore: bump sdk to latest (#943)

* chore: bump sdk to latest

* chore: bump version

* chore: bump sdk

* Update src/dataworker/Dataworker.ts

Co-authored-by: Paul <[email protected]>

* feat: Add protection against computing LP fees for future quote timestamps (#944)

* improve(dataworker): Remove `transferThreshold`

Fixes ACX-1537

Removes a lot of code needed to support deprecated config store variable that is always set to 0 in production

* Update Dataworker.ts

* bumpity

* Update Dataworker.ts

* Update package.json

* Update yarn.lock

* wip

* fix(Dataworker): Dereference originChainId by index, not key (#936)

* fix(Dataworker): Dereference originChainId by index, not key

Temporary fix to resolve an issue with future quoteTimestamps. We need a
more robust solution than this in the long run.

* Extract originToken from array

* lint

* WIP

Signed-off-by: Matt Rice <[email protected]>

---------

Signed-off-by: Matt Rice <[email protected]>
Co-authored-by: Matt Rice <[email protected]>

* improve: leverage default TTL & leverage caching (#938)

* improve: leverage default TTL

* improve: set fn signature to default

* feat: add dataworker force bundle range (#912)

* feat: add dataworker force bundle range

* docs: add documentation to example env

* improve: allow for boba

* improve: allow forced proposal range with sending

---------

Co-authored-by: Paul <[email protected]>

* feat: test chain routes (#897)

* feat: Script for automating SpokePool deposits

This is useful for making deposits to the zkSync SpokePool(s) because
zkSync's block explorer doesn't yet support making transactions via
proxy contracts.

* Add yarn script target + tweak usage

* Add basic support for dumping SpokePool config

* lint

* fix: Gracefully handle token searches where token missing

Not all tokens are defined on all chains, so don't try to drop case
unless the token actually exists on a chain.

* Add "fetch" for dumping deposit and fill information

Currently limitations:
 - Does not display updated values (i.e. after a speed-up).
 - Does not display message data.
 - Should normalise from the token decimals for better readability.
 - Does not gracefully handle when the txnHash is not found.

* lint

* fix conflict

* lint

* chore: allow base-units to easily be sent

* chore: allow token to be passed as origin token addr or symbol

* feat: test chain routes

* nit: improve docs

* docs: add docs

* improve: account for checksummed value

Co-authored-by: Paul <[email protected]>

* improve: remove unneeded flag

Co-authored-by: Paul <[email protected]>

* improve: docs

Co-authored-by: Paul <[email protected]>

* improve: do not hardcode amounts

* improve: modification

* improve: dynamically compute price

---------

Co-authored-by: Paul <[email protected]>
Co-authored-by: nicholaspai <[email protected]>

* WIP

* Update yarn.lock

* Revert "WIP"

This reverts commit 381e5bf.

* feat: Add protection against computing LP fees for future quote timestamps

This resolves the [reverted SDK PR](across-protocol/sdk#399) and re-introduces protection from deposit quote timestamps that are impossible to compute.

This PR essentially moves that protection to the production version of Hub and Spoke clients so that the unit tests can continue to work and not have to add additional logic to set quote times correctly. Ideally in the future we set the quote times how they would in production but for now this solution results in a much smaller code diff

* lint

* fix

* lint

* Update HubPoolClient.ts

* refactor: Import getNetworkName from sdk (#945)

* chore: bump sdk to latest (#943)

* chore: bump sdk to latest

* chore: bump version

* chore: bump sdk

---------

Signed-off-by: Matt Rice <[email protected]>
Co-authored-by: Paul <[email protected]>
Co-authored-by: Matt Rice <[email protected]>
Co-authored-by: James Morris, MS <[email protected]>

---------

Signed-off-by: Matt Rice <[email protected]>
Co-authored-by: James Morris, MS <[email protected]>
Co-authored-by: Paul <[email protected]>
Co-authored-by: Matt Rice <[email protected]>
@pxrl pxrl deleted the npai/protection branch September 5, 2024 10:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants