Byte Masons - Reliquary security record

As of 23 Oct 2026, Byte Masons - Reliquary has 2 audit reports by 1 security firm on Trustblock; the latest is by CertiK, dated 20 Nov 2022. Those reports list no open critical findings.

Critical findings
No open critical findings
Across 2 reports.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.

Audits2

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Granary v1Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Bytemasons - Multistrategy VaultSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings42

Statuses are the security firm’s own, from each report.

SeverityOpenAcknowledgedFixed
Critical000
High220
Medium030
Low2609
LowDuplicated Permissioning SystemBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The permission management system is based on a hierarchical permission set. This set is checked on each required function using a function call to `_atLeastRole()`. However, we found multiple implementations of this function with the same code. #### Contract: `ReaperBaseStrategyV4.sol` ```solidity=195 function _atLeastRole(bytes32 role) internal view { ... } ``` #### Contract: `ReaperVaultV2.sol` ```solidity=658 function _atLeastRole(bytes32 role) internal view { ... } ```

Open the report
LowInconsistent Comment and CodeBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The comment states `This may only be called by governance or the strategist.`, however, the function `setEmergencyExit()` only allows `GUARDIAN` and roles with the higher privilege to call it. The `strategist` won't be able to activate the emergency exit.

Open the report
LowInconsistent Parameter OrderingBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The function `withdraw()` and the function `_withdraw()` have the parameters in different orders which may lead to unwanted withdraw operations. The previous functions are defined as: ```solidity=202 function withdraw( uint256 assets, address receiver, address owner ) ``` ```solidity=356 function _withdraw( uint256 _shares, address _owner, address _receiver ) ```

Open the report
LowMissing Error MessagesBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The **require** can be used to check for conditions and throw an exception if the condition is not met. It is better to provide a string message containing details about the error that will be passed back to the caller.

Open the report
LowMissing Input Validation During InitializationBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

During contract initialization call to `__ReaperBaseStrategy_init()` the following **multisig** account are given some permissions: ```solidity=75 _grantRole(DEFAULT_ADMIN_ROLE, _multisigRoles[0]); _grantRole(ADMIN, _multisigRoles[1]); _grantRole(GUARDIAN, _multisigRoles[2]); ``` However, the call to `__ReaperBaseStrategy_init()` may be reverted if the length of `_multisigRoles` is less than 3.

Open the report
LowMultiplication Can Be A ConstantBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

During the contract upgrade process, a function call is done to `clearUpgradeCooldown()` to flag the current upgrade process as finished. This function will set a future upgrade proposal time as follows: ```solidity=174 upgradeProposalTime = block.timestamp + (ONE_YEAR * 100); ``` In this way, the developers make sure that the next upgrade proposal time is set for the next 100 years in the future. However, this could be improved using a constant factor.

Open the report
LowUnusual Sign Conversion Between Positions and CapBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The auditing team would like to confirm with the team that the logic operations made over `availableCapital()` and `_liquidateAllPositions()` are correctly designed including edge cases in which: * `availableCapital()` returns zero; * `availableCapital()` returns negative values, and hence calling `_harvestCore(-availableCapital)` when no emergency exit is set; * On emergency exit set, verify that `amountFreed < debt`and `amountFreed > debt` work as expected when `debt` might be zero; * On emergency exit set, verify that when `amountFreed == debt` the `roi` value becomes zero and the `repayment` is set to `debt` for reporting.

Open the report
LowValue Can Be Stored in ConstantBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The value `2**256 - 1` defined in function `maxDeposit()` can be declared as constant.

Open the report
LowVariables That Could Be Declared as ImmutableBytemasons - Multistrategy Vault · CertiK · 8 Nov 2022Fixed

The linked variables assigned in the constructor can be declared as `immutable`. Immutable state variables can be assigned during contract creation but will remain constant throughout the lifetime of a deployed contract. A big advantage of immutable variables is that reading them is significantly cheaper than reading from regular state variables since they will not be stored in storage.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

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.

Content

Facts

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.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="byte-masons-reliquary"
></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