> For the complete documentation index, see [llms.txt](https://docs.prutopia.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.prutopia.io/architecture/protocol.md).

# Protocol

{% hint style="info" %}
Contracts on Polygon Mainnet 👇\
\
\&#xNAN;***PrutopiaUser***: [0xd00B2f8b8Dc2cDF3066A0670693333A520BC4137](https://polygonscan.com/address/0xd00B2f8b8Dc2cDF3066A0670693333A520BC4137)\
\&#xNAN;***PrutopiaExperience***: [0x8047198D98312CC655846C1C10D7d32bf000ebd8](https://polygonscan.com/address/0x8047198D98312CC655846C1C10D7d32bf000ebd8)\
\&#xNAN;***PrutopiaWorkRecord***: [0x0DB66B7697a6e6B74c764E34E49e2Af9D210D2C9](https://polygonscan.com/address/0x0DB66B7697a6e6B74c764E34E49e2Af9D210D2C9)

Contracts on Polygon Amoy (Testnet) 👇\
\
\&#xNAN;***PrutopiaUser***: [0xFCA5E805ADaE635e85af273a7209922283cf8F47](https://amoy.polygonscan.com/address/0xFCA5E805ADaE635e85af273a7209922283cf8F47)\
\&#xNAN;***PrutopiaExperience***: [0x55A69384eE9eb00cef7eF292C2f4f3300F48668e](https://amoy.polygonscan.com/address/0x55A69384eE9eb00cef7eF292C2f4f3300F48668e)\
\&#xNAN;***PrutopiaWorkRecord***: [0x74d286406E02aC4B33460EC43c994709eA63fB9f](https://amoy.polygonscan.com/address/0x74d286406E02aC4B33460EC43c994709eA63fB9f)
{% endhint %}

## Overview

Prutopia has developed 3 Smart Contracts that allow storing and handling data and metadata, and expose an unmutable business logic.

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

## Data Layer

Seeing the Blockchain as a Database, we can identify the following entities that store all necessary data.

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

## Details

Visit each page to know more details about the Smart Contacts.

### User Smart Contract

{% content-ref url="/pages/daoYdUvbF0HfwvQ373G4" %}
[User Smart Contract](/architecture/protocol/user-smart-contract.md)
{% endcontent-ref %}

### Experience Smart Contract

{% content-ref url="/pages/72o8nlwHEYPsWdOQI8dq" %}
[Experience Smart Contract](/architecture/protocol/experience-smart-contract.md)
{% endcontent-ref %}

### Work Record Smart Contract

{% content-ref url="/pages/ClkrFcqzm3xN0GLLtQWS" %}
[Work Record Smart Contract](/architecture/protocol/work-record-smart-contract.md)
{% endcontent-ref %}

## Fee Structure

{% hint style="info" %}
Although the contract logic enables the potential option to charge for each registration, it is not in the short-term roadmap to charge for this service.
{% endhint %}

### Experience

Fees for adding an Experience can be paid with Native Token or with a configured ERC20. Price is fixed. This price can never be higher than 10 MATIC or 5 USD and is hardcoded in the contract.

### Work Record

Fees aren't charged when adding a Work Record but only when it is ended. It can be only paid with a configured ERC20, using only USD pegged. The amount is determined by a percentage on the Work Record price, and that the reason for using a USD pegged token. This percentage can never be higher than a 10% and is hardcoded in the contract. For small amounts there is a minimum, that can never be higher than 5 USD. This value is also hardcoded.
