Pages:
Author

Topic: ---TTC->TDC--- - page 10. (Read 28228 times)

legendary
Activity: 3556
Merit: 1100
October 17, 2019, 09:37:48 AM
Причину этой ошибки думается ты лучше знаешь, разговор о другом. В любом случае в Wallet.dat не должна попадать транзакция с ошибками при проверке ее валидности.
Вне всяких сомнений.

Или добавь новую проверку - до включения транзакции в Wallet.dat или измени очередность имеющихся.
Так точно, сэр! Есть, сэр! Слушаюсь, сэр! Разрешите исполнять, сэр?! Smiley

Есть только один небольшой момент консенсуса данного коина: транзакция может быть абсолютно валидной в некий конкретный момент времени, но уже через секунду сталь совершенно невалидной. Я вместо 1 секунды сделаю временной лаг в 3 с половиной дня и если после этого никаких подобных проблем не всплывёт, значит проблема, можно сказать, будет решённой. Хотя по хорошему здесь нужен гораздо более основательный подход, с учётом всех возможных и не возможных вариантов. Но на данное время этот коин не настолько популярен, чтобы уделять такой незначительной мелочи уж очень пристальное внимание.
sr. member
Activity: 939
Merit: 261
Data HDD Repair - Recovery of lost information
October 17, 2019, 08:48:14 AM
У тебя вот это срабатывает
Code:
// Broadcast (передача)
        if (!wtx.AcceptToMemoryPool(false))
        {
            // This must not fail. The transaction has already been signed and recorded.    Это не должны подвести. Транзакция уже подписана и зарегистрированна.
            printf("CommitTransaction() : Error: Transaction not valid");
            return false;
        }
Нужна проверка до записи в Wallet.dat. У тебя в Wallet.dat транзакция записывается а дальнейшую проверку она пройти не может.

Это дело AcceptToMemoryPool(false) ведёт нас сюда - https://github.com/neiros/---TTC--TDC---/blob/TDC/src/main.cpp#L1078
А это accept(state, *this, fLimitFree, NULL) сюда - https://github.com/neiros/---TTC--TDC---/blob/TDC/src/main.cpp#L803
где находится ещё довольно много стандартных проверок, которые и не пускают даблспенд транзакции.

В общем то это правильно. Как я и предполагал.

Какие-либо проверки до записи в wallet.dat при отсутствии коннекта с сетью или при не синхронизированном блокчейне, как вероятно получилось в недавнем случае, бесполезны. Разве что можно ещё учитывать текущее время компа, но это так себе проверка - одно название по сути. Больше потенциального вреда от неё скорее всего можно ожидать, чем пользы.

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

 Причину этой ошибки думается ты лучше знаешь, разговор о другом. В любом случае в Wallet.dat не должна попадать транзакция с ошибками при проверке ее валидности. Или добавь новую проверку - до включения транзакции в Wallet.dat или измени очередность имеющихся.
legendary
Activity: 3556
Merit: 1100
October 17, 2019, 08:31:43 AM
У тебя вот это срабатывает
Code:
// Broadcast (передача)
        if (!wtx.AcceptToMemoryPool(false))
        {
            // This must not fail. The transaction has already been signed and recorded.    Это не должны подвести. Транзакция уже подписана и зарегистрированна.
            printf("CommitTransaction() : Error: Transaction not valid");
            return false;
        }
Нужна проверка до записи в Wallet.dat. У тебя в Wallet.dat транзакция записывается а дальнейшую проверку она пройти не может.

Это дело AcceptToMemoryPool(false) ведёт нас сюда - https://github.com/neiros/---TTC--TDC---/blob/TDC/src/main.cpp#L1078
А это accept(state, *this, fLimitFree, NULL) сюда - https://github.com/neiros/---TTC--TDC---/blob/TDC/src/main.cpp#L803
где находится ещё довольно много стандартных проверок, которые и не пускают даблспенд транзакции.

В общем то это правильно. Как я и предполагал.

Какие-либо проверки до записи в wallet.dat при отсутствии коннекта с сетью или при не синхронизированном блокчейне, как вероятно получилось в недавнем случае, бесполезны. Разве что можно ещё учитывать текущее время компа, но это так себе проверка - одно название по сути. Больше потенциального вреда от неё скорее всего можно ожидать, чем пользы.

Самое простое и быстрое, как мне кажется, возможное решение такой проблемы я предложил постом выше. Это не совсем стопроцентное решение, но чтобы с эмулировать возникновение подобного случая нужно быть ещё тем извращенцем или уж очень "везучим" на такое пользователем.
sr. member
Activity: 939
Merit: 261
Data HDD Repair - Recovery of lost information
October 17, 2019, 06:35:27 AM
 У тебя вот это срабатывает
