Ausblenden von Werten vor der Berechnung (zkSnarks?)

In Bezug auf eine Berechnung eines verborgenen gespeicherten Werts .

Zum Beispiel: Konto A und Konto B Beide haben versteckte gespeicherte Werte.

Konten A können den verborgenen gespeicherten Wert von B nicht kennen und umgekehrt.

Ist es möglich, dass A mit dem Wert von B interagiert, ohne den verborgenen Wert von B zu kennen?

Könnte ein intelligenter Vertrag geschrieben werden, damit A mit dem Wert von B interagieren kann, ohne es zu wissen (in diesem Fall den Wert vergleichen und ändern?)

Ich gehe davon aus, dass dies von zkSnarks abgedeckt wird?

„Versteckt“ auf „gespeichert“ korrigiert.

Antworten (1)

Kurze Antwort ist Ja, aber hängt davon ab, was Sie wirklich brauchen. Der folgende Vertrag speichert das Alter der Person und kann, ohne es preiszugeben, „zertifizieren“, ob die Person ein Teenager oder ein Erwachsener ist. Sie können das Alter auch erhöhen, ohne es zu wissen.

pragma solidity ^0.4.25;

contract ZK {
    uint private age;

    constructor (uint _age) public {
        age = _age;
    }

    function isAdult() public view returns (bool) {
        return (age >= 18);
    }

    function isTeen() public view returns (bool) {
        return (age >= 13 && age <= 19);
    }

    function addYears (uint _years) public {
        age += _years;
    }
}

Natürlich ist die Altersvariable nicht wirklich „versteckt“, sondern, wie Sie sagten, auf der Blockchain „gespeichert“. Aus Sicht eines Smart Contracts ist es versteckt...

Sie können das Alter leicht ablesen, indem Sie einfach die Speicherung des Vertrages manuell überprüfen, es ist nicht wirklich versteckt.
Genau, aber @AstroBoy hat "versteckt" in "gespeichert" geändert, also nahm ich an, dass er nach einer einfacheren Sache als einem echten skSnark suchte