Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rc v1.0.0 #2648

Merged
merged 36 commits into from
Apr 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
a6ec41a
Set dao activated by default
ManfredKarrer Apr 4, 2019
7953295
Remove network selection in settings
ManfredKarrer Apr 4, 2019
9b3755c
Set Mainnet test genesis tx
ManfredKarrer Apr 4, 2019
a6a0c6e
Remove DAO testing feedback window
ManfredKarrer Apr 7, 2019
ed3ab79
Cleanup TODOs
ManfredKarrer Apr 7, 2019
e932842
Rename DaoStateStore3 db file to DaoStateStore
ManfredKarrer Apr 7, 2019
d81498d
Remove date and DateTolerantPayload interface from BlindVotePayload
ManfredKarrer Apr 7, 2019
bd7358f
Add date to BlindVote
ManfredKarrer Apr 7, 2019
2e5055c
Remove outdated db files
ManfredKarrer Apr 7, 2019
ffb50b6
Change lock time fro bonds from 75 days to 110 days.
ManfredKarrer Apr 7, 2019
68436f5
Merge branch 'master' into rc_v1.0.0
ManfredKarrer Apr 10, 2019
6b009d4
Merge branch 'master' into rc_v1.0.0
ManfredKarrer Apr 11, 2019
b8cd1ff
Fix rowSpan
ManfredKarrer Apr 11, 2019
cdff4d5
Use betanet genesis for mainnet
ManfredKarrer Apr 12, 2019
0179cfc
Use new dummy genesis tx for mainnet
ManfredKarrer Apr 12, 2019
2c106c7
Bump version number
ripcurlx Apr 12, 2019
cc255c2
Merge branch 'master' into rc_v1.0.0
ManfredKarrer Apr 12, 2019
4269607
Merge pull request #4 from ripcurlx/bump-version-number
ManfredKarrer Apr 12, 2019
60e23f8
Reduce min width of close button to prevent truncations
ripcurlx Apr 13, 2019
5d70e3d
Fix wrong padding of links in trade feedback popup
ripcurlx Apr 13, 2019
5b8ff6e
Merge branch 'master' into rc_v1.0.0
ManfredKarrer Apr 13, 2019
a1bbb6c
Change most payment methods from DEFAULT_TRADE_LIMIT_MID_RISK to DEF…
ManfredKarrer Apr 14, 2019
3eabc1e
Reduce sec deposits
ManfredKarrer Apr 14, 2019
57ae8af
Add requireUpdateToNewVersion check
ManfredKarrer Apr 14, 2019
4da5c4f
Make check case insensitive
ManfredKarrer Apr 14, 2019
ac4cd82
Move country into second column to save space
ripcurlx Apr 14, 2019
f5404f8
Set new minimum deposit if deposit lower than minimum was persisted
ripcurlx Apr 14, 2019
1f05e8f
Merge pull request #5 from ripcurlx/improve-sepa-form
ManfredKarrer Apr 14, 2019
1f9e2ce
Fix nullpointer
ManfredKarrer Apr 15, 2019
4442a2e
Add missing parameter in test
ManfredKarrer Apr 15, 2019
8f7dae4
Reduce table height and update height calculation to prevent scrolling
ripcurlx Apr 15, 2019
edfe035
Align Altcoin list with Altcoin selection combobox
ripcurlx Apr 15, 2019
d0c99d6
Merge pull request #7 from ripcurlx/align-currency-list-with-combobox
ManfredKarrer Apr 15, 2019
b8b2e8b
Merge pull request #6 from ripcurlx/fix-scrolling-in-trade-view
ManfredKarrer Apr 15, 2019
6c98d98
Merge branch 'master' into rc_v1.0.0
ManfredKarrer Apr 15, 2019
825d374
Set mainnet Genesis Tx ID
ManfredKarrer Apr 15, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ configure(project(':desktop')) {
apply plugin: 'witness'
apply from: '../gradle/witness/gradle-witness.gradle'

version = '0.9.8-SNAPSHOT'
version = '1.0.0'

mainClassName = 'bisq.desktop.app.BisqAppMain'

Expand Down
11 changes: 2 additions & 9 deletions common/src/main/java/bisq/common/app/DevEnv.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,7 @@ public static void setDevMode(boolean devMode) {
DevEnv.devMode = devMode;
}

private static final boolean DAO_PHASE2_ACTIVATED = false;
private static final boolean DAO_TRADING_ACTIVATED = false;

private static boolean daoActivated = false;
private static boolean daoActivated = true;

public static boolean isDaoActivated() {
return daoActivated;
Expand All @@ -71,11 +68,7 @@ public static void logErrorAndThrowIfDevMode(String msg) {
throw new RuntimeException(msg);
}

public static boolean isDaoPhase2Activated() {
return DAO_PHASE2_ACTIVATED || daoActivated;
}

public static boolean isDaoTradingActivated() {
return DAO_TRADING_ACTIVATED || daoActivated;
return true;
}
}
2 changes: 1 addition & 1 deletion common/src/main/java/bisq/common/app/Version.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class Version {
// VERSION = 0.5.0 introduces proto buffer for the P2P network and local DB and is a not backward compatible update
// Therefore all sub versions start again with 1
// We use semantic versioning with major, minor and patch
public static final String VERSION = "0.9.8";
public static final String VERSION = "1.0.0";

public static int getMajorVersion(String version) {
return getSubVersion(version, 0);
Expand Down
7 changes: 4 additions & 3 deletions common/src/main/proto/pb.proto
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,7 @@ message Filter {
repeated string btc_nodes = 13;
bool disable_dao = 14;
string disable_dao_below_version = 15;
string disable_trade_below_version = 16;
}

// not used anymore from v0.6 on. But leave it for receiving TradeStatistics objects from older
Expand Down Expand Up @@ -1712,7 +1713,8 @@ message BlindVote {
string tx_id = 2;
int64 stake = 3;
bytes encrypted_merit_list = 4;
map<string, string> extra_data = 5;
int64 date = 5;
map<string, string> extra_data = 6;
}

message MyBlindVoteList {
Expand All @@ -1725,8 +1727,7 @@ message BlindVoteStore {

message BlindVotePayload {
BlindVote blind_vote = 1;
int64 date = 2; // TODO remove for mainnet launch!
bytes hash = 3;
bytes hash = 2;
}

message Vote {
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/java/bisq/core/app/BisqEnvironment.java
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ private static String appDataDir(String userDataDir, String appName) {
// Util to set isDaoActivated to true if either set as program argument or we run testnet or regtest.
// Can be removed once DAO is live.
public static boolean isDaoActivated(Environment environment) {
Boolean daoActivatedFromOptions = environment.getProperty(DaoOptionKeys.DAO_ACTIVATED, Boolean.class, false);
Boolean daoActivatedFromOptions = environment.getProperty(DaoOptionKeys.DAO_ACTIVATED, Boolean.class, true);
BaseCurrencyNetwork baseCurrencyNetwork = BisqEnvironment.getBaseCurrencyNetwork();
return daoActivatedFromOptions || !baseCurrencyNetwork.isMainnet();
}
Expand Down Expand Up @@ -328,7 +328,7 @@ public BisqEnvironment(PropertySource commandLineProperties) {
"-1";
daoActivated = commandLineProperties.containsProperty(DaoOptionKeys.DAO_ACTIVATED) ?
(String) commandLineProperties.getProperty(DaoOptionKeys.DAO_ACTIVATED) :
"";
"true";

btcNodes = commandLineProperties.containsProperty(BtcOptionKeys.BTC_NODES) ?
(String) commandLineProperties.getProperty(BtcOptionKeys.BTC_NODES) :
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/bisq/core/app/BisqExecutable.java
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,7 @@ protected void customizeOptionParsing(OptionParser parser) {
.withRequiredArg();

parser.accepts(DaoOptionKeys.DAO_ACTIVATED,
format("Developer flag. If true it enables dao phase 2 features. (default: %s)", "false"))
format("Developer flag. If true it enables dao phase 2 features. (default: %s)", "true"))
.withRequiredArg()
.ofType(boolean.class);
}
Expand Down
8 changes: 4 additions & 4 deletions core/src/main/java/bisq/core/btc/wallet/Restrictions.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ public static Coin getMinTradeAmount() {
}

public static double getDefaultBuyerSecurityDepositAsPercent() {
return 0.02; // 2% of trade amount. For a 1 BTC trade it is about 80 USD @ 4000 USD/BTC.
return 0.1; // 10% of trade amount.
}

public static double getMinBuyerSecurityDepositAsPercent() {
return 0.0005; // 0.05% of trade amount. For a 1 BTC trade it is about 2 USD @ 4000 USD/BTC but MIN_BUYER_SECURITY_DEPOSIT would require 0.001 BTC anyway (4 USD)
return 0.05; // 5% of trade amount.
}

public static double getMaxBuyerSecurityDepositAsPercent() {
return 0.2; // 20% of trade amount. For a 1 BTC trade it is about 800 USD @ 4000 USD/BTC
return 0.5; // 50% of trade amount. For a 1 BTC trade it is about 800 USD @ 4000 USD/BTC
}

// We use MIN_BUYER_SECURITY_DEPOSIT as well as lower bound in case of small trade amounts.
Expand All @@ -72,7 +72,7 @@ public static Coin getMinBuyerSecurityDepositAsCoin() {


public static double getSellerSecurityDepositAsPercent() {
return 0.005; // 0.5% of trade amount.
return 0.05; // 5% of trade amount.
}

public static Coin getMinSellerSecurityDepositAsCoin() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@ public final class BlindVote implements PersistablePayload, NetworkPayload, Cons
// Stake is revealed in the BSQ tx anyway as output value so no reason to encrypt it here.
private final long stake;
private byte[] encryptedMeritList;
// Publish date of the proposal.
// We do not use the date at the moment but we prefer to keep it here as it might be
// used as a relevant protection tool for late publishing attacks.
// We don't have a clear concept now how to do it but as it will be part of the opReturn data it will impossible
// to game the publish date. Together with the block time we can use that for some checks. But as said no clear
// concept yet...
// As adding that field later would break consensus we prefer to add it now. In the worst case it will stay
// an unused field.
private final long date;

// This hash map allows addition of data in future versions without breaking consensus
private final Map<String, String> extraDataMap;
Expand All @@ -61,11 +70,13 @@ public BlindVote(byte[] encryptedVotes,
String txId,
long stake,
byte[] encryptedMeritList,
long date,
Map<String, String> extraDataMap) {
this.encryptedVotes = encryptedVotes;
this.txId = txId;
this.stake = stake;
this.encryptedMeritList = encryptedMeritList;
this.date = date;
this.extraDataMap = ExtraDataMapValidator.getValidatedExtraDataMap(extraDataMap);
}

Expand All @@ -86,7 +97,8 @@ public PB.BlindVote.Builder getBuilder() {
builder.setEncryptedVotes(ByteString.copyFrom(encryptedVotes))
.setTxId(txId)
.setStake(stake)
.setEncryptedMeritList(ByteString.copyFrom(encryptedMeritList));
.setEncryptedMeritList(ByteString.copyFrom(encryptedMeritList))
.setDate(date);
Optional.ofNullable(extraDataMap).ifPresent(builder::putAllExtraData);
return builder;
}
Expand All @@ -96,6 +108,7 @@ public static BlindVote fromProto(PB.BlindVote proto) {
proto.getTxId(),
proto.getStake(),
proto.getEncryptedMeritList().toByteArray(),
proto.getDate(),
CollectionUtils.isEmpty(proto.getExtraDataMap()) ?
null : proto.getExtraDataMap());
}
Expand All @@ -111,6 +124,7 @@ public String toString() {
",\n txId='" + txId + '\'' +
",\n stake=" + stake +
",\n encryptedMeritList=" + Utilities.bytesAsHexString(encryptedMeritList) +
",\n date=" + date +
",\n extraDataMap=" + extraDataMap +
"\n}";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
import java.io.IOException;

import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
Expand Down Expand Up @@ -214,6 +215,7 @@ public void publishBlindVote(Coin stake, ResultHandler resultHandler, ExceptionH
blindVoteTxId,
stake.value,
encryptedMeritList,
new Date().getTime(),
new HashMap<>());
addBlindVoteToList(blindVote);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

import com.google.protobuf.ByteString;

import java.util.Date;
import java.util.concurrent.TimeUnit;

import lombok.EqualsAndHashCode;
import lombok.Getter;
Expand All @@ -54,32 +54,24 @@ public final class BlindVotePayload implements PersistableNetworkPayload, Persis
CapabilityRequiringPayload, ConsensusCritical {

private final BlindVote blindVote;

// TODO remove for mainnet launch!
private final long date; // 8 byte

protected final byte[] hash; // 20 byte

public BlindVotePayload(BlindVote blindVote) {
this(blindVote,
new Date().getTime(),
Hash.getRipemd160hash(blindVote.toProtoMessage().toByteArray()));
this(blindVote, Hash.getRipemd160hash(blindVote.toProtoMessage().toByteArray()));
}

///////////////////////////////////////////////////////////////////////////////////////////
// PROTO BUFFER
///////////////////////////////////////////////////////////////////////////////////////////

private BlindVotePayload(BlindVote blindVote, long date, byte[] hash) {
private BlindVotePayload(BlindVote blindVote, byte[] hash) {
this.blindVote = blindVote;
this.date = date;
this.hash = hash;
}

private PB.BlindVotePayload.Builder getBlindVoteBuilder() {
return PB.BlindVotePayload.newBuilder()
.setBlindVote(blindVote.toProtoMessage())
.setDate(date)
.setHash(ByteString.copyFrom(hash));
}

Expand All @@ -95,7 +87,6 @@ public PB.BlindVotePayload toProtoBlindVotePayload() {

public static BlindVotePayload fromProto(PB.BlindVotePayload proto) {
return new BlindVotePayload(BlindVote.fromProto(proto.getBlindVote()),
proto.getDate(),
proto.getHash().toByteArray());
}

Expand Down Expand Up @@ -128,7 +119,6 @@ public Capabilities getRequiredCapabilities() {
public String toString() {
return "BlindVotePayload{" +
"\n blindVote=" + blindVote +
",\n date=" + new Date(date) +
",\n hash=" + Utilities.bytesAsHexString(hash) +
"\n}";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ public class DaoStateStorageService extends StoreService<DaoStateStore> {
// We can rename to DaoStateStore before mainnet launch again.
// Another update due to some data field changes which would cause diff. hashes, so to enforce users to get the new
// data we rename it to DaoStateStore
//TODO rename to DaoStateStore before mainnet launch
private static final String FILE_NAME = "DaoStateStore3";
private static final String FILE_NAME = "DaoStateStore";

private final DaoState daoState;
private final DaoStateMonitoringService daoStateMonitoringService;
Expand Down
6 changes: 3 additions & 3 deletions core/src/main/java/bisq/core/dao/state/GenesisTxInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ public class GenesisTxInfo {
// Static
///////////////////////////////////////////////////////////////////////////////////////////

private static final String MAINNET_GENESIS_TX_ID = "81855816eca165f17f0668898faa8724a105196e90ffc4993f4cac980176674e";
private static final int MAINNET_GENESIS_BLOCK_HEIGHT = 524717; // 2018-05-27
private static final Coin MAINNET_GENESIS_TOTAL_SUPPLY = Coin.parseCoin("0.001");
private static final String MAINNET_GENESIS_TX_ID = "4b5417ec5ab6112bedf539c3b4f5a806ed539542d8b717e1c4470aa3180edce5";
private static final int MAINNET_GENESIS_BLOCK_HEIGHT = 571747; // 2019-04-15
private static final Coin MAINNET_GENESIS_TOTAL_SUPPLY = Coin.parseCoin("3.65748");

private static final String TESTNET_GENESIS_TX_ID = "09e70ce0ab7a962a82a2ca84c9ae8a89140bf1c3fb6f7efad6162e39e4b362ae";
private static final int TESTNET_GENESIS_BLOCK_HEIGHT = 1446300; // 2018-12-02
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,33 +40,33 @@
public enum BondedRoleType {
UNDEFINED(0, 0, "N/A", false),
// admins
GITHUB_ADMIN(50, 75, "https://bisq.network/roles/16", true),
FORUM_ADMIN(20, 75, "https://bisq.network/roles/19", true),
TWITTER_ADMIN(20, 75, "https://bisq.network/roles/21", true),
ROCKET_CHAT_ADMIN(20, 75, "https://bisq.network/roles/79", true),
YOUTUBE_ADMIN(10, 75, "https://bisq.network/roles/56", true),
GITHUB_ADMIN(50, 110, "https://bisq.network/roles/16", true),
FORUM_ADMIN(20, 110, "https://bisq.network/roles/19", true),
TWITTER_ADMIN(20, 110, "https://bisq.network/roles/21", true),
ROCKET_CHAT_ADMIN(20, 110, "https://bisq.network/roles/79", true),
YOUTUBE_ADMIN(10, 110, "https://bisq.network/roles/56", true),

// maintainers
BISQ_MAINTAINER(50, 75, "https://bisq.network/roles/63", true),
BITCOINJ_MAINTAINER(20, 75, "https://bisq.network/roles/8", true),
NETLAYER_MAINTAINER(20, 75, "https://bisq.network/roles/81", true),
BISQ_MAINTAINER(50, 110, "https://bisq.network/roles/63", true),
BITCOINJ_MAINTAINER(20, 110, "https://bisq.network/roles/8", true),
NETLAYER_MAINTAINER(20, 110, "https://bisq.network/roles/81", true),

// operators
WEBSITE_OPERATOR(50, 75, "https://bisq.network/roles/12", true),
FORUM_OPERATOR(50, 75, "https://bisq.network/roles/19", true),
SEED_NODE_OPERATOR(20, 75, "https://bisq.network/roles/15", true),
DATA_RELAY_NODE_OPERATOR(20, 75, "https://bisq.network/roles/14", true),
BTC_NODE_OPERATOR(5, 75, "https://bisq.network/roles/67", true),
MARKETS_OPERATOR(20, 75, "https://bisq.network/roles/9", true),
BSQ_EXPLORER_OPERATOR(20, 75, "https://bisq.network/roles/11", true),
MOBILE_NOTIFICATIONS_RELAY_OPERATOR(20, 75, "https://bisq.network/roles/82", true),
WEBSITE_OPERATOR(50, 110, "https://bisq.network/roles/12", true),
FORUM_OPERATOR(50, 110, "https://bisq.network/roles/19", true),
SEED_NODE_OPERATOR(20, 110, "https://bisq.network/roles/15", true),
DATA_RELAY_NODE_OPERATOR(20, 110, "https://bisq.network/roles/14", true),
BTC_NODE_OPERATOR(5, 110, "https://bisq.network/roles/67", true),
MARKETS_OPERATOR(20, 110, "https://bisq.network/roles/9", true),
BSQ_EXPLORER_OPERATOR(20, 110, "https://bisq.network/roles/11", true),
MOBILE_NOTIFICATIONS_RELAY_OPERATOR(20, 110, "https://bisq.network/roles/82", true),

// other
DOMAIN_NAME_HOLDER(50, 75, "https://bisq.network/roles/77", false),
DNS_ADMIN(20, 75, "https://bisq.network/roles/18", false),
MEDIATOR(10, 75, "https://bisq.network/roles/83", true),
ARBITRATOR(200, 75, "https://bisq.network/roles/13", true),
BTC_DONATION_ADDRESS_OWNER(50, 75, "https://bisq.network/roles/80", true);
DOMAIN_NAME_HOLDER(50, 110, "https://bisq.network/roles/77", false),
DNS_ADMIN(20, 110, "https://bisq.network/roles/18", false),
MEDIATOR(10, 110, "https://bisq.network/roles/83", true),
ARBITRATOR(200, 110, "https://bisq.network/roles/13", true),
BTC_DONATION_ADDRESS_OWNER(50, 110, "https://bisq.network/roles/80", true);


// Will be multiplied with PARAM.BONDED_ROLE_FACTOR to get BSQ amount.
Expand Down
12 changes: 10 additions & 2 deletions core/src/main/java/bisq/core/filter/Filter.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ public final class Filter implements ProtectedStoragePayload, ExpirablePayload {
// added in v0.9.8
@Nullable
private final String disableDaoBelowVersion;
@Nullable
private final String disableTradeBelowVersion;

public Filter(List<String> bannedOfferIds,
List<String> bannedNodeAddress,
Expand All @@ -105,7 +107,8 @@ public Filter(List<String> bannedOfferIds,
boolean preventPublicBtcNetwork,
@Nullable List<String> btcNodes,
boolean disableDao,
@Nullable String disableDaoBelowVersion) {
@Nullable String disableDaoBelowVersion,
@Nullable String disableTradeBelowVersion) {
this.bannedOfferIds = bannedOfferIds;
this.bannedNodeAddress = bannedNodeAddress;
this.bannedPaymentAccounts = bannedPaymentAccounts;
Expand All @@ -118,6 +121,7 @@ public Filter(List<String> bannedOfferIds,
this.btcNodes = btcNodes;
this.disableDao = disableDao;
this.disableDaoBelowVersion = disableDaoBelowVersion;
this.disableTradeBelowVersion = disableTradeBelowVersion;
}


Expand All @@ -138,6 +142,7 @@ public Filter(List<String> bannedOfferIds,
@Nullable List<String> btcNodes,
boolean disableDao,
@Nullable String disableDaoBelowVersion,
@Nullable String disableTradeBelowVersion,
String signatureAsBase64,
byte[] ownerPubKeyBytes,
@Nullable Map<String, String> extraDataMap) {
Expand All @@ -152,7 +157,8 @@ public Filter(List<String> bannedOfferIds,
preventPublicBtcNetwork,
btcNodes,
disableDao,
disableDaoBelowVersion);
disableDaoBelowVersion,
disableTradeBelowVersion);
this.signatureAsBase64 = signatureAsBase64;
this.ownerPubKeyBytes = ownerPubKeyBytes;
this.extraDataMap = ExtraDataMapValidator.getValidatedExtraDataMap(extraDataMap);
Expand Down Expand Up @@ -183,6 +189,7 @@ public PB.StoragePayload toProtoMessage() {
Optional.ofNullable(priceRelayNodes).ifPresent(builder::addAllPriceRelayNodes);
Optional.ofNullable(btcNodes).ifPresent(builder::addAllBtcNodes);
Optional.ofNullable(disableDaoBelowVersion).ifPresent(builder::setDisableDaoBelowVersion);
Optional.ofNullable(disableTradeBelowVersion).ifPresent(builder::setDisableTradeBelowVersion);
Optional.ofNullable(extraDataMap).ifPresent(builder::putAllExtraData);

return PB.StoragePayload.newBuilder().setFilter(builder).build();
Expand All @@ -203,6 +210,7 @@ public static Filter fromProto(PB.Filter proto) {
CollectionUtils.isEmpty(proto.getBtcNodesList()) ? null : new ArrayList<>(proto.getBtcNodesList()),
proto.getDisableDao(),
proto.getDisableDaoBelowVersion().isEmpty() ? null : proto.getDisableDaoBelowVersion(),
proto.getDisableTradeBelowVersion().isEmpty() ? null : proto.getDisableTradeBelowVersion(),
proto.getSignatureAsBase64(),
proto.getOwnerPubKeyBytes().toByteArray(),
CollectionUtils.isEmpty(proto.getExtraDataMap()) ? null : proto.getExtraDataMap());
Expand Down
Loading