# Smart Contract

The smart contract (***ZKMEVerifyUpgradeable***) is used for eligibility checks. The `verify` function provides yes/no answers to a list of predetermined eligibility questions for each credential verified. The `hasApproved` function provides information on whether the user has authorized the SBT.

## View Methods <a href="#view-methods" id="view-methods"></a>

### hasApproved()

This method verifies both that the user has authorized their SBT and that the user meets the project's KYC requirements. \
\
According to our design logic, users can only authorize their SBT to a project if their KYC meets the specified requirements. Therefore, a successfully authorized user, indicated by `hasApproved()` returning true, is one who meets your KYC settings.

```solidity
function hasApproved(
    address cooperator, 
    address user
) public view returns (bool)
```

### Parameters

<table><thead><tr><th width="189">Name</th><th width="154">Type</th><th width="142">Required</th><th>Description</th></tr></thead><tbody><tr><td>cooperator</td><td>address</td><td>Yes</td><td>Account address of Program</td></tr><tr><td>user</td><td>address</td><td>Yes</td><td>User's wallet address</td></tr></tbody></table>

{% hint style="info" %}
**Note:** You can obtain the `cooperator` address after completing the "Create Program" step on the [zkMe Dashboard](https://docs.zk.me/hub/start/onboarding/dashboard).
{% endhint %}

<figure><img src="https://content.gitbook.com/content/3QFkeleLOltSYnf8uj0t/blobs/vPkqu4QMwfkGYpFUBIjZ/DApp%20account.png" alt=""><figcaption></figcaption></figure>

***

## **Resources**

### Smart Contract Address

Please check [smart-contracts](https://docs.zk.me/hub/how-built/id-infra/smart-contracts "mention").

### ABI

You can download the following file or install it from [npm](https://www.npmjs.com/package/@zkmelabs/verify-abi).

{% file src="<https://content.gitbook.com/content/3QFkeleLOltSYnf8uj0t/blobs/bVVtmws1ksrcgWH34Qx2/zkmeverify.abi.json>" %}
