diff --git a/assets/src/main/java/bisq/asset/coins/UnitedCommunityCoin.java b/assets/src/main/java/bisq/asset/coins/UnitedCommunityCoin.java new file mode 100644 index 00000000000..9d893980e87 --- /dev/null +++ b/assets/src/main/java/bisq/asset/coins/UnitedCommunityCoin.java @@ -0,0 +1,57 @@ +/* + * This file is part of Bisq. + * + * Bisq is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bisq is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bisq. If not, see . + */ + +package bisq.asset.coins; + +import bisq.asset.AddressValidationResult; +import bisq.asset.Base58BitcoinAddressValidator; +import bisq.asset.Coin; +import bisq.asset.NetworkParametersAdapter; + +public class UnitedCommunityCoin extends Coin { + + public UnitedCommunityCoin() { + super("UnitedCommunityCoin", "UCC", new UnitedCommunityCoinAddressValidator()); + } + + + public static class UnitedCommunityCoinAddressValidator extends Base58BitcoinAddressValidator { + + public UnitedCommunityCoinAddressValidator() { + super(new UnitedCommunityCoinParams()); + } + + @Override + public AddressValidationResult validate(String address) { + if (!address.matches("^[U][a-km-zA-HJ-NP-Z1-9]{33}$")) + return AddressValidationResult.invalidStructure(); + + return super.validate(address); + } + } + + + public static class UnitedCommunityCoinParams extends NetworkParametersAdapter { + + public UnitedCommunityCoinParams() { + super(); + addressHeader = 68; + p2shHeader = 18; + acceptableAddressCodes = new int[]{addressHeader, p2shHeader}; + } + } +} diff --git a/assets/src/main/resources/META-INF/services/bisq.asset.Asset b/assets/src/main/resources/META-INF/services/bisq.asset.Asset index ea99318ced0..490eacce676 100644 --- a/assets/src/main/resources/META-INF/services/bisq.asset.Asset +++ b/assets/src/main/resources/META-INF/services/bisq.asset.Asset @@ -49,6 +49,7 @@ bisq.asset.coins.Spectrecoin bisq.asset.coins.Starwels bisq.asset.coins.SUB1X bisq.asset.coins.TurtleCoin +bisq.asset.coins.UnitedCommunityCoin bisq.asset.coins.Unobtanium bisq.asset.coins.Zcash bisq.asset.coins.Zcoin diff --git a/assets/src/test/java/bisq/asset/coins/UnitedCommunityCoinTest.java b/assets/src/test/java/bisq/asset/coins/UnitedCommunityCoinTest.java new file mode 100644 index 00000000000..cee2e4af0e9 --- /dev/null +++ b/assets/src/test/java/bisq/asset/coins/UnitedCommunityCoinTest.java @@ -0,0 +1,43 @@ +/* + * This file is part of Bisq. + * + * Bisq is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bisq is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bisq. If not, see . + */ + +package bisq.asset.coins; + +import bisq.asset.AbstractAssetTest; + +import org.junit.Test; + +public class UnitedCommunityCoinTest extends AbstractAssetTest { + + public UnitedCommunityCoinTest() { + super(new UnitedCommunityCoin()); + } + + @Test + public void testValidAddresses() { + assertValidAddress("UX3DVuoiNR9Uwa22NLehu8yVKecjFKn4ii"); + assertValidAddress("URqRRRFY7D6drJCput5UjTRUQYEL8npUwk"); + assertValidAddress("Uha1WUkuYtW9Uapme2E46PBz2sBkM9qV9w"); + } + + @Test + public void testInvalidAddresses() { + assertInvalidAddress("UX3DVuoiNR90wa22NLehu8yVKecjFKn4ii"); + assertInvalidAddress("URqRRRFY7D6drJCput5UjTRUQYaEL8npUwk"); + assertInvalidAddress("Uha1WUkuYtW9Uapme2E46PBz2$BkM9qV9w"); + } +}