Class: Confium::TC::Coordinator

Inherits:
Object
  • Object
show all
Defined in:
lib/confium/tc/coordinator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(quorum_id:) ⇒ Coordinator

Returns a new instance of Coordinator.



29
30
31
32
# File 'lib/confium/tc/coordinator.rb', line 29

def initialize(quorum_id:)
  @quorum_id = quorum_id
  @sessions = {}
end

Instance Attribute Details

#quorum_idObject (readonly)

Returns the value of attribute quorum_id.



27
28
29
# File 'lib/confium/tc/coordinator.rb', line 27

def quorum_id
  @quorum_id
end

#sessionsObject (readonly)

Returns the value of attribute sessions.



27
28
29
# File 'lib/confium/tc/coordinator.rb', line 27

def sessions
  @sessions
end

Instance Method Details

#aggregate(session_id) ⇒ Object



56
57
58
# File 'lib/confium/tc/coordinator.rb', line 56

def aggregate(session_id)
  fetch(session_id).aggregate
end

#create_session(message:, threshold:, unlock_window: SigningSession::DEFAULT_UNLOCK_WINDOW, scheme: 'CMP20-ECDSA-P256') ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/confium/tc/coordinator.rb', line 34

def create_session(message:, threshold:, unlock_window: SigningSession::DEFAULT_UNLOCK_WINDOW,
                   scheme: 'CMP20-ECDSA-P256')
  session_id = "session-#{@sessions.length + 1}"
  @sessions[session_id] = SigningSession.new(
    message: message, threshold: threshold,
    unlock_window: unlock_window, scheme: scheme
  )
  session_id
end

#session_state(session_id) ⇒ Object



44
45
46
# File 'lib/confium/tc/coordinator.rb', line 44

def session_state(session_id)
  fetch(session_id).state
end

#submit_commitment(session_id, signer_id, commitment_bytes) ⇒ Object



48
49
50
# File 'lib/confium/tc/coordinator.rb', line 48

def submit_commitment(session_id, signer_id, commitment_bytes)
  fetch(session_id).add_commitment(signer_id, commitment_bytes)
end

#submit_share(session_id, signer_id, share_bytes) ⇒ Object



52
53
54
# File 'lib/confium/tc/coordinator.rb', line 52

def submit_share(session_id, signer_id, share_bytes)
  fetch(session_id).add_share(signer_id, share_bytes)
end