sparrowwallet / sparrow

Desktop Bitcoin Wallet focused on security and privacy. Free and open source.
https://sparrowwallet.com/
Apache License 2.0
1.36k stars 192 forks source link

Error broadcast premix transaction #247

Closed alexwaltz closed 3 years ago

alexwaltz commented 3 years ago

Screenshot 2021-10-08 at 04 32 29

I am getting this error when trying to mix coins.

I have tried on 1.5.0 and then upgrade to 1.5.1 still the same result.

In the log it says

2021-10-08 07:24:32,487 WARN [Thread-108] c.s.w.c.w.d.u.BasicUtxoSupplier [null:-1] findUtxo(############:0): not found

(UTXO censored)

I am running on Mac.

craigraw commented 3 years ago

Thanks for the issue. Are you using a passphrase?

If you do a wallet refresh first (View menu), does it help?

Transisto commented 3 years ago

image

Tried 15min later and it broadcasted successfully.

2021-10-08 22:00:50,640 WARN [Thread-1295] c.s.w.c.w.PostmixIndexService [null:-1] postmixIndex already used: 5158 2021-10-08 22:01:18,957 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-2766] o.s.w.s.s.c.SockJsClient [null:-1] Initial SockJS "Info" request to server failed, url=wss://pool.whirl.mx:8080/ws/connect org.springframework.web.socket.sockjs.SockJsTransportFailureException: Failed to execute request to https://pool.whirl.mx:8080/ws/connect/info; nested exception is java.lang.InterruptedException at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.18-SNAPSHOT/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketClose(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor92.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.InterruptedException: null at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source) at java.base/java.util.concurrent.CountDownLatch.await(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at com.sparrowwallet.merged.module@1.5.1/org.eclipse.jetty.client.HttpRequest.send(Unknown Source) ... 39 common frames omitted

craigraw commented 3 years ago

@alexwaltz I've managed to reproduce this, and the issue here is almost certainly that you are not using the default account #0. Please confirm your derivation path?

I'm looking into supporting additional accounts for mixing from in future releases.

zonklift commented 3 years ago

I am having the same issue and same error code. I am using a custom derivation path from a coldcard, using the derived entropy feature. It basically derives a new seed that is backed by your main seed, to avoid creating new backups. It sounds like that path is not cooperative with the whirlpool server.

I also found that the "deposit" wallet was not named as such, but was instead labelled "account #2." I was able to send the constructed premix transaction by going to the "send" tab, and everything was allocated correctly into equal inputs, fee, whirpool fee, and badchange. I was unable to then mix those coins from premix. The error in that case was: ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1980] c.s.w.c.w.WhirlpoolWallet [null:-1] - [MIX] 0.001btc ⣿ WHIRLPOOL FAILED ⣿ Input rejected ; Input rejected (not a premix or whirlpool input)

I ended up sending everything back to cold storage to try a new sparrow-created wallet on another day when I have time to experiment.

Here is the derivation with index 2 (can select any index #): m/83696968'/39'/0'/24'/2'

Perhaps the software is interpreting the index as an account?

Do you suggest instead, to create a new wallet hot with the Sparrow random # generator?

Thanks for your work Craig!

craigraw commented 3 years ago

I am having the same issue and same error code. I am using a custom derivation path from a coldcard.

Unfortunately, this is not currently supported - only standard derivations on account #0 are supported, such as m/84'/0'/0'. Your BIP85 approach is a valid use case though, so I hope the Whirlpool client will be able to support it in future. For now however, as of 23fd597 Sparrow will not allow mixing from non-standard non-#0 account derivations. The mixing documentation has been updated accordingly. Apologies for not spotting this previously.

Do you suggest instead, to create a new wallet hot with the Sparrow random # generator?

Yes, this is currently the best way to do it. You can also generate the seed words externally with the Coldcard, but you'll need to make sure that they are imported using the derivation path above.