Skip to content

Commit

Permalink
Merge pull request #2672 from rsksmart/wip/locking-cap-refactor-integ…
Browse files Browse the repository at this point in the history
…ration

LockingCap Refactor Integration
  • Loading branch information
josedahlquist authored Aug 21, 2024
2 parents 9bee1a9 + 35e5a8d commit 01bb758
Show file tree
Hide file tree
Showing 41 changed files with 1,823 additions and 706 deletions.
22 changes: 11 additions & 11 deletions rskj-core/src/main/java/co/rsk/peg/Bridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import co.rsk.panic.PanicProcessor;
import co.rsk.peg.BridgeMethods.BridgeMethodExecutor;
import co.rsk.peg.feeperkb.FeePerKbResponseCode;
import co.rsk.peg.lockingcap.LockingCapIllegalArgumentException;
import co.rsk.peg.vote.ABICallSpec;
import co.rsk.peg.bitcoin.MerkleBranch;
import co.rsk.peg.federation.Federation;
Expand Down Expand Up @@ -461,7 +462,7 @@ private boolean shouldReturnNullOnVoidMethods() {
return !activations.isActive(RSKIP417);
}

private void teardown() throws IOException {
private void teardown() {
bridgeSupport.save();
}

Expand Down Expand Up @@ -902,7 +903,7 @@ public long getRetiringFederationCreationBlockNumber(Object[] args) {
return bridgeSupport.getRetiringFederationCreationBlockNumber();
}

public Integer createFederation(Object[] args) throws BridgeIllegalArgumentException {
public Integer createFederation(Object[] args) {
logger.trace("createFederation");

return bridgeSupport.voteFederationChange(
Expand All @@ -911,7 +912,7 @@ public Integer createFederation(Object[] args) throws BridgeIllegalArgumentExcep
);
}

public Integer addFederatorPublicKey(Object[] args) throws BridgeIllegalArgumentException {
public Integer addFederatorPublicKey(Object[] args) {
logger.trace("addFederatorPublicKey");

byte[] publicKeyBytes;
Expand All @@ -928,7 +929,7 @@ public Integer addFederatorPublicKey(Object[] args) throws BridgeIllegalArgument
);
}

public Integer addFederatorPublicKeyMultikey(Object[] args) throws BridgeIllegalArgumentException {
public Integer addFederatorPublicKeyMultikey(Object[] args) {
logger.trace("addFederatorPublicKeyMultikey");

byte[] btcPublicKeyBytes = (byte[]) args[0];
Expand All @@ -944,7 +945,7 @@ public Integer addFederatorPublicKeyMultikey(Object[] args) throws BridgeIllegal
);
}

public Integer commitFederation(Object[] args) throws BridgeIllegalArgumentException {
public Integer commitFederation(Object[] args) {
logger.trace("commitFederation");

byte[] hash;
Expand All @@ -961,7 +962,7 @@ public Integer commitFederation(Object[] args) throws BridgeIllegalArgumentExcep
);
}

public Integer rollbackFederation(Object[] args) throws BridgeIllegalArgumentException {
public Integer rollbackFederation(Object[] args) {
logger.trace("rollbackFederation");

return bridgeSupport.voteFederationChange(
Expand Down Expand Up @@ -1163,13 +1164,12 @@ public byte[] getActivePowpegRedeemScript(Object[] args) {

public boolean increaseLockingCap(Object[] args) throws BridgeIllegalArgumentException {
logger.trace("increaseLockingCap");

Coin newLockingCap = BridgeUtils.getCoinFromBigInteger((BigInteger) args[0]);
if (newLockingCap.getValue() <= 0) {
throw new BridgeIllegalArgumentException("Locking cap must be bigger than zero");
try {
return bridgeSupport.increaseLockingCap(rskTx, newLockingCap);
} catch (LockingCapIllegalArgumentException e) {
throw new BridgeIllegalArgumentException(e);
}

return bridgeSupport.increaseLockingCap(rskTx, newLockingCap);
}

public void registerBtcCoinbaseTransaction(Object[] args) throws VMException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,8 @@ public BridgeIllegalArgumentException(String s) {
public BridgeIllegalArgumentException(String message, Throwable cause) {
super(message, cause);
}

public BridgeIllegalArgumentException(Throwable cause) {
super(cause);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ public enum BridgeStorageIndexKey {
RELEASE_REQUEST_QUEUE("releaseRequestQueue"),
PEGOUTS_WAITING_FOR_CONFIRMATIONS("releaseTransactionSet"),
PEGOUTS_WAITING_FOR_SIGNATURES("rskTxsWaitingFS"),
LOCKING_CAP_KEY("lockingCap"),
RELEASE_REQUEST_QUEUE_WITH_TXHASH("releaseRequestQueueWithTxHash"),
PEGOUTS_WAITING_FOR_CONFIRMATIONS_WITH_TXHASH_KEY("releaseTransactionSetWithTxHash"),
RECEIVE_HEADERS_TIMESTAMP("receiveHeadersLastTimestamp"),
Expand Down
32 changes: 4 additions & 28 deletions rskj-core/src/main/java/co/rsk/peg/BridgeStorageProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,6 @@ public class BridgeStorageProvider {
private PegoutsWaitingForConfirmations pegoutsWaitingForConfirmations;
private SortedMap<Keccak256, BtcTransaction> pegoutsWaitingForSignatures;

private Coin lockingCap;

private HashMap<Sha256Hash, Long> btcTxHashesToSave;

private Map<Sha256Hash, CoinbaseInformation> coinbaseInformationMap;
Expand Down Expand Up @@ -250,26 +248,6 @@ public void savePegoutsWaitingForSignatures() {
safeSaveToRepository(PEGOUTS_WAITING_FOR_SIGNATURES, pegoutsWaitingForSignatures, BridgeSerializationUtils::serializeMap);
}

public void saveLockingCap() {
if (activations.isActive(RSKIP134)) {
safeSaveToRepository(LOCKING_CAP_KEY, this.getLockingCap(), BridgeSerializationUtils::serializeCoin);
}
}

public void setLockingCap(Coin lockingCap) {
this.lockingCap = lockingCap;
}

public Coin getLockingCap() {
if (activations.isActive(RSKIP134)) {
if (this.lockingCap == null) {
this.lockingCap = safeGetFromRepository(LOCKING_CAP_KEY, BridgeSerializationUtils::deserializeCoin);
}
return this.lockingCap;
}
return null;
}

public CoinbaseInformation getCoinbaseInformation(Sha256Hash blockHash) {
if (!activations.isActive(RSKIP143)) {
return null;
Expand Down Expand Up @@ -395,15 +373,15 @@ public Optional<FlyoverFederationInformation> getFlyoverFederationInformation(by
return Optional.empty();
}

FlyoverFederationInformation flyoverFederationInformation = this.safeGetFromRepository(
FlyoverFederationInformation flyoverFederationInformationInStorage = this.safeGetFromRepository(
getStorageKeyForFlyoverFederationInformation(flyoverFederationRedeemScriptHash),
data -> BridgeSerializationUtils.deserializeFlyoverFederationInformation(data, flyoverFederationRedeemScriptHash)
);
if (flyoverFederationInformation == null) {
if (flyoverFederationInformationInStorage == null) {
return Optional.empty();
}

return Optional.of(flyoverFederationInformation);
return Optional.of(flyoverFederationInformationInStorage);
}

public void setFlyoverFederationInformation(FlyoverFederationInformation flyoverFederationInformation) {
Expand Down Expand Up @@ -542,15 +520,13 @@ protected void savePegoutTxSigHashes() {
));
}

public void save() throws IOException {
public void save() {
saveBtcTxHashesAlreadyProcessed();

saveReleaseRequestQueue();
savePegoutsWaitingForConfirmations();
savePegoutsWaitingForSignatures();

saveLockingCap();

saveHeightBtcTxHashAlreadyProcessed();

saveCoinbaseInformations();
Expand Down
Loading

0 comments on commit 01bb758

Please sign in to comment.