Code:
// Broadcast (передача)
        if (!wtx.AcceptToMemoryPool(false))
        {
            // This must not fail. The transaction has already been signed and recorded.    Это не должны подвести. Транзакция уже подписана и зарегистрированна.
            printf("CommitTransaction() : Error: Transaction not valid");
            return false;
        }

Нужна проверка до записи в Wallet.dat. У тебя в Wallet.dat транзакция записывается а дальнейшую проверку она пройти не может.
legendary
Activity: 3556
Merit: 1100
October 16, 2019, 08:05:44 AM



_оффтопик_
Чем в последнее время я занимался.

Сделал геотермальный контур: 8 скважин (2*4), 285 метров пнд труб 25-ого диаметра. Кому надо пробурить дырку в земле, обращайтесь. Пол дня делов, без учета подготовительных работ.
Тепловой насос - кондиционер MSS-12R08 с минимальными "косметическими" переделками наружного блока.
Установил один ветрогенератор. Плюс к этому ещё один, нежданчик, бонусный, почти бесплатный(спасибо китайцам) установил на мачту которую пришлось сварить из металлолома, что под рукой был. А также заборы, ворота, калитки и т.п. мелочи. Всё вполне нормально и выглядит и работает.

Так что переход на использование только энергии солнца и ветра для отопления(?) и электроснабжения в сибирских условиях вполне реален и даже относительно мало затратен как по материалам, так и по времени. Конечно для тех у кого руки из нужного места растут. Как-нибудь про это дело отдельную статью надо будет написать.

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


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


Но сейчас уже руки дошли до возможного решения этой проблемы - https://bitcointalksearch.org/topic/m.51666221
Самый простой вариант примерно такой:

1. Не создавать, а соответственно и не отправлять, транзакцию если нет соединения хотя бы с одной нодой.
2. Если есть соединение, узнаём текущую высоту блокчейна.
3. Создаём и отправляем транзакцию только из тех выходов, глубина которых не ниже рабочей длины блокчейна минус некоторая константа по времени, определяемая через количество блоков для относительно гарантированного попадания транзакции в блокчейн из расчета одни сутки это ~ 24 * 12 блоков в час. Думаю круглой цифры в 1000 блоков будет достаточно. Это почти 3 с половиной дня. Так как при создании транзакции наибольший приоритет у самых древних непотраченных выходов - https://github.com/neiros/---TTC--TDC---/blob/TDC/src/wallet.cpp#L1038 , то если глубина таких выходов будет больше 105000, то не имеет смысла включать эти выходы в транзакцию, так как они уже будут пустыми, т.е. потраченными коинтрансфер транзакцией.

По-моему этого пока будет вполне достаточно.
Осталось собраться, освежить подзабытые навыки и знания, и сделать и добавить что-то примерно подобное, а может и более навороченное. Тут уж как получится.
legendary
Activity: 3556
Merit: 1100
August 01, 2019, 01:44:07 AM
a total coin supply постоянно растет- получается эмиссия ничем неограничена?
Количество монет пока растёт согласно алгоритму эмиссии. Эмиссия ограниченна. Но жесткого ограничения нет.

просто с ростом сложности и уполовиниванием награды будет поступать все меньше монет?
Да.

Если сумма комиссий транзакций в блоках становится больше заданной алгоритмом величины, эмиссия прекращается. -это произойдет совсем нескоро и только если монетой вовсю начнут пользоваться? а до этого coin supply может раздуться и до 100млн?
До 100млн вряд ли. Примерно +/- на это количество 128 * 210000 * 2 = 53760000 можно ориентироваться.




я правильно понимаю, что тут https://bitcointalksearch.org/topic/--5043605 обсуждают то, что уже реализовано в TDC?
Да. nukis, похоже, умеет мыслить самостоятельно.
jr. member
Activity: 45
Merit: 1
July 31, 2019, 12:29:59 PM
я правильно понимаю, что тут https://bitcointalksearch.org/topic/--5043605 обсуждают то, что уже реализовано в TDC?
jr. member
Activity: 45
Merit: 1
July 31, 2019, 04:54:37 AM
a total coin supply постоянно растет- получается эмиссия ничем неограничена? просто с ростом сложности и уполовиниванием награды будет поступать все меньше монет? Если сумма комиссий транзакций в блоках становится больше заданной алгоритмом величины, эмиссия прекращается. -это произойдет совсем нескоро и только если монетой вовсю начнут пользоваться? а до этого coin supply может раздуться и до 100млн?
legendary
Activity: 3556
Merit: 1100
July 03, 2019, 03:20:03 AM

Ладно, проехали.
У меня сейчас других дел и проблем выше крыши - https://bitcointalksearch.org/topic/m.50902507
sr. member
Activity: 770
Merit: 305
July 03, 2019, 02:59:02 AM
Спасибо конечно, но по-моему с каждой новой версией Bitcoin Core вы, да наверное и не
только вы, становитесь всё большим дилетантом в ключевых вопросах. На мой взгляд, конечно.

