use and display fractional tx virtual size, indicate sizes on unfinalized txes may change

This commit is contained in:
Craig Raw 2021-03-08 16:22:22 +02:00
parent 7ed75fc83d
commit 0070cbfb1e
4 changed files with 18 additions and 7 deletions

2
drongo

@ -1 +1 @@
Subproject commit 5b2e21b3d7cc5d6dff730baeec5efbb419f3555c
Subproject commit 533791edcf38a6ca05857483df15a5c54a4554f0

View file

@ -183,7 +183,7 @@ public class EntryCell extends TreeTableCell<Entry, Entry> {
long changeTotal = ourOutputs.stream().mapToLong(TransactionOutput::getValue).sum();
Transaction tx = blockTransaction.getTransaction();
int vSize = tx.getVirtualSize();
double vSize = tx.getVirtualSize();
int inputSize = tx.getInputs().get(0).getLength() + (tx.getInputs().get(0).hasWitness() ? tx.getInputs().get(0).getWitness().getLength() / Transaction.WITNESS_SCALE_FACTOR : 0);
List<BlockTransactionHashIndex> walletUtxos = new ArrayList<>(transactionEntry.getWallet().getWalletUtxos().keySet());
Collections.shuffle(walletUtxos);

View file

@ -397,7 +397,7 @@ public class TransactionDiagram extends GridPane {
String txDesc = "Transaction";
Label txLabel = new Label(txDesc);
Tooltip tooltip = new Tooltip(walletTx.getTransaction().getLength() + " bytes\n" + walletTx.getTransaction().getVirtualSize() + " vBytes");
Tooltip tooltip = new Tooltip(walletTx.getTransaction().getLength() + " bytes\n" + String.format("%.2f", walletTx.getTransaction().getVirtualSize()) + " vBytes");
tooltip.setShowDelay(new Duration(TOOLTIP_SHOW_DELAY));
tooltip.getStyleClass().add("transaction-tooltip");
txLabel.setTooltip(tooltip);

View file

@ -29,6 +29,7 @@ import javafx.collections.ObservableMap;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.*;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
@ -451,7 +452,7 @@ public class HeadersController extends TransactionFormController implements Init
private void updateSize() {
size.setText(headersForm.getTransaction().getSize() + " B");
virtualSize.setText(headersForm.getTransaction().getVirtualSize() + " vB");
virtualSize.setText(String.format("%.2f", headersForm.getTransaction().getVirtualSize()) + " vB");
}
private Long calculateFee(Map<Sha256Hash, BlockTransaction> inputTransactions) {
@ -599,11 +600,21 @@ public class HeadersController extends TransactionFormController implements Init
private void updateTxId() {
id.setText(headersForm.getTransaction().calculateTxId(false).toString());
if(!headersForm.isTransactionFinalized()) {
if(!id.getStyleClass().contains(UNFINALIZED_TXID_CLASS)) {
id.getStyleClass().add(UNFINALIZED_TXID_CLASS);
}
addStyleClass(id, UNFINALIZED_TXID_CLASS);
addStyleClass(size, UNFINALIZED_TXID_CLASS);
addStyleClass(virtualSize, UNFINALIZED_TXID_CLASS);
addStyleClass(feeRate, UNFINALIZED_TXID_CLASS);
} else {
id.getStyleClass().remove(UNFINALIZED_TXID_CLASS);
size.getStyleClass().remove(UNFINALIZED_TXID_CLASS);
virtualSize.getStyleClass().remove(UNFINALIZED_TXID_CLASS);
feeRate.getStyleClass().remove(UNFINALIZED_TXID_CLASS);
}
}
private void addStyleClass(Node node, String styleClass) {
if(!node.getStyleClass().contains(styleClass)) {
node.getStyleClass().add(styleClass);
}
}