pub struct StateChannel {
pub channel_id: String,
pub config: StateChannelConfig,
pub state: ChannelState,
pub balance_a: u64,
pub balance_b: u64,
pub pubkey_a: String,
pub pubkey_b: String,
pub version: u64,
pub updates: Vec<StateUpdate>,
pub transactions: HashMap<String, Vec<u8>>,
}Expand description
State channel
Fields§
§channel_id: StringChannel ID
config: StateChannelConfigConfiguration
state: ChannelStateCurrent state
balance_a: u64Current balance A
balance_b: u64Current balance B
pubkey_a: StringPublic key A
pubkey_b: StringPublic key B
version: u64State version
updates: Vec<StateUpdate>State updates history
transactions: HashMap<String, Vec<u8>>Channel transactions
Implementations§
Source§impl StateChannel
impl StateChannel
Source§impl StateChannel
impl StateChannel
Sourcepub fn open(&mut self) -> Result<String, Box<dyn Error + Send + Sync>>
pub fn open(&mut self) -> Result<String, Box<dyn Error + Send + Sync>>
Open the state channel (create funding transaction)
Sourcepub fn update_state(
&mut self,
balance_a: u64,
balance_b: u64,
signatures: Vec<String>,
) -> Result<StateUpdate, Box<dyn Error + Send + Sync>>
pub fn update_state( &mut self, balance_a: u64, balance_b: u64, signatures: Vec<String>, ) -> Result<StateUpdate, Box<dyn Error + Send + Sync>>
Update the state channel
Sourcepub fn close_cooperative(
&mut self,
) -> Result<String, Box<dyn Error + Send + Sync>>
pub fn close_cooperative( &mut self, ) -> Result<String, Box<dyn Error + Send + Sync>>
Close the state channel (cooperative close)
Sourcepub fn force_close(&mut self) -> Result<String, Box<dyn Error + Send + Sync>>
pub fn force_close(&mut self) -> Result<String, Box<dyn Error + Send + Sync>>
Force close the state channel (unilateral close)
Sourcepub fn get_latest_update(&self) -> Option<&StateUpdate>
pub fn get_latest_update(&self) -> Option<&StateUpdate>
Get the latest state update
Sourcepub fn get_update_by_version(&self, version: u64) -> Option<&StateUpdate>
pub fn get_update_by_version(&self, version: u64) -> Option<&StateUpdate>
Get state update by version
Trait Implementations§
Source§impl Debug for StateChannel
impl Debug for StateChannel
Source§impl Default for StateChannel
impl Default for StateChannel
Source§impl Layer2Protocol for StateChannel
Implementation of async Layer2Protocol trait for StateChannel
impl Layer2Protocol for StateChannel
Implementation of async Layer2Protocol trait for StateChannel
fn initialize<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn connect<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_state<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProtocolState, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn submit_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
tx_data: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<String, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn check_transaction_status<'life0, 'life1, 'async_trait>(
&'life0 self,
tx_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<TransactionStatus, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn sync_state<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn issue_asset<'life0, 'async_trait>(
&'life0 self,
params: AssetParams,
) -> Pin<Box<dyn Future<Output = Result<String, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn transfer_asset<'life0, 'async_trait>(
&'life0 self,
transfer: AssetTransfer,
) -> Pin<Box<dyn Future<Output = Result<TransferResult, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn verify_proof<'life0, 'async_trait>(
&'life0 self,
proof: Proof,
) -> Pin<Box<dyn Future<Output = Result<VerificationResult, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn validate_state<'life0, 'life1, 'async_trait>(
&'life0 self,
state_data: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<ValidationResult, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl Layer2ProtocolTrait for StateChannel
impl Layer2ProtocolTrait for StateChannel
fn initialize(&self) -> Result<(), Box<dyn Error + Send + Sync>>
fn get_state(&self) -> Result<ProtocolState, Box<dyn Error + Send + Sync>>
fn submit_transaction( &self, tx_data: &[u8], ) -> Result<String, Box<dyn Error + Send + Sync>>
fn check_transaction_status( &self, tx_id: &str, ) -> Result<TransactionStatus, Box<dyn Error + Send + Sync>>
fn sync_state(&mut self) -> Result<(), Box<dyn Error + Send + Sync>>
fn issue_asset( &self, _params: AssetParams, ) -> Result<String, Box<dyn Error + Send + Sync>>
fn transfer_asset( &self, _transfer: AssetTransfer, ) -> Result<TransferResult, Box<dyn Error + Send + Sync>>
fn verify_proof( &self, proof: Proof, ) -> Result<VerificationResult, Box<dyn Error + Send + Sync>>
fn validate_state( &self, _state_data: &[u8], ) -> Result<ValidationResult, Box<dyn Error + Send + Sync>>
Auto Trait Implementations§
impl Freeze for StateChannel
impl RefUnwindSafe for StateChannel
impl Send for StateChannel
impl Sync for StateChannel
impl Unpin for StateChannel
impl UnwindSafe for StateChannel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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