-
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 many U256
type to U64
#1591
Conversation
93a966b
to
463cfb6
Compare
References:
|
bb650b3
to
421f8f8
Compare
According to the PR description, some types such as |
7cb85b0
to
e59e269
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Wait for @sunchengzhu upgrade |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
e05798d
to
41e8f18
Compare
This comment was marked as outdated.
This comment was marked as outdated.
1 similar comment
/run-ci |
This comment was marked as outdated.
This comment was marked as outdated.
CI tests run on commit:
CI test list:
Please check ci test results later. |
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 is substitute for #1539
Some mainly changes:
nonce
fromU256
toU64
according to the EIP-2681 limit the account nonce to be between0
and2^64-1
.gas_limit
fromU256
toU64
. According to the current gas cost of the most complex ethereum transaction is on the order of million,U64
is enough.chain_id
fromU256
toU64
according to metamask limit. TheChainId
opcode returns a 256-bit value, so it should not larger thanU256::MAX / 2 - 35
.This issue does not lead to consensus in Ethereum community, however, I think limit the max chain ID to4503599627370476
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 toU256
even without hardfork.Default Max Price
as500
Gwei that is same as go-ethereum. Meanwhile, change the type ofgas_price
fromU256
toU64
.What is the impact of this PR?
Breaking change
PR relation:
U256
toU64
#1539CI Settings
CI Usage
Tip: Check the CI you want to run below, and then comment
/run-ci
.CI Switch
CI Description