Почему предполагаемая БТЦ сделок' ссылаясь лишь на один из нескольких выходов?

enter image description here

Недавно я начала изучение Bitcoin и пришел к этой сделке. Здесь есть несколько выходов, поэтому, если мы рассмотрим один из них, чтобы быть изменение, получено отправителем, то почему предполагаемая БТД осуществляются только подведя к одной из выходных значений? Что происходит с остальными выходами?

+459
Ahmed Khedr 10 дек. 2012 г., 4:26:02
15 ответов

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

Как технология биткоина помочь перед журналистами правительственного пресечения, особенно в отношении своих источников информации?

Может ли технология блокчейн быть использованы таким образом, чтобы защитить журналистов от того, чтобы раскрыть имена своих источников? Как?

+939
jule4ka81 03 февр. '09 в 4:24

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

В настоящее время при попытке отправить транзакцию его послали, но плата рассчитывается как:

неизрасходованные - Сатоши

Пример этой сделки я сделал в цепочке блоков можно посмотреть здесь:

Пример Сделки

Объявление вы можете видеть, что это вычисляется так:

Оригинальный неизрасходованные суммы: 0.09000000

Плата: 0.08990000

Торгуются: 0.00010000

Сумма сделки: 0.00010000

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

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

Код:

ВАР utxo = новый bitcore.Сделки.UnspentOutput({
 "txid" : "f42af6ab8b4dc3c636c5bfc6ce819063a55060c5619d31a6fa45a36413cb7953",
 "Uвых" : 0,
 "адрес" : "2MzuRYCXSHcBDEsSS4rziShvEzWSfoDe2zl",
 "scriptPubKey" : "OP_HASH160 20 0x54025426880aa847ec86f4d2488bbe260bfe0fcb OP_EQUAL",
 "Сатоши" : 10000
});

ВАР пабы = [
"02758b89e56bfa8da41f2c1701aa5927bc026cc3b51bbeff399c53a15f2ae52e28",
"02987ab3466118bd3fb5cb0c4fddbdd7ff8e21188314ffed4ecad83fb7689d57d7",
"037b7f8cea06cfd5a96023341441b52431e31867c6f3716e5f20be24b709d023eb"
];

ВАР multiSigTx = новый bitcore.Сделки()
 .из(utxo, пабы, 2)
 .к("n1fqBkX6GtUsaV3EPqjpHcTuWhAQQgKXov", 10000)
.плата(5430)
.изменение("2MzuRYCXSHcBDEsSS4rziShvEzWSfoDe2zl")
 .знак(["083b63f9dbaa100c1714e05a04c20ab32f83f7726ba54a682013a13df6a92949" ,"5bef634cdcc7f9c2fd2b429d1ddf6cae56923433b6e8b2c5515cf87d84751e0a"]);

ВАР txSerialized = multiSigTx.сериализовать(истина);

// Вещания

понимание.трансляция(txSerialized, функция(ошибаться, returnedTxId) {
 если (энр) {
консоль.журнал(ошибаться);
 } еще {
 консоль.журнал("отправленные монеты, Техас идентификатор: ");
консоль.журнал(returnedTxId);
}
});
+921
user3696153 5 нояб. 2015 г., 14:22:19

вы можете помочь с алгоритмом хэширования Bitcoin блок ( PHP, с, питон, яваскрипт) ?

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

Вчера установила Python для Windows XP 32 и запускать Python-код хеширования от https://en.bitcoin.it/wiki/Block_hashing_algorithm

и запустить код, чтобы получить правильный хэш.

Python-это очень медленно, так что я планирую протестировать алгоритм хэширования блока в C http://pastebin.com/bW3fQA2a

в PHP и изменить мой код JavaScript, чтобы создать правильный хэш.

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

Можете ли вы помочь или присоединиться ко мне ?

+871
CannibaLL X 25 сент. 2013 г., 10:29:35

