Add Import to Wallet GUI #650

pull KolbyML wants to merge 7 commits into bitcoin-core:master from KolbyML:import-gui-k changing 31 files +4395 −626
  1. KolbyML commented at 5:43 pm on August 8, 2022: contributor

    resolves #19

    This PR does a few things

    • Refactors importmulti and importdescripters RPC code
    • Adds functions to interfaces
    • Adds GUI’s for importpubkey, importprivkey, importaddress, importmulti, and importdescriptors RPCs
    • Adds QT Tests for all 5 import GUI’s

    Things to get this merged

    • get the refactor merge on https://github.com/bitcoin/bitcoin/pull/26840
    • after that is done I will split the GUI PR into (importpubkey, importprivkey, importaddress), importmulti, importdescriptors each PR will have its respective tests. I will rebase to remove the commit for the refactor in those PR’s it is in this PR so people can test. This is for easier code review

    The dialogs are located under File -> Import to Wallet… The options vary based on what is supported with your specific wallet type.

    Dialogs are Located Import Public Key Dialog
    image image
    Import Private Key Dialog Import Address Dialog
    image image
    Import Multi Dialog scriptPubKey Tab Import Multi Dialog Descriptor Tab
    image image
    Import Descriptors Dialog
    image

    For Range before I had a lineedit with placeholders begin and end, @achow101 suggested I used QSpinBox, but it doesn’t have placeholder text. So Currently if both are default value it counts as no input. It would look very nice if I implemented a custom QAbstractSpinBox with placeholder text, but I am not sure if it is overkill for this PR.

  2. KolbyML force-pushed on Aug 8, 2022
  3. KolbyML force-pushed on Aug 8, 2022
  4. KolbyML force-pushed on Aug 8, 2022
  5. in src/wallet/rpc/backup.cpp:928 in f718e24693 outdated
    974@@ -1375,7 +975,102 @@ RPCHelpMan importmulti()
    975 
    976         for (const UniValue& data : requests.getValues()) {
    977             const int64_t timestamp = std::max(GetImportTimestamp(data, now), minimumTimestamp);
    978-            const UniValue result = ProcessImport(*pwallet, data, timestamp);
    979+            ImportMultiData multi_data = {};
    


    achow101 commented at 7:09 pm on August 8, 2022:

    In f718e24693f4d322d2a82d6f1f8f6d4add98c415 “refactor: importmulti and importdescriptors rpc”

    = {} is unnecessary

    0            ImportMultiData multi_data;
    

    KolbyML commented at 0:07 am on August 10, 2022:
    done
  6. in src/wallet/rpc/backup.cpp:942 in f718e24693 outdated
    988+                multi_data.label = data.exists("label") ? data["label"].get_str() : "";
    989+                multi_data.keypool = data.exists("keypool") ? data["keypool"].get_bool() : false;
    990+
    991+                multi_data.watch_only = data.exists("watchonly") ? data["watchonly"].get_bool() : false;
    992+
    993+                multi_data.keys = {};
    


    achow101 commented at 7:11 pm on August 8, 2022:

    In f718e24693f4d322d2a82d6f1f8f6d4add98c415 “refactor: importmulti and importdescriptors rpc”

    This line is unnecessary.


    KolbyML commented at 0:09 am on August 10, 2022:
    done
  7. in src/wallet/rpc/backup.cpp:964 in f718e24693 outdated
    1011+                    multi_data.scriptPubKey = isScript ? scriptPubKey.get_str() : scriptPubKey["address"].get_str();
    1012+
    1013+                    // Optional fields.
    1014+                    multi_data.redeem_script = data.exists("redeemscript") ? data["redeemscript"].get_str() : "";
    1015+                    multi_data.witness_script = data.exists("witnessscript") ? data["witnessscript"].get_str() : "";
    1016+                    multi_data.pubkeys = {};
    


    achow101 commented at 7:14 pm on August 8, 2022:

    In f718e24693f4d322d2a82d6f1f8f6d4add98c415 “refactor: importmulti and importdescriptors rpc”

    This line is unnecessary.


    KolbyML commented at 0:09 am on August 10, 2022:
    done
  8. in src/wallet/rpc/backup.cpp:999 in f718e24693 outdated
     995+                    for (size_t i = 0; i < data["keys"].get_array().size(); ++i)
     996+                        multi_data.keys.push_back(data["keys"].get_array()[i].get_str());
     997+
     998+                bool isScript;
     999+                FlatSigningProvider keys;
    1000+                bool range_exists = false;
    


    achow101 commented at 7:20 pm on August 8, 2022:

    In f718e24693f4d322d2a82d6f1f8f6d4add98c415 “refactor: importmulti and importdescriptors rpc”

    range_exists is unused.


    KolbyML commented at 0:10 am on August 10, 2022:
    done
  9. in src/wallet/rpc/backup.cpp:948 in f718e24693 outdated
    994+                if (data.exists("keys"))
    995+                    for (size_t i = 0; i < data["keys"].get_array().size(); ++i)
    996+                        multi_data.keys.push_back(data["keys"].get_array()[i].get_str());
    997+
    998+                bool isScript;
    999+                FlatSigningProvider keys;
    


    achow101 commented at 7:21 pm on August 8, 2022:

    In f718e24693f4d322d2a82d6f1f8f6d4add98c415 “refactor: importmulti and importdescriptors rpc”

    ISTM these should be part of ImportMultiData rather than things to be passed in to ProcessImport separately.


    KolbyML commented at 0:55 am on August 10, 2022:
    done
  10. in src/qt/importdialog.cpp:156 in 3a75af09db outdated
    108+                script_pub_keys.insert(GetScriptForDestination(dest));
    109+            }
    110+
    111+            walletModel->wallet().MarkDirty();
    112+            walletModel->wallet().ImportScriptPubKeys(strLabel, script_pub_keys, true, true, 1);
    113+            walletModel->wallet().ImportPubKeys({pubKey.GetID()}, {{pubKey.GetID(), pubKey}}, {}, false, false, 1);
    


    achow101 commented at 7:52 pm on August 8, 2022:

    In 3a75af09dbb6c182a86ce71b15fe0824d3c68ac5 “qt: implemented importpubkey, importprivkey, and importaddress GUI’s”

    Since this is almost entirely copied from the RPC, I think this should be refactored. It would allow the both the RPC and the GUI to behave the same way with the locking - this implementation has us lock and release in each of the function calls, whereas the RPC holds the lock throughout. Additionally, doing so would let us expose fewer of these functions in the wallet interface.


    KolbyML commented at 4:11 am on August 10, 2022:
    done
  11. in src/qt/importdialog.cpp:193 in 3a75af09db outdated
    192+                // Add the wpkh script for this key if possible
    193+                if (pubkey.IsCompressed()) {
    194+                    walletModel->wallet().ImportScripts({GetScriptForDestination(WitnessV0KeyHash(vchAddress))},
    195+                                                        0 /* timestamp */);
    196+                }
    197+            }
    


    achow101 commented at 7:55 pm on August 8, 2022:

    In 3a75af09dbb6c182a86ce71b15fe0824d3c68ac5 “qt: implemented importpubkey, importprivkey, and importaddress GUI’s”

    This is also copied from the RPC, I think it could be refactored as well.

    For handling the errors, the refactored functions could throw the same kinds of exceptions that were defined for importmulti and importdescriptors, and this GUI code can catch those and turn them into the error message boxes as necessary.


    KolbyML commented at 4:11 am on August 10, 2022:
    done
  12. in src/qt/importdialog.cpp:221 in 3a75af09db outdated
    280+                walletModel->wallet().ImportScriptPubKeys(strLabel, scripts, false /* have_solving_data */,
    281+                                                          true /* apply_label */, 1 /* timestamp */);
    282+            } else {
    283+                QMessageBox::critical(this, tr("Invalid Address"), tr("Invalid Bitcoin address or script"));
    284+                break;
    285+            }
    


    achow101 commented at 7:58 pm on August 8, 2022:

    In 3a75af09dbb6c182a86ce71b15fe0824d3c68ac5 “qt: implemented importpubkey, importprivkey, and importaddress GUI’s”

    Same comment about refactoring.


    KolbyML commented at 4:11 am on August 10, 2022:
    done
  13. in src/qt/importdialog.cpp:108 in 3a75af09db outdated
    57+
    58+void ImportDialog::on_Accept_clicked() {
    59+    switch (page) {
    60+        case importPubkey: {
    61+            std::string strKey = "";
    62+            strKey.assign(ui->keyEditIKP->text().toStdString().c_str());
    


    achow101 commented at 8:01 pm on August 8, 2022:

    In 3a75af09dbb6c182a86ce71b15fe0824d3c68ac5 “qt: implemented importpubkey, importprivkey, and importaddress GUI’s”

    This can be simplified to one line, here and elsewhere.

    0            std::string strKey = ui->keyEditIKP->text().toStdString();
    

    KolbyML commented at 0:15 am on August 10, 2022:
    done
  14. in src/qt/importdialog.cpp:116 in 3a75af09db outdated
    65+                QMessageBox::warning(this, tr("Error"), tr("Key is empty"));
    66+                break;
    67+            }
    68+
    69+            std::string strLabel;
    70+            strLabel.assign(ui->labelEditIKP->text().toStdString().c_str());
    


    achow101 commented at 8:02 pm on August 8, 2022:

    In 3a75af09dbb6c182a86ce71b15fe0824d3c68ac5 “qt: implemented importpubkey, importprivkey, and importaddress GUI’s”

    This can be simplified to one line, here and elsewhere.

    0            std::string strLabel = ui->labelEditIKP->text().toStdString();
    

    KolbyML commented at 0:15 am on August 10, 2022:
    done
  15. in src/qt/importdialog.cpp:370 in c71f418f18 outdated
    365+            }
    366+
    367+            int64_t now = 0;
    368+            bool fRunScan = false;
    369+            int64_t nLowestTimestamp = 0;
    370+            std::vector<resultpdi> response = {};
    


    achow101 commented at 8:08 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    0            std::vector<resultpdi> response;
    

    KolbyML commented at 0:16 am on August 10, 2022:
    done
  16. in src/qt/importdialog.cpp:579 in c71f418f18 outdated
    715+    // If the last entry is about to be removed add an empty one
    716+    if (ui->entries->count() == 1)
    717+        addEntryDescriptors();
    718+
    719+    entry->deleteLater();
    720+}
    


    achow101 commented at 8:14 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    These two functions are basically the same. I think you could just collapse them into a single removeEntry function. To figure which addEntry to call, you can look at entry’s entryPage member (which will need to be made public, or a getter added).


    KolbyML commented at 0:30 am on August 10, 2022:
    done
  17. in src/qt/importdialog.cpp:568 in c71f418f18 outdated
    693+    QScrollBar* bar = ui->scrollArea->verticalScrollBar();
    694+    if(bar)
    695+        bar->setSliderPosition(bar->maximum());
    696+
    697+    return entry;
    698+}
    


    achow101 commented at 8:15 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    These two functions are basically the same. You could collapse it into a single addEntry function that takes an EntryPage as a parameter to be passed to the ImportEntry constructor.


    KolbyML commented at 0:30 am on August 10, 2022:
    done
  18. in src/qt/importdialog.cpp:496 in c71f418f18 outdated
    491+                            }
    492+                        }
    493+                    }
    494+                }
    495+            }
    496+            for (int i = 0; i < response.size(); i++) {
    


    achow101 commented at 8:20 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    Compiler warning here, also below for importDescriptors:

    0qt/importdialog.cpp: In member function ‘void ImportDialog::on_Accept_clicked()’:
    1qt/importdialog.cpp:496:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<resultpdi>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
    2  496 |             for (int i = 0; i < response.size(); i++) {
    3      |                             ~~^~~~~~~~~~~~~~~~~
    
    0            for (size_t i = 0; i < response.size(); i++) {
    

    KolbyML commented at 0:31 am on August 10, 2022:
    done
  19. KolbyML force-pushed on Aug 8, 2022
  20. in src/qt/importdialog.cpp:504 in adf1a83caf outdated
    499+                    if (response[i].warnings.size() != 0) {
    500+                        for (auto w: response[i].warnings) {
    501+                            warning_str += w + "\n";
    502+                        }
    503+                    }
    504+                    QMessageBox::critical(this, QString::fromStdString("Error: input box # ") + QString::number(i),
    


    achow101 commented at 8:25 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    Compiler error here, also for importDescriptors:

     0qt/importdialog.cpp:504:94: error: cannot convert QStringBuilder<char [20], QString> to const std::string& {aka const std::__cxx11::basic_string<char>&}
     1  504 |                     QMessageBox::critical(this, QString::fromStdString("Error: input box # " + QString::number(i)),
     2      |                                                                        ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
     3      |                                                                                              |
     4      |                                                                                              QStringBuilder<char [20], QString>
     5In file included from /usr/include/qt/QtCore/qobject.h:47,
     6                 from /usr/include/qt/QtWidgets/qwidget.h:45,
     7                 from /usr/include/qt/QtWidgets/qdialog.h:44,
     8                 from /usr/include/qt/QtWidgets/QDialog:1,
     9                 from ./qt/importdialog.h:4,
    10                 from qt/importdialog.cpp:1:
    11/usr/include/qt/QtCore/qstring.h:1555:58: note:   initializing argument 1 of static QString QString::fromStdString(const std::string&)
    12 1555 | inline QString QString::fromStdString(const std::string &s)
    13      |                                       ~~~~~~~~~~~~~~~~~~~^
    
    0                    QMessageBox::critical(this, QString::fromStdString(strprintf("Error: input box # %d", i)),
    

    KolbyML commented at 0:34 am on August 10, 2022:
    done
  21. in src/wallet/imports.h:50 in f718e24693 outdated
    45+        int64_t range_start;
    46+        int64_t range_end;
    47+        int64_t timestamp;
    48+        bool internal;
    49+        bool watch_only;
    50+        bool keypool;
    


    achow101 commented at 8:34 pm on August 8, 2022:

    In f718e24693f4d322d2a82d6f1f8f6d4add98c415 “refactor: importmulti and importdescriptors rpc”

    To avoid accessing uninitialized variables, these primitives should be initialized to some safe default. Same for ImportDescriptorData below.


    KolbyML commented at 6:50 am on August 11, 2022:
    done
  22. in src/qt/importdialog.cpp:551 in adf1a83caf outdated
    546+                    dData.parsed_desc = Parse(entry->getDesc(), keys, error, /* require_checksum = */ true);
    547+                    if (!dData.parsed_desc) {
    548+                        throw wallet::InvalidAddressOrKey(error);
    549+                    }
    550+
    551+                    bool range_exists = (dData.range_start && dData.range_end);
    


    achow101 commented at 8:34 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    Surrounding parentheses are not needed

    0                    bool range_exists = dData.range_start && dData.range_end;
    

    KolbyML commented at 0:34 am on August 10, 2022:
    done
  23. KolbyML force-pushed on Aug 8, 2022
  24. in src/qt/importentry.cpp:180 in 46fea25982 outdated
    175+
    176+    if (ui->importScriptPubKeyRadio->isChecked()) {
    177+        multiData.scriptPubKey = ui->scriptPubKey->text().toStdString();
    178+        multiData.redeem_script = ui->redeemScript->text().toStdString();
    179+        multiData.witness_script = ui->witnessScript->text().toStdString();
    180+        multiData.pubkeys = SplitString(ui->publicKey->text().toStdString(), ',');
    


    achow101 commented at 8:48 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    It looks like this is getting empty strings when no pubkeys are specified. This should check that the text is not empty.

    Similar deal with the private keys.

    0        if (!ui->publicKey->text().isEmpty()) {
    1            multiData.pubkeys = SplitString(ui->publicKey->text().toStdString(), ',');
    2        }
    

    KolbyML commented at 0:36 am on August 10, 2022:
    done
  25. in src/qt/importdialog.cpp:301 in 46fea25982 outdated
    360+            wallet::WalletRescanReserver reserver = walletModel->wallet().getReserver();
    361+            if (fRescan && !reserver.reserve()) {
    362+                QMessageBox::critical(this, tr("Rescan failed"),
    363+                                      tr("Wallet is currently rescanning. Abort existing rescan or wait."));
    364+                break;
    365+            }
    


    achow101 commented at 8:53 pm on August 8, 2022:

    In c71f418f18000f537871f57a42ec76e0a25941e9 “qt: implemented importmulti and importdescriptors GUI’s”

    This rescan check boilerplate could be deduplicated and placed at the top of the function. Since some of this is not checked for some of the imports, you can guard it with an if that checks the enum to determine whether the check should occur.


    KolbyML commented at 4:11 pm on August 10, 2022:
    done
  26. in src/qt/importdialog.cpp:191 in 8551f84735 outdated
    140+                QMessageBox::warning(this, tr("Error"), tr("Key is empty"));
    141+                break;
    142+            }
    143+
    144+            std::string strLabel = "";
    145+            strLabel.assign(ui->labelEditIKP->text().toStdString().c_str());
    


    achow101 commented at 8:54 pm on August 8, 2022:

    In 3a75af09dbb6c182a86ce71b15fe0824d3c68ac5 “qt: implemented importpubkey, importprivkey, and importaddress GUI’s”

    Fetching the key and label are things that are shared for the pubkey, address, and privkey imports. This could also be deuplicated and placed at the top of the function, with the extraction of the text done only if the enum matches one of these three.


    KolbyML commented at 4:29 pm on August 10, 2022:
    Done
  27. achow101 commented at 8:56 pm on August 8, 2022: member

    While the imports mostly work, I noticed that there is no feedback when it is successful. What I expected to happen was a dialog indicating success, and then the import dialog would close itself too.

    I think you should also look into adapting a couple of the importmulti tests to be GUI unit tests that can test these new dialogs. It would be very helpful to have some automated testing of all of the things here rather than trying to do it by hand.

    Note: @KolbyML is my Summer of Bitcoin mentee.

  28. KolbyML force-pushed on Aug 8, 2022
  29. KolbyML force-pushed on Aug 8, 2022
  30. KolbyML force-pushed on Aug 8, 2022
  31. KolbyML force-pushed on Aug 8, 2022
  32. KolbyML force-pushed on Aug 8, 2022
  33. KolbyML force-pushed on Aug 8, 2022
  34. KolbyML force-pushed on Aug 8, 2022
  35. KolbyML force-pushed on Aug 9, 2022
  36. KolbyML force-pushed on Aug 9, 2022
  37. KolbyML force-pushed on Aug 9, 2022
  38. KolbyML force-pushed on Aug 9, 2022
  39. KolbyML force-pushed on Aug 9, 2022
  40. KolbyML force-pushed on Aug 9, 2022
  41. KolbyML force-pushed on Aug 9, 2022
  42. KolbyML force-pushed on Aug 9, 2022
  43. KolbyML force-pushed on Aug 9, 2022
  44. KolbyML force-pushed on Aug 9, 2022
  45. KolbyML force-pushed on Aug 9, 2022
  46. w0xlt commented at 9:30 pm on August 9, 2022: contributor
    Concept ACK. Perhaps it would be better to split each menu item into its own PR.
  47. KolbyML force-pushed on Aug 9, 2022
  48. KolbyML force-pushed on Aug 9, 2022
  49. KolbyML force-pushed on Aug 9, 2022
  50. jarolrod commented at 11:10 pm on August 9, 2022: member

    Awesome first contribution @KolbyML, you’re taking a big swing here! Concept ACK on adding this feature.

    First, I would second @w0xlt suggestion of breaking each import into it’s own PR, this makes the changes digestible for reviewers.

    Second, please note that any changes to the code outside of src/qt (excluding necessary build changes to build any new ui files) cannot be merged from this repo. Any refactoring changes to code outside of src/qt you want to propose in order to make this gui feature work should be opened up in the main repo: https://github.com/bitcoin/bitcoin

  51. KolbyML force-pushed on Aug 10, 2022
  52. KolbyML force-pushed on Aug 10, 2022
  53. luke-jr changes_requested
  54. luke-jr commented at 2:40 am on August 10, 2022: member

    Import Public Key & Address: This doesn’t work as one would expect, and only makes sense as part of a larger entire-wallet watch-import. So too low-level for a GUI feature.

    Import Private Key: This is a footgun. Instead, we should only support sweeping (as a basic end-user option) - and probably via the Receive tab.

    Import Multi & Descriptors: Seems a bit weird in the GUI. What does “multi” mean here? But maybe this could be an advanced feature similar to coin control… (hidden by default)

  55. KolbyML force-pushed on Aug 10, 2022
  56. KolbyML force-pushed on Aug 10, 2022
  57. KolbyML force-pushed on Aug 10, 2022
  58. KolbyML force-pushed on Aug 10, 2022
  59. KolbyML force-pushed on Aug 10, 2022
  60. KolbyML force-pushed on Aug 10, 2022
  61. KolbyML force-pushed on Aug 10, 2022
  62. KolbyML force-pushed on Aug 10, 2022
  63. KolbyML force-pushed on Aug 10, 2022
  64. KolbyML force-pushed on Aug 10, 2022
  65. KolbyML force-pushed on Aug 10, 2022
  66. KolbyML force-pushed on Aug 10, 2022
  67. KolbyML force-pushed on Aug 10, 2022
  68. KolbyML force-pushed on Aug 10, 2022
  69. KolbyML force-pushed on Aug 10, 2022
  70. KolbyML force-pushed on Aug 10, 2022
  71. KolbyML force-pushed on Aug 11, 2022
  72. KolbyML force-pushed on Aug 11, 2022
  73. KolbyML force-pushed on Aug 12, 2022
  74. KolbyML force-pushed on Aug 12, 2022
  75. hebasto renamed this:
    qt, refactor: Add Import to Wallet GUI
    Add Import to Wallet GUI
    on Aug 15, 2022
  76. hebasto added the label Wallet on Aug 15, 2022
  77. KolbyML force-pushed on Aug 16, 2022
  78. KolbyML force-pushed on Aug 16, 2022
  79. KolbyML force-pushed on Aug 17, 2022
  80. KolbyML force-pushed on Aug 17, 2022
  81. KolbyML force-pushed on Aug 17, 2022
  82. KolbyML force-pushed on Aug 17, 2022
  83. KolbyML force-pushed on Aug 17, 2022
  84. KolbyML force-pushed on Aug 17, 2022
  85. KolbyML force-pushed on Aug 17, 2022
  86. KolbyML force-pushed on Aug 17, 2022
  87. KolbyML force-pushed on Aug 17, 2022
  88. KolbyML force-pushed on Aug 17, 2022
  89. KolbyML force-pushed on Aug 17, 2022
  90. KolbyML force-pushed on Aug 19, 2022
  91. KolbyML force-pushed on Aug 19, 2022
  92. KolbyML force-pushed on Aug 19, 2022
  93. KolbyML force-pushed on Aug 19, 2022
  94. KolbyML force-pushed on Aug 19, 2022
  95. KolbyML force-pushed on Aug 19, 2022
  96. KolbyML force-pushed on Aug 19, 2022
  97. KolbyML force-pushed on Aug 19, 2022
  98. KolbyML force-pushed on Aug 19, 2022
  99. KolbyML force-pushed on Aug 19, 2022
  100. KolbyML force-pushed on Aug 19, 2022
  101. KolbyML force-pushed on Aug 19, 2022
  102. KolbyML force-pushed on Aug 19, 2022
  103. KolbyML force-pushed on Aug 19, 2022
  104. KolbyML force-pushed on Aug 19, 2022
  105. KolbyML force-pushed on Aug 19, 2022
  106. KolbyML force-pushed on Aug 19, 2022
  107. KolbyML force-pushed on Aug 19, 2022
  108. KolbyML force-pushed on Aug 20, 2022
  109. KolbyML force-pushed on Aug 20, 2022
  110. KolbyML force-pushed on Aug 20, 2022
  111. KolbyML force-pushed on Aug 20, 2022
  112. KolbyML force-pushed on Aug 20, 2022
  113. KolbyML force-pushed on Aug 20, 2022
  114. KolbyML force-pushed on Aug 20, 2022
  115. KolbyML force-pushed on Aug 20, 2022
  116. KolbyML force-pushed on Aug 20, 2022
  117. KolbyML force-pushed on Aug 20, 2022
  118. KolbyML force-pushed on Aug 20, 2022
  119. KolbyML force-pushed on Aug 20, 2022
  120. KolbyML force-pushed on Aug 20, 2022
  121. KolbyML force-pushed on Aug 20, 2022
  122. KolbyML force-pushed on Aug 20, 2022
  123. KolbyML force-pushed on Aug 20, 2022
  124. KolbyML force-pushed on Aug 20, 2022
  125. KolbyML force-pushed on Aug 20, 2022
  126. KolbyML force-pushed on Aug 20, 2022
  127. KolbyML force-pushed on Aug 20, 2022
  128. KolbyML force-pushed on Aug 20, 2022
  129. KolbyML force-pushed on Aug 20, 2022
  130. KolbyML force-pushed on Aug 24, 2022
  131. KolbyML force-pushed on Aug 24, 2022
  132. KolbyML force-pushed on Aug 24, 2022
  133. KolbyML force-pushed on Aug 24, 2022
  134. KolbyML force-pushed on Aug 25, 2022
  135. KolbyML force-pushed on Aug 25, 2022
  136. KolbyML force-pushed on Aug 25, 2022
  137. KolbyML force-pushed on Aug 25, 2022
  138. KolbyML force-pushed on Aug 25, 2022
  139. KolbyML force-pushed on Aug 25, 2022
  140. KolbyML force-pushed on Aug 25, 2022
  141. KolbyML force-pushed on Aug 25, 2022
  142. hebasto commented at 9:03 am on August 25, 2022: member

    @KolbyML

    It is not an appropriate usage of CI resources to debug your branch.

  143. KolbyML commented at 9:07 am on August 25, 2022: contributor

    @KolbyML

    It is not an appropriate usage of CI resources to debug your branch. @hebasto oh, sorry for doing that. How should I debug the Win64 native [vs2022] linker error I have then going forward? Thank you for letting me know

  144. hebasto commented at 9:09 am on August 25, 2022: member

    How should I debug the Win64 native [vs2022] linker error I have then going forward? Thank you for letting me know

    bitcoin/bitcoin#25929 should fix it

  145. KolbyML commented at 9:12 am on August 25, 2022: contributor

    How should I debug the Win64 native [vs2022] linker error I have then going forward? Thank you for letting me know

    bitcoin/bitcoin#25929 should fix it

    Thank you for letting me know that was driving me crazy. Cause it seemed like my code was fine. I will push my changes, then switch the PR to a draft then, since I think that won’t trigger CI. Worse comes to worse I will just work on a local branch like I was originally before working on the PR.

    Edit: switch it to a draft till I am done implementing tests for importmulti/importdescriptors

  146. KolbyML force-pushed on Aug 25, 2022
  147. hebasto commented at 9:40 am on August 25, 2022: member

    Edit: switch it to a draft till I am done implementing tests for importmulti/importdescriptors

    image

    Just click “Convert to draft” :)

  148. KolbyML marked this as a draft on Aug 25, 2022
  149. KolbyML force-pushed on Aug 26, 2022
  150. DrahtBot commented at 1:27 pm on October 21, 2022: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    Concept ACK w0xlt, jarolrod, hernanmarino

    If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  151. DrahtBot added the label Needs rebase on Dec 6, 2022
  152. KolbyML force-pushed on Feb 18, 2023
  153. KolbyML force-pushed on Feb 19, 2023
  154. KolbyML force-pushed on Feb 19, 2023
  155. KolbyML marked this as ready for review on Feb 19, 2023
  156. KolbyML force-pushed on Feb 20, 2023
  157. KolbyML force-pushed on Feb 20, 2023
  158. DrahtBot removed the label Needs rebase on Feb 20, 2023
  159. KolbyML force-pushed on Feb 20, 2023
  160. KolbyML force-pushed on Feb 20, 2023
  161. KolbyML force-pushed on Feb 21, 2023
  162. KolbyML force-pushed on Feb 21, 2023
  163. KolbyML force-pushed on Feb 21, 2023
  164. KolbyML force-pushed on Feb 21, 2023
  165. KolbyML force-pushed on Feb 21, 2023
  166. KolbyML force-pushed on Feb 21, 2023
  167. hernanmarino commented at 0:11 am on March 27, 2023: contributor
    Concept ACK, I’d really like to see this implemented.
  168. DrahtBot added the label Needs rebase on Apr 12, 2023
  169. KolbyML force-pushed on Apr 12, 2023
  170. KolbyML force-pushed on Apr 12, 2023
  171. KolbyML force-pushed on Apr 12, 2023
  172. DrahtBot removed the label Needs rebase on Apr 12, 2023
  173. DrahtBot added the label Needs rebase on Apr 12, 2023
  174. KolbyML force-pushed on Apr 12, 2023
  175. DrahtBot removed the label Needs rebase on Apr 13, 2023
  176. DrahtBot added the label Needs rebase on May 17, 2023
  177. refactor: importmulti and importdescriptors rpc 5f0add38db
  178. interfaces: Add functions for import gui 9bc001c469
  179. qt: implemented importpubkey, importprivkey, and importaddress GUI's 0a5e42a496
  180. qt: implemented importmulti and importdescriptors GUI's d722316cc0
  181. KolbyML force-pushed on May 18, 2023
  182. KolbyML force-pushed on May 18, 2023
  183. DrahtBot added the label CI failed on May 18, 2023
  184. KolbyML force-pushed on May 18, 2023
  185. qt, test: add importmulti tests c29eb07af1
  186. qt, test: add importdescriptors tests 4e3be9f752
  187. qt, test: add importpubkey, importprivkey, and importaddress tests b2b00af1d3
  188. KolbyML force-pushed on May 18, 2023
  189. DrahtBot removed the label Needs rebase on May 18, 2023
  190. DrahtBot added the label Needs rebase on Aug 17, 2023
  191. DrahtBot commented at 1:48 pm on August 17, 2023: contributor

    🐙 This pull request conflicts with the target branch and needs rebase.

  192. pablomartin4btc commented at 11:50 pm on September 21, 2023: contributor
    I’ll review this as soon as I can, in the meantime, could you please link the PR to the existent issue? (Writing any of these keywords somewhere in the description followed by #19 would do the trick, thx!)
  193. KolbyML commented at 0:40 am on September 22, 2023: contributor
    @pablomartin4btc sounds good I will try and get my 2 PR’s rebased
  194. hebasto commented at 6:17 pm on September 22, 2023: member

    @KolbyML

    Suggesting to convert this PR to a draft while CI fails.

  195. KolbyML marked this as a draft on Sep 23, 2023
  196. DrahtBot commented at 0:57 am on December 22, 2023: contributor

    There hasn’t been much activity lately and the patch still needs rebase. What is the status here?

    • Is it still relevant? ➡️ Please solve the conflicts to make it ready for review and to ensure the CI passes.
    • Is it no longer relevant? ➡️ Please close.
    • Did the author lose interest or time to work on this? ➡️ Please close it and mark it ‘Up for grabs’ with the label, so that it can be picked up in the future.
  197. DrahtBot commented at 0:33 am on March 20, 2024: contributor

    ⌛ There hasn’t been much activity lately and the patch still needs rebase. What is the status here?

    • Is it still relevant? ➡️ Please solve the conflicts to make it ready for review and to ensure the CI passes.
    • Is it no longer relevant? ➡️ Please close.
    • Did the author lose interest or time to work on this? ➡️ Please close it and mark it ‘Up for grabs’ with the label, so that it can be picked up in the future.
  198. KolbyML commented at 0:37 am on March 20, 2024: contributor
    I no longer have time to work on this so as the bot suggests I am going to close this
  199. KolbyML closed this on Mar 20, 2024

  200. hebasto added the label Up for grabs on Mar 22, 2024

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/gui. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-22 03:20 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me