
# Licenciranje i provođenje sintetičkih podataka temeljeno na pametnim ugovorima uz Formize

Sintetički podaci postali su temelj za treniranje AI modela uz očuvanje privatnosti, ali brza proliferacija generatora podataka donosi nove izazove u licenciranju i usklađenosti. Tradicionalni ugovori o licenciranju su statični, ručno se provode i često ne mogu pratiti dinamičnu prirodu pipeline‑ova sintetičkih podataka.  

Uvedite **pametne ugovore** — samostalno izvršavajući kod na blockchainu koji može kodificirati uvjete licenciranja, provoditi politike korištenja i pružiti nepromjenjive revizijske zapise. Kada se spoje s **Formizeom**, platformom za orkestraciju nulte povjerenja u upravljanju podacima, organizacije mogu postići **real‑time, automatizirano i dokazivo usklađeno** dijeljenje sintetičkih podataka među internim timovima, partnerima i vanjskim tržištima.

U ovom članku ćemo:

1. Objasniti zašto licenciranje sintetičkih podataka treba programabilni, nepromjenjivi sloj.  
2. Detaljno opisati arhitekturu koja spaja zero‑trust podatkovnu tkaninu Formizea s pametnim ugovorima na blockchainu.  
3. Proći kroz kompletan end‑to‑end radni tok, ilustriran Mermaid dijagramima.  
4. Istaknuti prednosti u usklađenosti, reviziji i poslovanju.  
5. Pružiti praktične smjernice za implementaciju i kratki kodni isječak za Solidity‑temeljeni ugovor o licenciranju.

---

## 1. Licencni jaz u ekosustavima sintetičkih podataka

| Izazov | Tradicionalni pristup | Pristup s pametnim ugovorima |
|-----------|----------------------|---------------------------------|
| **Dinamička prava korištenja** | Fiksni odlomci u PDF‑ovima, ručna ažuriranja | Programabilna prava koja se mogu upitati i mijenjati na‑chainu |
| **Revizija** | Papirni tragovi, email logovi | Neizmjenjivi blockchain ledger |
| **Provođenje** | Ručni nadzor, pravne opomene | Automatizirano oduzimanje i kazne putem logike ugovora |
| **Usklađenost preko jurisdikcija** | Zemljopisno specifična pravna revizija | Pametni ugovori mogu ugraditi pravila po jurisdikcijama i automatski verzionirati |

Generatori sintetičkih podataka (npr. GAN‑ovi, difuzijski modeli) mogu proizvesti milijarde zapisa dnevno. Licenciranje mora biti **skalabilno**, **strojno čitljivo** i **provedivo na razini pristupa podacima**. Formize već pruža **engine za kontrolu pristupa podacima nulte povjerenja** koji autentificira svaki zahtjev, bilježi podrijetlo i provjerava usklađenost politika. Dodavanjem sloja pametnih ugovora na blockchainu, možemo **premjestiti odluke o licenciranju s pravnog tima na runtime engine**, osiguravajući da svaka operacija čitanja/pisanja poštuje dogovorene uvjete.

---

## 2. Pregled arhitekture

Rješenje se sastoji od tri usko povezana sloja:

1. **Sloj generiranja sintetičkih podataka** – AI modeli koji isporučuju sintetičke skupove podataka.  
2. **Sloj upravljanja nultim povjerenjem (Formize)** – Rukuje autentifikacijom, ABAC (attribute‑based access control) i real‑time evaluacijom politika.  
3. **Sloj pametnih ugovora na blockchainu** – Pohranjuje uvjete licenciranja, brojače korištenja i logiku provođenja.

### 2.1 Dijagram protoka podataka

```mermaid
graph LR
    A["Generator sintetičkih podataka"] --> B["Formize Data Hub"]
    B --> C["Registar pametnih ugovora (Ethereum/Polygon)"]
    D["Potrošač podataka"] --> B
    B --> E["Engine za odluke o pristupu"]
    E --> F["Isporuka podataka"]
    C --> G["Revizijski zapis (IPFS)"]
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#bbf,stroke:#333,stroke-width:2px
    style C fill:#ff9,stroke:#333,stroke-width:2px
    style D fill:#cfc,stroke:#333,stroke-width:2px
    style E fill:#fcc,stroke:#333,stroke-width:2px
    style F fill:#9ff,stroke:#333,stroke-width:2px
    style G fill:#ddd,stroke:#333,stroke-width:2px
```