Биткоины помечены неизрасходованные выходы ("UTXO"). Когда сделки платит по адресу, биткоины хранятся в контейнере с именем UTXO. (Другими словами, адреса не хранить биткоины, неизрасходованные выходы сделать.) Чтобы совершить сделку с этого адреса, сделка должна ссылаться на UTXO:

  • Идентификатор транзакции, который ее создал.
  • Какой выход из сделки. ("Uвых")

Когда кто-то тратит его (и получает одно подтверждение), база данных удаляет, что UTXO. Если вы попытаетесь respend его, он не найдет, что UTXO, таким образом ошибка будет брошен.

Различные UTXO используются для различных платежей, если UTXO достаточно большой.

+841
Birds 1 дек. 2010 г., 10:46:48

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

Зависимостей сканирования целевых тень-биткоин-биткода
[ 0%] здания биткода LLVM с версии.ЧГК.до н. э.
[ 1%] здания биткода LLVM с addrman.ЧГК.до н. э.
[ 1%] строительство инфраструктуры LLVM оповещения биткода.ЧГК.до н. э.
[ 1%] здания биткода LLVM с base58.ЧГК.до н. э.
[ 2%] здания биткода LLVM с заказчиком.ЧГК.до н. э.
[ 2%] здания биткода LLVM с Блум.ЧГК.до н. э.
[ 2%] здания биткода LLVM с chainparams.ЧГК.до н. э.
[ 3%] здания биткода LLVM с контрольно-пропускных пунктов.ЧГК.до н. э.
[ 3%] здания биткода LLVM с монетами.ЧГК.до н. э.
[ 4%] здания биткода LLVM с ядром.ЧГК.до н. э.
[ 4%] здания биткода LLVM с криптер.ЧГК.до н. э.
[ 4%] здания биткода LLVM с хэш.ЧГК.до н. э.
[ 5%] здания биткода LLVM с инит.ЧГК.до н. э.
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:563:9: ошибка: ссылка на 'int64_t' неоднозначно
 int64_t н = 0;
^
в /usr/включать/x86_64 с-линукс-дистрибутив GNU/системы/видов.ч:197:1: Примечание: кандидат найден по Поиск имени 'int64_t'
__прерывание intn_Т (64, __Ди__);
^
в /usr/включать/x86_64 с-линукс-дистрибутив GNU/системы/видов.ч:188:15: Примечание: расширенная от макро '__прерывание intn_Т'
 тип int тип int##Н##ІТ __атрибут__ ((__режим__ (режим)))
^
<диска>:126:1: Примечание: расширенная отсюда
int64_t
^
/главная/smthethwa/тень-плагин-биткоин/строить/boost_1_50_0/повышение/cstdint.ГЭС:308:50: Примечание: кандидат найден путем подстановки называется буст::int64_t'
 тип ::увеличить::long_long_type int64_t;
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:564:46: ошибка: использование необъявленный идентификатор 'Н'
 если (ParseMoney(mapArgs["-mintxfee"], п) && н > 0)
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:564:52: ошибка: использование необъявленный идентификатор 'Н'
 если (ParseMoney(mapArgs["-mintxfee"], п) && н > 0)
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:565:39: ошибка: использование необъявленный идентификатор 'Н'
 CTransaction::nMinTxFee = Н;
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:571:9: ошибка: ссылка на 'int64_t' неоднозначно
 int64_t н = 0;
^
в /usr/включать/x86_64 с-линукс-дистрибутив GNU/системы/видов.ч:197:1: Примечание: кандидат найден по Поиск имени 'int64_t'
__прерывание intn_Т (64, __Ди__);
^
в /usr/включать/x86_64 с-линукс-дистрибутив GNU/системы/видов.ч:188:15: Примечание: расширенная от макро '__прерывание intn_Т'
 тип int тип int##Н##ІТ __атрибут__ ((__режим__ (режим)))
