# 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](/hub/start/onboarding/dashboard.md).
{% endhint %}

<figure><img src="/files/HHTAitiFouPE9NTwBKjc" alt=""><figcaption></figcaption></figure>

***

## **Resources**

### Smart Contract Address

Please check [zkMe Smart Contracts](/hub/how-built/id-infra/smart-contracts.md).

### ABI

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

{% file src="/files/QZeTYHW6o68od7630R2E" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.zk.me/hub/start/onboarding/integration/smart-contract.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
