Как я могу исправить мой чек-multisig Если-нибудь скрипт?

Я пытаюсь создать пользовательский скрипт с если/иначе и multisig операции в одной ветке. В настоящее время, таким образом мой скрипт выглядит так:

OP_IF
<файл pub1>
OP_CHECKSIG
OP_ELSE
OP_2
<pub2>
<pub3>
<pub4>
OP_3
OP_CHECKMULTISIG
OP_ENDIF

Я подсчитал в тестовом режиме адрес (2NF3yXy2MambEnJuY7eStLNcX92WSxytlvc) из этого примера сценария и послал testcoin там. Затем, я старался тратить деньги с Следующий сценарий сиг:

OP_0 <sig2> <sig3> <redeemScript>

Однако, при попытке транслировать сделки, я получаю сообщение об ошибке:

ПУШ ОШИБКА ТРАНЗАКЦИИ: 16: ОБЯЗАТЕЛЬНЫЕ-СКРИПТ-ПРОВЕРИТЬ-ФЛАГ-НЕ (ПОДПИСИ ДОЛЖНЫ БЫТЬ РАВНЫ НУЛЮ ДЛЯ НЕ УДАЛОСЬ ПРОВЕРИТЬ(МУЛЬТИ)ОПЕРАЦИИ СИГ)

Для справки, вот мой сырой сделки:

0100000001a492c575e44450a9be9ec4520ea365c53ea6f2018130d682ebf97bdf1b1a15ca01000000fd230100483045022100f502ecfd2b7bbb3e7092b320c568abe0d68dd7e613ab3efcb9e479b2641a73a502202b416bb86bce3d242084f8e24cbed76e5a2c5a0795a5bbd7f3366bf6d086ae4f0147304402201022c7548b55f3fbe3ddf427ad2ae5c6a776e2a63ee25376dca123d53d0f940f022041aa7967208ee8aee1811f02d6c7db0ad2872304133d46dbdd117e9bc09d8c97014c8f632102bc050e51811c2c454bf3487129b19d60b87f7a51fb434e6073def19dc55cf4b3ac67522102a906b96ea2df77aff1f84cc9949550f8d6b8f3db5acd625d12d70b6da4b94b1e2102046e854e69a49dd210dbf554f1e420893935b47123667a1834def9fe5d44358a210325db22e2aef6f143026500522431d4f348f911562316350852e6382da6a048a753ae68ffffffff01403fcb000000000017a91429b5c822f40f80cce593460927095ea6d8d720bc8700000000

Его сценарий сиг это:

00483045022100f502ecfd2b7bbb3e7092b320c568abe0d68dd7e613ab3efcb9e479b2641a73a502202b416bb86bce3d242084f8e24cbed76e5a2c5a0795a5bbd7f3366bf6d086ae4f0147304402201022c7548b55f3fbe3ddf427ad2ae5c6a776e2a63ee25376dca123d53d0f940f022041aa7967208ee8aee1811f02d6c7db0ad2872304133d46dbdd117e9bc09d8c97014c8f632102bc050e51811c2c454bf3487129b19d60b87f7a51fb434e6073def19dc55cf4b3ac67522102a906b96ea2df77aff1f84cc9949550f8d6b8f3db5acd625d12d70b6da4b94b1e2102046e854e69a49dd210dbf554f1e420893935b47123667a1834def9fe5d44358a210325db22e2aef6f143026500522431d4f348f911562316350852e6382da6a048a753ae68

Который декодирует для

0 3045022100f502ecfd2b7bbb3e7092b320c568abe0d68dd7e613ab3efcb9e479b2641a73a502202b416bb86bce3d242084f8e24cbed76e5a2c5a0795a5bbd7f3366bf6d086ae4f[ALL] 304402201022c7548b55f3fbe3ddf427ad2ae5c6a776e2a63ee25376dca123d53d0f940f022041aa7967208ee8aee1811f02d6c7db0ad2872304133d46dbdd117e9bc09d8c97[ALL] 632102bc050e51811c2c454bf3487129b19d60b87f7a51fb434e6073def19dc55cf4b3ac67522102a906b96ea2df77aff1f84cc9949550f8d6b8f3db5acd625d12d70b6da4b94b1e2102046e854e69a49dd210dbf554f1e420893935b47123667a1834def9fe5d44358a210325db22e2aef6f143026500522431d4f348f911562316350852e6382da6a048a753ae68

