Skip to content

Commit

Permalink
Provide default value for unspecified NoiseMechanism for old Measurem…
Browse files Browse the repository at this point in the history
…ents (#957)

Fixes #956
  • Loading branch information
renjiezh authored Apr 20, 2023
1 parent ae25637 commit d252e5c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ fun InternalNoiseMechanism.toNoiseMechanism(): NoiseMechanism {
return when (this) {
InternalNoiseMechanism.GEOMETRIC -> NoiseMechanism.GEOMETRIC
InternalNoiseMechanism.DISCRETE_GAUSSIAN -> NoiseMechanism.DISCRETE_GAUSSIAN
InternalNoiseMechanism.UNRECOGNIZED,
InternalNoiseMechanism.NOISE_MECHANISM_UNSPECIFIED -> error("Noise mechanism not specified")
InternalNoiseMechanism.NOISE_MECHANISM_UNSPECIFIED,
InternalNoiseMechanism.UNRECOGNIZED -> error("invalid internal noise mechanism.")
}
}

Expand Down Expand Up @@ -194,7 +194,16 @@ fun InternalProtocolConfig.toProtocolConfig(
}
ellipticCurveId = source.liquidLegionsV2.ellipticCurveId
maximumFrequency = source.liquidLegionsV2.maximumFrequency
noiseMechanism = source.liquidLegionsV2.noiseMechanism.toNoiseMechanism()
// Use `GEOMETRIC` for unspecified InternalNoiseMechanism for old Measurements.
noiseMechanism =
if (
source.liquidLegionsV2.noiseMechanism ==
InternalNoiseMechanism.NOISE_MECHANISM_UNSPECIFIED
) {
NoiseMechanism.GEOMETRIC
} else {
source.liquidLegionsV2.noiseMechanism.toNoiseMechanism()
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,16 @@ fun buildMpcProtocolConfig(
}
ellipticCurveId = protocolConfig.liquidLegionsV2.ellipticCurveId
maximumFrequency = protocolConfig.liquidLegionsV2.maximumFrequency
noiseMechanism = protocolConfig.liquidLegionsV2.noiseMechanism.toSystemNoiseMechanism()
// Use `GEOMETRIC` for unspecified InternalNoiseMechanism for old Measurements.
noiseMechanism =
if (
protocolConfig.liquidLegionsV2.noiseMechanism ==
InternalProtocolConfig.NoiseMechanism.NOISE_MECHANISM_UNSPECIFIED
) {
NoiseMechanism.GEOMETRIC
} else {
protocolConfig.liquidLegionsV2.noiseMechanism.toSystemNoiseMechanism()
}
}
}
}
Expand Down Expand Up @@ -336,12 +345,12 @@ fun DuchyMeasurementLogEntry.toSystemComputationLogEntry(
.build()
}

/** Converts an internal NoiseMechanism to a system NoiseMechanism */
/** Converts an internal NoiseMechanism to a system NoiseMechanism. */
fun InternalNoiseMechanism.toSystemNoiseMechanism(): NoiseMechanism {
return when (this) {
InternalNoiseMechanism.GEOMETRIC -> NoiseMechanism.GEOMETRIC
InternalNoiseMechanism.DISCRETE_GAUSSIAN -> NoiseMechanism.DISCRETE_GAUSSIAN
InternalNoiseMechanism.UNRECOGNIZED,
InternalNoiseMechanism.NOISE_MECHANISM_UNSPECIFIED -> error("Invalid internal NoiseMechanism.")
InternalNoiseMechanism.NOISE_MECHANISM_UNSPECIFIED,
InternalNoiseMechanism.UNRECOGNIZED -> error("invalid internal noise mechanism.")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ message ProtocolConfig {
int32 maximum_frequency = 4;

// The mechanism to generate noise during computation.
//
// If not specified the value is assumed to be `GEOMETRIC`.
NoiseMechanism noise_mechanism = 5;
}

Expand Down

0 comments on commit d252e5c

Please sign in to comment.