* **Korak 1 – Registracija**: Kada se kreira sintetički skup podataka, generator poziva Formize‑ov **Data Hub API** kako bi registrirao asset. Formize pohranjuje metapodatke (hash, shemu, podrijetlo) i automatski kreira **ugovor o licenciranju** na odabranom blockchainu, povezujući ID skupa podataka s adresom ugovora.  
* **Korak 2 – Zahtjev za konzumaciju**: Potrošač se autentificira putem Formizea (OAuth, SSO ili decentralizirani DID). Zahtjev uključuje wallet adresu potrošača.  
* **Korak 3 – Evaluacija politike**: Formize upita pametni ugovor za trenutni status licence potrošača (npr. preostali kvota, datum isteka). **Engine za odluke o pristupu** kombinira ovo s internim ABAC pravilima (uloga, svrha, geografija).  
* **Korak 4 – Provođenje**: Ako ugovor signalizira kršenje (npr. prekoračena kvota), Formize odbija zahtjev i po potrebi aktivira on‑chain kaznu (npr. token slashing).  
* **Korak 5 – Revizija**: Svaka odluka, zajedno sa snimkom stanja ugovora, zapisuje se u nepromjenjivi **IPFS‑backed revizijski zapis** referenciran hash‑om blockchain transakcije.

---

## 3. Obrasci dizajna pametnih ugovora

Dolje je minimalni **Solidity** ugovor koji obuhvaća osnovne značajke licenciranja. Ugovor je namjerno jednostavan radi ilustracije; proizvodna implementacija treba uključivati mogućnost nadogradnje (npr. putem OpenZeppelin Transparent Proxy) i kontrolu pristupa po ulogama.

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/*
    Minimalni ugovor za licenciranje sintetičkih podataka.
    Pokazuje ključne koncepte: nepromjenjivi uvjeti, dinamičko oduzimanje,
    i emitiranje događaja za real‑time praćenje.
*/
contract SyntheticDataLicense {
    address public owner;          // Pružatelj podataka
    address public dataHash;       // IPFS CID skupa podataka (pohranjen kao address radi jednostavnosti)
    uint256 public expiry;         // Unix timestamp isteka
    uint256 public maxAccesses;    // Ukupno dozvoljeno čitanja
    uint256 public usedAccesses;   // Brojač iskorištenih pristupa

    mapping(address => bool) public whitelisted; // Opcionalna bijela lista po potrošačima

    event AccessGranted(address indexed consumer, uint256 remaining);
    event LicenseRevoked(address indexed consumer, string reason);

    modifier onlyOwner() {
        require(msg.sender == owner, "Niste vlasnik");
        _;
    }

    constructor(address _dataHash, uint256 _expiry, uint256 _maxAccesses) {
        owner = msg.sender;
        dataHash = _dataHash;
        expiry = _expiry;
        maxAccesses = _maxAccesses;
    }

    function whitelistConsumer(address consumer) external onlyOwner {
        whitelisted[consumer] = true;
    }

    function revokeConsumer(address consumer, string calldata reason) external onlyOwner {
        whitelisted[consumer] = false;
        emit LicenseRevoked(consumer, reason);
    }

    function requestAccess() external returns (bool) {
        require(block.timestamp <= expiry, "Licenca istekla");
        require(usedAccesses < maxAccesses, "Kvote iscrpljena");
        require(whitelisted[msg.sender], "Niste na bijeloj listi");

        usedAccesses += 1;
        emit AccessGranted(msg.sender, maxAccesses - usedAccesses);
        return true;
    }

    // View funkcija za Formize da povuče stanje licence
    function getLicenseStatus() external view returns (uint256 remaining, bool active) {
        remaining = maxAccesses - usedAccesses;
        active = (block.timestamp <= expiry) && (remaining > 0);
    }
}
```

**Ključne točke**:

* **Neizmjenjivi uvjeti** – `expiry` i `maxAccesses` postavljaju se pri implementaciji i ne mogu se mijenjati bez nove verzije ugovora.  
* **Dinamičko oduzimanje** – Pružatelj može odmah oduzeti prava potrošaču putem `revokeConsumer`.  
* **On‑chain događaji** – `AccessGranted` i `LicenseRevoked` se emitiraju, omogućujući Formizeu da sluša za ažuriranja u real‑timeu.  
* **Lagani upit** – `getLicenseStatus` omogućuje Formizeu da dohvaća trenutno stanje bez troškova plina (read‑only poziv).

---

## 4. Integracija Formizea s pametnim ugovorom

Formize‑ov **Policy Engine** može se proširiti **Web3 Adapterom** koji:

1. **Kešira stanje ugovora** u Redis za latenciju pod sekundu.  
2. **Pretplaćuje se** na događaje ugovora putem WebSocket providera (npr. Alchemy, Infura).  
3. **Mapira** on‑chain adrese na Formize‑ove korisničke ID‑ove koristeći **DID‑to‑wallet registar**.

### 4.1 Primjer pravila politike (YAML)

```yaml
policy:
  name: synthetic_data_license_check
  description: Provjeri on‑chain licencu prije odobravanja pristupa
  conditions:
    - type: web3
      contract: "{{dataset.contractAddress}}"
      method: getLicenseStatus
      args: []
      expect:
        active: true
        remaining: ">0"
  actions:
    - allow: true
    - log: true
