mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-24 12:46:45 +00:00
import transaction labels from electrum
This commit is contained in:
parent
b7aa73e99f
commit
b9db4421df
1 changed files with 50 additions and 0 deletions
|
@ -9,6 +9,8 @@ import com.sparrowwallet.drongo.crypto.*;
|
||||||
import com.sparrowwallet.drongo.policy.Policy;
|
import com.sparrowwallet.drongo.policy.Policy;
|
||||||
import com.sparrowwallet.drongo.policy.PolicyType;
|
import com.sparrowwallet.drongo.policy.PolicyType;
|
||||||
import com.sparrowwallet.drongo.protocol.ScriptType;
|
import com.sparrowwallet.drongo.protocol.ScriptType;
|
||||||
|
import com.sparrowwallet.drongo.protocol.Sha256Hash;
|
||||||
|
import com.sparrowwallet.drongo.protocol.Transaction;
|
||||||
import com.sparrowwallet.drongo.wallet.*;
|
import com.sparrowwallet.drongo.wallet.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
@ -81,6 +83,38 @@ public class Electrum implements KeystoreFileImport, WalletImport, WalletExport
|
||||||
}
|
}
|
||||||
ew.keystores.put(key, ek);
|
ew.keystores.put(key, ek);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(key.equals("labels")) {
|
||||||
|
JsonObject jsonObject = (JsonObject)map.get(key);
|
||||||
|
for(String labelKey : jsonObject.keySet()) {
|
||||||
|
ew.labels.put(labelKey, jsonObject.get(labelKey).getAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(key.equals("verified_tx3")) {
|
||||||
|
JsonObject jsonObject = (JsonObject)map.get(key);
|
||||||
|
for(String txKey : jsonObject.keySet()) {
|
||||||
|
Sha256Hash txHash = Sha256Hash.wrap(txKey);
|
||||||
|
JsonArray array = jsonObject.getAsJsonArray(txKey);
|
||||||
|
if(array != null && array.size() > 3) {
|
||||||
|
int height = array.get(0).getAsInt();
|
||||||
|
Date date = new Date(array.get(1).getAsLong() * 1000);
|
||||||
|
long fee = array.get(2).getAsLong();
|
||||||
|
Sha256Hash blockHash = Sha256Hash.wrap(array.get(3).getAsString());
|
||||||
|
|
||||||
|
JsonObject transactions = (JsonObject)map.get("transactions");
|
||||||
|
if(transactions != null) {
|
||||||
|
String txhex = transactions.get(txKey).getAsString();
|
||||||
|
if(txhex != null) {
|
||||||
|
Transaction transaction = new Transaction(Utils.hexToBytes(txhex));
|
||||||
|
|
||||||
|
BlockTransaction blockTransaction = new BlockTransaction(txHash, height, date, fee, transaction, blockHash);
|
||||||
|
ew.transactions.put(txHash, blockTransaction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Wallet wallet = new Wallet();
|
Wallet wallet = new Wallet();
|
||||||
|
@ -150,6 +184,20 @@ public class Electrum implements KeystoreFileImport, WalletImport, WalletExport
|
||||||
throw new ImportException("Unknown Electrum wallet type of " + ew.wallet_type);
|
throw new ImportException("Unknown Electrum wallet type of " + ew.wallet_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(String key : ew.labels.keySet()) {
|
||||||
|
try {
|
||||||
|
Sha256Hash txHash = Sha256Hash.wrap(key);
|
||||||
|
BlockTransaction blockTransaction = ew.transactions.get(txHash);
|
||||||
|
if(blockTransaction != null) {
|
||||||
|
blockTransaction.setLabel(ew.labels.get(key));
|
||||||
|
}
|
||||||
|
} catch(IllegalArgumentException e) {
|
||||||
|
//not a tx, probably an address
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wallet.updateTransactions(ew.transactions);
|
||||||
|
|
||||||
if(!wallet.isValid()) {
|
if(!wallet.isValid()) {
|
||||||
throw new IllegalStateException("Electrum wallet is in an inconsistent state.");
|
throw new IllegalStateException("Electrum wallet is in an inconsistent state.");
|
||||||
}
|
}
|
||||||
|
@ -279,6 +327,8 @@ public class Electrum implements KeystoreFileImport, WalletImport, WalletExport
|
||||||
public String wallet_type;
|
public String wallet_type;
|
||||||
public String seed_type;
|
public String seed_type;
|
||||||
public Boolean use_encryption;
|
public Boolean use_encryption;
|
||||||
|
public Map<String, String> labels = new LinkedHashMap<>();
|
||||||
|
public Map<Sha256Hash, BlockTransaction> transactions = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ElectrumKeystore {
|
public static class ElectrumKeystore {
|
||||||
|
|
Loading…
Reference in a new issue