As of 3 Nov 2026, Glory Finance has 1 audit report on Trustblock, by CertiK, dated 23 Feb 2023. That report lists no open critical findings.
Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Glory Finance | Security firm: CertiK | Date: | Scope: Files named in the report | 3 critical findings, fixed | Open · skynet.certik.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 3 |
| High | 0 | 1 | 1 |
| Medium | 0 | 0 | 0 |
| Low | 2 | 0 | 14 |
The function `grantRole()` can only be called successfully by the `DEFAULT_ADMIN_ROLE` which has not been set. In addition, the `OPERATOR_TEAM` role will not be able to be assigned.
Open the reportThe `totalSupply()` function should represent the amount of tokens in circulation, so it should increase by any amount that is minted and decreased by any amount that is burned. However, this is overridden to always return `MAX_SUPPLY`. This will make it impossible to call `mintPublic()` as the check that `totalSupply() + amount <= MAX_SUPPLY_PUBLIC` will always fail.
Open the reportThe functions `transfer()` and `transferFrom()` both call the internal `_transfer()` function which is overridden in the `GloryToken` contract. However, if the input `sender` and `receiver` are not stored in the `dexes` mapping the function calls `_transfer(sender, receiver, amount)`. This will cause a revert as this must call the `_transfer()` function from the inherited `ERC20PresetMinterPauser` contract, which must be done by using the `super` keyword as the function was overridden.
Open the reportIt is possible after the `TIME_MINT_TO_TEAM`, that the team will be unable to mint their allotted tokens.
Open the reportThe `TIME_MINT_TO_TEAM` is the UNIX timestamp when the team is allowed to mint themselves `10%` of the total supply.
Open the reportThe error messages when checking if the `_msg.Sender()` has the `OPERATOR_ROLE` or `OPERATOR_TEAM` role are the same. This can cause confusion as it is not clear what role the `_msgSender()` did not have to cause the revert.
Open the reportIt is possible that an address may accidentally be set as a DEX address using `addDexAddress()`, when the address is not a DEX causing fees to be taken when they should not be.
Open the reportMultiple functions use the same check that the `_msgSender()` has the `OPERATOR_ROLE`. This check can be made a modifier to simplify the code. Similarly, the check that the `_msgSender()` is the `OPERATOR_TEAM` can be made a modifier for consistency.
Open the reportThe contract `GloryToken` inherits `ERC20PresetMinterPauser` which is marked as deprecated. Using deprecated contracts can cause issues in future versions as they may become incompatible with the rest of the codebase.
Open the reportThe naming of `_mintPublic()` does not conform to the [Solidity style guide](https://solidity.readthedocs.io/en/v0.7.3/style-guide.html#naming-conventions) with regards to its naming convention. Functions with names starting with `_` should be declared as `private` or `internal`.
Open the reportPrivileged functions that update state variables should emit relevant events as notifications.
Open the reportThe cited address input is missing a check that it is not `address(0)`. If `receiveFeeAddress` is set as `address(0)`, then users will not be able to complete transfers to or from `dex` addresses.
Open the reportIn order to call `mint()` the `_msgSender()` must have both the `OPERATOR_ROLE` and the `MINTER_ROLE`. The `OPERATOR_ROLE` is redundant as the `MINTER_ROLE` from the `ERC20PresetMinterPauserUpgradeable` contract already restricts access to the `mint()` function. --- In order to call `mintToTeam()` the `_msgSender()` must have the `OPERATOR_TEAM`, `OPERATOR_ROLE`, and the `MINTER_ROLE`. It is redundant to require three roles in order to call the function. --- Both the function `mintToTeam()` and `_mintPublic()` call the function `mint()`. The `mint()` function checks that the `_msgSender()` has the `OPERATOR_ROLE`, which is redundant considering `mintToTeam()` already checks they have the `OPERATOR_TEAM` role and that `_mintPublic()` checks they have the `OPERATOR_ROLE` as well.
Open the reportThe function `totalSupply()` is inherited and can be called directly without the `super` keyword. Similarly, the function `balanceOf()` is inherited and can be called directly without the `super` keyword.
Open the reportLiterals with many digits are difficult to read and review.
Open the reportThe contracts cited have an unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to ambiguity when debugging, as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
Open the reportThe `SafeMath` library is used unnecessarily. With Solidity compiler versions 0.8.0 or newer, arithmetic operations will automatically revert in case of integer overflow or underflow.
Open the reportWhen `mint()` is called, it is checked that the total supply plus the minted amount is strictly less than the `MAX_SUPPLY`. With the current value of `MAX_SUPPLY = 150_000_000 * 10 ** 18` this means that at most `149_999_999.999999999999999999` `GLR` can be minted. --- Similarly if `_mintPublic()` is called, it is checked that the total supply plus the minted amount is strictly less that the `MAX_SUPPLY_PUBLIC`. With the current value of `MAX_SUPPLY_PUBLIC = 135000000 * 10 ** 18` this means at most `134_999_999.999999999999999999` `GLR` can be minted.
Open the reportThe reports name a repository or files. Open a report to see its scope.
Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.
Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-tb-project-slug="glory-finance"></div></body>
Paste the code where the label should appear. It uses no API credit and updates by itself.
Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us