```

Kad stigne zahtjev, Formize evaluira ovo pravilo. Ako ugovor vrati `active: false` ili `remaining: 0`, zahtjev se odbija i bilježi se **revizijski događaj**.

---

## 5. Usklađenost i poslovne prednosti

| Prednost | Objašnjenje |
|----------|-------------|
| **Regulatorna usklađenost** | Neizmjenjivi zapisi o licenciranju zadovoljavaju GDPR, CCPA i nove AI‑specifične propise koji zahtijevaju dokaz o zakonitom korištenju podataka. |
| **Smanjenje pravnog opterećenja** | Automatizirano oduzimanje uklanja potrebu za ručnim slanjem opomena i pravnih dopisa. |
| **Omogućavanje monetizacije** | Pružatelji mogu prodavati licence po korištenju (pay‑per‑access) i provoditi plaćanje putem token transfera ugrađenog u ugovor. |
| **Transparentnost za revizore** | Revizori mogu izravno upitati blockchain, smanjujući ovisnost o internim dokumentacijama. |
| **Povjerenje između organizacija** | Kombinacija autentifikacije nulte povjerenja i on‑chain verifikacije stvara model **trust‑but‑verify** koji funkcionira preko korporativnih granica. |

---

## 6. Primjeri iz stvarnog svijeta

### 6.1 Konsorcij za zdravstvena istraživanja

Konsorcij bolnica dijeli sintetičke zapise pacijenata za treniranje AI modela. Svakom članu se dodjeljuje **licenca temeljena na kvoti** pohranjena na privatnoj Ethereum mreži. Formize osigurava da svaki istraživačov zahtjev bude validiran prema ugovoru, a pristup se automatski blokira ako kvota istekne ili ako član napusti konsorcij.

### 6.2 Tržište sintetičkih medija

Tržište prodaje AI‑generirane slike pod **royalty‑free** licencom za ograničen broj komercijalnih upotreba. Pametni ugovor prati svako preuzimanje; po dosezanju limita, Formize blokira daljnja preuzimanja i obavještava kupca. Tržište također može ugraditi klauzulu o podjeli prihoda koja aktivira token isplatu originalnom kreatoru pri svakom uspješnom pristupu.

### 6.3 Firmware ažuriranja za Edge‑AI uređaje

Proizvođači distribuiraju sintetičke telemetry podatke edge uređajima radi finog podešavanja modela na uređaju. Licence su vezane uz serijske brojeve uređaja (pohranjene kao wallet adrese). Ako se uređaj kompromitira, Formize može odmah oduzeti njegovu licencu putem ugovora, sprječavajući daljnje curenje podataka.

---

## 7. Lista za implementaciju

| Faza | Zadaci |
|------|--------|
| **Planiranje** | Identificirati skupove podataka, definirati uvjete licence (kvota, datum isteka, geografija), odabrati blockchain (javni vs. permissioned). |
| **Razvoj ugovora** | Napisati, testirati i auditirati Solidity ugovore; integrirati OpenZeppelin biblioteke za sigurnost. |
| **Proširenje Formizea** | Deploy Web3 Adaptera, konfigurirati pravila politike, mapirati identitete korisnika na wallet adrese. |
| **Testiranje integracije** | Simulirati zahtjeve potrošača, provjeriti ažuriranja stanja na chainu, potvrditi zapise u IPFS revizijskom logu. |
| **Produkcijski rollout** | Deploy ugovore na mainnet ili konsorcijsku mrežu, aktivirati nadzorne panele, obučiti timove za upravljanje. |
| **Kontinuirano poboljšanje** | Periodično pregledavati verzije ugovora, dodavati nove klauzule (npr. GDPR‑right‑to‑erasure), ažurirati Formize politike. |

---

## 8. Smjerovi za budućnost

1. **Zero‑Knowledge Proofs (ZKP)** – Omogućiti provjeru usklađenosti licence bez otkrivanja identiteta potrošača.  
2. **Dinamični modeli cijena** – Pametni ugovori mogu koristiti oracle‑driven cijene, prilagođavajući naknade prema potražnji za sintetičkim podacima.  
3. **Međulančana interoperabilnost** – Korištenje Polkadot ili Cosmos mostova za prepoznavanje licenci kroz više blockchain ekosustava.  
4. **AI‑generirane klauzule ugovora** – Iskoristiti LLM‑ove za automatsko generiranje klauzula licenciranja na temelju regulatornih predložaka, a zatim ih kompajlirati u Solidity kod.

---

## Pogledajte i

- [OpenZeppelin Contracts Library – Secure Smart Contract Patterns](https://github.com/OpenZeppelin/openzeppelin-contracts)  
- [Ethereum Improvement Proposal 4337 – Account Abstraction for Pay‑Per‑Use Models](https://eips.ethereum.org/EIPS/eip-4337)