• Mark Tyneway's avatar
    contracts-bedrock: prevent overflows in ResourceMetering · 75080ba4
    Mark Tyneway authored
    When multiplying a uint64 and uint128 and assigning to
    a uint256, the solidity checked math applies to the
    types of the numbers being multiplied. This means that
    solidity catches an overflow when the result of larger than
    a uint128 even though its assigned to a uint256.
    This PR uses unchecked math to prevent this kind of overflow
    instead of casting the values to uint256 because it is
    safe to use unchecked math here. The following inequality
    always holds true, which shows that it is safe:
    
    ``` solidity
    type(uint64).max * type(uint128).max < type(uint256).max
    ```
    75080ba4
Name
Last commit
Last update
.changeset Loading commit data...
.circleci Loading commit data...
.github Loading commit data...
.husky Loading commit data...
.vscode Loading commit data...
.yarn/releases Loading commit data...
batch-submitter Loading commit data...
bedrock-devnet Loading commit data...
bss-core Loading commit data...
endpoint-monitor Loading commit data...
gas-oracle Loading commit data...
indexer Loading commit data...
infra/op-replica Loading commit data...
integration-tests Loading commit data...
l2geth Loading commit data...
l2geth-exporter Loading commit data...
op-batcher Loading commit data...
op-bindings Loading commit data...
op-chain-ops Loading commit data...
op-e2e Loading commit data...
op-exporter Loading commit data...
op-heartbeat Loading commit data...
op-node Loading commit data...
op-proposer Loading commit data...
op-service Loading commit data...
op-signer Loading commit data...
op-wheel Loading commit data...
ops Loading commit data...
ops-bedrock Loading commit data...
packages Loading commit data...
proxyd Loading commit data...
specs Loading commit data...
technical-documents Loading commit data...
.dockerignore Loading commit data...
.editorconfig Loading commit data...
.eslintrc.js Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.markdownlint.json Loading commit data...
.nvmrc Loading commit data...
.prettierrc.js Loading commit data...
.semgrepignore Loading commit data...
.snyk Loading commit data...
.yarnrc Loading commit data...
CITATION.cff Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
SECURITY.md Loading commit data...
cloudbuild.yaml Loading commit data...
codecov.yml Loading commit data...
go.mod Loading commit data...
go.sum Loading commit data...
lerna.json Loading commit data...
package.json Loading commit data...
tsconfig.json Loading commit data...
yarn.lock Loading commit data...