Author

Topic: запутался с дебитом и кредитом (Read 1751 times)

legendary
Activity: 3556
Merit: 1100

info_infoman, если захотите, в плане поиска дороги, например, к шубохранилищу для жены, заняться ещё чем-нибудь полезным, скажите. Я могу при случае проблемку подкинуть, пока есть они у меня, до решения которых, я пока ещё не добрался... Smiley

шуба всегда нужна Wink
посему кидай
если проблемка интересная от чего ж не подумать
ОК.

Нужно добавить в блок ещё несколько хедеров или хотя бы знать как это делается.

Кстати, ноги у этой проблемы растут уже скоро как целый год будет - https://bitcointalksearch.org/topic/m.5449417
Я пока эту проблему обошёл, но её всё равно решать надо...

sr. member
Activity: 460
Merit: 250

info_infoman, если захотите, в плане поиска дороги, например, к шубохранилищу для жены, заняться ещё чем-нибудь полезным, скажите. Я могу при случае проблемку подкинуть, пока есть они у меня, до решения которых, я пока ещё не добрался... Smiley

шуба всегда нужна Wink
посему кидай
если проблемка интересная от чего ж не подумать

далее развивая тему
в стандартном клиенте не заложено функции отображения баланса чужих адресов
а нам нужно получить баланс не только адреса на который отправляем отрицательную транзакцию
но и балансы адресов на которые ушли средства с этого адреса после того как нас обманули(мы ж мстим)

чтобы не лопатить всю базу данных начиная от первого блока в поисках баланса этого адреса
достаточно знать ту самую транзакцию начиная с которой вы считаете что вас обманули(чинуша увел ваши налоги)

и это и логично

начиная с этой транзакции вы можете проследить всю судьбу своих вложеных в чинушу денег
и соответственно получить баланс как самого адреса чинуши так и всех адресов куда он мог потратить деньги

далее можно взять функцию проверки непотраченных входов:

Quote
    BOOST_FOREACH(const CTxIn& txin, vin)
    {
      if (view.HaveCoins(txin.prevout.hash))
        {
         const CCoins &coins = view.GetCoins(txin.prevout.hash);
            int64 nValueIn = coins.vout[txin.prevout.n].nValue;
            nTotalIn += nValueIn;
      }
      if (vInOutPoints.count(txin.prevout))
      return state.DoS(100, error("CTransaction::CheckTransaction() : duplicate inputs"));
        vInOutPoints.insert(txin.prevout);
    }
   if (nTotalIn < 0)
   return state.DoS(100, error("CTransaction::CheckTransaction() : nTotalIn negative"));

и получить массив адресов на которые нужно раскидать отрицательную сумму
эта отрицательная сумма изначально может иметь значение равное сумме обмана
(насколько вас обманули на столько и заминусовать чинушу)

однако с условием 1 - у вас достаточно средств для минусов, 2 - на балансе адресов достаточно средств для гашения отрицательных транзакций

исходя из этих данных уже можно строить полноценную транзакцию причем достаточно справедливую

приоритет гашения отрицательных транзакций таков:
1)адрес чинуши
если есть остаток
2) самый свежий непотраченый выход
итд пока баланс минусуемых адресов не будет равен отрицательной сумме которую мы хотим вменить


в qt можно в список транзакций впихнуть кнопку на против каждой исходящей транзакции (отомстить\пожаловаться)

эта кнопка будет иметь таргет на вкладку "отправить" с уже вставленными отрицательной суммой адресом который минусуем

вот как то так
legendary
Activity: 3556
Merit: 1100

info_infoman, если захотите, в плане поиска дороги, например, к шубохранилищу для жены, заняться ещё чем-нибудь полезным, скажите. Я могу при случае проблемку подкинуть, пока есть они у меня, до решения которых, я пока ещё не добрался... Smiley
sr. member
Activity: 460
Merit: 250
насколько я понимаю сейчас проверяется только последние previnput
но previnput(previnput(previnput())) не проверяется

