Walletwasabi: Cannot send transaction

Created on 18 Sep 2019  Â·  27Comments  Â·  Source: zkSNACKs/WalletWasabi

General Description

I cannot send a transaction because Wasabi is trying to "Calculating dynamic transaction fee".

I select "All Private" and click the button to send my transaction. The send button says "Sending Transaction..." and the bottom status message says "Building transaction..." but doesn't progress beyond this point. A thread on my CPU also goes to 100% for the process wassabee.

I notice in the logs the last line says "Calculating dynamic transaction fee..."

Operating System

My operating system is Arch Linux using version 1.1.9 of Wasabi.

Logs

Logs

2019-09-18 14:44:54 INFO    Program (43)    Wasabi GUI started (9af6b9d4-e838-4b13-aeb9-5e25909ec304).
2019-09-18 14:44:57 INFO    Global (142)    Config is successfully initialized.
2019-09-18 14:44:57 INFO    HwiProcessManager (240) Updating HWI...
2019-09-18 14:44:57 INFO    HwiProcessManager (270) Extracted /opt/wasabi-wallet/Hwi/Software/hwi-linux64.zip to `/home/david/.walletwasabi/client/hwi`.
2019-09-18 14:44:57 INFO    HwiProcessManager (282) Shell command executed: chmod -R 750 /home/david/.walletwasabi/client/hwi.
2019-09-18 14:44:57 INFO    TorProcessManager (253) Starting Tor monitor...
2019-09-18 14:44:57 INFO    Global (203)    TorProcessManager is initialized.
2019-09-18 14:44:57 INFO    TorProcessManager (66)  Tor is already running.
2019-09-18 14:44:58 INFO    Global (331)    Loaded AddressManager from `/home/david/.walletwasabi/client/AddressManager/AddressManagerMain.dat`.
2019-09-18 14:44:58 INFO    MainWindow.xaml (70)    UiConfig is successfully initialized.
2019-09-18 14:45:00 INFO    Global (280)    Start connecting to nodes...
2019-09-18 14:45:00 INFO    Global (301)    Start synchronizing filters...
2019-09-18 14:45:00 INFO    Global (505)    Wallet loaded: Dave.
2019-09-18 14:45:00 INFO    Global (435)    Start Chaumian CoinJoin service...
2019-09-18 14:45:00 INFO    Global (437)    Starting WalletService...
2019-09-18 14:45:00 INFO    CcjClient (137) CcjClient is successfully initialized.
2019-09-18 14:45:02 INFO    CcjClientState (467)    Round (9650) added.
2019-09-18 14:45:02 INFO    CcjClientState (467)    Round (9651) added.
2019-09-18 14:45:02 INFO    Global (439)    WalletService started.
2019-09-18 14:47:03 INFO    WasabiSynchronizer (247)    Downloaded filter for block 595495.
2019-09-18 14:47:04 INFO    MempoolService (114)    Start cleaning out mempool...
2019-09-18 14:47:06 INFO    MempoolService (131)    326 transactions were cleaned from mempool.
2019-09-18 14:48:23 INFO    WalletService (954) Calculating dynamic transaction fee...

Wasabi Version

I installed Wasabi from the release .deb using the AUR script here: https://aur.archlinux.org/packages/wasabi-wallet-bin

wassabee --version
Wasabi Client Version: 1.1.9
Compatible Coordinator Version: 3
debug priority

Most helpful comment

I have fixed it. Could you test my PR? https://github.com/zkSNACKs/WalletWasabi/pull/2334

All 27 comments

Same thing under windows, (selected all privates)
image

image

and of course GPU has to be near maxed out the whole time 🤦
image

Do you have a huge amount of coins selected? We changed to NBitcoin's transaction builder instead of using our homegrown transaction building and I remember that in 2018 Stratis was complaining about very similar issues during the same scenario.

Number of utxo was reasonable,
For testing purposes,
how will wasabi handle having it's internet cut off just before or
during the transaction building? Will it cache and rebroadcast as soon as
it can connect again?

On Thu., Sep. 19, 2019, 06:47 nopara73, notifications@github.com wrote:

Do you have a huge amount of coins selected? We changed to NBitcoin's
transaction builder instead of using our homegrown transaction building and
I remember that in 2018 Stratis was complaining about very similar issues
during the same scenario.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/zkSNACKs/WalletWasabi/issues/2304?email_source=notifications&email_token=AAC643HN35BB5GRFKZCWGZDQKNKFXA5CNFSM4IYCSNF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7DBJZY#issuecomment-533075175,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAC643AVOD4IUKRTAAZEBN3QKNKFXANCNFSM4IYCSNFQ
.

Will it cache and rebroadcast as soon as it can connect again?

No, if building the tx fails, then it never gets to broadcasting (nor serializing or similar.) Let me try to reproduce.

Transaction building with 79 inputs is working just fine, so it's not the size that matters.

image

@lontivero @NicolasDorier Do you have any theories?

