clementine_core::config

Struct BridgeConfig

Source
pub struct BridgeConfig {
Show 31 fields pub protocol_paramset: &'static ProtocolParamset, pub host: String, pub port: u16, pub secret_key: SecretKey, pub winternitz_secret_key: Option<SecretKey>, pub operator_withdrawal_fee_sats: Option<Amount>, pub bitcoin_rpc_url: String, pub bitcoin_rpc_user: SecretString, pub bitcoin_rpc_password: SecretString, pub db_host: String, pub db_port: usize, pub db_user: SecretString, pub db_password: SecretString, pub db_name: String, pub citrea_rpc_url: String, pub citrea_light_client_prover_url: String, pub citrea_chain_id: u32, pub bridge_contract_address: String, pub header_chain_proof_path: Option<PathBuf>, pub security_council: SecurityCouncil, pub verifier_endpoints: Option<Vec<String>>, pub operator_endpoints: Option<Vec<String>>, pub operator_reimbursement_address: Option<Address<NetworkUnchecked>>, pub operator_collateral_funding_outpoint: Option<OutPoint>, pub server_cert_path: PathBuf, pub server_key_path: PathBuf, pub client_cert_path: PathBuf, pub client_key_path: PathBuf, pub ca_cert_path: PathBuf, pub client_verification: bool, pub aggregator_cert_path: PathBuf,
}
Expand description

Configuration options for any Clementine target (tests, binaries etc.).

Fields§

§protocol_paramset: &'static ProtocolParamset

Protocol paramset

Sourced from either a file or the environment, is set to REGTEST_PARAMSET in tests

Skipped in deserialization and replaced by either file/environment source. See crate::cli::get_cli_config

§host: String

Host of the operator or the verifier

§port: u16

Port of the operator or the verifier

§secret_key: SecretKey

Secret key for the operator or the verifier.

§winternitz_secret_key: Option<SecretKey>

Additional secret key that will be used for creating Winternitz one time signature.

§operator_withdrawal_fee_sats: Option<Amount>

Operator’s fee for withdrawal, in satoshis.

§bitcoin_rpc_url: String

Bitcoin remote procedure call URL.

§bitcoin_rpc_user: SecretString

Bitcoin RPC user.

§bitcoin_rpc_password: SecretString

Bitcoin RPC user password.

§db_host: String

PostgreSQL database host address.

§db_port: usize

PostgreSQL database port.

§db_user: SecretString

PostgreSQL database user name.

§db_password: SecretString

PostgreSQL database user password.

§db_name: String

PostgreSQL database name.

§citrea_rpc_url: String

Citrea RPC URL.

§citrea_light_client_prover_url: String

Citrea light client prover RPC URL.

§citrea_chain_id: u32

Citrea’s EVM Chain ID.

§bridge_contract_address: String

Bridge contract address.

§header_chain_proof_path: Option<PathBuf>§security_council: SecurityCouncil

Security council.

§verifier_endpoints: Option<Vec<String>>

Verifier endpoints. For the aggregator only

§operator_endpoints: Option<Vec<String>>

Operator endpoint. For the aggregator only

§operator_reimbursement_address: Option<Address<NetworkUnchecked>>

Own operator’s reimbursement address.

§operator_collateral_funding_outpoint: Option<OutPoint>

Own operator’s collateral funding outpoint.

§server_cert_path: PathBuf

Path to the server certificate file.

Required for all entities.

§server_key_path: PathBuf

Path to the server key file.

§client_cert_path: PathBuf

Path to the client certificate file. (used to communicate with other gRPC services)

Required for all entities. This is used to authenticate requests. Aggregator’s client certificate should match the expected aggregator certificate in other entities.

Aggregator needs this to call other entities, other entities need this to call their own internal endpoints.

§client_key_path: PathBuf

Path to the client key file.

§ca_cert_path: PathBuf

Path to the CA certificate file which is used to verify client certificates.

§client_verification: bool

Whether client certificates should be restricted to Aggregator and Self certificates.

Client certificates are always validated against the CA certificate according to mTLS regardless of this setting.

§aggregator_cert_path: PathBuf

Path to the aggregator certificate file. (used to authenticate requests from aggregator)

Aggregator’s client cert should be equal to the this certificate.

Implementations§

Source§

impl BridgeConfig

Source

pub fn get_num_required_nofn_sigs(&self, deposit_data: &DepositData) -> usize

