DESCRIPTION
The target of this audit is the private code repository of multisig-timelock-contracts of DeAgentAI. The multisig-timelock-contracts is a token vault deployed on BSC and Sui. It implements a weighted multisig scheme based on off-chain signatures, combined with a conditional timelock. Each owner holds a weight, and an operation is authorized once the combined weight of the signers reaches a fixed threshold. The timelock delay applies only when at least one participating signer is flagged as timelocked. Both chains share identical high-level logic, differing solely in the signature primitive: EIP-712 with ECDSA on BSC and Ed25519 on Sui. The configured owners are A (weight 2, timelocked), B (weight 1), and C (weight 1), with a threshold of 2. Accordingly, A alone requires the delay, B and C together may execute immediately, and B or C alone is rejected. The only governed operation is transferring whitelisted tokens out of the vault, and all configuration is fixed at deployment and immutable.
Please refer to the report for the detailed audit scope.
Our audit methodology employs automated vulnerability scans, manual verification, and business logic analysis to uncover potential security issues coupled with gas and code quality optimization recommendations.
In summary, we did not find any critical issues within the audited codebase. However, we have identified some non-critical issues that should be addressed. Additionally, we have put forth recommendations and notes that should be taken into consideration. It is important to note that the scope of our audit was strictly limited to the specific code versions mentioned in the report. Any updates made subsequent to our review would require a re-evaluation.
KEY FINDINGS
In total, we find 2 potential issues in the smart contract. We also have 6 recommendations and 5 notes, as follows:
| ID | Severity | Description | Status |
|---|---|---|---|
| 1 | Medium | Lack of binding on intended signer set | Confirmed |
| 2 | Medium | Lack of balance validation against pending operations | Confirmed |
| 3 | - | Revise misleading documentation | Fixed |
| 4 | - | Add a view function for allowed tokens | Confirmed |
| 5 | - | Align the documentation with the implementation | Fixed |
| 6 | - | Add input validation in the Sui module | Confirmed |
| 7 | - | Add the vault identifier field and creation events | Confirmed |
| 8 | - | Validate owner public keys in function new_internal() |
Confirmed |
| 9 | - | Verification before funding | - |
| 10 | - | Potential centralization risks | - |
| 11 | - | Weird ERC20 tokens | - |
| 12 | - | The upgrade authority of Sui packages | - |
| 13 | - | Design of the multi-signature scheme | - |
More details are provided in the audit report.