я прав?

если так то постминусование работать не будет
нужно усложнять функцию проверки previnput
чтобы он проверял их абсолютный баланс на момент создания\проверки транзакции
причем чтобы это делалось с как можно меньшими трудозатратами

а затраты тут огромные
 грубо говоря нужно развернуть все цепочки выходов с этого заминусованного адреса если таковые были и заминусовать их причем заминусовывать желательно самые свежие выходы

если это было недавно то это легко однако например бюджет страны и сбор налогов растягивается аж на год
представьте какое колво транзакций нужно перелопатить

в такой ситуации
думаю лучшим способом будет поступать так же как с сдачей
а именно автоматическое биение отрицательной транзакции

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

если сумма отрицательной транзакции превышает текущий баланс адреса плохиша
то кошелек берёт предыдущие выходы с этого адреса
с суммой необходимой для погашения  этой отрицательной транзакции
и начинает создавать дополнительные отрицательные транзакции

выходы выбираются по принципу >> самые свежие + конечные(непотраченые)

нода же которая принимает такие транзакции к майнингу
должна просто убедится что число непотраченых входов по сумме не ниже отрицательной транзакции

при этом мы сохраним скорость майнинга(избавив ноды от рекурсивной проверки балансов адресов)
откажемся от переборки цепочки блоков(если там будут постзаминусованые адреса)

все может происходить незаметно для клиента
также как сейчас автоматически создается сдача
также и будет происходить рекурсивное разбиение отрицательного выхода на адреса связанные с адресом мошенника

тело транзакции будет таким :
пример:
инпут 1 монета

1)аутпут = -0.70 на адрес......
2)аутпут = -0.20 на адрес......
3)аутпут = -0.09 на адрес......
и 0.01 комса


sr. member
Activity: 392
Merit: 250
Интересная идея. Только нужно чтобы в системе были и 'традиционные' ноды, иначе ценностью станет 'меньший долг'. Скажем, кошелек с -25 btc будет цениться выше, чем большинство кошельков со средним балансом -100 btc. Как если использовать существующую систему, чиновников бы обязали использовать только прокаченные клиенты, и гигахеш.ио или другой достаточно сильный пул подтверждал бы такие транзакции. Общественный контроль, однако...
legendary
Activity: 3556
Merit: 1100

А в этом что то есть. Но по-моему больше отрицательного, чем положительного, учитывая различное поведение пользователей, как то - от абсолютного юзверского неадеквата, преодалевающего любую защиту от дурака, до любых злонамеренных действий шутников и прочих вредителей.
sr. member
Activity: 460
Merit: 250
Такой политик может перед всеми делами перегнать деньги на другой счет.
не имеет значения
все входы и выходы взаимосвязаны
как только в цепочке входов и выходов появляется отрицательная сумма
она автоматически будет влиять на баланс адресов следующих за отрицательным адресом(отнимать от них)
и так до тех пор пока не будут потрачены (сминусованы) все  выходы
существующие в цепочке на этом адресе блоков на данный момент.

здесь можно проследить некую зеркальность с обычными транзакциями где проверяется наличие входов
при начислении отрицательных транзакций должны учитываться выходы
таким образом чтобы в сумме отрицательная транзакция не была больше чем сумма балансов совершенных и потенциального выходов с этого адреса


А вообще тогда это должен быть отдельный вид транзакций.
ну в данный момент я сумел запрограммировать  такие транзакции в виде стандартных
некоторые проверки нужно добавить и вроде все...