Последние строки отчетливо видно, как выкупить скрипт, который в свою очередь декодирует к этому:

OP_IF 02bc050e51811c2c454bf3487129b19d60b87f7a51fb434e6073def19dc55cf4b3 OP_ELSE OP_CHECKSIG 2 02a906b96ea2df77aff1f84cc9949550f8d6b8f3db5acd625d12d70b6da4b94b1e 02046e854e69a49dd210dbf554f1e420893935b47123667a1834def9fe5d44358a 0325db22e2aef6f143026500522431d4f348f911562316350852e6382da6a048a7 3 OP_CHECKMULTISIG OP_ENDIF

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

Большое спасибо заранее!

Редактировать: после рассмотрения Петра комментировать, но размещение дополнительных OP_0 сразу после двух подписей в скрипте сиг, он работал. Вот новый раскодированный скрипт сиг:

0 3045022100f502ecfd2b7bbb3e7092b320c568abe0d68dd7e613ab3efcb9e479b2641a73a502202b416bb86bce3d242084f8e24cbed76e5a2c5a0795a5bbd7f3366bf6d086ae4f[ALL] 304402201022c7548b55f3fbe3ddf427ad2ae5c6a776e2a63ee25376dca123d53d0f940f022041aa7967208ee8aee1811f02d6c7db0ad2872304133d46dbdd117e9bc09d8c97[ALL] 0 632102bc050e51811c2c454bf3487129b19d60b87f7a51fb434e6073def19dc55cf4b3ac67522102a906b96ea2df77aff1f84cc9949550f8d6b8f3db5acd625d12d70b6da4b94b1e2102046e854e69a49dd210dbf554f1e420893935b47123667a1834def9fe5d44358a210325db22e2aef6f143026500522431d4f348f911562316350852e6382da6a048a753ae68

А вот ссылка на сделки: https://testnet.smartbit.com.au/tx/1894cb91fde60432e59d60f30de503e8b6fbe5d1756bbf0ef7302b57bf31d195

+650
Sara Flesh 29 окт. 2015 г., 14:15:44
19 ответов

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

Есть ли способы для меня приобрести другие монеты?

+940
user3807877 03 февр. '09 в 4:24

Кто-нибудь хранил исторические глубины рынка & тиковых данных с MtGox? Это есть в публичном доступе? Будет полезно, если ты бот.

+837
Renschia Maritz 7 янв. 2017 г., 9:10:18

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

Короткий вопрос

Что должен Base58Checked адрес для следующего открытого ключа?

0414C7AB38D5CC0A39B3BF5F970C572736904D40A5879BBB05BBE16911D7F35DD3E25525877587BF91EE801393FACDED26FAFA173E457F5961BA11F602CC08FE5A

Этот тест сайт говорит, что это должно быть 1vwTLMCesc1vijZbscYfnr7naV9MEy8ds, однако, когда я смотрю на логику ниже, я думаю, что это должно быть 11vwTLMCesc1vijZbscYfnr7naV9MEy8ds (уведомление второго ведущего)

Более подробную информацию

