As of 3 Nov 2026, Klink Finance has 1 audit report on Trustblock, by CertiK, dated 7 Feb 2025. 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 |
|---|---|---|---|---|---|
| Klink Finance | Security firm: CertiK | Date: | Scope: Files named in the report | No open critical findings | Open · skynet.certik.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 3 | 0 | 0 |
| Medium | 0 | 2 | 1 |
| Low | 3 | 0 | 2 |
When a user attempts to withdraw, the contract checks whether its `rewardBalance` is sufficient to cover both the user’s staked principal and the calculated reward. If the `rewardBalance` is too low, the entire withdrawal transaction reverts, preventing the user from retrieving any funds—including their principal. In this scenario, the user’s only option is to perform an `emergencyWithdraw`, which forfeits all accumulated rewards. ```solidity=419 function _withdraw(address from) private returns (bool) { uint256 reward = _calculate(from, deposits[from].endTime); reward = reward.add(deposits[from].rewards); uint256 amount = deposits[from].depositAmount; require(reward <= rewardBalance, "Not enough rewards"); ```
Open the reportThe contract interacts with an external ERC-20 token contract at `tokenAddress_`, assumed in this context to be `KlinkToken`. Although the audit treats external contracts as black boxes and presumes they operate correctly, in reality, third-party contracts may be vulnerable or malicious if compromised. Specifically, the function `_payto` and `_hasAllowance` modifier (shown below) depends on the externally provided tokenAddress without validating its authenticity or security: ```solidity modifier _hasAllowance(address allower, uint256 amount) { // Make sure the allower has provided the right allowance. ERC20Interface = IERC20(tokenAddress); uint256 ourAllowance = ERC20Interface.allowance(allower, address(this)); require(amount <= ourAllowance, "Make sure to add enough allowance"); _; } function _payTo( address allower, address receiver, uint256 amount ) private _hasAllowance(allower, amount) returns (bool) { ERC20Interface = IERC20(tokenAddress); ERC20Interface.safeTransferFrom(allower, receiver, amount); return true; } ``` Because the contract assumes that the external token behaves according to the ERC-20 standard, any breach, misimplementation, or malicious update to that third-party token could lead to loss of user funds. For example, if the ERC-20 contract is compromised to always return a high allowance or to trigger harmful callbacks, the staking contract would be unaware of this abnormal behavior and could execute logic with unintended consequences.
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="klink-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