@@ -41,16 +41,15 @@ public class RelayAggregator {
4141 private final ArrayDB <Address > relayers = Context .newArrayDB ("relayers" , Address .class );
4242 private final DictDB <Address , Boolean > relayersLookup = Context .newDictDB ("relayersLookup" , Boolean .class );
4343
44- private final DictDB <String , Packet > packets = Context .newDictDB ("packets" , Packet .class );
44+ private final DictDB <byte [] , Packet > packets = Context .newDictDB ("packets" , Packet .class );
4545
46- private final BranchDB <String , DictDB <Address , byte []>> signatures = Context .newBranchDB ("signatures" ,
46+ private final BranchDB <byte [] , DictDB <Address , byte []>> signatures = Context .newBranchDB ("signatures" ,
4747 byte [].class );
4848
4949 public RelayAggregator (Address _admin ) {
5050 if (admin .get () == null ) {
5151 admin .set (_admin );
5252 signatureThreshold .set (DEFAULT_SIGNATURE_THRESHOLD );
53- addRelayer (_admin );
5453 }
5554 }
5655
@@ -60,12 +59,6 @@ public void setAdmin(Address _admin) {
6059
6160 Context .require (admin .get () != _admin , "admin already set" );
6261
63- // add new admin as relayer
64- addRelayer (_admin );
65-
66- // remove old admin from relayer list
67- removeRelayer (admin .get ());
68-
6962 admin .set (_admin );
7063 }
7164
@@ -107,10 +100,9 @@ public void setRelayers(Address[] newRelayers, int threshold) {
107100 addRelayer (newRelayer );
108101 }
109102
110- Address adminAdrr = admin .get ();
111103 for (int i = 0 ; i < relayers .size (); i ++) {
112104 Address oldRelayer = relayers .get (i );
113- if (!oldRelayer . equals ( adminAdrr ) && ! newRelayersMap .containsKey (oldRelayer )) {
105+ if (!newRelayersMap .containsKey (oldRelayer )) {
114106 removeRelayer (oldRelayer );
115107 }
116108 }
@@ -127,8 +119,13 @@ public boolean packetSubmitted(
127119 Address relayer ,
128120 String srcNetwork ,
129121 String srcContractAddress ,
130- BigInteger srcSn ) {
131- String pktID = Packet .createId (srcNetwork , srcContractAddress , srcSn );
122+ BigInteger srcSn ,
123+ BigInteger srcHeight ,
124+ String dstNetwork ,
125+ String dstContractAddress ,
126+ byte [] data ) {
127+ Packet pkt = new Packet (srcNetwork , srcContractAddress , srcSn , srcHeight , dstNetwork , dstContractAddress , data );
128+ byte [] pktID = pkt .getId ();
132129 byte [] existingSign = signatures .at (pktID ).get (relayer );
133130 return existingSign != null ;
134131 }
@@ -147,7 +144,7 @@ public void submitPacket(
147144 relayersOnly ();
148145
149146 Packet pkt = new Packet (srcNetwork , srcContractAddress , srcSn , srcHeight , dstNetwork , dstContractAddress , data );
150- String pktID = pkt .getId ();
147+ byte [] pktID = pkt .getId ();
151148
152149 if (packets .get (pktID ) == null ) {
153150 packets .set (pktID , pkt );
@@ -170,7 +167,7 @@ public void submitPacket(
170167 setSignature (pktID , Context .getCaller (), signature );
171168
172169 if (signatureThresholdReached (pktID )) {
173- byte [][] sigs = getSignatures (srcNetwork , srcContractAddress , srcSn );
170+ byte [][] sigs = getSignatures (pktID );
174171 byte [] encodedSigs = serializeSignatures (sigs );
175172 PacketAcknowledged (
176173 pkt .getSrcNetwork (),
@@ -185,8 +182,7 @@ public void submitPacket(
185182 }
186183 }
187184
188- private byte [][] getSignatures (String srcNetwork , String srcContractAddress , BigInteger srcSn ) {
189- String pktID = Packet .createId (srcNetwork , srcContractAddress , srcSn );
185+ private byte [][] getSignatures (byte [] pktID ) {
190186 DictDB <Address , byte []> signDict = signatures .at (pktID );
191187 ArrayList <byte []> signatureList = new ArrayList <byte []>();
192188
@@ -205,7 +201,7 @@ private byte[][] getSignatures(String srcNetwork, String srcContractAddress, Big
205201 return sigs ;
206202 }
207203
208- protected void setSignature (String pktID , Address addr , byte [] sign ) {
204+ protected void setSignature (byte [] pktID , Address addr , byte [] sign ) {
209205 signatures .at (pktID ).set (addr , sign );
210206 }
211207
@@ -241,7 +237,7 @@ protected static byte[][] deserializeSignatures(byte[] encodedSigs) {
241237 }
242238
243239 private void adminOnly () {
244- Context .require (Context .getCaller ().equals (admin .get ()), "Unauthorized: caller is not the leader relayer " );
240+ Context .require (Context .getCaller ().equals (admin .get ()), "Unauthorized: caller is not the admin " );
245241 }
246242
247243 private void relayersOnly () {
@@ -270,7 +266,7 @@ private void removeRelayer(Address oldRelayer) {
270266 }
271267 }
272268
273- private Boolean signatureThresholdReached (String pktID ) {
269+ private Boolean signatureThresholdReached (byte [] pktID ) {
274270 int noOfSignatures = 0 ;
275271 for (int i = 0 ; i < relayers .size (); i ++) {
276272 Address relayer = relayers .get (i );
@@ -282,7 +278,7 @@ private Boolean signatureThresholdReached(String pktID) {
282278 return noOfSignatures >= signatureThreshold .get ();
283279 }
284280
285- private void removePacket (String pktID ) {
281+ private void removePacket (byte [] pktID ) {
286282 packets .set (pktID , null );
287283 DictDB <Address , byte []> signDict = signatures .at (pktID );
288284
0 commit comments