^
<диска>:126:1: Примечание: расширенная отсюда
int64_t
^
/главная/smthethwa/тень-плагин-биткоин/строить/boost_1_50_0/повышение/cstdint.ГЭС:308:50: Примечание: кандидат найден путем подстановки называется буст::int64_t'
 тип ::увеличить::long_long_type int64_t;
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:572:51: ошибка: использование необъявленный идентификатор 'Н'
 если (ParseMoney(mapArgs["-minrelaytxfee"], п) && н > 0)
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:572:57: ошибка: использование необъявленный идентификатор 'Н'
 если (ParseMoney(mapArgs["-minrelaytxfee"], п) && н > 0)
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:573:44: ошибка: использование необъявленный идентификатор 'Н'
 CTransaction::nMinRelayTxFee = Н;
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:627:5: ошибка: ссылка на 'int64_t' неоднозначно
 int64_t начальный элемент;
^
в /usr/включать/x86_64 с-линукс-дистрибутив GNU/системы/видов.ч:197:1: Примечание: кандидат найден по Поиск имени 'int64_t'
__прерывание intn_Т (64, __Ди__);
^
в /usr/включать/x86_64 с-линукс-дистрибутив GNU/системы/видов.ч:188:15: Примечание: расширенная от макро '__прерывание intn_Т'
 тип int тип int##Н##ІТ __атрибут__ ((__режим__ (режим)))
^
<диска>:126:1: Примечание: расширенная отсюда
int64_t
^
/главная/smthethwa/тень-плагин-биткоин/строить/boost_1_50_0/повышение/cstdint.ГЭС:308:50: Примечание: кандидат найден путем подстановки называется буст::int64_t'
 тип ::увеличить::long_long_type int64_t;
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:826:9: ошибка: использование необъявленный идентификатор 'пчтобы начать'
 начальный элемент = GetTimeMillis();
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:905:58: ошибка: использование необъявленный идентификатор 'пчтобы начать'
 LogPrintf(" блок индекса %15dms\Н", GetTimeMillis() - начальный элемент);
^
/главная/smthethwa/тень-плагин-биткоин/строить/биткоин/ГРЦ/утиль.ч:117:39: Примечание: расширенная от макро 'LogPrintf'
#определить LogPrintf(...) LogPrint(нуль, __ва_параметр args__)
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:1065:5: ошибка: использование необъявленный идентификатор 'пчтобы начать'
 начальный элемент = GetTimeMillis();
^
/главная/smthethwa/тень-плагин-биткоин/построить/биткоин/ГРЦ/инит.ЧГК:1074:46: ошибка: использование необъявленный идентификатор 'пчтобы начать'
 addrman.размер(), GetTimeMillis() - начальный элемент);
^
/главная/smthethwa/тень-плагин-биткоин/строить/биткоин/ГРЦ/утиль.ч:117:39: Примечание: расширенная от макро 'LogPrintf'
#определить LogPrintf(...) LogPrint(нуль, __ва_параметр args__)
^
13 ошибки.
сделать[2]: *** [src/и инит.ЧГК.ошибка до н. э.] 1
принять[1]: *** [Источник/CMakeFiles/тень-биткоин-биткода.каталог/все] Ошибка 2
сделать: *** [все] Ошибка 2
+808
BrianMitchL 11 окт. 2017 г., 18:16:24

Я думаю, что это в первую очередь просто дает вам ложное чувство безопасности.

Допустим, компания XYZ представляет собой горнодобывающей компании, как вы описали. Они растут так, что они имеют 51% хэш-мощности сети. Это не может быть очевидным на диаграммах как это так он распространился среди других (разумных размеров) бассейны. Однако, поскольку они в конечном счете в контроль над оборудованием, они могут "сорваться" и сделать все аппаратные шахты на своем собственном бассейне. Они теперь способны выполнять дважды тратит, так как они имеют 51% мощности. Обратите внимание, что это не будет тихий вещь: люди будут знать, что это произошло.

