Author

Topic: Отрицательный баланс на аккаунте (Read 1529 times)

newbie
Activity: 10
Merit: 0

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



Я читал но решения там не увидел, и коммит видимо не добавили в основную ветку, да.
legendary
Activity: 1148
Merit: 1051
а 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
этот вопрос поднимался и было решение проблемы, только внесли ли разрабы изменения хз

newbie
Activity: 10
Merit: 0
спрашивая совета и прося помощи учтите, что другие пользователи не имеют понятия о Ваших аккаунтах, суммах, транзакциях, конкретных действиях, ответов системы и т.д.

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



Я попытался с одного тестового аккаунта перевести баланс на другой с помощью move, но указал баланс больший чем есть, при этом мне ни ошибок ни предупреждений не выдало, перевод осуществился, теперь состояние аккаунтов выглядит так: https://i.imgur.com/1QVqrXO.png
newbie
Activity: 10
Merit: 0
а 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


У меня почему-то никаких исключений не кидается, перевод всегда осуществляется.
legendary
Activity: 1330
Merit: 1012
У меня на блокчейн.инфо тоже был отрицательный баланс. Но тогда я игрался с публичными привкеями.
legendary
Activity: 1148
Merit: 1051
а 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
hero member
Activity: 868
Merit: 507
спрашивая совета и прося помощи учтите, что другие пользователи не имеют понятия о Ваших аккаунтах, суммах, транзакциях, конкретных действиях, ответов системы и т.д.

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



Я подумал что речь идет о двойной трате, а оказывается люди в бухгалтерию играют. Присоединяюсь к пожеланиям - только скрины могут помочь получить ответ на свой вопрос
legendary
Activity: 2632
Merit: 1450
спрашивая совета и прося помощи учтите, что другие пользователи не имеют понятия о Ваших аккаунтах, суммах, транзакциях, конкретных действиях, ответов системы и т.д.

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

newbie
Activity: 10
Merit: 0
Только что перевел с одного своего аккаунта на другой сумму, которая была больше той что на аккаунте, теперь на исходном акке баланс минусовый. Как можно от это исправить, потому что рушится вся система по мониторингу за аккаунтами. У меня получается в кошельке каждый аккаунт привязан к пользователю, потом через определенное время я с аккаунтов пользователя перевожу деньги на основной акк. А сейчас получается полная неразбериха, на основном аккаунте больше чем на самом деле, на пользовательском в минус ушло. Как это починить и почему это вообще произошло, если на целевом аккаунте была конкретная подтвержденная сумма, почему move позволил перевести больше чем есть?
Jump to: