oliverw / miningcore

Miningcore is a high-performance Mining Pool Software for Linux and Windows.
https://store.miningcore.pro
MIT License
719 stars 658 forks source link

Insufficient balance #1233

Closed simwood-simon closed 2 years ago

simwood-simon commented 2 years ago

Hey

I'm not sure if I'm missing something in the docs or have found a bug but I'm getting this:

[2022-04-12 21:39:42.4730] [I] [PayoutManager] Processing payments for pool dgb-sha256-1
[2022-04-12 21:39:42.4730] [I] [PayoutManager] No updated blocks for pool dgb-sha256-1
[2022-04-12 21:39:42.4756] [I] [dgb-sha256-1] [Bitcoin Payout Handler] Paying 459.62012 DGB to 2 addresses
[2022-04-12 21:39:42.4756] [E] [dgb-sha256-1] [Bitcoin Payout Handler] sendmany returned error: Account has insufficient funds code -6

The wallet has plenty of balance according to the local digi node and I even sent a few to it to enable these to go.

I'd appreciate ideas.

Other than this little issue Miningcore is awesome and going to be the perfect choice for my project I think.

Thanks! Simon

oliverw commented 2 years ago

@simwood-simon Thanks for your sponsorship by the way. Very much appreciated!

Regarding your issue. Are you sure that the pool is using the correct wallet address? (in theory it should not even start if this is the case but just to make sure).

simwood-simon commented 2 years ago

Thanks Oliver. Sponsorship more than deserved, I scoured dozens of projects, mostly a decade old or not functional in some way. Yours is great!

The wrong wallet was my first thought but if I check the balance of the wallet configured in Miningcore it matches, and if I check the balance of the local DGB node it also matches. Now, if I request the public key from the DGB daemon I get a different one because they appear to be newly generated based on a wallet name. However, I can send funds using the DGB node directly without specifying a wallet name and it works fine, an example command being:

curl -H 'Content-Type: application/json' -u "myuser:$PASSWORD" http://localhost:14022 -d '{"myuser": "1.0", "id":"curl", "method": "sendtoaddress", "params": ["dgbXXXXXXXX", 1, "donation", "test"] }'

The handler is using sendmany rather than sendtoaddress but both are supported on DGB. Looking at https://github.com/oliverw/miningcore/blob/506f32134ef45daea16b0f9f15859a9583a6c31a/src/Miningcore/Blockchain/Bitcoin/BitcoinPayoutHandler.cs#L229 we're not specifying a wallet so this should be good. That said I'm curious what this option is and where I can set it: https://github.com/oliverw/miningcore/blob/506f32134ef45daea16b0f9f15859a9583a6c31a/src/Miningcore/Blockchain/Bitcoin/BitcoinPayoutHandler.cs#L236.

Is there a way I can debug what is going on better short of patient wiresharking?

Thanks!

oliverw commented 2 years ago

That said I'm curious what this option is and where I can set it:

If you look closely you realize that this option only applies to coins using Masternodes (Dash for example). It is not utilized for Digibyte.

Is there a way I can debug what is going on better short of patient wiresharking? Thanks!

Change the level property in Miningcore's logging config to trace and you should get a lot more information like the exact JSON data of the RPC request Miningcore sends to the daemon. When usingthe latest commit of the dev branch, you also get the exact response from the daemon logged as trace.

simwood-simon commented 2 years ago

Thanks for your help Oliver.

I've narrowed this down to (I believe) a Digibyte issue. sendmany over curl returns 'insufficient balance' too and looking at recent PRs sendmany seems to still be on the todo list. Raised at https://github.com/DigiByte-Core/digibyte/issues/91 for anyone finding this later.

That does leave me with a bit of a dilemma where the solution I think is either a feature request for a pseudo sendmany to cycle through 'sendtoaddress' commands, or scripting something completely outside Miningcore to read/update Postgres and make payments. I don't speak .net to contribute a meaningful enhancement so will run with option 2 unless the 1st is beneficial enough for a grown-up to do it :)

oliverw commented 2 years ago

Could you switch to the dev branch and restart the pool after adding this property to your config:

{
  "id": "dgb-sha256-1",
  ...
  "hasBrokenSendMany": true,
  ...
}
simwood-simon commented 2 years ago

Oh you legend :)

I've compiled the dev branch and tweaked config. Just need to find some new blocks now! I'll let you know how it goes.

Thanks again

Simon

On Wed, Apr 13, 2022 at 18:16:47, Oliver Weichhold < @.*** > wrote:

Could you switch to the dev branch and restart the pool after adding this to your config:

{ "id": "dgb-sha256-1", ... "hasBrokenSendMany": true, ... }

— Reply to this email directly, view it on GitHub ( https://github.com/oliverw/miningcore/issues/1233#issuecomment-1098295749 ) , or unsubscribe ( https://github.com/notifications/unsubscribe-auth/AB7CEDCVDE57XVHHMWGO3TDVE36P7ANCNFSM5TIPQAKA ). You are receiving this because you modified the open/close state. Message ID: <oliverw/miningcore/issues/1233/1098295749 @ github. com>

oliverw commented 2 years ago

Oh you legend :) I've compiled the dev branch and tweaked config. Just need to find some new blocks now! I'll let you know how it goes. Thanks again Simon

You're welcome, besides I already had this on my list. Please report back how it worked.

simwood-simon commented 2 years ago

That works perfectly! Thanks a million.

goodthebest commented 1 year ago

it's very first payout for the pool, the pool fee is set at 1%, shouldn't it cover the tx from that 1% automatically?

image