Ну, короче, сами справитесь без моей помощи.
Я, действительно, не особо этим вопросом озабочен. Что там вы наваяли в клиенте.
Да и не назвал бы это "ключевым вопросом". Это вообще ниачом вопрос.
Дело началось с того, что у чела не работала getrawtransaction, я предложил попробовать
другую команду. Чего это вы так возбудились - мне непонятно.
legendary
Activity: 3556
Merit: 1100
July 03, 2019, 02:25:20 AM
Grin Grin Grin Транзакция в кошельке? В кошельке. В wallet.dat`е? В wallet.dat`е.
В мемпуле этого кошелька, на обратной стороне Луны или в ваших фантазиях? Grin
Я практически уверен что в мемпуле этого кошелька.
Нет такого понятия "мемпул кошелька".

Есть. Не вводите в заблуждение. И в Bitcoin раньше был и сейчас есть и должен быть.
Где же ему быть-то, как не в кошельке(клиенте).

Мемпул - это транзакции, которые могут быть включены в блок, но пока еще не включены.
К кошельку это никакого отношения не имеет.

К кошельку Bitcoin Core для обычных пользователей уже, можно сказать, не имеет, а к кошельку TDC это имеет самое прямое и непосредственное отношение. Поэтому не стоит мешать одно с другим. TDC это не нынешняя фигня ввиде Bitcoin Core и его однообразных форков.

Но Bitcoin Core устроен так, что в файле wallet.dat хранятся копии транзакций, которые
имеют отношение к приватным ключам юзера. В некоторых случаях получается так, что копия
есть в файле wallet.dat а в мемпуле и блокчейне транзакции нет. Это можно получить несколькими
способами - например, если отправить свою транзакцию из несинхронизированного клиента при
том условии, что средства уже были потрачены - в wallet.dat такая транзакция попадет, а после
синхронизации этой транзакции нигде больше не будет.

Quote
Поэтому я и попросил wallet.dat чтобы самому разобраться где она действительно находится. Если getrawtransaction показывает параметры неподтверждённых транзакций (добавлю, и никому более не известных транзакций изолированного от сети клиента), то он должен показать параметры проблемной.


От того, что wallet.dat будет лежать на вашем компьютере команда getrawtransaction не заработает
Потому что в wallet.dat за транзакциями она не лезет. Впрочем, проверяйте сами. Может в каких-то
версиях и лезет.

Для меня же Bitcoin не чёрная коробка. Я же его изъездил и изучил на уровне кода вдоль и поперёк(старую версию конечно, а не ту хрень, что уже расплодилась). Неужели вы думаете, что я не смогу, при желании, из клиента, который сам сделал, достать из wallet.dat транзакцию, если она там действительно есть?


Quote
Либо же это был банальных орфан блок и он, при перезагрузке кошелька, уже сам давно испарился. Без wallet.dat я могу пока только предполагать.
Не, ну если владелец wallet.dat согласен его пересылать кому-то - да пожалуйста!
Ебитесь на здоровье. Я лишь предложил способ разобраться с проблемой без передачи wallet.dat
который может быть и незапаролен.

Спасибо конечно, но по-моему с каждой новой версией Bitcoin Core вы, да наверное и не только вы, становитесь всё большим дилетантом в ключевых вопросах. На мой взгляд, конечно.
sr. member
Activity: 770
Merit: 305
July 02, 2019, 11:19:43 PM
Grin Grin Grin Транзакция в кошельке? В кошельке. В wallet.dat`е? В wallet.dat`е.
В мемпуле этого кошелька, на обратной стороне Луны или в ваших фантазиях? Grin
Я практически уверен что в мемпуле этого кошелька.
Нет такого понятия "мемпул кошелька".
Мемпул - это транзакции, которые могут быть включены в блок, но пока еще не включены.
К кошельку это никакого отношения не имеет.

Но Bitcoin Core устроен так, что в файле wallet.dat хранятся копии транзакций, которые
имеют отношение к приватным ключам юзера. В некоторых случаях получается так, что копия
есть в файле wallet.dat а в мемпуле и блокчейне транзакции нет. Это можно получить несколькими
способами - например, если отправить свою транзакцию из несинхронизированного клиента при
том условии, что средства уже были потрачены - в wallet.dat такая транзакция попадет, а после
синхронизации этой транзакции нигде больше не будет.

Quote
Поэтому я и попросил wallet.dat чтобы самому разобраться где она действительно находится. Если getrawtransaction показывает параметры неподтверждённых транзакций (добавлю, и никому более не известных транзакций изолированного от сети клиента), то он должен показать параметры проблемной.


