Скрытие значений из расчета (zkSnarks?)

В отношении вычисления скрытого хранимого значения .

Например: учетная запись A и учетная запись B имеют скрытые сохраненные значения.

Учетные записи A не могут знать скрытое сохраненное значение B , и наоборот.

Возможно ли, чтобы A взаимодействовал с ценностью B, не зная о скрытой ценности B.

Можно ли написать смарт-контракт, чтобы позволить A взаимодействовать со значением B, не зная (в этом случае сравнить и изменить значение?)

Я предполагаю, что это icovered zkSnarks?

Исправлено «скрытое» на «сохраненное».

Ответы (1)

Короткий ответ: да, но зависит от того, что вам действительно нужно. Следующий контракт хранит возраст человека и, не раскрывая его, может «подтвердить», является ли человек подростком или взрослым. Вы также можете увеличить возраст, не зная об этом.

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;
    }
}

Конечно, переменная возраста на самом деле не «скрыта», а, как вы сказали, «хранится» в блокчейне. С точки зрения смарт-контракта он скрыт...

Вы можете легко прочитать возраст, просто проверив хранилище контракта вручную, на самом деле он не скрыт.
Именно так, но @AstroBoy изменил «скрытый» на «хранимый», поэтому я предположил, что он искал более простую вещь, чем настоящий skSnark.