Returns the number of required signatures for N-of-N signing session.

§Arguments
  • deposit_data - The deposit data for which to calculate required signatures.
§Returns

The number of required N-of-N signatures for the deposit.

Source

pub fn get_num_required_operator_sigs( &self, deposit_data: &DepositData, ) -> usize

Returns the number of required operator signatures for a deposit.

§Arguments
  • deposit_data - The deposit data for which to calculate required signatures.
§Returns

The number of required operator signatures for the deposit.

Source

pub fn get_num_required_nofn_sigs_per_kickoff( &self, deposit_data: &DepositData, ) -> usize

Returns the number of required N-of-N signatures per kickoff for a deposit.

§Arguments
  • deposit_data - The deposit data for which to calculate required signatures per kickoff.
§Returns

The number of required N-of-N signatures per kickoff.

Source

pub fn get_num_required_operator_sigs_per_kickoff( &self, deposit_data: &DepositData, ) -> usize

Returns the number of required operator signatures per kickoff for a deposit.

§Arguments
  • deposit_data - The deposit data for which to calculate required signatures per kickoff.
§Returns

The number of required operator signatures per kickoff.

Source

pub fn get_num_kickoff_winternitz_pks(&self) -> usize

Returns the total number of Winternitz public keys used in kickoff UTXOs for blockhash commits.

§Returns

The number of Winternitz public keys required for all rounds and kickoffs.

Source

pub fn get_num_unspent_kickoff_sigs(&self) -> usize

Returns the total number of unspent kickoff signatures needed from each operator.

§Returns

The number of unspent kickoff signatures required for all rounds from one operator.

Source

pub fn get_num_challenge_ack_hashes(&self, deposit_data: &DepositData) -> usize

Returns the number of challenge ack hashes needed for a single operator for each round.

§Arguments
  • deposit_data - The deposit data for which to calculate required challenge ack hashes.
§Returns

The number of challenge ack hashes required for the deposit.

Source§

impl BridgeConfig

Source

pub fn from_env() -> Result<Self, BridgeError>

Source§

impl BridgeConfig

Source

pub fn new() -> Self

Create a new BridgeConfig with default values.

Source

pub fn protocol_paramset(&self) -> &'static ProtocolParamset

Get the protocol paramset defined by the paramset name.

Source

pub fn try_parse_file(path: PathBuf) -> Result<Self, BridgeError>

Read contents of a TOML file and generate a BridgeConfig.

Source

pub fn try_parse_from(input: String) -> Result<Self, BridgeError>

Try to parse a BridgeConfig from given TOML formatted string and generate a BridgeConfig.

Trait Implementations§

Source§

impl Clone for BridgeConfig

Source§

fn clone(&self) -> BridgeConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BridgeConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BridgeConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for BridgeConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T, U> ExactFrom<T> for U
where U: TryFrom<T>,

§

fn exact_from(value: T) -> U

§

impl<T, U> ExactInto<U> for T
where U: ExactFrom<T>,

§

fn exact_into(self) -> U

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<T, U> OverflowingInto<U> for T
where U: OverflowingFrom<T>,

§

fn overflowing_into(self) -> (U, bool)

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T, U> RoundingInto<U> for T
where U: RoundingFrom<T>,

§

fn rounding_into(self, rm: RoundingMode) -> (U, Ordering)

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, U> SaturatingInto<U> for T
where U: SaturatingFrom<T>,

§

fn saturating_into(self) -> U

§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> ToDebugString for T
where T: Debug,

§

fn to_debug_string(&self) -> String

Returns the String produced by Ts Debug implementation.

§Examples
use malachite_base::strings::ToDebugString;

assert_eq!([1, 2, 3].to_debug_string(), "[1, 2, 3]");
assert_eq!(
    [vec![2, 3], vec![], vec![4]].to_debug_string(),
    "[[2, 3], [], [4]]"
);
assert_eq!(Some(5).to_debug_string(), "Some(5)");
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryClone for T
where T: Clone,

§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T, U> WrappingInto<U> for T
where U: WrappingFrom<T>,

§

fn wrapping_into(self) -> U

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSend for T
where T: Send,

§

impl<'de, T> RpcBorrow<'de> for T
where T: Deserialize<'de> + Debug + Send + Sync + Unpin,

§

impl<T> RpcRecv for T
where T: DeserializeOwned + Debug + Send + Sync + Unpin + 'static,