Bitcoin Forum
May 14, 2024, 04:03:10 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Отрицательный баланс на аккаунте  (Read 1512 times)
free-lsd (OP)
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile
December 21, 2015, 11:00:36 AM
 #1

Только что перевел с одного своего аккаунта на другой сумму, которая была больше той что на аккаунте, теперь на исходном акке баланс минусовый. Как можно от это исправить, потому что рушится вся система по мониторингу за аккаунтами. У меня получается в кошельке каждый аккаунт привязан к пользователю, потом через определенное время я с аккаунтов пользователя перевожу деньги на основной акк. А сейчас получается полная неразбериха, на основном аккаунте больше чем на самом деле, на пользовательском в минус ушло. Как это починить и почему это вообще произошло, если на целевом аккаунте была конкретная подтвержденная сумма, почему move позволил перевести больше чем есть?
There are several different types of Bitcoin clients. The most secure are full nodes like Bitcoin Core, which will follow the rules of the network no matter what miners do. Even if every miner decided to create 1000 bitcoins per block, full nodes would stick to the rules and reject those blocks.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
diks
Legendary
*
Offline Offline

Activity: 2632
Merit: 1450



View Profile
December 21, 2015, 11:22:31 AM
 #2

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

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


bogdan2323
Hero Member
*****
Offline Offline

Activity: 868
Merit: 507


View Profile
December 21, 2015, 11:40:40 AM
 #3

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

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



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

Activity: 1148
Merit: 1051


View Profile
December 21, 2015, 12:19:19 PM
 #4

а 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
midvidyk
Legendary
*
Offline Offline

Activity: 1330
Merit: 1012


View Profile
December 21, 2015, 07:19:50 PM
 #5

У меня на блокчейн.инфо тоже был отрицательный баланс. Но тогда я игрался с публичными привкеями.
free-lsd (OP)
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile
December 23, 2015, 09:39:12 PM
 #6

а 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


У меня почему-то никаких исключений не кидается, перевод всегда осуществляется.
free-lsd (OP)
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile
December 23, 2015, 09:50:03 PM
 #7

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

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



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

Activity: 1148
Merit: 1051


View Profile
December 23, 2015, 10:00:01 PM
 #8

а 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
этот вопрос поднимался и было решение проблемы, только внесли ли разрабы изменения хз

free-lsd (OP)
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile
December 24, 2015, 07:37:12 AM
 #9


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



Я читал но решения там не увидел, и коммит видимо не добавили в основную ветку, да.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!