Bitcoin Forum

Local => Новички => Topic started by: free-lsd on December 21, 2015, 11:00:36 AM



Title: Отрицательный баланс на аккаунте
Post by: free-lsd on December 21, 2015, 11:00:36 AM
Только что перевел с одного своего аккаунта на другой сумму, которая была больше той что на аккаунте, теперь на исходном акке баланс минусовый. Как можно от это исправить, потому что рушится вся система по мониторингу за аккаунтами. У меня получается в кошельке каждый аккаунт привязан к пользователю, потом через определенное время я с аккаунтов пользователя перевожу деньги на основной акк. А сейчас получается полная неразбериха, на основном аккаунте больше чем на самом деле, на пользовательском в минус ушло. Как это починить и почему это вообще произошло, если на целевом аккаунте была конкретная подтвержденная сумма, почему move позволил перевести больше чем есть?


Title: Re: Отрицательный баланс на аккаунте
Post by: diks on December 21, 2015, 11:22:31 AM
спрашивая совета и прося помощи учтите, что другие пользователи не имеют понятия о Ваших аккаунтах, суммах, транзакциях, конкретных действиях, ответов системы и т.д.

ссылки, скрины, сайты, подробное описание и последовательность Ваших действий



Title: Re: Отрицательный баланс на аккаунте
Post by: bogdan2323 on December 21, 2015, 11:40:40 AM
спрашивая совета и прося помощи учтите, что другие пользователи не имеют понятия о Ваших аккаунтах, суммах, транзакциях, конкретных действиях, ответов системы и т.д.

ссылки, скрины, сайты, подробное описание и последовательность Ваших действий



Я подумал что речь идет о двойной трате, а оказывается люди в бухгалтерию играют. Присоединяюсь к пожеланиям - только скрины могут помочь получить ответ на свой вопрос


Title: Re: Отрицательный баланс на аккаунте
Post by: negeroy on December 21, 2015, 12:19:19 PM
а move проверяет ли баланс перед отправкой rpcwallet.cpp

if (nAmount > nBalance)
+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");


Code:
 string strFrom = AccountFromValue(params[0]);
string strTo = AccountFromValue(params[1]);
int64 nAmount = AmountFromValue(params[2]);
+ int nMinDepth = 1;
if (params.size() > 3)
- // unused parameter, used to be nMinDepth, keep type-checking it though
- (void)params[3].get_int();
+ nMinDepth = params[3].get_int();
string strComment;
if (params.size() > 4)
strComment = params[4].get_str();
@@ -574,6 +574,10 @@ Value movecmd(const Array& params, bool fHelp)
if (!walletdb.TxnBegin())
throw JSONRPCError(RPC_DATABASE_ERROR, "database error");
+ int64 nBalance = GetAccountBalance(strFrom, nMinDepth);
+ if (nAmount > nBalance)
+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");
+
int64 nNow = GetAdjustedTime();
// Debit


Title: Re: Отрицательный баланс на аккаунте
Post by: midvidyk on December 21, 2015, 07:19:50 PM
У меня на блокчейн.инфо тоже был отрицательный баланс. Но тогда я игрался с публичными привкеями.


Title: Re: Отрицательный баланс на аккаунте
Post by: free-lsd on December 23, 2015, 09:39:12 PM
а move проверяет ли баланс перед отправкой rpcwallet.cpp

if (nAmount > nBalance)
+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");


Code:
 string strFrom = AccountFromValue(params[0]);
string strTo = AccountFromValue(params[1]);
int64 nAmount = AmountFromValue(params[2]);
+ int nMinDepth = 1;
if (params.size() > 3)
- // unused parameter, used to be nMinDepth, keep type-checking it though
- (void)params[3].get_int();
+ nMinDepth = params[3].get_int();
string strComment;
if (params.size() > 4)
strComment = params[4].get_str();
@@ -574,6 +574,10 @@ Value movecmd(const Array& params, bool fHelp)
if (!walletdb.TxnBegin())
throw JSONRPCError(RPC_DATABASE_ERROR, "database error");
+ int64 nBalance = GetAccountBalance(strFrom, nMinDepth);
+ if (nAmount > nBalance)
+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");
+
int64 nNow = GetAdjustedTime();
// Debit


У меня почему-то никаких исключений не кидается, перевод всегда осуществляется.


Title: Re: Отрицательный баланс на аккаунте
Post by: free-lsd on December 23, 2015, 09:50:03 PM
спрашивая совета и прося помощи учтите, что другие пользователи не имеют понятия о Ваших аккаунтах, суммах, транзакциях, конкретных действиях, ответов системы и т.д.

ссылки, скрины, сайты, подробное описание и последовательность Ваших действий



Я попытался с одного тестового аккаунта перевести баланс на другой с помощью move, но указал баланс больший чем есть, при этом мне ни ошибок ни предупреждений не выдало, перевод осуществился, теперь состояние аккаунтов выглядит так: https://i.imgur.com/1QVqrXO.png


Title: Re: Отрицательный баланс на аккаунте
Post by: negeroy on December 23, 2015, 10:00:01 PM
а move проверяет ли баланс перед отправкой rpcwallet.cpp

if (nAmount > nBalance)
+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");


Code:
 string strFrom = AccountFromValue(params[0]);
string strTo = AccountFromValue(params[1]);
int64 nAmount = AmountFromValue(params[2]);
+ int nMinDepth = 1;
if (params.size() > 3)
- // unused parameter, used to be nMinDepth, keep type-checking it though
- (void)params[3].get_int();
+ nMinDepth = params[3].get_int();
string strComment;
if (params.size() > 4)
strComment = params[4].get_str();
@@ -574,6 +574,10 @@ Value movecmd(const Array& params, bool fHelp)
if (!walletdb.TxnBegin())
throw JSONRPCError(RPC_DATABASE_ERROR, "database error");
+ int64 nBalance = GetAccountBalance(strFrom, nMinDepth);
+ if (nAmount > nBalance)
+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");
+
int64 nNow = GetAdjustedTime();
// Debit


У меня почему-то никаких исключений не кидается, перевод всегда осуществляется.

вот здесь глянь https://github.com/bitcoin/bitcoin/pull/2703
https://github.com/paraboul/bitcoin/commit/388ef407ca3722d050f5e16f00dfac00a2000156
этот вопрос поднимался и было решение проблемы, только внесли ли разрабы изменения хз



Title: Re: Отрицательный баланс на аккаунте
Post by: free-lsd on December 24, 2015, 07:37:12 AM

вот здесь глянь https://github.com/bitcoin/bitcoin/pull/2703
https://github.com/paraboul/bitcoin/commit/388ef407ca3722d050f5e16f00dfac00a2000156
этот вопрос поднимался и было решение проблемы, только внесли ли разрабы изменения хз



Я читал но решения там не увидел, и коммит видимо не добавили в основную ветку, да.