For the record this part of the code gets stuck (based on @dmp1ce's logs)

// Get and calculate fee
Logger.LogInfo("Calculating dynamic transaction fee...");

FeeRate feeRate;
if (feeStrategy.Type == FeeStrategyType.Target)
{
    feeRate = Synchronizer.GetFeeRate(feeStrategy.Target);
}
else if (feeStrategy.Type == FeeStrategyType.Rate)
{
    feeRate = feeStrategy.Rate;
}
else
{
    throw new NotSupportedException(feeStrategy.Type.ToString());
}

var smartCoinsByOutpoint = allowedSmartCoinInputs.ToDictionary(s => s.GetOutPoint());
TransactionBuilder builder = Network.CreateTransactionBuilder();
builder.SetCoinSelector(new SmartCoinSelector(smartCoinsByOutpoint));
builder.AddCoins(allowedSmartCoinInputs.Select(c => c.GetCoin()));

foreach (var request in payments.Requests.Where(x => x.Amount.Type == MoneyRequestType.Value))
{
    var amountRequest = request.Amount;

    builder.Send(request.Destination, amountRequest.Amount);
    if (amountRequest.SubtractFee)
    {
        builder.SubtractFees();
    }
}

HdPubKey changeHdPubKey = null;

if (payments.TryGetCustomRequest(out DestinationRequest custChange))
{
    var changeScript = custChange.Destination.ScriptPubKey;
    changeHdPubKey = KeyManager.GetKeyForScriptPubKey(changeScript);

    var changeStrategy = payments.ChangeStrategy;
    if (changeStrategy == ChangeStrategy.Custom)
    {
        builder.SetChange(changeScript);
    }
    else if (changeStrategy == ChangeStrategy.AllRemainingCustom)
    {
        builder.SendAllRemaining(changeScript);
    }
    else
    {
        throw new NotSupportedException(payments.ChangeStrategy.ToString());
    }
}
else
{
    KeyManager.AssertCleanKeysIndexed(isInternal: true);
    KeyManager.AssertLockedInternalKeysIndexed(14);
    changeHdPubKey = KeyManager.GetKeys(KeyState.Clean, true).RandomElement();

    builder.SetChange(changeHdPubKey.P2wpkhScript);
}

builder.SendEstimatedFees(feeRate);

var psbt = builder.BuildPSBT(false);

var spentCoins = psbt.Inputs.Select(txin => smartCoinsByOutpoint[txin.PrevOut]).ToArray();

var realToSend = payments.Requests
    .Select(t =>
        (label: t.Label,
        destination: t.Destination,
        amount: psbt.Outputs.FirstOrDefault(o => o.ScriptPubKey == t.Destination.ScriptPubKey)?.Value))
    .Where(i => i.amount != null);

if (!psbt.TryGetFee(out var fee))
{
    throw new InvalidOperationException("Impossible to get the fees of the PSBT, this should never happen.");
}
Logger.LogInfo($"Fee: {fee.Satoshi} Satoshi.");

Try with two out (change)

Sending MAX worked

Thanks, I played around with the amounts, no difference. (Although I noticed when I did larger amounts building took like half a second longer than with smaller amounts, but that's probably irrelevant here.)

@lontivero Can you play around with it on Linux? Maybe it's OS specific issue (although I doubt that, because this is pure C# code.)

I should have taken a screenshot. I'll try to reproduce later. For now I can tell you it was about 10 to 20 available inputs, all private. The address I was sending to was a P2SH address, the address started with a "3". I had the fee slider set to fastest, closest to the lightning bolt. For the amount I was sending, I think it would have used at least two inputs, but it could have been more depending on the building algorithm.

@nopara73 I started reviewing Wasabi code first, I cannot see how this could happen. Next I reviewed NBitcoin's TransactionBuilder code looking for loops and retries with no obvious termination conditions (I found one but I was not able to make it iterate forever). Finally I created a test that created hundreds of transactions with lots of coins paying random fee and spending random amounts in different ways. That test was running for almost an hour and never failed not got stuck. The only thing that rest to test is the PSBT part.

I cannot make it fail.

I was sending to an address I had probably sent to in the past. I'm not sure if there was supposed to be a privacy warning about that.

I wondered if it was a GUI issue, but the GUI was responsive. I was able to close Wasabi normally. I tried three times, and each attempt took longer than five minutes to build transaction. I never waited longer than five minutes for the send. I tried a slightly higher fee on the slider on one attempt.

I was sending to an address I had probably sent to in the past. I'm not sure if there was supposed to be a privacy warning about that.

@dmp1ce this is actually a nice idea, I opened feature request here #2324

@MaxHillebrand Credit should go to Samourai Wallet, which does this already.

I never had any case of the TransactionBuilder having problem creating the transaction.

My guess is that it might come from the SmartCoinSelector.

I think I got it! The following line call the coin selection algorithm many many times. It seems there is a loop somewhere in NBitcoin.
https://github.com/zkSNACKs/WalletWasabi/blob/2ee83baeaf80fd8df1743e7d6b935afb8369c97d/WalletWasabi/Services/WalletService.cs#L1012

Yes, I go it. Here we have a way to reproduce it:

  1. Download and open the following testnet wallet:
  2. Make a transaction exactly as shown in the picture (label and address can be different of course):


TestNetWallet.json

{
  "EncryptedSecret": "6PYKgcpfjhC2QGmtN49VYMpkcsM8jPrae5qrG3uxpL1iwzsQ4cTMtQpLRQ",
  "ChainCode": "6Mf1P6MWwCA+2IKlvYaI9rsJ27Ax9utx4Dr3QoJhnKY=",
  "MasterFingerprint": "323ec8d9",
  "ExtPubKey": "xpub6CFPPrkw26abdgeKRzH6tsr5wj6XXSCJP7vRpHHt6LogxGvRw5dNP7yjbvv66A3BDBzP9NC8ZvDo6xZcvpZsC9LxWyxUtm4UkRRu6mqiQmb",
  "PasswordVerified": true,
  "MinGapLimit": 21,
  "AccountKeyPath": "84'/0'/0'",
  "BlockchainState": {
    "Network": "TestNet",
    "BestHeight": "1579160",
    "BlockStates": [
      {
        "BlockHash": "00000000000000d6d2a66003f6ed932b833ef0cbce551e09709f4572502c9393",
        "BlockHeight": "1484344",
        "TransactionIndices": [
          52
        ]
      },
      {
        "BlockHash": "000000000000002f9091bcb198e8b8f33bb365b66edaf80c7f21fe2495ca3253",
        "BlockHeight": "1484348",
        "TransactionIndices": [
          82
        ]
      },
      {
        "BlockHash": "000000000000001b3fe0af33bbf100d83e6cf429e38d721c9063fd47a283467f",
        "BlockHeight": "1484349",
        "TransactionIndices": [
          65
        ]
      },
      {
        "BlockHash": "00000000003bd613ba9a81165f04020dba69bc574d2b3a67366fc4296aced769",
        "BlockHeight": "1484451",
        "TransactionIndices": [
          40
        ]
      },
      {
        "BlockHash": "000000004d28eaa33fe9433601aeb27e1c9a2c337191975b977d8ff0a29e9b0e",
        "BlockHeight": "1489071",
        "TransactionIndices": [
          119,
          120
        ]
      },
      {
        "BlockHash": "00000000338f9a3b5be6b68335870906d4284c519dd174790668bf9a7bb57454",
        "BlockHeight": "1489248",
        "TransactionIndices": [
          157
        ]
      },
      {
        "BlockHash": "000000004fd1f65822659d6077a5aaae1501610cde91c7eb8777a66345a5c0bf",
        "BlockHeight": "1489355",
        "TransactionIndices": [
          86,
          87
        ]
      },
      {
        "BlockHash": "00000000000006921edf837cd4c47bfab5db0c892b6b1d0ca30a2d3ab9b6542f",
        "BlockHeight": "1510662",
        "TransactionIndices": [
          22
        ]
      },
      {
        "BlockHash": "0000000000000f8647e5a5befbc1820701edb144b4b80e010fc28acc15ad7adc",
        "BlockHeight": "1510702",
        "TransactionIndices": [
          18
        ]
      },
      {
        "BlockHash": "00000000000001318849cf7c4b8d2102b8cfed39d1a28edc5d57cc0f248c514c",
        "BlockHeight": "1512974",
        "TransactionIndices": [
          12
        ]
      },
      {
        "BlockHash": "00000000000000aa5c6434ee6785a028b5927cd6e9d56e2c09bdae5bf5c0a494",
        "BlockHeight": "1517820",
        "TransactionIndices": [
          84
        ]
      },
      {
        "BlockHash": "00000000001254d4245f3a545c49cdb37a906bda74ce4f6a34cba37a7e279dbb",
        "BlockHeight": "1517830",
        "TransactionIndices": [
          112,
          113
        ]
      },
      {
        "BlockHash": "0000000000000050654eaf63e3eb3760ada55103b2091b827967be17c0329f0c",
        "BlockHeight": "1517831",
        "TransactionIndices": [
          32
        ]
      },
      {
        "BlockHash": "00000000000000b5d5ad1aeb1126661d270153029f90ef6a0727946823bca9a5",
        "BlockHeight": "1518072",
        "TransactionIndices": [
          84
        ]
      },
      {
        "BlockHash": "000000000000002a131aeba0511f0bf2a40498c1c778cf7e1caac32106fab49f",
        "BlockHeight": "1518260",
        "TransactionIndices": [
          74,
          75
        ]
      },
      {
        "BlockHash": "00000000000000575b239327fb64d73caea2dbddae6a245572a8e923535ccd9b",
        "BlockHeight": "1518261",
        "TransactionIndices": [
          113
        ]
      },
      {
        "BlockHash": "0000000000000052c6ba1a435164f11318a28f85d6fd41b32a81b747a9666720",
        "BlockHeight": "1518262",
        "TransactionIndices": [
          66,
          67,
          68
        ]
      },
      {
        "BlockHash": "00000000000003d34e8d19ec4c14770f07e9d86c66a5f016317e66e04b755353",
        "BlockHeight": "1542886",
        "TransactionIndices": [
          39
        ]
      },
      {
        "BlockHash": "000000000000036962002813aff98cbf749373a2b7ed06bf24a141d66141e7a0",
        "BlockHeight": "1542891",
        "TransactionIndices": [
          77
        ]
      },
      {
        "BlockHash": "000000000000038d4b5240747ea1227051dea79b080bebd3d11b0c80ccc6850c",
        "BlockHeight": "1542893",
        "TransactionIndices": [
          42
        ]
      },
      {
        "BlockHash": "0000000000000411263e04ec0ca56dace805a7f124280d00a5141ce81e6450a2",
        "BlockHeight": "1563570",
        "TransactionIndices": [
          8
        ]
      },
      {
        "BlockHash": "0000000000000444187c38c9de9ff40d44ac17e87631c1640d0f84a6ffdb5939",
        "BlockHeight": "1563579",
        "TransactionIndices": [
          1
        ]
      },
      {
        "BlockHash": "0000000000000eb3bbd1c15a261cfa4b179dc92afb77441fa299358c006e1413",
        "BlockHeight": "1563580",
        "TransactionIndices": [
          3,
          4
        ]
      },
      {
        "BlockHash": "00000000000018e14958187c043667e4f1d08d1d1d1306a22aac87ff15e6c2f4",
        "BlockHeight": "1563581",
        "TransactionIndices": [
          5,
          6,
          7,
          8
        ]
      },
      {
        "BlockHash": "0000000000001d103e0941a5790ff9e02a1336f04e1ac7ffb0045041a0897ad1",
        "BlockHeight": "1563583",
        "TransactionIndices": [
          8,
          9,
          10
        ]
      },
      {
        "BlockHash": "000000000000155fd5d2ebdc710dc117897568c3839b4d0e1d83dcce73a202be",
        "BlockHeight": "1563584",
        "TransactionIndices": [
          4,
          5
        ]
      },
      {
        "BlockHash": "00000000000009702e0e0084ed845f5eca30b4b8f3bc2e90b43b2830ca581ca4",
        "BlockHeight": "1563585",
        "TransactionIndices": [
          3,
          4
        ]
      },
      {
        "BlockHash": "00000000000010124e5a5acbf57e723d9ae345f227e4f619f66b2a2b5b81ea0c",
        "BlockHeight": "1563586",
        "TransactionIndices": [
          4,
          5
        ]
      },
      {
        "BlockHash": "0000000000001bdf9452b4cb171705f59aab616f20611d62e37058cecb962305",
        "BlockHeight": "1563588",
        "TransactionIndices": [
          4
        ]
      },
      {
        "BlockHash": "0000000000001288ae619d1d9b7cc17c15269dd150dab1e03544694ac517ed98",
        "BlockHeight": "1563589",
        "TransactionIndices": [
          4
        ]
      },
      {
        "BlockHash": "0000000000001bcfa38548e6575f864a9863b0c0045ba2378077702cceb3243c",
        "BlockHeight": "1563590",
        "TransactionIndices": [
          1
        ]
      },
      {
        "BlockHash": "00000000000013c5d3f7b75db7517d45c5b2b30ac188e8b292f4f3be1519af50",
        "BlockHeight": "1563591",
        "TransactionIndices": [
          5,
          6
        ]
      },
      {
        "BlockHash": "0000000000000367473ee9bcf90a4f538126e23ddd6b617a0be441f875c20669",
        "BlockHeight": "1563592",
        "TransactionIndices": [
          2
        ]
      },
      {
        "BlockHash": "0000000000000a499c662a31dd62447897d738e4e59e69edaa92a2150fa8100c",
        "BlockHeight": "1563593",
        "TransactionIndices": [
          6,
          7
        ]
      },
      {
        "BlockHash": "0000000000000b277855d95d58f573f0e71ccb4667c7bc4fee3504af89ca4975",
        "BlockHeight": "1563594",
        "TransactionIndices": [
          3
        ]
      },
      {
        "BlockHash": "0000000000001bb19d20139ed84ab7cb8d957d4f8b798b3ea6d8f93a899b5a8d",
        "BlockHeight": "1563595",
        "TransactionIndices": [
          1
        ]
      },
      {
        "BlockHash": "0000000000001b23306dc8f0b76963f1629adc2523f50a015ce8b2e294c0b3df",
        "BlockHeight": "1563596",
        "TransactionIndices": [
          1
        ]
      },
      {
        "BlockHash": "0000000000000c18c3c38476aed3df43966056208b7c73dbf2ce5c945dad21af",
        "BlockHeight": "1563598",
        "TransactionIndices": [
          15,
          16,
          18
        ]
      },
      {
        "BlockHash": "00000000000020072767f97b891fc0dc5a34113a23e341482a7467c95239c62c",
        "BlockHeight": "1563599",
        "TransactionIndices": [
          5,
          6,
          7,
          8
        ]
      },
      {
        "BlockHash": "0000000000000ad778ed91eb348c1fea5394fbd1353c4550ceb9654842fa79d2",
        "BlockHeight": "1563601",
        "TransactionIndices": [
          3
        ]
      },
      {
        "BlockHash": "000000000000003f195a909351fe7f14f8066fde7a7a1185bd6490fb7ba04579",
        "BlockHeight": "1563603",
        "TransactionIndices": [
          1
        ]
      },
      {
        "BlockHash": "000000000000133545b40ef223a4847393a8137b3bcae52206ea43334cea5ad5",
        "BlockHeight": "1563605",
        "TransactionIndices": [
          7,
          8,
          9
        ]
      },
      {
        "BlockHash": "0000000000000a65c7214179a2c912e20b8822635f616fd61abb2a56c17f6d67",
        "BlockHeight": "1563606",
        "TransactionIndices": [
          4
        ]
      },
      {
        "BlockHash": "000000000000014ac06fa2d90c1a0c29e9eb7414eeafd81f26bc589021a164ee",
        "BlockHeight": "1563608",
        "TransactionIndices": [
          2,
          3
        ]
      },
      {
        "BlockHash": "00000000000010de45db9e88ead36c2c11bd9536599a8e67afec770464c7018b",
        "BlockHeight": "1563610",
        "TransactionIndices": [
          9,
          10,
          11
        ]
      },
      {
        "BlockHash": "0000000000000aadec35bb01add92871cd838d4f8c8ca59daba7ce0d279ed498",
        "BlockHeight": "1563611",
        "TransactionIndices": [
          6,
          7
        ]
      },
      {
        "BlockHash": "000000000000163d5eb635381ee3de77281e872c6fb0e8e57519e585564264d9",
        "BlockHeight": "1563612",
        "TransactionIndices": [
          2
        ]
      },
      {
        "BlockHash": "000000000000126db49b6766a59bb9c9887dc7b0f3dce10f2bceda6cf87c969b",
        "BlockHeight": "1563614",
        "TransactionIndices": [
          1
        ]
      },
      {
        "BlockHash": "00000000000002ba3013ced033e982ae6d5959d337a126c235f539453f455793",
        "BlockHeight": "1563615",
        "TransactionIndices": [
          8,
          9,
          10
        ]
      },
      {
        "BlockHash": "000000000000130c4ef5cd512a831ada7fc9e141a2ecad6c6e40f6f69d18654b",
        "BlockHeight": "1563616",
        "TransactionIndices": [
          2
        ]
      },
      {
        "BlockHash": "0000000000000cc23a5ade2134063f2b71011210b160b584107c711520a2c8a1",
        "BlockHeight": "1563618",
        "TransactionIndices": [
          2
        ]
      },
      {
        "BlockHash": "000000000000008621a693ba119032cd044990e287f1c6760e9ff39059d20abb",
        "BlockHeight": "1569397",
        "TransactionIndices": [
          88,
          89
        ]
      },
      {
        "BlockHash": "00000000000002a636af7536fe3672da255adcc18c4b17d3311320fb3f0cf4b4",
        "BlockHeight": "1569403",
        "TransactionIndices": [
          77,
          78,
          79
        ]
      },
      {
        "BlockHash": "000000000010934543170f0b95c7af69635510e1f6d763a22c0f155a2232493f",
        "BlockHeight": "1569405",
        "TransactionIndices": [
          76
        ]
      },
      {
        "BlockHash": "00000000970a6e402a80f1222fc132534dcda51be084f872c7a405ad50a6b2d7",
        "BlockHeight": "1569503",
        "TransactionIndices": [
          78
        ]
      },
      {
        "BlockHash": "00000000000001c205212b4fd9a182a015f108cc2ddee5462ef8bf14bce0dc77",
        "BlockHeight": "1572737",
        "TransactionIndices": [
          17
        ]
      },
      {
        "BlockHash": "00000000000001ef1553da526cd2daa0888e4fcb84192ef3ada77fa82f39bd09",
        "BlockHeight": "1572739",
        "TransactionIndices": [
          94
        ]
      },
      {
        "BlockHash": "000000000000016fc444af45d984b96e2afef9d6ca9797ce106ae5376e0d59c4",
        "BlockHeight": "1577848",
        "TransactionIndices": [
          286
        ]
      },
      {
        "BlockHash": "000000000000010c8ac5211ae1f9dc7bcaffe6cf3536e3cfc46b1269d6a92834",
        "BlockHeight": "1577854",
        "TransactionIndices": [
          21
        ]
      },
      {
        "BlockHash": "00000000000001f7e57adb4f28b5ea31654f3069cf579499555c741e615e03d0",
        "BlockHeight": "1577856",
        "TransactionIndices": [
          11,
          21
        ]
      },
      {
        "BlockHash": "00000000000002196bf9d79692d0e5b256aaa29f332567dbf268e2186ac7f86c",
        "BlockHeight": "1577857",
        "TransactionIndices": [
          28,
          29
        ]
      },
      {
        "BlockHash": "00000000001a27e909bbac882f503c262324d46a4d4d08cdee8fdefbf99443b8",
        "BlockHeight": "1578677",
        "TransactionIndices": [
          110
        ]
      },
      {
        "BlockHash": "00000000000fd71e03ecb6fa746ef8f759a91024b2cef1b5e3346e29aeed76e9",
        "BlockHeight": "1578889",
        "TransactionIndices": [
          202,
          211
        ]
      }
    ]
  },
  "HdPubKeys": [
    {
      "PubKey": "038de0bac35131e871e5044588f35380f34186ce87a656b28bb34080c9012e3806",
      "FullKeyPath": "84'/0'/0'/1/0",
      "Label": "a, change of (), e",
      "KeyState": 2
    },
    {
      "PubKey": "0210cc443014ad4650423ac4a7dde944eee629235b4a4d2304b3c1c21cd86e3b5d",
      "FullKeyPath": "84'/0'/0'/1/1",
      "Label": "c, change of (dust?), d",
      "KeyState": 2
    },
    {
      "PubKey": "021a68bd8198dff27e879c17d46e7fc67527b347fe3c04397871febde648693ad3",
      "FullKeyPath": "84'/0'/0'/1/2",
      "Label": "change of (dust)",
      "KeyState": 2
    },
    {
      "PubKey": "038f6f4bdc3b6f1ba3f9d5f79810e5c87fd414bc62574f3054b71345d7c0617694",
      "FullKeyPath": "84'/0'/0'/1/3",
      "Label": "change of ()",
      "KeyState": 0
    },
    {
      "PubKey": "020ef1abaf72c62c35ac24e39d04d0731663c319033634f0f0c4297aa59e270f74",
      "FullKeyPath": "84'/0'/0'/1/4",
      "Label": "change of (test transaction)",
      "KeyState": 2
    },
    {
      "PubKey": "02ea96db2e52a884b4fc619be2a3ad90ffdcd56443a4c2f1edbb6e0c7c84faaf67",
      "FullKeyPath": "84'/0'/0'/1/5",
      "Label": "change of ()",
      "KeyState": 0
    },
    {
      "PubKey": "030a8646c0ac8e658896703572ea986cc2a0341ca1258e1621d423fedc344c2a5c",
      "FullKeyPath": "84'/0'/0'/1/6",
      "Label": "BitMex, a",
      "KeyState": 2
    },
    {
      "PubKey": "036e8df1ae1e5324a7dcddc42499a24830c9cc74094f343349000aabaaf237f203",
      "FullKeyPath": "84'/0'/0'/1/7",
      "Label": "change of (dust)",
      "KeyState": 2
    },
    {
      "PubKey": "021107aa1b91191fabccc2f22bd64aff182f52ac041aeb8293964fa7d8aca2b061",
      "FullKeyPath": "84'/0'/0'/1/8",
      "Label": "a, change of (), e",
      "KeyState": 2
    },
    {
      "PubKey": "03219eefbe081a566bca4c0847865c6e5c592c478968d8cea844d9c79445e655f8",
      "FullKeyPath": "84'/0'/0'/1/9",
      "Label": "a, change of (), g",
      "KeyState": 2
    },
    {
      "PubKey": "0280b75a5560225a0c062feac564a824123bb0a2b678e7ee1a0d2d309e27cf74e5",
      "FullKeyPath": "84'/0'/0'/1/10",
      "Label": "change of (notify)",
      "KeyState": 0
    },
    {
      "PubKey": "03d031f9a73502d91c7a8a5698764f6b84acfbb2fd2ae27ddc75b54e9abb640419",
      "FullKeyPath": "84'/0'/0'/1/11",
      "Label": "BitMex, Duplicated Utxo",
      "KeyState": 2
    },
    {
      "PubKey": "021a90c817935387141ae42d07b505ca052f68108d885a9e27d3fca17164080652",
      "FullKeyPath": "84'/0'/0'/1/12",
      "Label": "arbol, change of (), otro",
      "KeyState": 2
    },
    {
      "PubKey": "039e627662b645fec9840df61e75303eca1a1a57edd7a7336ecf11a08f7aa46b55",
      "FullKeyPath": "84'/0'/0'/1/13",
      "Label": "a, b, change of ()",
      "KeyState": 2
    },
    {
      "PubKey": "02b5e01eb63e36909744e791dfdc772d96fc858a1eaca112f0ada3fed830a501c0",
      "FullKeyPath": "84'/0'/0'/1/14",
      "Label": "change of (test2)",
      "KeyState": 2
    },
    {
      "PubKey": "02ece2e8cd9c26f73ca53d718e4cdb11c70ddec0a3991b64bb6b32508748abc3a3",
      "FullKeyPath": "84'/0'/0'/1/15",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0246b038cab00d86437cdb05411891022116adcdcbc4b8b7565b1c69755e59a7ce",
      "FullKeyPath": "84'/0'/0'/1/16",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0214ea4b2f7c1acc665bc29bb76ab11ab4490a45d4e3dc0e1de8fcde533b909755",
      "FullKeyPath": "84'/0'/0'/1/17",
      "Label": "change of (notify)",
      "KeyState": 2
    },
    {
      "PubKey": "03a5f26d89539fbed78be1d34b873b2c4b908cbb27aef7a9393ce3dd7b10868e65",
      "FullKeyPath": "84'/0'/0'/1/18",
      "Label": "change of ()",
      "KeyState": 0
    },
    {
      "PubKey": "037b4204eb75a7333d9c4c9c784948482c25d2318a37578cec74fd91b781bab38c",
      "FullKeyPath": "84'/0'/0'/1/19",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0386c2e1f4076e64a7b0fa4995df05fbbb3eb16cffd5037fb8842716d9935ebaef",
      "FullKeyPath": "84'/0'/0'/1/20",
      "Label": "change of (test1)",
      "KeyState": 2
    },
    {
      "PubKey": "0368f31c38e2e091308f03ad1784a01aa7132276698f49093ee031385cf2357c86",
      "FullKeyPath": "84'/0'/0'/0/0",
      "Label": "1",
      "KeyState": 2
    },
    {
      "PubKey": "034d54358d9fc9bfd398b71c8dce79557ad6a250b8a0045e1007fbe0f7c567f44c",
      "FullKeyPath": "84'/0'/0'/0/1",
      "Label": "otro",
      "KeyState": 2
    },
    {
      "PubKey": "02ad41deea123b28ce17a8e7aeffb73d1e28b31d2917baf0d0db88fa0b256c238d",
      "FullKeyPath": "84'/0'/0'/0/2",
      "Label": "d",
      "KeyState": 2
    },
    {
      "PubKey": "02e4fc01849fcb9941806c0774e0bb79576ce202bc6e8ebc30efe9e29b7daaf8f5",
      "FullKeyPath": "84'/0'/0'/0/3",
      "Label": "dd",
      "KeyState": 2
    },
    {
      "PubKey": "026faa5039fd6c8d0c5d38263d6393c818643d85fa3bbc4d6a4a77b48b9ae63283",
      "FullKeyPath": "84'/0'/0'/0/4",
      "Label": "a",
      "KeyState": 2
    },
    {
      "PubKey": "035ed725ec86101a5cc59d90f8d8412c565ec6ba248f01aa9f9f3624673aba73a2",
      "FullKeyPath": "84'/0'/0'/0/5",
      "Label": "hola",
      "KeyState": 2
    },
    {
      "PubKey": "03594252cef249f81a7dd5d322ce11a78bb265e7260c729040617d34de07fed0d7",
      "FullKeyPath": "84'/0'/0'/0/6",
      "Label": "hola",
      "KeyState": 2
    },
    {
      "PubKey": "0395535b92e8035f521926b4a5083249123243f9142dccf1afbc79527a7992c728",
      "FullKeyPath": "84'/0'/0'/0/7",
      "Label": "hola",
      "KeyState": 2
    },
    {
      "PubKey": "02c7c97f1e5ce57772978ab8c9e5b306447a6686bf97df4fdb9d608c809f100eee",
      "FullKeyPath": "84'/0'/0'/0/8",
      "Label": "hola",
      "KeyState": 2
    },
    {
      "PubKey": "03a4c9bb32753e01e72f13b42050f7fe94c6902340789356bf6ff32c3cce39c014",
      "FullKeyPath": "84'/0'/0'/0/9",
      "Label": "hola",
      "KeyState": 2
    },
    {
      "PubKey": "034311fb8bdfc610a03f3b5a8d1659c93ff8a7726777d0e24fd170dc95efee220a",
      "FullKeyPath": "84'/0'/0'/0/10",
      "Label": "payment order #454423",
      "KeyState": 2
    },
    {
      "PubKey": "02f146f8baf2b6e8b8219009ef47359f415093d13a2e51cc0e7701ae4fc3761d90",
      "FullKeyPath": "84'/0'/0'/0/11",
      "Label": "s",
      "KeyState": 2
    },
    {
      "PubKey": "03de5a3b3785a7d3887bd1af45df130c7ec64c06579e9bf7c63f7b42b0bc0ef943",
      "FullKeyPath": "84'/0'/0'/0/12",
      "Label": "f",
      "KeyState": 2
    },
    {
      "PubKey": "035f0fc89b2a8e84d20e1d64e3404b3fd0e0795f5c0637e7120776ef76cf9208e4",
      "FullKeyPath": "84'/0'/0'/0/13",
      "Label": "ffff",
      "KeyState": 2
    },
    {
      "PubKey": "0347fc8a818f3ccce2236601b76f3ae5f544dea17f84f5d5f2409951148d378e96",
      "FullKeyPath": "84'/0'/0'/0/14",
      "Label": "sss",
      "KeyState": 2
    },
    {
      "PubKey": "0209cc43b6010b78f3b10ff76cb60e7ee55a3dad031ff4caefabb038fbdbc72f54",
      "FullKeyPath": "84'/0'/0'/0/15",
      "Label": "t",
      "KeyState": 2
    },
    {
      "PubKey": "02d2243c2842948a1912baf21934d7915c66f5f5de0348ee1a2c9a53a45abcd378",
      "FullKeyPath": "84'/0'/0'/0/16",
      "Label": "tt",
      "KeyState": 2
    },
    {
      "PubKey": "027545a0888143b8e4073d8ac9c12b3fc4084eb4a1da57abbbc75cfc198503a621",
      "FullKeyPath": "84'/0'/0'/0/17",
      "Label": "ttt",
      "KeyState": 2
    },
    {
      "PubKey": "034e04993ed7355bf64e00fcd191d3ee35b3feaa4590fa0b02f60a11ae2b159973",
      "FullKeyPath": "84'/0'/0'/0/18",
      "Label": "otro",
      "KeyState": 2
    },
    {
      "PubKey": "02747c0640d771c28c02b9addac1d193dae806128a9c98a8f1894b937b9c4c95b6",
      "FullKeyPath": "84'/0'/0'/0/19",
      "Label": "aaaaa",
      "KeyState": 2
    },
    {
      "PubKey": "03c1a6a32293f246e4b00a5ea50ab2432d2b06b5bc3ee4a4342e9ad2adcb05696b",
      "FullKeyPath": "84'/0'/0'/0/20",
      "Label": "1",
      "KeyState": 2
    },
    {
      "PubKey": "03aeaf6f914e82e6e032df31149786d6e8e995476062ad17593bf9045f79c6d608",
      "FullKeyPath": "84'/0'/0'/1/21",
      "Label": "ZeroLink Change",
      "KeyState": 2
    },
    {
      "PubKey": "02d3d8b1168b6a95e742d33884468291576bf7de839ea1cac4a57390f99ae30f71",
      "FullKeyPath": "84'/0'/0'/1/22",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02853ce7aafdf0dc8a77948efd69d175df550d740f1e0d2668801a01c895cedb32",
      "FullKeyPath": "84'/0'/0'/1/23",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "024338d309e58af3fed58a6f4952161bb2c6be8fe17d714ecc8ccba437c5189c63",
      "FullKeyPath": "84'/0'/0'/1/24",
      "Label": "ZeroLink Change",
      "KeyState": 2
    },
    {
      "PubKey": "0258c63a0da494cd2e9237093fc7440c10fcce1ec6c1ee5dc1015a6930d69c3fe8",
      "FullKeyPath": "84'/0'/0'/1/25",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "032c2208ce54b3b12f1b8230d4baa802fdaea16f6128a4648dd9a4e335d52e0ea9",
      "FullKeyPath": "84'/0'/0'/1/26",
      "Label": "ZeroLink Change",
      "KeyState": 2
    },
    {
      "PubKey": "0257c898e75bef8f187d57b6674f65476001141d160e4f8dc2ee64ef659342f0b2",
      "FullKeyPath": "84'/0'/0'/1/27",
      "Label": "ZeroLink Change",
      "KeyState": 1
    },
    {
      "PubKey": "03c11f579d9f62c773059ced9b826866d62d523e3bf7539a7d525b0697c980679c",
      "FullKeyPath": "84'/0'/0'/1/28",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02378bd71f83e57c50d04178458a1d1ac920347c531c674c08d9ff073b38c0cf90",
      "FullKeyPath": "84'/0'/0'/1/29",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02f0a494f4b70c8519950f25a591851ee6d5b8846d5dd73ef4e406765fdbd7d265",
      "FullKeyPath": "84'/0'/0'/1/30",
      "Label": "ZeroLink Dequeued Change",
      "KeyState": 2
    },
    {
      "PubKey": "024189bcc3afbb8fb609ff0c02abd902a0746cdec3bb599143e214698acb560814",
      "FullKeyPath": "84'/0'/0'/1/31",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "037954bdfe1ec8b41faede0789324d7a6e11b5aa5916396d45f01e50a2080e7a98",
      "FullKeyPath": "84'/0'/0'/1/32",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "031d0ca02845825fdfb2947b47eb1a77e5d3b187f83ed15669492011b4243dd838",
      "FullKeyPath": "84'/0'/0'/1/33",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02110ebbdbd8cf0e087532ffa2a2cffc18334005f18b02666f72752fd454c6bed9",
      "FullKeyPath": "84'/0'/0'/1/34",
      "Label": "ZeroLink Change",
      "KeyState": 1
    },
    {
      "PubKey": "0200a5cba862beaaadde2b3e3f48d827b4bfe92f9ae6bd55d34a3298cdb7fb8f20",
      "FullKeyPath": "84'/0'/0'/0/21",
      "Label": "2",
      "KeyState": 2
    },
    {
      "PubKey": "02f5da8fabf0212cc364f34e1b0807161499b04d04dd068119b5ec37c5030b330b",
      "FullKeyPath": "84'/0'/0'/0/22",
      "Label": "árbol",
      "KeyState": 2
    },
    {
      "PubKey": "03c3e70d279b366695e60a1154f26f8b065f2895a6f10162643622d0f5147004b3",
      "FullKeyPath": "84'/0'/0'/0/23",
      "Label": "Hola, lechuga",
      "KeyState": 2
    },
    {
      "PubKey": "0346ea0cc1b87bb94d700d3abc53c13336d897ff396ac045bf49d338e6f2fb1da5",
      "FullKeyPath": "84'/0'/0'/0/24",
      "Label": "arbol, otro",
      "KeyState": 2
    },
    {
      "PubKey": "0337a016bed61744951ac6223b9b5e6dc701bdb381773634eea5f0be7efebd2c8b",
      "FullKeyPath": "84'/0'/0'/0/25",
      "Label": "rotura",
      "KeyState": 2
    },
    {
      "PubKey": "02744dd26e67c033ef7f1f4b00b38fd3923181cde2a90a3000024af2292e20dc34",
      "FullKeyPath": "84'/0'/0'/0/26",
      "Label": "tarbel",
      "KeyState": 2
    },
    {
      "PubKey": "03bafa0ef343ff4be1f7e34f6eae2a3a34f64fcf75c58b42859d7be19ced948cc6",
      "FullKeyPath": "84'/0'/0'/0/27",
      "Label": "érbo",
      "KeyState": 2
    },
    {
      "PubKey": "03f093bd219896a5da9fef13b93983a8f94c39d12143d1bc271406cf2a9d893fea",
      "FullKeyPath": "84'/0'/0'/0/28",
      "Label": "herbor",
      "KeyState": 2
    },
    {
      "PubKey": "02163ccc317871e1a8f595caf0634af5e738dc293a12910f711deaabac97b6d1c8",
      "FullKeyPath": "84'/0'/0'/1/35",
      "Label": "BitMex, Duplicated Utxo",
      "KeyState": 2
    },
    {
      "PubKey": "0223134b9154fb1414cb6d913d36bed2aaa0c1817c747df5c2eb67aa0c5721628c",
      "FullKeyPath": "84'/0'/0'/0/29",
      "Label": "payment order #178654",
      "KeyState": 2
    },
    {
      "PubKey": "0263ea6712e56277bcb07b14b61c30bae2267ec10e0bbf7a024d2c6a0634d6e634",
      "FullKeyPath": "84'/0'/0'/0/30",
      "Label": "payment order #178659",
      "KeyState": 2
    },
    {
      "PubKey": "033e8670324ec33f15dcb17f346c1927ee3b717070596e397eb00020899c9c9133",
      "FullKeyPath": "84'/0'/0'/1/36",
      "Label": "change of (test3)",
      "KeyState": 2
    },
    {
      "PubKey": "02f4c9509ce69db9dac65a5aba422a080e408491ba038f2a1244697f1d095c5621",
      "FullKeyPath": "84'/0'/0'/1/37",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "039f7a23adf16ce509ec1f603c4923e3fa1aa85c0aaf9400ba58175a367a9d73a2",
      "FullKeyPath": "84'/0'/0'/1/38",
      "Label": "a, change of (), e",
      "KeyState": 2
    },
    {
      "PubKey": "0241e8e6f3d3f33baf6126ae01924c7cdc960b2e229b2e4f7e6ede30ee204369df",
      "FullKeyPath": "84'/0'/0'/0/31",
      "Label": "rbx",
      "KeyState": 2
    },
    {
      "PubKey": "024a1953d6343ccb49a39f779b9f83dc80de9cd8f1735e8dcace47be479a217922",
      "FullKeyPath": "84'/0'/0'/0/32",
      "Label": "payment order #178659",
      "KeyState": 2
    },
    {
      "PubKey": "0212cc9fa470a9d25b988abe788f086aa2c39ce4fa7442760a714f2bea3ecd13c0",
      "FullKeyPath": "84'/0'/0'/1/39",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02b629840235324cf72880753bd8eafd226f0acedf801ce53d5beaf35f607de130",
      "FullKeyPath": "84'/0'/0'/0/33",
      "Label": "payment order #178671",
      "KeyState": 2
    },
    {
      "PubKey": "036fff38ec7e5609a97f87e710c85033dfe9dd86104b6162b34f0c8200969fbd7f",
      "FullKeyPath": "84'/0'/0'/1/40",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03f75f0095a20b75f798b6313f2a41ab55579e75590c8fd19513095a1e2b8e3def",
      "FullKeyPath": "84'/0'/0'/1/41",
      "Label": "a, change of (sss), e",
      "KeyState": 2
    },
    {
      "PubKey": "03918ee10b8b77cd467513ebdfb6be17e67deaeecef5616078de4cf285cdf1b145",
      "FullKeyPath": "84'/0'/0'/0/34",
      "Label": "a, b",
      "KeyState": 2
    },
    {
      "PubKey": "03b13f339e1ef6378c72f7e230c390033310f46d5b26131fb5a5290957a16face5",
      "FullKeyPath": "84'/0'/0'/0/35",
      "Label": "BitMex, a",
      "KeyState": 2
    },
    {
      "PubKey": "03ce51722a6696db820bf0fe6f144fd91dbaf98169cc4011cfa7258f557e3e8206",
      "FullKeyPath": "84'/0'/0'/0/36",
      "Label": "BitMex, Duplicated Utxo",
      "KeyState": 2
    },
    {
      "PubKey": "032bcef327fd758de9c1341ef10d45557fb13438c933d554926e60f129cd3235d5",
      "FullKeyPath": "84'/0'/0'/0/37",
      "Label": "c, d",
      "KeyState": 2
    },
    {
      "PubKey": "023be49d1d778e7e6f3838540e5b4f4c69fe460ae9ee59f850167867cf683e122d",
      "FullKeyPath": "84'/0'/0'/0/38",
      "Label": "d",
      "KeyState": 0
    },
    {
      "PubKey": "020934af96e4c8ddc1dd85fffa8fa59106d2013ca72e8415bfacab6310c7c99f6d",
      "FullKeyPath": "84'/0'/0'/0/39",
      "Label": "a, f",
      "KeyState": 2
    },
    {
      "PubKey": "021fc2461a516231a1fae7939fef5124f284095559682ab7dbc9cbc2c6403af571",
      "FullKeyPath": "84'/0'/0'/0/40",
      "Label": "a, g",
      "KeyState": 2
    },
    {
      "PubKey": "03b668759d799905ddc7952a0bda8ca7155d9c3002db4e93a3ebb76947a1fae8fb",
      "FullKeyPath": "84'/0'/0'/0/41",
      "Label": "e",
      "KeyState": 0
    },
    {
      "PubKey": "02db94b24475d04dc6701ae76c51654d36bee8dd7bafb436baffb1ed1a446ec205",
      "FullKeyPath": "84'/0'/0'/0/42",
      "Label": "e",
      "KeyState": 0
    },
    {
      "PubKey": "03d75281e15be3a74b69fe6158b88334e6f075fc64d5dbfe58da42683f283b9254",
      "FullKeyPath": "84'/0'/0'/0/43",
      "Label": "e",
      "KeyState": 0
    },
    {
      "PubKey": "0392d476095b57b204e2bc01c18ca161dc9542c31422d3ddf5c811b21c5c0a81c0",
      "FullKeyPath": "84'/0'/0'/1/42",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "021dc1b5844e00527e8e3163a8220d8cf604ec231d2d9529f0ca79131cf11ce990",
      "FullKeyPath": "84'/0'/0'/1/43",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03e854716b66446a75050c591e881704e4fafbe9fcfe88a6325950ed98ae6fe6c8",
      "FullKeyPath": "84'/0'/0'/1/44",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "039b405db3b7332fb0459c5f184a0a606de5c1d2edb38576885567b57ccba6eee7",
      "FullKeyPath": "84'/0'/0'/1/45",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "036b08da06535efa2c84a8add001545dc2a991939c2c22587ce6702ad9be5442df",
      "FullKeyPath": "84'/0'/0'/1/46",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03e94cd79a3e18fe2f6fe9554e866513b2cc58fcd0fed7ec2b9c83b5884a6dc0f6",
      "FullKeyPath": "84'/0'/0'/1/47",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02a62d7f984c5ba7744d5c6979e8d2addd21c2b002aac0c8559cba30efc0ceed82",
      "FullKeyPath": "84'/0'/0'/1/48",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03acaf8d882c476cd8bf2715dc021d3b555c6f8bd80c785be0e9c7142314eb4f52",
      "FullKeyPath": "84'/0'/0'/1/49",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03f9518fe41e5ef0445a857b138be14ca77263496955e476f6439ae0ab80b07c72",
      "FullKeyPath": "84'/0'/0'/1/50",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "0280af853c2fdccc91758bda90c80438696c6b99471ec9ff2acd4ab1744ea83630",
      "FullKeyPath": "84'/0'/0'/1/51",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "024a1942aff49defecffb62a03b411f1df5687ae980539123563962fba5e058853",
      "FullKeyPath": "84'/0'/0'/1/52",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03e1213c90814439b32093120c042c4636e51a8f95cfd03f04e1d3aead4d497ce4",
      "FullKeyPath": "84'/0'/0'/1/53",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03883feb2ca89d30cda146eab33c28b04fe74c98e9cdae85d991d1682af1d3bdfc",
      "FullKeyPath": "84'/0'/0'/1/54",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03196cdd88d50b0ab97eea82107bdb0365ea6f07005c6dcc4e8fe3a57ac431cfab",
      "FullKeyPath": "84'/0'/0'/1/55",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 1
    },
    {
      "PubKey": "02ea6d45fe7bae9813dc646026e692722872ff1971960b8708fc99242555a9ed2a",
      "FullKeyPath": "84'/0'/0'/1/56",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "026fcb29efe36f128e057ddeca9fa62b2b643093d4e172e575c8036057c03af706",
      "FullKeyPath": "84'/0'/0'/1/57",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "020e6f1d0a30f99e9ceba81275f241c02774ce6f8346b4fbcf4ae7a769be815527",
      "FullKeyPath": "84'/0'/0'/1/58",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02d51fdbd9f623f1c0b39f6934827b79c84038df6ea9ff7383945e3a2b9b815509",
      "FullKeyPath": "84'/0'/0'/1/59",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02b174b543462b1dcd3b3ef610d661f5c82c1d172798fdaae3992ef7117d6cd4c0",
      "FullKeyPath": "84'/0'/0'/1/60",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03c94e300f37715e09166237437653023e7edd1fd1b7f5becbdf80079c084fd2ca",
      "FullKeyPath": "84'/0'/0'/1/61",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "026e88d73035ced24ff2e195b27a417ae08bfe8fd6d6a555f33a0f3f27aa60b729",
      "FullKeyPath": "84'/0'/0'/1/62",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "0349b4b689071d578a7501e8120aad94c820c8ecbbc3b96c7ea4231609db841004",
      "FullKeyPath": "84'/0'/0'/1/63",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03a69503ad418641c628b1fad4aaa7b1f6fc6114bb841dc60d57f4e84f760c8b2e",
      "FullKeyPath": "84'/0'/0'/1/64",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03e25c017f84a90bb26194f46c17b4d8e3cf80c42281030c3f8c61a210ef188475",
      "FullKeyPath": "84'/0'/0'/1/65",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03c6cfec07feac696dc9794a3477aa7528919bec1e6680b1ffcaf476130d2bb399",
      "FullKeyPath": "84'/0'/0'/1/66",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "037fec7dca8f54d9cc97771b276d7199c5d383546b6dcf62eb127b8efd5e8a84bd",
      "FullKeyPath": "84'/0'/0'/1/67",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "039b54044473f8afd868755261bd0e8c1cbf1c1dcd84630059ae14c7376842d80e",
      "FullKeyPath": "84'/0'/0'/1/68",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "025beebec97ca4bbafcca4d212a04b62181e2b93744295d9f94e572547b9603b06",
      "FullKeyPath": "84'/0'/0'/1/69",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "026ea2506be178b688d3aa5ba58a8d826520d7a45f680c4527c86efa3dac6f236f",
      "FullKeyPath": "84'/0'/0'/1/70",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02d36ac0acefccc969fb335f6a67b38b71654af7ce076bfc7f74f91f19cb492a54",
      "FullKeyPath": "84'/0'/0'/1/71",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03d34beff6c933db7ef793b1fa98a2c7598f88284740345f2ba3c99e237912645d",
      "FullKeyPath": "84'/0'/0'/1/72",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03dee352e1a1b9b300421d40b99c02e134c27745b5b0d6fecb82f07dd4f1f08b7e",
      "FullKeyPath": "84'/0'/0'/1/73",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03b6a6ba685e873ca98eb86274fc24ae3606a82a8619ddbdc1c214a086f2b5f46b",
      "FullKeyPath": "84'/0'/0'/1/74",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "0391448e826fd4beec27d48febf21a17fed7d60665ac0724d3d447a36b5a46b245",
      "FullKeyPath": "84'/0'/0'/1/75",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03f051003282c3b1563413f1ac3561a3ffba75b75ba0cf73a9bc5c30b06d14051d",
      "FullKeyPath": "84'/0'/0'/1/76",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03632ab19ccbd7e4089b5a7daa473852a8f06f31d6afe303cb8632d0b80eb4ddaf",
      "FullKeyPath": "84'/0'/0'/1/77",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03ca236eedadeb1be15a95a4727a784b333de0a9350bc209496e1c406d81b99848",
      "FullKeyPath": "84'/0'/0'/1/78",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "0229f7794a4628d045652839284e077754b515c7791b0f68f93eaee798a0788989",
      "FullKeyPath": "84'/0'/0'/1/79",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "032852c14f35075c7e28c9ef8e3a971d3ef6fac677252275d0e2839f96f62debd4",
      "FullKeyPath": "84'/0'/0'/1/80",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "020a8a4397427bb88e7251f0f6d910ceda3a25552c5e93152b43786fbfcb9fa33d",
      "FullKeyPath": "84'/0'/0'/1/81",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03ec99ad402e3fdd193ca5eb90c78c70e2efec726ddce48c35d30fa3c11865f557",
      "FullKeyPath": "84'/0'/0'/1/82",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03cd418737ac20e903a1ec62fa3da32fc7232db1c23543c5b601d1c29255a94c43",
      "FullKeyPath": "84'/0'/0'/1/83",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "034a878b92c2d23fce15c65ed30842cb4e27361c32c0fdd619c95ba877e54f306a",
      "FullKeyPath": "84'/0'/0'/1/84",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "02dc6e0ffde9c872ddaac9a33b440671b6c4292df85a5a728a792d8f74699702d2",
      "FullKeyPath": "84'/0'/0'/1/85",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03457a482cf808aad414e1f922e5932df8ee7228d05d60d4b0ef206db93780210b",
      "FullKeyPath": "84'/0'/0'/1/86",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 1
    },
    {
      "PubKey": "02cb39b59d9283a67c4ec15a51c0037aae341345d3655bffd418c47be59281aca4",
      "FullKeyPath": "84'/0'/0'/1/87",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03e984b26a6b19e920f05d1bd0655780eb1f06748497a7df1f8bceda8e18397e34",
      "FullKeyPath": "84'/0'/0'/1/88",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "03782b278c64049550eb16efea964020e751e62c9071cf6633c211f53471cb1881",
      "FullKeyPath": "84'/0'/0'/1/89",
      "Label": "ZeroLink Change",
      "KeyState": 1
    },
    {
      "PubKey": "02bd3879c631551783db0ac71773797796e94bbc52ff6d7279581c35f3f93b1942",
      "FullKeyPath": "84'/0'/0'/1/90",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 2
    },
    {
      "PubKey": "0344c0f8cbfb8a8c986bdf7a293f6b0c4f1131c6c688827152b57a39541c6bd6e7",
      "FullKeyPath": "84'/0'/0'/1/91",
      "Label": "ZeroLink Mixed Coin",
      "KeyState": 1
    },
    {
      "PubKey": "0290e7cbf3325e4349b92b41fbb99cbca6bc49d71159ab968072028d3a3828a760",
      "FullKeyPath": "84'/0'/0'/1/92",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "02c9516aa67e897cd6ef4f28048655bd21a9ff7c7688a6ac057bc466039a7153f3",
      "FullKeyPath": "84'/0'/0'/1/93",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "029c28cc33ebce60dbefe6b7167fc1c738cdeff238a3718654715ff2064acc2f47",
      "FullKeyPath": "84'/0'/0'/1/94",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "03671711e8d0b828c1203ea25d3fdd9e7a556df9bd9067e289d36852e59647086e",
      "FullKeyPath": "84'/0'/0'/1/95",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "027e7214ad70d156ef4edbe41f8e101ff2111e2ee5508dcf991902b61f3ea805ff",
      "FullKeyPath": "84'/0'/0'/1/96",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "02cf2f34b03d84383145c8daad05efa8ca5d7ecc795d5234cca7264c2190c15818",
      "FullKeyPath": "84'/0'/0'/1/97",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "0358d2ff81f1866b48bafe88b8862d51e461cbbd0271ec54ca9eab1c68fac94ba2",
      "FullKeyPath": "84'/0'/0'/1/98",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "028b3156e7cc55fe428d2c0f57329da8cd583bad7a0868a31f7e8071d3f9511e8a",
      "FullKeyPath": "84'/0'/0'/1/99",
      "Label": "",
      "KeyState": 1
    },
    {
      "PubKey": "028d50593138f4ef7cdc320dc581d634368517d09fa59467d3a96d9bb3453531ac",
      "FullKeyPath": "84'/0'/0'/0/44",
      "Label": "1, a, e",
      "KeyState": 2
    },
    {
      "PubKey": "0214e10790302e905bf4eba3734a2d92287c7176ef1d42dfd1e9639592f3c7a82c",
      "FullKeyPath": "84'/0'/0'/0/45",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "02b20ee693063158ef288f81021510adb5dcf30bbf2ec14ca18791c6378ff3869d",
      "FullKeyPath": "84'/0'/0'/0/46",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "029eae1586cd9aef38def42fdb943d5af997c696ba908b8139c227916aefa11532",
      "FullKeyPath": "84'/0'/0'/0/47",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "02f0906699dcb333e9d3d379e4312f3638add27e13a765c4eb6a25e70047a52b7e",
      "FullKeyPath": "84'/0'/0'/0/48",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "0357b3dadc2c9530c21d7f43cdb538ee1a0205eba035f802869f68606fb8195a3e",
      "FullKeyPath": "84'/0'/0'/0/49",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "039663de72ad21b959e5d1649e3018a716b0572bd448086e5352f403ebc532638a",
      "FullKeyPath": "84'/0'/0'/0/50",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "029757f802e44fa399dfa34c1dec34606e02b02cbbcd7116e021aa8e0195697ef9",
      "FullKeyPath": "84'/0'/0'/0/51",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03d08c1e7b36d0ea840d67710119898147a407af4049ee767d487423b1a5cdd747",
      "FullKeyPath": "84'/0'/0'/0/52",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02ac282a8838fd7c423d1b07ba61a5b7965b6034bbcef74f01212ff7e59922ea19",
      "FullKeyPath": "84'/0'/0'/1/100",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "027cffa55484e2064ef9e800611a5d4d92c3d7492ce8ce895517ee611e25f1aa3d",
      "FullKeyPath": "84'/0'/0'/0/53",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02cdf91e25b3a0ec031c4901b4226cdecd2e78a0e05f7cd3e5da8ece54a11b44c0",
      "FullKeyPath": "84'/0'/0'/0/54",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03aa3fcf17c8d950f691f28cf04e5edf51baba2cfb1a5fb11b5a7d6d20ca40dd4a",
      "FullKeyPath": "84'/0'/0'/0/55",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "029cf85d1e8052706a758d5100875a46573497938d003badf46e881fc2124c758e",
      "FullKeyPath": "84'/0'/0'/1/101",
      "Label": "1, a, e",
      "KeyState": 2
    },
    {
      "PubKey": "0203f56acad844d6cdd9f6542758404c33dfe03d54787447d4b15435f63e8f9509",
      "FullKeyPath": "84'/0'/0'/1/102",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "035a07c461d4189cd6ecf9cdec2c85c6d1412a360027b3b4ab232e67b51f4e09d5",
      "FullKeyPath": "84'/0'/0'/1/103",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "030cf3262d0186844ca0621d53a17857897c20ba7847e33020b527c30a9a904959",
      "FullKeyPath": "84'/0'/0'/0/56",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03d5ecb982061671b5c1425a84ba9610f3d8c2841bcccbc99effcae249a47b6b14",
      "FullKeyPath": "84'/0'/0'/1/104",
      "Label": "a, f",
      "KeyState": 2
    },
    {
      "PubKey": "02a91fa9d5d54ecd79625958b9d093aaa1506281efb6cc640144ba2bd607e29074",
      "FullKeyPath": "84'/0'/0'/0/57",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02110cb732c8ac3b1dc2f662f10bdae7abf51301c7622b322b64d767bf9bcfa052",
      "FullKeyPath": "84'/0'/0'/1/105",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "02d5bfb71de60c075000f132c3f5c22b13b7567fa7e03015ebcd66c5e8b993d34c",
      "FullKeyPath": "84'/0'/0'/0/58",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "024c68b2fc49d0ac2faafc02a30c2322e0f12eda7b88fc6a15d8609147fcb3e52e",
      "FullKeyPath": "84'/0'/0'/1/106",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0318a72ea9806941563f22f87d0be7124ec8edf32803fe8e86dec4af7ce4d0cb05",
      "FullKeyPath": "84'/0'/0'/0/59",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03b7585cf85090b336935433fd3a09c55dd29a68be9b3eec97dd1a04c5cdeca74f",
      "FullKeyPath": "84'/0'/0'/0/60",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03a952775bbe25255c64ad333f92370097eb4a5ac80d789e13a34698164cc3ea2c",
      "FullKeyPath": "84'/0'/0'/1/107",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02d046284b06825cf3c8e2ce847a7a2cbf4f963cea616ef8eb7639ca68e3ab93a2",
      "FullKeyPath": "84'/0'/0'/1/108",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02a19d7384555a948d0e7755670c7c87efe95d41ca8316b4663c31b2a025046644",
      "FullKeyPath": "84'/0'/0'/0/61",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02421d702789f80fbf441c7401a9e358e2185841566b6dd3d89e5660b1b282360f",
      "FullKeyPath": "84'/0'/0'/1/109",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03babbc8b92faaaa85b8e02b8393be7f209c5157ed7a5abf90933110da465b1f80",
      "FullKeyPath": "84'/0'/0'/0/62",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "032ee076597cd8355a395ecfb2acddd684b855bce5c13e4937b3672cf10d90284e",
      "FullKeyPath": "84'/0'/0'/0/63",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03b8bcf6e6c1348dd61b341a8bf8b634ea102fdec0543fc91f8294769afb2db5fe",
      "FullKeyPath": "84'/0'/0'/1/110",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "029f8c8a19f4da6f5619345fe9a88dc8c61b5892e5da1d153d40f3f83fd86bef99",
      "FullKeyPath": "84'/0'/0'/0/64",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03384fd6fd6514c23304297983872acd1bce7daff0d40c6cc1a3146b6bc6e10f27",
      "FullKeyPath": "84'/0'/0'/1/111",
      "Label": "a, e",
      "KeyState": 2
    },
    {
      "PubKey": "031f7d1c702cfe18db9269670325342d4c116aebd37bd5e86822efc40d78f88ae2",
      "FullKeyPath": "84'/0'/0'/1/112",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "03f1cf6da9aea7483a1c1bad341015769378f1d555fbdb0bb1305b8083e3a5b07c",
      "FullKeyPath": "84'/0'/0'/0/65",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0328eec6713020e8662983c3d1b2844fafbef6a8f6eca045a226d0825939999362",
      "FullKeyPath": "84'/0'/0'/0/66",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "02e4411b3a7674ccc130ee7789ef5894cbbc20ec08a7ab55e4260ca2a61494d0cd",
      "FullKeyPath": "84'/0'/0'/1/113",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0374d4cb6f4061e8840519f5b8b11bea7df81d0175d1ca03ef8fab59ec6d30f9de",
      "FullKeyPath": "84'/0'/0'/1/114",
      "Label": "",
      "KeyState": 0
    },
    {
      "PubKey": "0362138ea2f208571c030eb322c5ba36ed4a3902753a0e153e77cd62e9ddee13bd",
      "FullKeyPath": "84'/0'/0'/1/115",
      "Label": "",
      "KeyState": 0
    }
  ]
}

image

You will see the transaction takes forever to be built and that the coin selection Select method is invoked thounsand times.

image

I was focused on getting a reproducible scenario. I will continue debugging this issue but I am sure this is a NBitcoin bug @NicolasDorier

Fixing this should go onto Wasabi's backport branch.

The problem is our SmartCoinSelector selects same-scriptpubkey coins in order to spend them together and that makes nbitcoin enter in loop because if I understand it correctly, it doesn't expect the coin selector selects more coins than what are necessary. In other words, I think our coins selection strategy is not compatible. One solution could be to avoid spending same-scriptpubkey coins together.

There is a UT in this NBitcoin repo PR https://github.com/MetacoSA/NBitcoin/pull/745 where the problem is reproducible.
@nopara73 what do you think?

In a meeting we decided that @lontivero will try to fix it, but he is confused by NBitcoin code, so it's unlikely he'll succeed. We'll wait for @NicolasDorier to come around and try to fix it for a few days, if it won't happen, then we roll out a hotfix that dumbs down the coin selection algorithm so NBitcoin becomes satisfied with it.

Don't rush on my account. I can wait for the proper fix. Thanks!

I have fixed it. Could you test my PR? https://github.com/zkSNACKs/WalletWasabi/pull/2334

Tested #2334 with TestNetWallet.json and it works. great job @lontivero

Fixed. Tomorrow we'll do a non-notifying release with the fix.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

molnard picture molnard  Â·  3Comments

UkolovaOlga picture UkolovaOlga  Â·  3Comments

yahiheb picture yahiheb  Â·  3Comments

yahiheb picture yahiheb  Â·  3Comments

yahiheb picture yahiheb  Â·  3Comments