# Python

## Verify4py

Эх код: <https://github.com/teo-mn/verify4py>

Verify4py нь сертификат, диплом, дансны хуулга зэрэг бичиг баримтыг блокчэйн дээр баталгаажуулж өгөх <https://github.com/corex-mn/certify-sc> ухаалаг гэрээтэй харьцдаг python хэлний сан юм.

* Тестнэт -тэй холбогдох нөүд: `https://node-testnet.teo.mn`
* Тестнэт дээрх ухаалаг гэрээний хаяг: `0xcc546a88db1af7d250a2f20dee42ec436f99e075`
* Тестнэт chainId: 3305
* Майннэт -тэй холбогдох нөүд: `https://node.teo.mn`
* Майннэт дээрх ухаалаг гэрээний хаяг: `0x5d305D8423c0f07bEaf15ba6a5264e0c88fC41B4`
* Майннэт chainId: 1104

### Суулгах заавар

`pip install verify4py`

### Функцүүд

#### `Issue_pdf`

PDF файлын хаш утгыг тооцож ухаалаг гэрээнд бичээд, гүйлгээний мэдээлэл болон нэмэлт мэдээллүүдийг файлын мэтадата дээр нэмэн шинэ файлд хадгална.

Байгуулагчийн параметр:

| Параметр                   | Тайлбар                              | Заавал эсэх |
| -------------------------- | ------------------------------------ | ----------- |
| `certify_contract_address` | Ухаалаг гэрээний хаяг                | тийм        |
| `corexchain_node_url`      | Гүйлгээ хийх блокчэйний нөүдний хаяг | тийм        |
| `issuer_address`           | Баталгаажуулагчийн хаяг              | тийм        |
| `issuer_name`              | Баталгаажуулагчийн нэр               | тийм        |
| `chain_id`                 | Блокчэйний ID                        | үгүй        |
| `hash_type`                | Хашийн төрөл                         | үгүй        |

`Issue_pdf` функцийн параметр:

| Параметр                | Тайлбар                              | Заавал эсэх                                      |
| ----------------------- | ------------------------------------ | ------------------------------------------------ |
| `id`                    | Файлын ID                            | тийм                                             |
| `source_file_path`      | PDF эх файлын зам                    | тийм                                             |
| `destination_file_path` | Мэтадата бичсэн PDF-ийг хадгалах зам | тийм                                             |
| `expire_date`           | Дуусах хугацаа                       | үгүй                                             |
| `desc`                  | Тайлбар, нэмэлт мэдээлэл             | үгүй                                             |
| `additional_info`       | Мэтадата дээр орох нэмэлт мэдээлэл   | үгүй                                             |
| `private_key`           | Баталгаажуулагчийн хувийн түлхүүр    | үгүй /key\_store, passphrase өгөөгүй бол заавал/ |
| `key_store`             | Хувийн түлхүүрийн keystore файл      | үгүй /private\_key өгөөгүй бол заавал/           |
| `passphrase`            | Хувийн түлхүүрийн passphrase файл    | үгүй /private\_key өгөөгүй бол заавал/           |

**Жишээ**

```python
from verify4py.PdfIssuer import PdfIssuer

issuer = PdfIssuer(certify_contract_address,
                  corexchain_node_url,
                  issuer_address,
                  issuer_name,
                  chain_id=3305)

try:
   txid, error = issuer.issue_pdf(
            id,
            source_file_path,
            destination_file_path,
            expire_date,
            desc,
            additional_info,
            private_key,
            key_store,
            passphrase) 
    if error is not None:
        print("Error: {}", error)
    else
        print("Success: {}", txid)
except Exception as e:
    print("Error: {}", e)
```

#### `Verify_pdf`

Блочкэйн дээр хадгалагдсан PDF файлийг шалгах.

Байгуулагчийн параметр:

| Параметр                   | Тайлбар                              | Заавал эсэх |
| -------------------------- | ------------------------------------ | ----------- |
| `certify_contract_address` | Ухаалаг гэрээний хаяг                | тийм        |
| `corexchain_node_url`      | Гүйлгээ хийх блокчэйний нөүдний хаяг | тийм        |
| `issuer_address`           | Баталгаажуулагчийн хаяг              | үгүй        |
| `issuer_name`              | Баталгаажуулагчийн нэр               | үгүй        |
| `chain_id`                 | Баталгаажуулагчийн нэр               | үгүй        |
| `hash_type`                | Хашийн төрөл                         | үгүй        |

`verify_pdf` функцийн параметр:

| Параметр    | Тайлбар                  | Заавал эсэх |
| ----------- | ------------------------ | ----------- |
| `file_path` | Метадата -тай файлын зам | тийм        |

**Жишээ**

```python
from verify4py.PdfIssuer import PdfIssuer

issuer = PdfIssuer(certify_contract_address,
                  corexchain_node_url,
                  chain_id=3305)

try:
    result = issuer.verify_pdf(file_path) 
    print("Result: {}", result)
except Exception as e:
    print("Error: {}", e)
```

#### `Revoke`

Нэгэнт ухаалаг гэрээнд баталгаажсан PDF файлыг буцаан хүчингүй болгох функц

Байгуулагчийн параметр:

| Параметр                   | Тайлбар                              | Заавал эсэх |
| -------------------------- | ------------------------------------ | ----------- |
| `certify_contract_address` | Ухаалаг гэрээний хаяг                | тийм        |
| `corexchain_node_url`      | Гүйлгээ хийх блокчэйний нөүдний хаяг | тийм        |
| `issuer_address`           | Баталгаажуулагчийн хаяг              | тийм        |
| `issuer_name`              | Баталгаажуулагчийн нэр               | үгүй        |
| `chain_id`                 | Блокчэйний ID                        | үгүй        |
| `hash_type`                | Хашийн төрөл                         | үгүй        |

`revoke` функцийн параметр:

| Параметр       | Тайлбар                           | Заавал эсэх                                      |
| -------------- | --------------------------------- | ------------------------------------------------ |
| `file_path`    | Мэтадата бичигдсэн PDF файлын зам | тийм                                             |
| `revoker_name` | Хүчингүй болгож буй хүний нэр     | тийм                                             |
| `private_key`  | Баталгаажуулагчийн хувийн түлхүүр | үгүй /key\_store, passphrase өгөөгүй бол заавал/ |
| `key_store`    | Хувийн түлхүүрийн key\_store файл | үгүй /private\_key өгөөгүй бол заавал/           |
| `passphrase`   | Хувийн түлхүүрийн passphrase файл | үгүй /private\_key өгөөгүй бол заавал/           |

**Жишээ**

```python
from verify4py.PdfIssuer import PdfIssuer

issuer = PdfIssuer(certify_contract_address,
                  corexchain_node_url,
                  issuer_address,
                  issuer_name,
                  chain_id=3305)
try:
    txid, error = issuer.revoke_pdf(file_path,
                              revoker_name,
                              key_store,
                              passphrase)
    print("Txid: {}", txid)
except Exception as e:
    print("Error: {}", e)  
```


---

# 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.certify.mn/notly/issue-document/library/python.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.
