ostore.agree
Class ThresholdByzantine

java.lang.Object
  |
  +--ostore.agree.ThresholdByzantine
All Implemented Interfaces:
AgreementStageIF, EventHandlerIF, ProfilableIF, SingleThreadedEventHandlerIF

public class ThresholdByzantine
extends Object
implements SingleThreadedEventHandlerIF, EventHandlerIF, AgreementStageIF, ProfilableIF

Byzantine agreement using an RSA-based threshold signature scheme. This algorithm was originally modelled on that by Castro-Liskov, but contains several important changes. Most importantly, the results of agreements are signed, allowing offline verification later.

Interaction with the client of this stage (currently, FakeInner) is as follows:

 Client     Replica.inner    Replica.agree    General.agree   General.inner
   |              |                 |                |               |
   |   xReqMsg    |                 |                |               |
   |------------->|    AgreeInit    |                |               |
   |              |---------------->|                |               |
   |              |                 |                |    xReqMsg    |
   |---------------------------------------------------------------->|
   |              |                 |                |               |
   |              |                 |                |   AgreeInit   |
   |              |                 |                |<--------------|
   |              |                 |                |               |
   |              |                 |   Preprepare   |               |
   |              |                 |<---------------|               |
   |              |                 |                |               |
   |              |                 |    Prepare     |               |
   |              |                 |--------------->|               |
   |              |                 |                |               |
   |              |                 |     Commit     |               |
   |              |                 |<---------------|               |
   |              |                 |--------------->|               |
   |              |   AgreeExeReq   |                |  AgreeExeReq  |
   |              |<----------------|                |-------------->|
   |              |                 |                |               |
   |              |   AgreeExeResp  |                |  AgreeExeResp |
   |              |---------------->|                |<--------------|
   |              |                 |     Result     |               |
   |              |                 |<---------------|               |
   |              |                 |--------------->|               |
   |              |   AgreeSuccess  |                |  AgreeSuccess |
   |              |<----------------|                |-------------->|
   |   xRespMsg   |                 |                |               |
   |<-------------|                 |                |               |
   |              |                 |                |               |
   |              |                 |                |               |

Version:
$Id: ThresholdByzantine.java,v 1.39 2004/05/13 19:20:47 hweather Exp $
Author:
Sean C. Rhea

Constructor Summary
ThresholdByzantine()
           
 
Method Summary
 void destroy()
           
 void handleEvent(QueueElementIF item)
           
 void handleEvents(QueueElementIF[] items)
           
 void init(ConfigDataIF config)
           
 int member_count(SecureHash ring_id)
          How many people are participating in the agreement process.
 int member_number(SecureHash ring_id)
          Which of the participants are we?
 int profileSize()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ThresholdByzantine

public ThresholdByzantine()
Method Detail

member_count

public int member_count(SecureHash ring_id)
Description copied from interface: AgreementStageIF
How many people are participating in the agreement process.

Specified by:
member_count in interface AgreementStageIF
Returns:
how many people are participating in the agreement process

member_number

public int member_number(SecureHash ring_id)
Description copied from interface: AgreementStageIF
Which of the participants are we?

Specified by:
member_number in interface AgreementStageIF
Returns:
which participant we are in the agreement process, from 0 to member_count () - 1.

init

public void init(ConfigDataIF config)
          throws Exception
Specified by:
init in interface EventHandlerIF
Exception

destroy

public void destroy()
             throws Exception
Specified by:
destroy in interface EventHandlerIF
Exception

profileSize

public int profileSize()
Specified by:
profileSize in interface ProfilableIF

handleEvent

public void handleEvent(QueueElementIF item)
                 throws EventHandlerException
Specified by:
handleEvent in interface EventHandlerIF
EventHandlerException

handleEvents

public void handleEvents(QueueElementIF[] items)
                  throws EventHandlerException
Specified by:
handleEvents in interface EventHandlerIF
EventHandlerException