а так положительные транзакции сохранились и не мешают отрицательным
можно даже делать смешанную транзакцию  где есть отрицательные и положительные выходы.
тестирую...
hero member
Activity: 994
Merit: 502
такому политику\руководителю\инициатору\инноватору мало не покажется
Такой политик может перед всеми делами перегнать деньги на другой счет.
А вообще тогда это должен быть отдельный вид транзакций.
И с одновременным уменьшением средств на счете инициатора это будет не так уж эффективно работать.
sr. member
Activity: 460
Merit: 250
Одно могу сказать точно - народу эта фича не понравится.
ну вот смотрите
народ делегировал (руководителю\политику\инициатору\инноватору)
на публичный адрес некие средства

но этот адрес не оправдал ожиданий народа

народ негодует
и каждый из их числа или не каждый а лишь часть из числа недовольных
создают отрицательную транзакцию

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

результат будет такой что публичный человек взявший на себя ответственность за народные средства и не удовлетворивший ожидания народа аннулирует свое нечестно нажитое богатство.

и даже если он конвертирует деньги с адреса в материальные блага
поставщики благ тоже окажутся без денег(положительных входов)

такому политику\руководителю\инициатору\инноватору мало не покажется
его отвергнут все кого он подвел.

это и есть кумулятивный индивидуальный рейтинг

при этом народу не нужно собираться на забастовки стачки или высказывать негодование на таких ресурсах как ютюб или соц сети чтобы обратить внимание на этого отрицательного персонажа.
2 клика в своем индивидуальном кошельке и месть свершилась.
hero member
Activity: 994
Merit: 502
Одно могу сказать точно - народу эта фича не понравится.
sr. member
Activity: 460
Merit: 250
Ну от этого еще ни один получатель не отказался. А вот с отрицательными...
согласен,
 но нужно смотреть на эту фишку с невозможностью отказаться от акцепта более широко
 чем просто невозможность отмены  исключительно положительных сделок.

например как неотвратимость наказания за проступок.
или как кумулятивный индивидуальный рейтинг непосредственно связанный с деньгами(голосование деньгами).

ведь это не огульное уничтожение чужих монет
это уничтожение и своих = и чужих + комса

так же
можно назвать это местью
(ведь месть штука хлопотная)

hero member
Activity: 994
Merit: 502
Пример передача монет в биткоин - адрес получатель тоже не дает согласия на прием средств, он просто получает их, а точнее их ему тупо вменяют.
Ну от этого еще ни один получатель не отказался. А вот с отрицательными...
sr. member
Activity: 460
Merit: 250
Это не взаимность. Получатель же не согласен с транзой. Но ниче поделать не может. Какая же это взаимность.

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

что касается согласия то публичные оферты на передачу средств не предполагают согласия акцепта сделки в принципе, и не важно положительный или отрицательный это тип сделки.

Пример передача монет в биткоин - адрес получатель тоже не дает согласия на прием средств, он просто получает их, а точнее их ему тупо вменяют.
hero member
Activity: 994
Merit: 502
взаимное уничтожение
а где ж взаимность? или это мультитранза?
взаимность в том, что можно уничтожить чужие монеты(снизить баланс адреса) ровно на ту сумму сколько ты сам можешь заплатить + комиссия
Это не взаимность. Получатель же не согласен с транзой. Но ниче поделать не может. Какая же это взаимность.
sr. member
Activity: 460
Merit: 250
взаимное уничтожение
а где ж взаимность? или это мультитранза?
взаимность в том, что можно уничтожить чужие монеты(снизить баланс адреса) ровно на ту сумму сколько ты сам можешь заплатить + комиссия
hero member
Activity: 994
Merit: 502
взаимное уничтожение
а где ж взаимность? или это мультитранза?
sr. member
Activity: 460
Merit: 250
Quote
важно
нужно чтобы при отправке отрицательных монет
уменьшался баланс как на кошельке отправителя так и на кошельке получателя
Да, при этом условии дебет и кредит описаны верно.

Но ведь тогда при отправке отрицательной суммы Х монет общее количество монет в системе будет уменьшаться на 2*Х Smiley
спасибо!

