Skip to content

Commit

Permalink
Merge pull request #164 from joaomlneto/xrpl-20250225
Browse files Browse the repository at this point in the history
XRPL 20250225
  • Loading branch information
joaomlneto authored Mar 3, 2025
2 parents 142c518 + a77a049 commit eb18fbf
Show file tree
Hide file tree
Showing 9 changed files with 21 additions and 69 deletions.
10 changes: 0 additions & 10 deletions simulator/src/main/java/byzzbench/simulator/Replica.java
Original file line number Diff line number Diff line change
Expand Up @@ -161,16 +161,6 @@ public void initialize() {
// do nothing by default
}

/**
* Handle a request received from a client.
*
* @param clientId the ID of the client
* @param request the request payload
* @param timestamp the time the request was created/sent
* @throws Exception if an error occurs while handling the request
*/
public abstract void handleClientRequest(String clientId, long timestamp, Serializable request) throws Exception;

/**
* Send a reply to a client.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import byzzbench.simulator.protocols.XRPL.messages.XRPLTxMessage;
import byzzbench.simulator.protocols.XRPL.messages.XRPLValidateMessage;
import byzzbench.simulator.state.TotalOrderCommitLog;
import byzzbench.simulator.transport.DefaultClientRequestPayload;
import byzzbench.simulator.transport.MessagePayload;
import lombok.Getter;

Expand Down Expand Up @@ -53,18 +54,21 @@ protected XRPLReplica(String nodeId, Scenario scenario, List<String> UNL, XRPLLe
}
}

public void handleClientRequest(String clientId, Serializable request) throws Exception {
String tx = request.toString();
XRPLTxMessage txmsg = new XRPLTxMessage(tx, clientId);
this.handleMessage(clientId, txmsg);
}

@Override
public void handleMessage(String sender, MessagePayload message) throws Exception {
if (message instanceof XRPLProposeMessage propmsg) {
proposeMessageHandler(propmsg);
} else if (message instanceof XRPLSubmitMessage submsg) {
submitMessageHandler(submsg);
} else if (message instanceof XRPLValidateMessage valmsg) {
validateMessageHandler(valmsg);
} else if (message instanceof XRPLTxMessage txmsg) {
recvTxHandler(txmsg);
} else {
throw new Exception("Unknown message type");
switch (message) {
case XRPLProposeMessage propmsg -> proposeMessageHandler(propmsg);
case XRPLSubmitMessage submsg -> submitMessageHandler(submsg);
case XRPLValidateMessage valmsg -> validateMessageHandler(valmsg);
case XRPLTxMessage txmsg -> recvTxHandler(txmsg);
case DefaultClientRequestPayload request -> handleClientRequest(sender, request);
case null, default -> throw new IllegalArgumentException("Unknown message type: " + message);
}

}
Expand Down Expand Up @@ -511,11 +515,4 @@ private void playbackProposals() {
}
}
}

@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) throws Exception {
String tx = request.toString();
XRPLTxMessage txmsg = new XRPLTxMessage(tx, clientId);
this.handleMessage(clientId, txmsg);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package byzzbench.simulator.protocols.dummy;

import java.io.Serializable;

import byzzbench.simulator.Replica;
import byzzbench.simulator.Scenario;
import byzzbench.simulator.state.SerializableLogEntry;
Expand All @@ -23,11 +21,6 @@ public void initialize() {
// nothing to do
}

@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) {
throw new UnsupportedOperationException("Unsupported operation: handleClientRequest");
}

@Override
public void handleMessage(String sender, MessagePayload m) {
if (m instanceof DefaultClientRequestPayload clientRequestMessage) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import lombok.Getter;
import lombok.extern.java.Log;

import java.io.Serializable;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.atomic.AtomicLong;
Expand Down Expand Up @@ -50,11 +49,6 @@ public void initialize() {
this.resetTimeout();
}

@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) throws Exception {
throw new UnsupportedOperationException("Client requests not supported in FastHotStuff");
}

private void createGenesisBlocks() {
List<String> nodeIds = this.getNodeIds().stream().sorted().toList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1195,23 +1195,20 @@ public Serializable compute(long sequenceNumber, LogEntry operation) {
return operation;
}

@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) {
public void handleClientRequest(String clientId, ClientRequestMessage clientRequestMessage) {
// timestamp should be the time of the creation of the request
RequestMessage m = new RequestMessage(request, timestamp, clientId);
RequestMessage m = new RequestMessage(clientRequestMessage.getOperation(), clientRequestMessage.getTimestamp(), clientId);
//System.out.println(m);
this.recvRequest(m);
}

@Override
public void handleMessage(String sender, MessagePayload m) {
if (m instanceof RequestMessage request) {
//System.out.println(request);
recvRequest(request);
return;
} else if (m instanceof ClientRequestMessage clientRequest) {
//System.out.println(clientRequest);
handleClientRequest(sender, clientRequest.getTimestamp(), clientRequest.getOperation());
handleClientRequest(sender, clientRequest);
return;
} else if (m instanceof PrepareMessage prepare) {
recvPrepare(prepare);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import lombok.Getter;
import lombok.extern.java.Log;

import java.io.Serializable;
import java.time.Duration;
import java.time.Instant;
import java.util.*;
Expand Down Expand Up @@ -440,17 +439,6 @@ public String primary(long vi) {
return (vi == v) ? this.cur_primary : replicaIds[(int) (vi % replicaIds.length)];
}


@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) throws Exception {
if (request instanceof RequestMessage) {
this.handleMessage(clientId, (RequestMessage) request);
} else {
throw new UnsupportedOperationException("Unknown request type: " + request.getClass().getName());
}
}


@Override
public void handleMessage(String sender, MessagePayload message) throws Exception {
// for some reason the original code does this before receiving a message.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -720,8 +720,7 @@ public Serializable compute(long sequenceNumber, LogEntry operation) {
return operation;
}

@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) {
public void handleClientRequest(String clientId, Serializable request) {
// FIXME: should not get timestamp from system time
RequestMessage m = new RequestMessage(request, System.currentTimeMillis(), clientId);
this.recvRequest(m);
Expand All @@ -730,7 +729,7 @@ public void handleClientRequest(String clientId, long timestamp, Serializable re
@Override
public void handleMessage(String sender, MessagePayload m) {
switch (m) {
case DefaultClientRequestPayload clientRequest -> handleClientRequest(sender, 0L, clientRequest.getOperation());
case DefaultClientRequestPayload clientRequest -> handleClientRequest(sender, clientRequest.getOperation());
case RequestMessage request -> recvRequest(request);
case PrePrepareMessage prePrepare -> recvPrePrepare(prePrepare);
case PrepareMessage prepare -> recvPrepare(prepare);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import lombok.Getter;
import lombok.extern.java.Log;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
Expand Down Expand Up @@ -129,11 +128,6 @@ private Replica getInternalReplicaFromId(String id) {
return replicas.get(index);
}

@Override
public void handleClientRequest(String clientId, long timestamp, Serializable request) {
throw new UnsupportedOperationException("Not implemented");
}

/**
* Get the internal replicas that should handle the given message.
*
Expand Down
4 changes: 2 additions & 2 deletions simulator/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ springdoc:
# ByzzBench configuration
byzzbench:
autostart: true # Whether to start running scenarios automatically on startup
numScenarios: 4000
numScenarios: 1000
#outputPath: /tmp/byzzbench # The path to write the output to
outputSchedules: buggy # which schedules to write to file? one of 'all', 'buggy' or 'none'

Expand All @@ -41,7 +41,7 @@ byzzbench:
numTwinsPerReplica: 2

scenario:
id: hbft
id: xrpl
params:
replicas: 4
scheduledFaults:
Expand Down

0 comments on commit eb18fbf

Please sign in to comment.