В этом цикле, значение numberToShorten уменьшает как мне выяснить, что такое ноль для последних нескольких раундов преобразования. (напр. "1" на значение "ноль", и "A" на остальные девять.

Следующий открытый ключ несжатом пример одного, который оставляет ноль для меня, при кодировании:

0414C7AB38D5CC0A39B3BF5F970C572736904D40A5879BBB05BBE16911D7F35DD3E25525877587BF91EE801393FACDED26FAFA173E457F5961BA11F602CC08FE5A

Вот мой код C#:

 общественности статической строки sBase58Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYzabcdefghijkmnopqrstuvwxyz";
 общественности статической строки EncodeBase58(типа BigInteger numberToShorten)
{
 // Предупреждение: остерегайтесь реализации bignumber, что зажим ведущей 0x00 байты, или добавить дополнительную 0х00 
 // количество байт для указания знак - код должен обрабатывать эти случаи грамотно, иначе вы можете генерировать действительное-просмотр
 // адресов, которые могут быть отправлены, но не могут быть потрачены из - за которых приведет к постоянной потере монет.)

 константный инт sizeWalletImportFormat = 51;
 Типа BigInteger base58AlphabetLength = (типа BigInteger)sBase58Alphabet.Длина;

 тип char[] результат = новый тип char[34];

 int я = 0;
 а в (итоге.Длина > я && numberToShorten >= 0)
 { 
 ВАР lNumberRemainder = типа BigInteger.Остаток(numberToShorten, base58AlphabetLength);
 результат[результат.Длина - 1 - я] = sBase58Alphabet[(инт)lNumberRemainder];

 если (я == 31 && numberToShorten == 0)
 Консоль.Метода WriteLine("нашел одного");

 //Консоли.Метода WriteLine("я =" + я);
 //Консоли.Метода WriteLine("numberToShorten=" + numberToShorten + " (разделить на 58, чтобы получить значение ниже)");
 //Консоли.Метода WriteLine("lNumberRemainder =" + lNumberRemainder + " (получить данную должность в Base58Array и добавить, что персонаж)");
 //Консоли.Метода WriteLine("результат =" + новая строка(результат));

 если (numberToShorten == 0)
{
 если (i != 33)
{
 // Отладка
 Консоль.Метода WriteLine("я =" + я);
перерыв;
}
перерыв;
 } 

 numberToShorten = numberToShorten / base58AlphabetLength;
я++;
}
 ВАР рэт = новая строка(результат, 33 - Я, результат.Длина - (33 - я));

 возврат рет;
}

 публичный статический DecodedBase58Result DecodeBase58(строка base58StringToExpand)
 { 
 DecodedBase58Result рэт = новый DecodedBase58Result();

 Типа BigInteger base58AlphabetLength = (типа BigInteger)sBase58Alphabet.Длина;

 Типа BigInteger numberToExtend = типа BigInteger.Ноль;
 ВАР charsToDecode = base58StringToExpand.ToCharArray();
 для (инт decodePosition = 0; decodePosition <= charsToDecode.Длина - 1; decodePosition++)
{
 голец sCurrentCharacter = charsToDecode[decodePosition];
 индекс инт = sBase58Alphabet.Метод indexOf(sCurrentCharacter);
 если (индекс == -1)
 бросить новое исключение("не в адрес base58," + sCurrentCharacter + " не является допустимым символом.");

 numberToExtend = numberToExtend * base58AlphabetLength;
 индекс numberToExtend = numberToExtend +;

 //Консоли.Метода WriteLine(" я = " + (base58StringToExpand.Длина - decodePosition));
 //Консоли.Метода WriteLine(" количество = " + numberToExtend);
 //Консоли.Метода WriteLine(" результат = " + рет);
}

 рет.Типа bigint = numberToExtend;
 возврат рет;
}

Усе посимвольно здания адрес Base58 ниже. Проблема лежит там, где я=32

я = 27
numberToShorten= 610398922 (разделить на 58, чтобы получить значение ниже)
lNumberRemainder = 20 (получить данную должность в Base58Array и добавить, что символ)
результат = MCesc1vijZbscYfnr7naV9MEy8dS

я = 28
numberToShorten= 10524119 (разделить на 58, чтобы получить значение ниже)
lNumberRemainder = 19 (получить данную должность в Base58Array и добавить, что символ)
результат = LMCesc1vijZbscYfnr7naV9MEy8dS

я = 29
numberToShorten= 181450 (разделить на 58, чтобы получить значение ниже)
lNumberRemainder = 26 (получить данную должность в Base58Array и добавить, что символ)
результат = TLMCesc1vijZbscYfnr7naV9MEy8dS

я = 30
numberToShorten= 3128 (разделить на 58, чтобы получить значение ниже)
lNumberRemainder = 54 (получить данную должность в Base58Array и добавить, что символ)
результат = wTLMCesc1vijZbscYfnr7naV9MEy8dS

я = 31
numberToShorten= 53 (разделить на 58, чтобы получить значение ниже)
lNumberRemainder = 53 (получить данную должность в Base58Array и добавить, что символ)
результат = vwTLMCesc1vijZbscYfnr7naV9MEy8dS

я = 32
numberToShorten= 0 (разделим на 58, чтобы получить значение ниже)
lNumberRemainder = 0 (место в Base58Array и добавить, что символ)
результат = 1vwTLMCesc1vijZbscYfnr7naV9MEy8ds

я = 33
numberToShorten= 0 (разделим на 58, чтобы получить значение ниже)
lNumberRemainder = 0 (место в Base58Array и добавить, что символ)
результат = 11vwTLMCesc1vijZbscYfnr7naV9MEy8ds
+826
alphazeta 23 апр. 2012 г., 3:01:54

Я сделал контакт через LocalBitcoins.com и собираюсь купить некоторые монеты с наличными. Продавец не проверенный, но как мы встретимся, это звучит хорошо:

  • Я показываю ему деньги.
  • Он перечисляет биткоины.
  • Мы ждем одного блока.
  • Я даю ему деньги.

Это достаточно безопасно, или есть все, что я должен заботиться о? Каких-либо афер известно?

Он просил использовать мой мобильный интернет, хотя (будет включить Wi-Fi точки доступа на смартфоне).

+729
avetixm 12 июн. 2013 г., 20:06:58

Вся информация предоставляется на https://www.mtgox.com/. Как вы можете видеть, это происходит очень медленно, последнее обновление было 8 Марта и следующее обновление должно прийти после 27 сентября.

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

Дело, вероятно, займет много месяцев (лет?) до выплаты произойдет. И тогда вы не должны ожидать много, чтобы вернуться.

+725
user253239 23 мар. 2010 г., 1:57:19

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

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

Будет ли биткоин-разработчиков использовать систему оповещения, чтобы предупредить эти узлы для модернизации?

+681
Erahh 19 февр. 2011 г., 13:19:10

Хэш относится к подписи, хэш, на который все передача данных, за исключением ввода скрипта помогут (если вы подписываете с флагом sighash другие, чем все).

Подпись хэш-это то, что подписано с ECDSA для получения подписи.

+538
zeFree 22 июн. 2015 г., 4:31:34

У меня есть несколько вопросов касательно программирования экономического Скрипты, Скрипты так что сэкономить пространство транзакций по сравнению с функционально те же сценарии, но с избыточностью, например, используя дважды один и тот же публичные ключи. Один пример из сценария, использованного для атомной своп в вики: https://en.bitcoin.it/wiki/Contract#Example_5:_Trading_across_chains

OP_IF 2 <ключ> ключ <Б> 2 OP_CHECKMULTISIGVERIFY OP_ELSE <клавиша B> OP_CHECKSIGVERIFY OP_SHA256 <хэш секретный X> OP_EQUALVERIFY OP_ENDIF

В скрипте выше открытого ключа для B в два раза, на которые ссылается. Но его можно переписать:

OP_SHA256 <хэш секретный X> OP_EQUAL OP_NOTIF <ключ> OP_CHECKSIGVERIFY OP_ENDIF <клавиша B> OP_CHECKSIG

Функционально это тот же скрипт, а не использовать открытый ключ Б в два раза и тем самым экономит пространство в сделке. Разница в том, как в scriptSig теперь должны быть снабжены подписями или секрет.

Кроме этого, есть что-нибудь с помощью скрипта, а не из Вики?

А насчет следующем примере:

OP_SHA256 <хэш секретный X> OP_EQUAL OP_IF <К2> OP_CHECKSIG OP_ELSE 2 <К1> <К2> <К3> 3 OP_CHECKMULTISIG OP_ENDIF

Это похоже на атомную выше своп, но сейчас там задействован посредник. Снова открытый ключ используется дважды. Но его можно переписать:

OP_SHA256 <хэш секретный X> OP_EQUAL 2 <к2> OP_ROT OP_IF OP_NIP OP_CHECKSIG OP_ELSE <К1> OP_SWAP <К3> OP_CHECKMULTISIG OP_ENDIF

Этот сценарий принимает тот же scriptSigs как раньше. Она включает в себя более двух опкодов (OP_SWAP и OP_NIP), которые в общей сложности два байта. Но это экономит 31 байт, используя только после того, как открытый ключ К2. Может быть, это не так читаемы, но ничего против использования этот сценарий по сравнению с первой?

Есть много подобных случаев я могу придумать, используя экзотические опкодов как OP_SWAP, OP_ROLL, и так далее. Но я хочу знать, если это действительно имеет смысл при создании сценариев, чтобы использовать их для экономии места сделки?

+518
adamse 8 апр. 2015 г., 8:49:32

что такое блок времени, чтобы получить мое подтверждение сделки? Мне все равно придется ждать 10+ минут, чтобы убедиться, что двойная тратить не произошло?

+497
Mr Mac 29 июл. 2012 г., 10:25:18

В частности, меня интересуют толстые клиенты с упрощенной подтверждения оплаты. Не нашли до сих пор, они вообще существуют? Почему есть POS мобильные кошельки, такие мало распространены, по сравнению с монетами военнопленных?

Спасибо заранее.

+465
Agnieska 25 янв. 2013 г., 4:13:28

Теперь вы можете купить все по всему миру https://all4btc.com/ (бывший https://bitspend.net/ )

Было бы неплохо, чтобы получить деньги теперь только в биткоинах.

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

  • Есть ли онлайн-банкинг программного обеспечения, где я могу настроить такой макрос?

  • что биткоин-программное обеспечение может быть полностью автоматизирован, чтобы купить на те или иные события?

  • в какой стране можно открыть такой банковский счет automatizeable?

+414
RinoTwo 11 авг. 2016 г., 11:30:55

Здесь (https://bitcoincore.org/en/2017/03/23/schnorr-signature-aggregation/) он говорит Шнорра заменяет алгоритма ECDSA, мы знаем, что по алгоритму ECDSA могут быть разбиты на квантовые компьютеры. Шнорра может быть разбито на вопрос-компьютеров тоже?

+382
Christopher Manning 5 мар. 2015 г., 23:38:02

Когда я делаю

litecoind getreceivedbyaddress LUiTUnmBLQ6mvCXk2YNxiU7cZQdty1pTov

Я вам

0.00000000

Я думаю, что это всегда будет 0.000, если адрес в ваш кошелек.дат. Один способ будет включить адреса бумажник.дат файл в litecoind каталоге и затем просто сделать

litecoind метода getbalance
+365
apporc 13 июн. 2019 г., 6:27:23

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

В частности, вот учебник Как создать два кошелька: онлайн и оффлайн. Затем вы можете перевести биткоины из интернет-кошелька в оффлайн кошелек.

http://docs.electrum.org/en/latest/coldstorage.html

Когда вы передаете биткоины обратно на электронный кошелек, создать сырье транзакции на интернет-кошелек, затем перейдите в оффлайн кошелек, чтобы его подписать, принести файл проводок обратно в онлайн кошелек на USB и транслировать его в сеть Bitcoin.

+323
Vijay Murthy 21 июн. 2019 г., 14:40:47

ОК, три фигуры вы заботитесь о здесь:

"msatoshi_total": 1600000,
"msatoshi_to_us": 1599884,
"their_channel_reserve_satoshis": 546,

У них 1600000 - 1599884 millisatoshis, т. е. 116. Но они должны держать по крайней мере 546 Сатоши резерва, т. е.. 546,000. Пока они этого не сделают, мы не позволим им тратить.

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

+310
tightasbzip2 5 апр. 2010 г., 23:58:45
  1. Убедитесь, что Java 7 установлена на ваш сервер Ubuntu

    • суда apt-получить обновление && судо apt-получить установку пакеты OpenJDK-7-JRE и нано зип
  2. Скачать последний НСП релиз и проверить хеш-сумму, например:

    • с wget https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.1.6.zip

    • sha256sum nxt-client-1.1.6.zip

    • Сравниваем с допустимым хэш-нашли на https://nxtforum.org/nrs-releases/nrs-v1-1-6/

    • разархивируйте nxt-client-1.1.6.zip

    • компакт-диск с NXT
  3. Изменения в NXT свойства (например, порт), редактировать в NXT-по умолчанию.свойства

    • нано конф/NXT по-умолчанию.свойства (сочетание клавиш Ctrl+O, чтобы сохранить, нажмите Ctrl+X, чтобы выйти.)
  4. Запуск в NXT

    • ./run.sh и доступ через браузер, IP-адрес:ХХХХ
+168
Maratjuman 26 июл. 2013 г., 5:25:16

Вам нужно использовать специальный биткоин кошелек. Я не буду рекомендовать какой-то конкретный, но вот список:

https://www.bitcoincash.org/#wallets

Используйте на свой страх и риск.

+154
jlunavtgrad 1 февр. 2012 г., 9:42:18

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

Будучи заинтересованным в criptocurrencies, я столкнулась с непростым выбором: какой валюте я хочу использовать? Будучи невежественным дураком и не желают воспитывать себя о том, как криптовалюты работы

Как выбрать криптовалюта для использования (и поддержки)?

+54
Abhilaaj 8 сент. 2011 г., 20:08:48

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