Skip to content

Commit

Permalink
Add Tether token support via ERC20 and Omni
Browse files Browse the repository at this point in the history
  • Loading branch information
pingiun committed Aug 27, 2020
1 parent f45a26c commit 61d730a
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 4 deletions.
12 changes: 12 additions & 0 deletions assets/src/main/java/bisq/asset/LiquidBitcoinAddressValidator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package bisq.asset;

public class LiquidBitcoinAddressValidator extends RegexAddressValidator {
static private final String REGEX = "^([a-km-zA-HJ-NP-Z1-9]{26,35}|[a-km-zA-HJ-NP-Z1-9]{80}|[a-z]{2,5}1[ac-hj-np-z02-9]{8,87}|[A-Z]{2,5}1[AC-HJ-NP-Z02-9]{8,87})$";
public LiquidBitcoinAddressValidator() {
super(REGEX);
}

public LiquidBitcoinAddressValidator(String regex, String errorMessageI18nKey) {
super(REGEX, "validation.altcoin.liquidBitcoin.invalidAddress");
}
}
3 changes: 2 additions & 1 deletion assets/src/main/java/bisq/asset/coins/LiquidBitcoin.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@

import bisq.asset.AltCoinAccountDisclaimer;
import bisq.asset.Coin;
import bisq.asset.LiquidBitcoinAddressValidator;
import bisq.asset.RegexAddressValidator;

@AltCoinAccountDisclaimer("account.altcoin.popup.liquidbitcoin.msg")
public class LiquidBitcoin extends Coin {

public LiquidBitcoin() {
super("Liquid Bitcoin", "L-BTC", new RegexAddressValidator("^([a-km-zA-HJ-NP-Z1-9]{26,35}|[a-km-zA-HJ-NP-Z1-9]{80}|[a-z]{2,5}1[ac-hj-np-z02-9]{8,87}|[A-Z]{2,5}1[AC-HJ-NP-Z02-9]{8,87})$", "validation.altcoin.liquidBitcoin.invalidAddress"));
super("Liquid Bitcoin", "L-BTC", new LiquidBitcoinAddressValidator());
}
}
12 changes: 12 additions & 0 deletions assets/src/main/java/bisq/asset/coins/TetherUSDLiquid.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package bisq.asset.coins;

import bisq.asset.Coin;
import bisq.asset.LiquidBitcoinAddressValidator;

public class TetherUSDLiquid extends Coin {
public TetherUSDLiquid() {
// If you add a new USDT variant or want to change this ticker symbol you should also look here:
// core/src/main/java/bisq/core/provider/price/PriceProvider.java:getAll()
super("Tether USD (Liquid Bitcoin)", "L-USDT", new LiquidBitcoinAddressValidator());
}
}
12 changes: 12 additions & 0 deletions assets/src/main/java/bisq/asset/coins/TetherUSDOmni.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package bisq.asset.coins;

import bisq.asset.Base58BitcoinAddressValidator;
import bisq.asset.Coin;

public class TetherUSDOmni extends Coin {
public TetherUSDOmni() {
// If you add a new USDT variant or want to change this ticker symbol you should also look here:
// core/src/main/java/bisq/core/provider/price/PriceProvider.java:getAll()
super("Tether USD (Omni)", "USDT-O", new Base58BitcoinAddressValidator());
}
}
11 changes: 11 additions & 0 deletions assets/src/main/java/bisq/asset/tokens/TetherUSDERC20.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package bisq.asset.tokens;

import bisq.asset.Erc20Token;

public class TetherUSDERC20 extends Erc20Token {
public TetherUSDERC20() {
// If you add a new USDT variant or want to change this ticker symbol you should also look here:
// core/src/main/java/bisq/core/provider/price/PriceProvider.java:getAll()
super("Tether USD (ERC20)", "USDT-E");
}
}
3 changes: 3 additions & 0 deletions assets/src/main/resources/META-INF/services/bisq.asset.Asset
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ bisq.asset.coins.Spectrecoin
bisq.asset.coins.Starwels
bisq.asset.coins.SUB1X
bisq.asset.coins.TEO
bisq.asset.coins.TetherUSDLiquid
bisq.asset.coins.TetherUSDOmni
bisq.asset.coins.TurtleCoin
bisq.asset.coins.UnitedCommunityCoin
bisq.asset.coins.Unobtanium
Expand All @@ -123,6 +125,7 @@ bisq.asset.coins.ZeroClassic
bisq.asset.tokens.AugmintEuro
bisq.asset.tokens.DaiStablecoin
bisq.asset.tokens.EtherStone
bisq.asset.tokens.TetherUSDERC20
bisq.asset.tokens.TrueUSD
bisq.asset.tokens.USDCoin
bisq.asset.tokens.VectorspaceAI
11 changes: 10 additions & 1 deletion core/src/main/java/bisq/core/provider/price/PriceProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,12 @@ public Tuple2<Map<String, Long>, Map<String, MarketPrice>> getAll() throws IOExc
final double price = (Double) treeMap.get("price");
// json uses double for our timestampSec long value...
final long timestampSec = MathUtils.doubleToLong((Double) treeMap.get("timestampSec"));
marketPriceMap.put(currencyCode, new MarketPrice(currencyCode, price, timestampSec, true));
if (currencyCode.equals("USDT")) {
addPrice(marketPriceMap, "USDT-O", price, timestampSec);
addPrice(marketPriceMap, "USDT-E", price, timestampSec);
addPrice(marketPriceMap, "L-USDT", price, timestampSec);
}
addPrice(marketPriceMap, currencyCode, price, timestampSec);
} catch (Throwable t) {
log.error(t.toString());
t.printStackTrace();
Expand All @@ -80,6 +85,10 @@ public Tuple2<Map<String, Long>, Map<String, MarketPrice>> getAll() throws IOExc
return new Tuple2<>(tsMap, marketPriceMap);
}

private void addPrice(Map<String, MarketPrice> marketPriceMap, String currencyCode, double price, long timestampSec) {
marketPriceMap.put(currencyCode, new MarketPrice(currencyCode, price, timestampSec, true));
}

public String getBaseUrl() {
return httpClient.getBaseUrl();
}
Expand Down
3 changes: 1 addition & 2 deletions desktop/src/main/java/bisq/desktop/main/MainView.java
Original file line number Diff line number Diff line change
Expand Up @@ -534,11 +534,10 @@ private String getPriceProviderTooltipString() {

String selectedCurrencyCode = model.getPriceFeedService().getCurrencyCode();
MarketPrice selectedMarketPrice = model.getPriceFeedService().getMarketPrice(selectedCurrencyCode);

return Res.get("mainView.marketPrice.tooltip",
"Bisq Price Index for " + selectedCurrencyCode,
"",
DisplayUtils.formatTime(new Date(selectedMarketPrice.getTimestampSec())),
selectedMarketPrice != null ? DisplayUtils.formatTime(new Date(selectedMarketPrice.getTimestampSec())) : Res.get("shared.na"),
model.getPriceFeedService().getProviderNodeAddress());
}

Expand Down

0 comments on commit 61d730a

Please sign in to comment.