Главной причиной этого, вероятно, не произойдет на самом деле заключается в том, что компания будет убивать курицу, несущую золотые яйца. Они могли продолжать делать деньги как шахтерский услуги, наживаясь на успех биткоина; вместо них получится в несколько дважды проводит, а потом вера в Bitcoin будет уничтожена, и цена падает. Или, поскольку у них больше нет притока денежных средств от новых шахтеров, они не могут не отставать от остальных усовершенствований сети, и они падают ниже 50% мощности. В любом случае, они очень много стреляли.

Если бы у нас был способ гарантированно защитить оборудование (по некоторым приватного/публичного ключа системы) так, что арендаторы действительно те, что на бассейн, на который он указывает (и связи между бассейном и оборудования также антивандальной защитой), мы могли предотвращать такого рода атаки полностью. Это позволит сделать сервис более как "клиент покупает определенное оборудование, и мы обеспечиваем пространства, питания и охлаждения в обмен на плату" обслуживание, чем обычные контракты на разработку полезных ископаемых.

+779
Ben Marten 27 июн. 2014 г., 9:24:14

Согласно этим требованиям, нет никакой разницы между оборудования-у них же хэшрейт (330 МГц) и использовать одинаковое количество электроэнергии (2,5 Вт), поэтому они должны быть взаимозаменяемыми. Возможно, что есть проблемы с совместимостью программного обеспечения, но это маловероятно. Машины, вероятно, одинаковыми, поэтому там могут быть и другие причины для разницы в цене.

Ценность практически все, что связано с Bitcoin-это летучие прямо сейчас, в том числе горнодобывающее оборудование, поэтому разумно ознакомиться колебания такой цены исходя из прихоти отдельных продавцов, которые не отражают общую тенденцию на всем рынке. Рассмотрим такую ситуацию: продавец с более высоким ценам, также рекламирует очень ограниченный запас. Вполне возможно, что и продавцы, начали в С же цене, и пока кто-то начнет распродавать большое количество по сниженной цене, другая решила придерживаться первоначальной цене и просто продавать все, что им остается.

Так, поскольку существует, наверное, никакой разницы ... просто купить подешевле.

+644
Zimm3r 28 февр. 2011 г., 14:32:27

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

В чем реальная причина? Потому что это будет сделать двойные траты легче? Или это горнодобывающие предприятия, чтобы сделать корыстных добыча, когда они изредка найти блок с очень маленьким хэш? Или это может привести к более Форкс / требуют дополнительных подтверждений?

Я не думаю, что эта проблема повторяющиеся с другой вопрос, потому что трудности решает действия одного блока, в то время как накопленный труд принимает решение лучшая сеть.

+613
dudu 30 июн. 2013 г., 7:13:43

Вы могли бы просто записать значение bitcoind getblockcount куда-то и вижу, когда, что изменения, вызывая getblockcount неоднократно.

+612
Simon Adams 27 окт. 2018 г., 12:57:27

OP_PICK следует принимать N-й элемент из стека и принять его на вершине: для ввода хп ... Х2 Х1 х0
дает хп ... Х2 Х1 х0 хп

Я использовал его в некоторых сценариях, но я заметил некоторые странные поведения.

Например, используя средства в: http://webbtc.com/script входной скрипт 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 и сценарий выхода 19 OP_PICK выдает ошибку. Однако 18 OP_PICK работает. Для 25 элементов в стеке, он должен работать в обоих случаях. Проблема, кажется, не быть номером 19. Если я добавлю один вход
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 скрипты работают нормально.

Я пытался смотреть на исходный код, но в https://github.com/bitcoin/bitcoin/blob/ce56f5621a94dcc2159ebe57e43da727eab18e6c/src/script/interpreter.cpp по строке 551 я нахожу:

 дело OP_OVER:
{
 // (х1 -- х2 х1 х2 Х1)
 если (стек.размер() < 2)
 возвращение set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION);
 valtype ВЧ = stacktop(-2);
