-
Notifications
You must be signed in to change notification settings - Fork 39
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
refactor: change some types from U256
to U64
#1539
Conversation
/run-ci |
CI tests run on commit:
CI test list:
Please check ci test results later. |
I think this PR is useless. Since you don't allow those types to large than |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ref: #1553
3912e05
to
b7784a4
Compare
U256
to u64
maybe overflowU256
to U64
U256
to U64
U256
to U64
b7784a4
to
35ef862
Compare
/run-ci |
CI tests run on commit:
CI test list:
Please check ci test results later. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When I said
After
value > u64::max_value().into()
,as_u64()
should be replaced withlow_u64()
.
in previous comment.
There is a very important precondition: value > u64::max_value().into()
should be checked.
Without that precondition, the low_u64()
should NOT be used.
It may change the value silently.
The task move to #1591 |
* refactor: change many U256 type to U64 * change some safe as_u64 to low_u64 & cargo fmt * refactor the gas price and limit check * refactor prepay gas calculation * revert max gas limit * fix e2e test * Update eth_getBalance.test.js * remove useless code This PR is substitute for #1539 Some mainly changes: * Change the type of `nonce` from `U256` to `U64` according to the [EIP-2681](https://eips.ethereum.org/EIPS/eip-2681) limit the account nonce to be between `0` and `2^64-1`. * Change the type of `gas_limit` from `U256` to `U64`. According to the current gas cost of the most complex ethereum transaction is on the order of million, `U64` is enough. * Change the type of `chain_id` from `U256` to `U64` according to [metamask limit](https://gist.github.com/rekmarks/a47bd5f2525936c4b8eee31a16345553). The [`ChainId` opcode](https://eips.ethereum.org/EIPS/eip-1344) returns a 256-bit value, so it should not larger than `U256::MAX / 2 - 35`.This issue does not lead to consensus in Ethereum community, however, I think limit the max chain ID to `4503599627370476` is enough currently. Many temporary L2/L3 need a unique chain ID is the demand of variable-lenght chain ID in foreseeable future. But we do not have the demand now. If the day comes, we can change the chain ID type to `U256` even without hardfork. * Set the [`Default Max Price`](https://github.com/ethereum/go-ethereum/blob/be65b47/eth/gasprice/gasprice.go#L38) as `500` Gwei that is same as go-ethereum. Meanwhile, change the type of `gas_price` from `U256` to `U64`. --------- Co-authored-by: sunchengzhu <[email protected]> Co-authored-by: Flouse <[email protected]>
* refactor: change many U256 type to U64 * change some safe as_u64 to low_u64 & cargo fmt * refactor the gas price and limit check * refactor prepay gas calculation * revert max gas limit * fix e2e test * Update eth_getBalance.test.js * remove useless code This PR is substitute for #1539 Some mainly changes: * Change the type of `nonce` from `U256` to `U64` according to the [EIP-2681](https://eips.ethereum.org/EIPS/eip-2681) limit the account nonce to be between `0` and `2^64-1`. * Change the type of `gas_limit` from `U256` to `U64`. According to the current gas cost of the most complex ethereum transaction is on the order of million, `U64` is enough. * Change the type of `chain_id` from `U256` to `U64` according to [metamask limit](https://gist.github.com/rekmarks/a47bd5f2525936c4b8eee31a16345553). The [`ChainId` opcode](https://eips.ethereum.org/EIPS/eip-1344) returns a 256-bit value, so it should not larger than `U256::MAX / 2 - 35`.This issue does not lead to consensus in Ethereum community, however, I think limit the max chain ID to `4503599627370476` is enough currently. Many temporary L2/L3 need a unique chain ID is the demand of variable-lenght chain ID in foreseeable future. But we do not have the demand now. If the day comes, we can change the chain ID type to `U256` even without hardfork. * Set the [`Default Max Price`](https://github.com/ethereum/go-ethereum/blob/be65b47/eth/gasprice/gasprice.go#L38) as `500` Gwei that is same as go-ethereum. Meanwhile, change the type of `gas_price` from `U256` to `U64`. --------- Co-authored-by: sunchengzhu <[email protected]> Co-authored-by: Flouse <[email protected]>
What this PR does / why we need it?
This PR:
block_number
parameter type ofaxon_getMetadata
andaxon_getProposal
fromU256
toU64
. Since then no need to check the u64 overflow.as_u64
tolow_u64
to improve performanceWhat is the impact of this PR?
No Breaking Change
PR relation:
CI Settings
CI Usage
Tip: Check the CI you want to run below, and then comment
/run-ci
.CI Switch
CI Description