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

Update transaction option maxGasAmount, gasUnitPrice, expireTimestamp properties to use number type #245

Merged
merged 1 commit into from
Jan 3, 2024

Conversation

0xmaayan
Copy link
Collaborator

Description

maxGasAmount, gasUnitPrice, expireTimestamp properties should be represented as number type.
First,bigint causes serialization issues for dapps and wallets and second these property values fall within the JS number type range.
https://aptos-org.slack.com/archives/C06BFEMLAKT/p1703193020312399

Next - once this PR lands, wallet adapter should be updated to use the new sdk version and types.

Test Plan

Related Links

Comment on lines +80 to +82
maxGasAmount?: number;
gasUnitPrice?: number;
expireTimestamp?: number;
Copy link
Collaborator

Choose a reason for hiding this comment

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

I guess the only issue is setting "no expiry", as well as anytime after January 19th 2038, it may fail if it's not represented as a bigint or a string...

Would a string work?

Choose a reason for hiding this comment

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

JavaScript uses a 64-bit floating-point number to represent dates. Jan 19, 2038 shouldn't be affected with use of number.

Yes a string would work, but would have to be converted to number elsewhere. If your only issue was the 32-bit overflow, would be good to keep as number.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Okay, let's make it a number, I'm convinced since the max safe integer in microseconds is 2255.

Can we document that it must be a SafeInteger? Because I guess the bounds are still the same problem anyways, where the number could be put in here negative, and that would also fail.

For a future update let's add a function that we can use to verify isUnsignedInt which would verify the bounds 0-> Number.MAX_SAFE_NUMBER. Then we won't get weird float values, and we can add it more places to provide better help with it.

Copy link

@bv-aptos bv-aptos left a comment

Choose a reason for hiding this comment

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

Looks good to me! Thanks for making the changes!

@0xmaayan 0xmaayan enabled auto-merge (squash) January 2, 2024 19:07
Copy link
Collaborator

@gregnazario gregnazario left a comment

Choose a reason for hiding this comment

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

Let's follow up with some bounds checks for parts like this.

Comment on lines +80 to +82
maxGasAmount?: number;
gasUnitPrice?: number;
expireTimestamp?: number;
Copy link
Collaborator

Choose a reason for hiding this comment

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

Okay, let's make it a number, I'm convinced since the max safe integer in microseconds is 2255.

Can we document that it must be a SafeInteger? Because I guess the bounds are still the same problem anyways, where the number could be put in here negative, and that would also fail.

For a future update let's add a function that we can use to verify isUnsignedInt which would verify the bounds 0-> Number.MAX_SAFE_NUMBER. Then we won't get weird float values, and we can add it more places to provide better help with it.

@0xmaayan 0xmaayan merged commit 27302a7 into main Jan 3, 2024
10 checks passed
@0xmaayan 0xmaayan deleted the txn_option_type branch January 3, 2024 19:04
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