стек.push_back(ВЧ);
}
перерыв;

 дело OP_PICK:
 дело OP_ROLL:
{
 // (хп ... Х2 Х1 х0 Н - хп ... Х2 Х1 х0 хп)
 // (хп ... Х2 Х1 х0 Н - ... Х2 Х1 х0 хп)
 если (стек.размер() < 2)
 возвращение set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION);
 инт Н = CScriptNum(stacktop(-1), fRequireMinimal).метода getint();
popstack(стек);

Я не совсем уверен, как реализован OP_PICK это. Может кто-нибудь указать мне на код для OP_PICK или объяснить ошибки?

+594
Fernando Murrieta 4 сент. 2012 г., 23:43:03

Может ли быть, что результаты изображены в listfunds не имеет достаточного подтверждения? Может быть, вы получили их после того, как вы закрыли канал и C-молния не позволит вам использовать их прямо сейчас. Не могли бы вы проверить еще раз?

+432
Wiktor Gancarz 2 мая 2017 г., 1:45:15

Я занят созданием CryptoNote на основе альткоины для моего клиента, чтобы использовать в их паб. Он хотел бы, чтобы он довольно сильно premined.

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

+47
Maharshi Naik 20 сент. 2018 г., 5:30:03

Во-первых, если вы хотите узнать, как устроена сырьевой сделки, вы должны действительно пойти на этот вопрос: Искупление сырьевой сделки пошаговый пример требуется

Во-вторых, tx_in нужен outpoint_hash, который является хэш предыдущей транзакции вы тратите от.

В-третьих, вы никогда не должны, когда-либо кодировать ваш закрытый ключ в любой части транзакции, как вы делали в tx_in["письмо"]. Что должно остаться на защищенном устройстве, и вам необходимо, что для того, чтобы генерировать подпись.

В-четвертых, tx_in["письмо"] должен быть один и тот же сценарий из oupoint (хэш-индекса). Особенности языка скрипт, который кодируется в hex (76a914...88ac) ОП-коды, вы должны изучить (см. ссылку выше).

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

Я думаю, вы найдете его легче понять, используя немного более стандартная библиотека Python как pycoin (https://github.com/richardkiss/pycoin) или pybitcoin (https://github.com/blockstack/pybitcoin)

+38
Katrinnen 22 нояб. 2018 г., 14:31:49

У меня есть биткоин, связанные с кошельком, что мне теперь перенос с сервера на внешние накопители для резервного копирования. Насколько я знаю, все, что мне нужно сделать, это скопировать кошелек.DAT-файл на внешнем накопителе, а я хороший (учитывая, что я не буду делать никаких сделок в обозримом будущем).

Мой вопрос: когда я перееду в бумажник.DAT-файл, как я могу проверить --без скачивания цепочки блоков -- баланс, связанный с ним, чтобы убедиться, что все хорошо?

+30
Tdm 11 мая 2010 г., 0:47:35

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

Это полезно, чтобы проверить все значения окказиональной, поскольку, если вы не проверить их все, вам необходимо обновить extranonce чаще, хотя и не критично.

Хотя шахтеры прирастить свои специальные слова в подобных отношениях это не создает дублирования работы между шахтерами: есть несметное количество различий между кандидатом блокирует попытки шахтеров, главное, где их компенсацию. (И Объединенных шахтеров, которые выгодны в одном месте получить различные диапазоны extranonce назначен на бассейн). В результате никогда не возникает дублирования работы по шахтеров, если что-то ошеломляюще сломан.

Начиная с 0 и увеличиваясь до максимального значения-это просто удобный способ, чтобы изменить код, который не может дублировать и минимизирует обновления extranonce. Многие устройства назначение отдельных диапазонов для разных фишек, и так не просто инкремент в простое от 0 до 2^32-1 образом.

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

+18
Tony Rungsiri 25 авг. 2013 г., 3:15:41

Показать вопросы с тегом