Careful Onboarding
contract BadContract {
ctUint64 public sum;
//...
function addWithoutCarefulOnboard() public {
gtUint64 a = MpcCore.setPublic64(1);
gtUint64 sum_ = MpcCore.onBoard(sum); // THIS WILL REVERT
sum_ = MpcCore.add(sum_, a);
sum = MpcCore.offBoard(sum_);
}
//...
}contract GoodContract {
ctUint64 public sum;
constructor() {
// By initializing sum with an encrypted value, we ensure
// calling onBoard on sum does not revert
gtUint64 sum_ = MpcCore.setPublic64(0);
sum = MpcCore.offBoard(sum_);
}
//...
function add() public {
gtUint64 a = MpcCore.setPublic64(1);
gtUint64 sum_ = MpcCore.onBoard(sum);
sum_ = MpcCore.add(sum_, a);
sum = MpcCore.offBoard(sum_);
}
//...
}Last updated
Was this helpful?