Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
45dd083
Update ReentrancyGuardTransient documentation (#5417)
ernestognw Jan 6, 2025
a99b31f
Optimize `MerkleTree` for loops by using `uint256` iterators (#5415)
heueristik Jan 7, 2025
a2a5dc2
Update `_revokeRole` documentation in AccessControl (#5321)
Madmaxs2 Jan 7, 2025
7b74442
Merge release-v5.2 branch (#5424)
github-actions[bot] Jan 9, 2025
352ab13
Add a Calldata library with `emptyBytes` and `emptyString` functions …
Amxx Jan 10, 2025
2e27a0c
Update governor docs (#5420)
arr00 Jan 10, 2025
13781c1
Add missing `Calldata`, `Bytes`, `CAIP2` and `CAIP10` API references …
Amxx Jan 10, 2025
96b40d0
Expose `_isTrustedByTarget` internally in ERC2771Forwarder (#5416)
ernestognw Jan 10, 2025
ea736bd
Update LICENSE (#5434)
ericglau Jan 15, 2025
332bcb5
Refactor EnumerableSet.behavior.js for reuse in the community repo (#…
Amxx Jan 20, 2025
9e66e2f
Replace `overriden` with `overridden` in GovernorCountingOverridable.…
rnkrtt Jan 22, 2025
a55fabc
Remove Unnecessary Initialisation of `_paused` (#5448)
pcaversaccio Jan 23, 2025
6dc9242
Fix Broken Docs References (#5436)
arr00 Jan 24, 2025
7ae222b
Update actions/upload-artifact action to v4 (#4826)
renovate[bot] Jan 24, 2025
6e752dc
Remove unused `setBaseURI` tests (#5456)
RenanSouza2 Jan 24, 2025
fd812ee
Group typographical errors (#5443)
ernestognw Jan 24, 2025
495a287
Fix interface docs ordering and add missing interface (#5460)
arr00 Jan 24, 2025
8c1b0ca
Add a governor extension that implements a proposal guardian (#5303)
Amxx Jan 27, 2025
4ccfe38
Fix the CLI output of formal verification runs (#5445)
mdqst Jan 27, 2025
0d0e4aa
Update dependency halmos to v0.2.4 (#5461)
renovate[bot] Jan 27, 2025
840c974
Use stable foundry version in CI (#5465)
arr00 Jan 28, 2025
828dbc3
Add stake management function to ERC4337Utils (#5471)
Amxx Jan 31, 2025
c089efa
Add forum badge correct link (#5481)
YanVictorSN Feb 3, 2025
19c2f2f
SafeERC20.trySafeTransfer{,from} (#5483)
Amxx Feb 3, 2025
b9dbfa7
Improve promise rejections handling in hardhat/async-test-sanity.js (…
ursulabauer Feb 4, 2025
df878c8
Use slither v0.10.4 (#5488)
arr00 Feb 4, 2025
43b3319
Add ERC6909 Implementation along with extensions (#5394)
arr00 Feb 4, 2025
2141d3f
Rename ERC4337Utils ENTRYPOINT to ENTRYPOINT_V07 (#5472)
ernestognw Feb 4, 2025
441dc14
Add Bytes32x2Set (#5442)
Amxx Feb 4, 2025
3658269
Add clear function to Enumerable{Set,Map} (#5486)
arr00 Feb 10, 2025
f423762
Make set-max-old-space-size.sh compatible with sh (#5493)
0xmichalis Feb 10, 2025
be2b016
Update FUNDING.json (#5496)
xdaluca Feb 11, 2025
7ccb79f
Update FUNDING.json hierarchy (#5500)
JSeiferth Feb 12, 2025
dbd9805
Test behavior of SignatureChecker against the identity precompile (0x…
Amxx Feb 13, 2025
fa8bed6
Treat code-size warnings as errors (#5101)
frangio Feb 13, 2025
f281e98
Make `TimelockController` receive function virtual (#5506)
dangerousfood Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/brown-seals-sing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`SafeERC20`: Add `trySafeTransfer` and `trySafeTransferFrom` that do not revert and return false if the transfer is not successful.
5 changes: 5 additions & 0 deletions .changeset/brown-turkeys-marry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`ER6909TokenSupply`: Add an extension of ERC6909 which tracks total supply for each token id.
5 changes: 5 additions & 0 deletions .changeset/dirty-bananas-shake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`ERC6909ContentURI`: Add an extension of ERC6909 which adds content URI functionality.
5 changes: 0 additions & 5 deletions .changeset/eighty-hounds-promise.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/famous-timers-compare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`ERC2771Forwarder`: Expose the `_isTrustedByTarget` internal function to check whether a target trusts the forwarder.
5 changes: 0 additions & 5 deletions .changeset/four-chairs-help.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/good-cameras-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`EnumerableMap`: Add `clear` function to EnumerableMaps which deletes all entries in the map.
5 changes: 5 additions & 0 deletions .changeset/good-cameras-serve.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"openzeppelin-solidity": minor
---

`Calldata`: Library with `emptyBytes` and `emptyString` functions to generate empty `bytes` and `string` calldata types.
5 changes: 5 additions & 0 deletions .changeset/gorgeous-apes-jam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`TimelockController`: Receive function is now virtual.
5 changes: 0 additions & 5 deletions .changeset/great-lions-hear.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/green-drinks-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"openzeppelin-solidity": minor
---

`Pausable`: Stop explicitly setting `paused` to `false` during construction.
5 changes: 0 additions & 5 deletions .changeset/healthy-books-shout.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/hot-shrimps-wait.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/lovely-dodos-lay.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/lucky-teachers-sip.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`EnumerableSet`: Add `Bytes32x2Set` that handles (ordered) pairs of bytes32.
5 changes: 0 additions & 5 deletions .changeset/pink-wasps-hammer.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/pretty-lobsters-tan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`GovernorProposalGuardian`: Add a governance extension that defines a proposal guardian who can cancel proposals at any stage in their lifecycle.
5 changes: 5 additions & 0 deletions .changeset/proud-cooks-do.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`ERC6909Metadata`: Add an extension of ERC6909 which adds metadata functionality.
5 changes: 0 additions & 5 deletions .changeset/proud-planes-arrive.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/seven-donkeys-tap.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/sixty-tips-wink.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`EnumerableSet`: Add `clear` function to EnumerableSets which deletes all values in the set.
5 changes: 0 additions & 5 deletions .changeset/small-seahorses-bathe.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/ten-hats-begin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`ERC6909`: Add a standard implementation of ERC6909.
5 changes: 5 additions & 0 deletions .changeset/ten-peas-mix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---

`Hashes`: Expose `efficientKeccak256` for hashing non-commutative pairs of bytes32 without allocating extra memory.
5 changes: 0 additions & 5 deletions .changeset/tricky-bats-pretend.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/weak-roses-bathe.md

This file was deleted.

3 changes: 2 additions & 1 deletion .github/actions/gas-compare/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ runs:
shell: bash
- name: Save report
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: gasreport
overwrite: true
path: ${{ inputs.out_report }}
2 changes: 1 addition & 1 deletion .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ runs:
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
version: stable
3 changes: 2 additions & 1 deletion .github/actions/storage-layout/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ runs:
shell: bash
- name: Save artifacts
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: layout
overwrite: true
path: ${{ inputs.out_layout }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ npm-debug.log

# docs artifacts
docs/modules/api
build/site

# only used to package @openzeppelin/contracts
contracts/build/
Expand Down
52 changes: 51 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,62 @@
# Changelog

### Breaking Changes

- Replace `GovernorCountingOverridable.VoteReceipt` struct parameter member names `hasOverriden` and `overridenWeight` for `hasOverridden` and `overriddenWeight` respectively.

#### Custom error changes

- Replace `GovernorAlreadyOverridenVote` with `GovernorAlreadyOverriddenVote`.

## 5.2.0 (2025-01-08)

### Breaking Changes

#### Custom error changes

This version comes with changes to the custom error identifiers. Contracts previously depending on the following errors should be replaced accordingly:

- Replace `Errors.FailedCall` with a bubbled-up revert reason in `Address.sendValue`.

### Changes by category

#### General

- Update some pragma directives to ensure that all file requirements match that of the files they import. ([#5273](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5273))

#### Account

- `ERC4337Utils`: Add a reusable library to manipulate user operations and interact with ERC-4337 contracts ([#5274](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5274))
- `ERC7579Utils`: Add a reusable library to interact with ERC-7579 modular accounts ([#5274](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5274))

#### Governance

- `GovernorCountingOverridable`: Add a governor counting module that enables token holders to override the vote of their delegate. ([#5192](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5192))
- `VotesExtended`: Create an extension of `Votes` which checkpoints balances and delegates. ([#5192](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5192))

### Proxy

- `Clones`: Add `cloneWithImmutableArgs` and `cloneDeterministicWithImmutableArgs` variants that create clones with per-instance immutable arguments. The immutable arguments can be retrieved using `fetchCloneArgs`. The corresponding `predictDeterministicWithImmutableArgs` function is also included. ([#5109](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5109))

### Tokens

- `ERC1363Utils`: Add helper similar to the existing `ERC721Utils` and `ERC1155Utils` ([#5133](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5133))

### Utils

- `Address`: bubble up revert data on `sendValue` failed call ([#5418](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5418))
- `Bytes`: Add a library of common operations that operate on `bytes` objects. ([#5252](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5252))
- `CAIP2` and `CAIP10`: Add libraries for formatting and parsing CAIP-2 and CAIP-10 identifiers. ([#5252](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5252))
- `NoncesKeyed`: Add a variant of `Nonces` that implements the ERC-4337 entrypoint nonce system. ([#5272](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5272))
- `Packing`: Add variants for packing `bytes10` and `bytes22` ([#5274](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5274))
- `Strings`: Add `parseUint`, `parseInt`, `parseHexUint` and `parseAddress` to parse strings into numbers and addresses. Also provide variants of these functions that parse substrings, and `tryXxx` variants that do not revert on invalid input. ([#5166](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5166))

## 5.1.0 (2024-10-17)

### Breaking changes

- `ERC1967Utils`: Removed duplicate declaration of the `Upgraded`, `AdminChanged` and `BeaconUpgraded` events. These events are still available through the `IERC1967` interface located under the `contracts/interfaces/` directory. Minimum pragma version is now 0.8.21.
- `Governor`, `GovernorCountingSimple`: The `_countVote` virtual function now returns an `uint256` with the total votes casted. This change allows for more flexibility for partial and fractional voting. Upgrading users may get a compilation error that can be fixed by adding a return statement to the `_countVote` function.
- `Governor`, `GovernorCountingSimple`: The `_countVote` virtual function now returns an `uint256` with the total votes cast. This change allows for more flexibility for partial and fractional voting. Upgrading users may get a compilation error that can be fixed by adding a return statement to the `_countVote` function.

#### Custom error changes

Expand Down
3 changes: 3 additions & 0 deletions FUNDING.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@
"ethereum": {
"ownedBy": "0xAeb37910f93486C85A1F8F994b67E8187554d664"
}
},
"opRetro": {
"projectId": "0x939241afa4c4b9e1dda6b8250baa8f04fa8b0debce738cfd324c0b18f9926d25"
}
}
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2016-2024 Zeppelin Group Ltd
Copyright (c) 2016-2025 Zeppelin Group Ltd

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[![Coverage Status](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts/graph/badge.svg)](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts)
[![GitPOAPs](https://public-api.gitpoap.io/v1/repo/OpenZeppelin/openzeppelin-contracts/badge)](https://www.gitpoap.io/gh/OpenZeppelin/openzeppelin-contracts)
[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-yellow)](https://docs.openzeppelin.com/contracts)
[![Forum](https://img.shields.io/badge/forum-%F0%9F%92%AC-yellow)](https://docs.openzeppelin.com/contracts)
[![Forum](https://img.shields.io/badge/forum-%F0%9F%92%AC-yellow)](https://forum.openzeppelin.com/)

**A library for secure smart contract development.** Build on a solid foundation of community-vetted code.

Expand Down Expand Up @@ -70,7 +70,7 @@ The guides in the [documentation site](https://docs.openzeppelin.com/contracts)
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives, and distribute them via [Crowdsales](https://docs.openzeppelin.com/contracts/crowdsales).
* [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools including non-overflowing math, signature verification, and trustless paying systems.

The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts's development in the [community forum](https://forum.openzeppelin.com).
The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the [community forum](https://forum.openzeppelin.com).

Finally, you may want to take a look at the [guides on our blog](https://blog.openzeppelin.com/), which cover several common use cases and good practices. The following articles provide great background reading, though please note that some of the referenced tools have changed, as the tooling in the ecosystem continues to rapidly evolve.

Expand Down
2 changes: 1 addition & 1 deletion RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ OpenZeppelin Contracts uses a fully automated release process that takes care of

## Changesets

[Changesets](https://github.com/changesets/changesets/) is used as part of our release process for `CHANGELOG.md` management. Each change that is relevant for the codebase is expected to include a changeset.
[Changesets](https://github.com/changesets/changesets/) are used as part of our release process for `CHANGELOG.md` management. Each change that is relevant for the codebase is expected to include a changeset.

## Branching model

Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ Note as well that the Solidity language itself only guarantees security updates

## Legal

Smart contracts are a nascent technology and carry a high level of technical risk and uncertainty. OpenZeppelin Contracts is made available under the MIT License, which disclaims all warranties in relation to the project and which limits the liability of those that contribute and maintain the project, including OpenZeppelin. Your use of the project is also governed by the terms found at www.openzeppelin.com/tos (the "Terms"). As set out in the Terms, you are solely responsible for any use of OpenZeppelin Contracts and you assume all risks associated with any such use. This Security Policy in no way evidences or represents an on-going duty by any contributor, including OpenZeppelin, to correct any flaws or alert you to all or any of the potential risks of utilizing the project.
Smart contracts are a nascent technology and carry a high level of technical risk and uncertainty. OpenZeppelin Contracts is made available under the MIT License, which disclaims all warranties in relation to the project and which limits the liability of those that contribute and maintain the project, including OpenZeppelin. Your use of the project is also governed by the terms found at www.openzeppelin.com/tos (the "Terms"). As set out in the Terms, you are solely responsible for any use of OpenZeppelin Contracts and you assume all risks associated with any such use. This Security Policy in no way evidences or represents an ongoing duty by any contributor, including OpenZeppelin, to correct any flaws or alert you to all or any of the potential risks of utilizing the project.
2 changes: 1 addition & 1 deletion audits/2017-03.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ The git commit hash we evaluated is:

# Disclaimer

The audit makes no statements or warrantees about utility of the code, safety of the code, suitability of the business model, regulatory regime for the business model, or any other statements about fitness of the contracts to purpose, or their bugfree status. The audit documentation is for discussion purposes only.
The audit makes no statements or warrantees about utility of the code, safety of the code, suitability of the business model, regulatory regime for the business model, or any other statements about fitness of the contracts to purpose, or their bug free status. The audit documentation is for discussion purposes only.

# Executive Summary

Expand Down
4 changes: 2 additions & 2 deletions certora/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

These instructions detail the process for running Certora Verification Tool on OpenZeppelin Contracts.

Documentation for CVT and the specification language are available [here](https://certora.atlassian.net/wiki/spaces/CPD/overview).
Documentation for CVT and the specification language is available [here](https://certora.atlassian.net/wiki/spaces/CPD/overview).

## Prerequisites

Follow the [Certora installation guide](https://docs.certora.com/en/latest/docs/user-guide/getting-started/install.html) in order to get the Certora Prover Package and the `solc` executable folder in your path.

> **Note**
> An API Key is required for local testing. Although the prover will run on a Github Actions' CI environment on selected Pull Requests.
> An API Key is required for local testing. Although the prover will run on a GitHub Actions' CI environment on selected Pull Requests.

## Running the verification

Expand Down
2 changes: 1 addition & 1 deletion certora/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ function writeEntry(spec, contract, success, url) {
formatRow(
spec,
contract,
success ? ':x:' : ':heavy_check_mark:',
success ? ':heavy_check_mark:' : ':x:',
url ? `[link](${url?.replace('/output/', '/jobStatus/')})` : 'error',
url ? `[link](${url})` : 'error',
),
Expand Down
4 changes: 2 additions & 2 deletions certora/specs/AccessControlDefaultAdminRules.spec
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ rule renounceRoleEffect(env e, bytes32 role) {

/*
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Rule: defaultAdmin is only affected by accepting an admin transfer or renoucing
│ Rule: defaultAdmin is only affected by accepting an admin transfer or renouncing
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
*/
rule noDefaultAdminChange(env e, method f, calldataarg args) {
Expand All @@ -188,7 +188,7 @@ rule noDefaultAdminChange(env e, method f, calldataarg args) {
f.selector == sig:acceptDefaultAdminTransfer().selector ||
f.selector == sig:renounceRole(bytes32,address).selector
),
"default admin is only affected by accepting an admin transfer or renoucing";
"default admin is only affected by accepting an admin transfer or renouncing";
}

/*
Expand Down
6 changes: 3 additions & 3 deletions certora/specs/ERC20FlashMint.spec
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ methods {
*/
ghost mapping(address => mathint) trackedMintAmount;
ghost mapping(address => mathint) trackedBurnAmount;
ghost mapping(address => mapping(address => mathint)) trackedTransferedAmount;
ghost mapping(address => mapping(address => mathint)) trackedTransferredAmount;

function specUpdate(address from, address to, uint256 amount) {
if (from == 0 && to == 0) { assert(false); } // defensive
Expand All @@ -28,7 +28,7 @@ function specUpdate(address from, address to, uint256 amount) {
} else if (to == 0) {
trackedBurnAmount[from] = amount;
} else {
trackedTransferedAmount[from][to] = amount;
trackedTransferredAmount[from][to] = amount;
}
}

Expand All @@ -51,5 +51,5 @@ rule checkMintAndBurn(env e) {

assert trackedMintAmount[receiver] == to_mathint(amount);
assert trackedBurnAmount[receiver] == amount + to_mathint(recipient == 0 ? fees : 0);
assert (fees > 0 && recipient != 0) => trackedTransferedAmount[receiver][recipient] == to_mathint(fees);
assert (fees > 0 && recipient != 0) => trackedTransferredAmount[receiver][recipient] == to_mathint(fees);
}
2 changes: 1 addition & 1 deletion contracts/access/AccessControl.sol
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 {
}

/**
* @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.
* @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.
*
* Internal function without access restriction.
*
Expand Down
Loading