да именно это и требуется
взаимное уничтожение
legendary
Activity: 1200
Merit: 1021
Quote
важно
нужно чтобы при отправке отрицательных монет
уменьшался баланс как на кошельке отправителя так и на кошельке получателя
Да, при этом условии дебет и кредит описаны верно.

Но ведь тогда при отправке отрицательной суммы Х монет общее количество монет в системе будет уменьшаться на 2*Х Smiley
hero member
Activity: 994
Merit: 502
уменьшался баланс как на кошельке отправителя так и на кошельке получателя
Охренеть. Бедный получатель.
sr. member
Activity: 460
Merit: 250
добился таки некоторого результата с отрицательными транзакциями (не спрашивайте для чего)

input = 1 коин
output = -0,5
fee = 0,5

вот рав
Code:

{
"hex" : "020000000117a7032987698258de629b3c0b1de07905090126175a88f0b15b45c01b4283df000000004948304502200e0ba1b3a1a54e94540188eef5e18036ef61b28866468d6231ce51a9ff7d2da20221009e92bd4ebfe3126f221dce7a20f6e3784e88942e0b8436bf37fde63b1798064b01ffffffff01800f05fdffffffff1976a914ac3861c1a9f6998aea70d83182e327d6877a7b3888ac0000000000",
"txid" : "fc4921a5f15b1954f4695b1194a7837308c565d9b65a26c25ea57a5db256da8b",
"version" : 2,
"locktime" : 0,
"vin" : [
{
"txid" : "df83421bc0455bb1f0885a172601090579e01d0b3c9b62de588269872903a717",
"vout" : 0,
"scriptSig" : {
"asm" : "304502200e0ba1b3a1a54e94540188eef5e18036ef61b28866468d6231ce51a9ff7d2da20221009e92bd4ebfe3126f221dce7a20f6e3784e88942e0b8436bf37fde63b1798064b01",
"hex" : "48304502200e0ba1b3a1a54e94540188eef5e18036ef61b28866468d6231ce51a9ff7d2da20221009e92bd4ebfe3126f221dce7a20f6e3784e88942e0b8436bf37fde63b1798064b01"
},
"sequence" : 4294967295
}
],
"vout" : [
{
"value" : -0.50000000,
"n" : 0,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 ac3861c1a9f6998aea70d83182e327d6877a7b38 OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "76a914ac3861c1a9f6998aea70d83182e327d6877a7b3888ac",
"reqSigs" : 1,
"type" : "pubkeyhash",
"addresses" : [
"iKB9CYy5Woh654EVAumNbkCeNf8Sm2DZKk"
]
}
}
],
"tx-comment" : "",
"blockhash" : "53a46e97f87adf8ba541c5e3e7f04c5d432a840ac977ff6027fe3adbf5d3f298",
"confirmations" : 7,
"time" : 1418989968,
"blocktime" : 1418989968
}


в QT транзакция выглядит так
Code:
Статус: 7 подтверждений
Дата: 19.12.2014 14:52
Для: iKB9CYy5Woh654EVAumNbkCeNf8Sm2DZKk
Дебет: 0.50 ITX
Комиссия: -0.50 ITX
Чистая сумма: -1.00 ITX
ID транзакции: fc4921a5f15b1954f4695b1194a7837308c565d9b65a26c25ea57a5db256da8b

вопрос что означает дебет что кредет в трех типах транзакций?

1 тип добыча
кредит идет с + знаком

2 тип отправка монет
если транзакция положительная то
дебет идет с - знаком
если отрицательная то
дебет идет с + знаком

3 тип получение монет
если транзакция положительная то
кредит идет с + знаком
если отрицательная то
кредит идет с - знаком

справедливы ли это или я запутался со знаками дебитами и кредитами?

важно
нужно чтобы при отправке отрицательных монет
уменьшался баланс как на кошельке отправителя так и на кошельке получателя


убедительная просьба тем кто хочет запостить реплей типа "ага а нафига они такие отрицательные транзакции...." идите во флудильню
Jump to: