forked from Qortal/qortal
Give up on cross-chain trade if initial AT doesn't confirm within 24 hours
This commit is contained in:
parent
99315c7378
commit
84dba739d9
@ -64,6 +64,9 @@ public class TradeBot {
|
|||||||
private static final Logger LOGGER = LogManager.getLogger(TradeBot.class);
|
private static final Logger LOGGER = LogManager.getLogger(TradeBot.class);
|
||||||
private static final Random RANDOM = new SecureRandom();
|
private static final Random RANDOM = new SecureRandom();
|
||||||
|
|
||||||
|
/** Maximum time Bob waits for his AT creation transaction to be confirmed into a block. */
|
||||||
|
private static final long MAX_AT_CONFIRMATION_PERIOD = 24 * 60 * 60 * 1000L; // ms
|
||||||
|
|
||||||
private static final long P2SH_B_OUTPUT_AMOUNT = 1000L; // P2SH-B output amount needs to be higher than the dust threshold (3000 sats/kB).
|
private static final long P2SH_B_OUTPUT_AMOUNT = 1000L; // P2SH-B output amount needs to be higher than the dust threshold (3000 sats/kB).
|
||||||
|
|
||||||
private static TradeBot instance;
|
private static TradeBot instance;
|
||||||
@ -384,8 +387,21 @@ public class TradeBot {
|
|||||||
* If AT is deployed, then trade-bot's next step is to wait for MESSAGE from Alice.
|
* If AT is deployed, then trade-bot's next step is to wait for MESSAGE from Alice.
|
||||||
*/
|
*/
|
||||||
private void handleBobWaitingForAtConfirm(Repository repository, TradeBotData tradeBotData) throws DataException {
|
private void handleBobWaitingForAtConfirm(Repository repository, TradeBotData tradeBotData) throws DataException {
|
||||||
if (!repository.getATRepository().exists(tradeBotData.getAtAddress()))
|
if (!repository.getATRepository().exists(tradeBotData.getAtAddress())) {
|
||||||
|
if (NTP.getTime() - tradeBotData.getTimestamp() <= MAX_AT_CONFIRMATION_PERIOD)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// We've waited ages for AT to be confirmed into a block but something has gone awry.
|
||||||
|
// After this long we assume transaction loss so give up with trade-bot entry too.
|
||||||
|
tradeBotData.setState(TradeBotData.State.BOB_REFUNDED);
|
||||||
|
tradeBotData.setTimestamp(NTP.getTime());
|
||||||
|
repository.getCrossChainRepository().delete(tradeBotData.getTradePrivateKey());
|
||||||
|
repository.saveChanges();
|
||||||
|
|
||||||
|
LOGGER.info(() -> String.format("AT %s never confirmed. Giving up on trade", tradeBotData.getAtAddress()));
|
||||||
|
notifyStateChange(tradeBotData);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
tradeBotData.setState(TradeBotData.State.BOB_WAITING_FOR_MESSAGE);
|
tradeBotData.setState(TradeBotData.State.BOB_WAITING_FOR_MESSAGE);
|
||||||
tradeBotData.setTimestamp(NTP.getTime());
|
tradeBotData.setTimestamp(NTP.getTime());
|
||||||
|
Loading…
Reference in New Issue
Block a user