От того, что wallet.dat будет лежать на вашем компьютере команда getrawtransaction не заработает
Потому что в wallet.dat за транзакциями она не лезет. Впрочем, проверяйте сами. Может в каких-то
версиях и лезет.

Quote
Либо же это был банальных орфан блок и он, при перезагрузке кошелька, уже сам давно испарился. Без wallet.dat я могу пока только предполагать.
Не, ну если владелец wallet.dat согласен его пересылать кому-то - да пожалуйста!
Ебитесь на здоровье. Я лишь предложил способ разобраться с проблемой без передачи wallet.dat
который может быть и незапаролен.
legendary
Activity: 3556
Merit: 1100
July 02, 2019, 10:26:09 PM
Вот эта строчка делает тоже самое.
Ничего дополнительно декодировать ненужно.
Бля, ну ты долбоёб.
Эта строчка сделает то же самое если найдет транзакцию в блокчейне или в мемпуле.
А если, блядь, транзакция существует только в валлет.дат - то нихуя не то же самое!

Человек как раз и спрашивает про эту ситуацию

 Grin Grin Grin Транзакция в кошельке? В кошельке. В wallet.dat`е? В wallet.dat`е.
В мемпуле этого кошелька, на обратной стороне Луны или в ваших фантазиях? Grin
Я практически уверен что в мемпуле этого кошелька.

Поэтому я и попросил wallet.dat чтобы самому разобраться где она действительно находится. Если getrawtransaction показывает параметры неподтверждённых транзакций (добавлю, и никому более не известных транзакций изолированного от сети клиента), то он должен показать параметры проблемной.

Либо же это был банальных орфан блок и он, при перезагрузке кошелька, уже сам давно испарился. Без wallet.dat я могу пока только предполагать.

 
sr. member
Activity: 770
Merit: 305
July 02, 2019, 11:55:10 AM
Вот эта строчка делает тоже самое.
Ничего дополнительно декодировать ненужно.
Бля, ну ты долбоёб.
Эта строчка сделает то же самое если найдет транзакцию в блокчейне или в мемпуле.
А если, блядь, транзакция существует только в валлет.дат - то нихуя не то же самое!

Человек как раз и спрашивает про эту ситуацию
legendary
Activity: 3556
Merit: 1100
July 02, 2019, 06:53:29 AM

Сами-то поняли, что написали и где ошиблись? Smiley

Информация gettransaction бесполезна.
getrawtransaction показывает входы и выходы транзакции. Вот эти inы и outы проблемной транзакции и нужно узнать.

Ну блин.
То что выдает getrawtransaction надо скормить в decoderawtransaction
Будут вам и входы и выходы.



для примера: getrawtransaction c0af3d495038affbad2f8ea10b0e51f272056c011f5921f04ceb428107adbdbc 1
Вот эта строчка делает тоже самое.
Ничего дополнительно декодировать ненужно.
sr. member
Activity: 770
Merit: 305
July 02, 2019, 02:39:56 AM
Информация gettransaction бесполезна.
getrawtransaction показывает входы и выходы транзакции. Вот эти inы и outы проблемной транзакции и нужно узнать.

Ну блин.
То что выдает gettransaction надо скормить в decoderawtransaction
Будут вам и входы и выходы.
legendary
Activity: 3556
Merit: 1100
July 02, 2019, 01:57:38 AM
И то и то работает.
Индексация всех транзакций сделана по умолчанию
Без этого полноценная работа клиента невозможна.
Да при чем тут индексация транзакций, если транзакции нет в блокчейне?

В данном случае не при чём.

Информация gettransaction бесполезна.
getrawtransaction показывает входы и выходы транзакции. Вот эти inы и outы проблемной транзакции и нужно узнать.
sr. member
Activity: 770
Merit: 305
July 02, 2019, 01:44:30 AM
И то и то работает.
Индексация всех транзакций сделана по умолчанию
Без этого полноценная работа клиента невозможна.
Да при чем тут индексация транзакций, если транзакции нет в блокчейне?
legendary
Activity: 3556
Merit: 1100
July 02, 2019, 01:21:07 AM

И то и то работает.

Индексация всех транзакций сделана по умолчанию - https://github.com/neiros/---TTC--TDC---/blob/TTC-all-Lyra2REv2/src/util.cpp#L552 (txindex=1)
Без этого полноценная работа клиента невозможна.
sr. member
Activity: 770
Merit: 305
July 02, 2019, 01:01:52 AM
Quote
No information available about transaction (code -5)

Попробовать не getrawtransaction, а gettransaction
Первая команда берет из блокчейна+мемпула, вторая - из кошелька
Если транзакция невалидная для блокчейна - она в кошельке может остаться мусором,
а в блокчейне+мемпуле, разумеется, её не будет.

Естественно, если ваш клиент такое позволяет.
Pages:
Jump to: