Show Posts
|
Pages: « 1 2 3 [4] 5 6 »
|
Seems to me that I know new way to attack & flood bitcoin network. The last attacks were based on filling the blocks with transactions. This is because of limit of block size. (Consensus rule that the blocksize is below 1mb) But there are another limits for block which can not be changed without hard fork. There is a limit of SIGOPS in transactions included to a block.consensus.h /** The maximum allowed size for a serialized block, in bytes (network rule) */ static const unsigned int MAX_BLOCK_SIZE = 1000000; /** The maximum allowed number of signature check operations in a block (network rule) */ static const unsigned int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
So, MAX_BLOCK_SIGOPS is 20000 How does the client calculate the number of SIGOPS? Let us look to the sources. main.cpp if (fStrictPayToScriptHash) { // Add in sigops done by pay-to-script-hash inputs; // this is to prevent a "rogue miner" from creating // an incredibly-expensive-to-validate block. nSigOps += GetP2SHSigOpCount(tx, view); if (nSigOps > MAX_BLOCK_SIGOPS) return state.DoS(100, error("ConnectBlock(): too many sigops"), REJECT_INVALID, "bad-blk-sigops"); }
Miner node includes transactions to a block while the nSigOps not exceeds 20000. The block with nSigOps > 20000 will be invalid (consensus rule) and will be rejected by all other nodes. Now let us look the transaction https://blockchain.info/tx/6766e75d6166a0a14bd814921d0f903285e15779e648d7ec52a4f7c0868ec07dand calculate the number of SIGOPS in it All input scripts are redeeming from p2sh-outputs with the inner scripts build on the same template: OP_0 OP_IF OP_15 OP_CHECKMULTISIG OP_ENDIF OP_SMALLINTEGER
The number of SIGOPS in this small script is 15 (this is maximum value to pass IsStandard) And the total number of SIGOPS in 6766e75d6166a0a14bd814921d0f903285e15779e648d7ec52a4f7c0868ec07d is 15 * 15 = 225So, the maximum number of such transactions in one block is only 88 (because floor ( 20000 / 225 ) = 88) And inserting 88 such transactions in one block leaves only 200 SIGOPS for regular transactions. Which leaves a room only for ~100 transactions in block for other persons The attack vector should be: 1) create and fund a big number of such p2sh-utxo 2) redeem them to OP_RETURN or to regular output Each such transaction costs 0.00045 for dishonest attacker (can be even less) 88 transactions (attack one block) will cost only 0.0396 BTC Daily attack 5.7024 BTC - not a big deal Wanna hire me for this dirty job?
|
|
|
Is it possible to synchronize local blockchain (blk***.dat files) downloading only blocks from peer(s) but ignore all incoming inv/tx messages?
May be we need a command-line parameter in Bitcoin Core to do it?
|
|
|
Spam attack started 2-3 weeks ago is over. Today all dust addresses have been cleaned by dust-collectors Now I see new attempt to flood the network with 1-satoshi outputs on my radars e02e835c7649dafabd39d5b917e4befec1bc559829056cb3101b84e874ece787:427 0.00000001 16kXBahWnydJakZLjBeZLiJugLdFcgWEPZ 48b55293769a816416286d9341ce044dc6302513d4198330104e028b7e0c3324:73 0.00000001 1DJy7PpWbYJaXzaEXTx4onYEiLMGeGfAD2 0ce87560f83fe0357213be0673a8def51b025b45c5c3f31aa4bdb9d329e93f8f:62 0.00000001 18v2mXSfvGuTFeHfXNQZnhT3AFRuZ9VfQW a5271a1f1f79f44d4698e5b17dc524aba8e1c50a4623649659c5de94f315ed9c:0 0.00000001 16kkcN7JfNk7HHojLECH2XjkfbzbpTn7Bf 76821f1bcf0e17a68312c2815ac38571b3afc7b2a10644801ced414a80f26ac7:31 0.00000001 1AbamLM19UEWuzGhG69vwT9MVpiundSXMF 76821f1bcf0e17a68312c2815ac38571b3afc7b2a10644801ced414a80f26ac7:62 0.00000001 1DB2xRXRm5GGgzrG53WS8fjSMLia96s5V1 2edbd9adf30a68d8e9e1deee08fc3a48c6cd13da90174e59ac0f753aac8fc046:65 0.00000001 1KykLZguCHxZ5WpZrWWPhzeZJ9a4yVb7CW 0cd0461b2c567fc53178da70a20ef78d53821f0569b3155afd711ed97e28f100:42 0.00000001 1KYkWtYFV6mij4ZNRFzeQxa4MAJxEQbBQp 5f27fab24f3553ee08eff2b6e76e136ad7d92cc41f7c376a4bd9c225f57b626a:53 0.00000001 1DB2xRXRm5GGgzrG53WS8fjSMLia96s5V1 5f27fab24f3553ee08eff2b6e76e136ad7d92cc41f7c376a4bd9c225f57b626a:65 0.00000001 1egtgBEiggZk7N7o4NwMY6c8MffyWiZgK 5370ae3fb1c985b17d68d15a46e59fbde16107333c35d2081cf0d3fbe26c0717:7 0.00000001 1PVCwuyCPYBN4Q5D1iCUZm4jsjkeR747BW dc3c51d970c1e131b04d684e0122b61fa0914363f4b5636db48f873384d007db:0 0.00000001 1Dx1gbLLK4GrFumxiUTSqhKVj5kzv4HVna dc3c51d970c1e131b04d684e0122b61fa0914363f4b5636db48f873384d007db:27 0.00000001 1371Eqo1zues6eFVeHVzjPRYgGpZQCHWk7 af8a6ee44ddc224ddefea77bfec1612a8d1468bb410f256c4fdeca0fb8e9a8b2:28 0.00000001 1GgG93uVi6yBEsHZf9rzT5C2mU65dQZ4AR 6c6cd4ad154b84b8f4a21174c844a65890c968f12b504c466425f44ed5beecaf:66 0.00000001 18TNv91HhH279rfGYchJQVEjmMERed2sEm
Fortunately, Bitcoin network is tolerant to such small outputs. Miners treat such transactions as non-standard and do not confirm them. Most nodes do not relay them also. A word to spammer: may I ask you to send at least 1000 satoshi per output?
|
|
|
https://blockchain.info/tx/64bd61eedfef518e995c421bbd9dab99553a7787f74f1afddf1c33d1b947ec41(someone sent this tx, not me) 0000000000: 01 00 00 00 01 29 F7 8A │ 3B 7F 2D C9 00 A1 8E 76 ☺ ☺)≈è;⌂-╔ íÄv 0000000010: 04 B7 3C F4 AA CE EB 83 │ 8B E7 14 77 A0 06 0D AF ♦╖<⌠¬╬δâïτ¶wá♠♪» 0000000020: CC B3 36 C2 90 00 00 00 │ 00 8C 49 30 46 02 21 00 ╠│6┬É îI0F☻! 0000000030: D0 7D A3 AC F5 1A 5D 3F │ 7B 7D B4 E2 92 75 E4 9B ╨}ú¼⌡→]?{}┤ΓÆuΣ¢ 0000000040: 41 27 61 8D 56 3E 19 2B │ B4 E5 32 A2 CB D0 95 38 A'aìV>↓+┤σ2ó╦╨ò8 0000000050: 02 21 00 E0 50 77 57 8E │ DD 39 25 6C B1 4C 47 EC ☻! αPwWÄ▌9%l▒LG∞ 0000000060: D2 28 FB 2B FA 02 FE 1C │ 00 C3 38 FF 0B 6F 7F CD ╥(√+·☻■∟ ├8 ♂o⌂═ 0000000070: 71 91 FC 01 41 04 C8 5E │ 30 8F E6 64 BF 2B 17 27 qæⁿ☺A♦╚^0ŵd┐+↨' 0000000080: AD D2 C8 78 85 60 3D 56 │ 4D BF 77 C4 7B 26 63 5C ¡╥╚xà`=VM┐w─{&c\ 0000000090: 9F 87 CE B7 E1 36 60 8E │ 1D 6D D7 47 29 2D 4C 2A ƒç╬╖ß6`Ä↔m╫G)-L* 00000000A0: 42 39 38 E0 41 8B E0 96 │ 75 AA AE 02 6F D4 74 C1 B98αAïαûu¬«☻o╘t┴ 00000000B0: DA 8A 0C 1F F5 F5 FF FF │ FF FF 02 47 2C 00 00 00 ┌è♀▼⌡⌡ ☻G, 00000000C0: 00 00 00 19 76 A9 14 F1 │ DB BF FA 86 DC D1 79 55 ↓v⌐¶±█┐·å▄╤yU 00000000D0: 29 5E FC 49 48 06 71 E3 │ 6E A1 BE 88 AC E8 03 00 )^ⁿIH♠qπní╛ê¼Φ♥ 00000000E0: 00 00 00 00 00 43 41 66 │ 69 6E 64 20 61 20 70 72 CAfind a pr 00000000F0: 69 76 61 74 65 20 6B 65 │ 79 20 6D 61 74 63 68 20 ivate key match 0000000100: 6F 66 20 74 68 69 73 20 │ 70 75 62 6B 65 79 20 26 of this pubkey & 0000000110: 20 63 6C 61 69 6D 20 74 │ 68 65 20 31 30 30 30 20 claim the 1000 0000000120: 73 61 74 6F 73 68 69 73 │ AC 00 00 00 00 satoshis¼
OK, there is no private key for these bytes, because public keys start with 0x04, 0x03 and 0x02
|
|
|
Короче так. Я тут подумал - ну вы что, не видели сайтов облачного майнинга? Вам охота опять продираться сквозь дебри английского языка, регистрировать аккаунты и считать стоимость гигахешей и электричества? Не охота. И мне не охота. В общем, облачный майнинг есть, а сайта нет. Просто переводите мне деньги, я каждую пятницу возвращаю вам обратно 10% от внесенной суммы. Итого за 2.5 месяца вы окупаете вложения, а дальше только в плюс. Первым 100 участникам - бонус 2% (то есть получать будете не 10%, а 12% каждую пятницу)
И конкурс. Кто из оплативших участие придумает лучшее название - тому еще 5%
|
|
|
Вообще-то это не должно стать новостью для вас. https://www.btcguild.com/BTC Guild will be shutting down its mining servers on June 30th, 2015 at 23:59 UTC. Users will still be able to log in and retrieve their history (CSV exports on the settings page) and request withdrawals until September 30, 2015. Особенно для тех, кто там майнил или майнит. Я просто случайно заметил, что блок https://blockchain.info/block/000000000000000015d4e533c02c8a689a0e33caa7fe9239c942a7d09279addfсмайнила именно гильдия. Значит майнеры не торопятся переключаться на другие пулы. Вот решил предупредить вас. Вдруг кто не знал или забыл... Переключайте свои девайсы, а то начнете впустую молотить.
|
|
|
... всё что вы не знали, но боялись спросить Не знаю какой раздел форума подходит под обсуждение этой тематики. Это ж не бизнес, не трейдинг, не новости (там всё перепосты с сайтов), не новички (там всё больше про то как 100 сатош на кране заработать). В разделе "форки" в основном говнокойны обсуждают... Так что тут выложу. Я лично постараюсь беспристрастно описывать ситуацию. Потому что считаю, что могу быть беспристрастным - я вижу одинаковое будущее у обоих подходов к развитию биткойна. Поэтому не буду пытаться "давить своим мнением" и убеждать в правоте тех, кто "за" увеличение размера или "против". И вас к тому же призываю. В общем, обратите внимание на BIP-100 http://www.reddit.com/r/Bitcoin/comments/39xn3v/bip_100_draft_v081_changes_32mb_explicit_cap/(там же есть ссылка на пдф) Мне лень читать все эти тёрки на английском языке и разбираться в авторитетности собеседников. Недостаточно хорошо знаю английский. Но в общем, уже как при вводе BIP-16 (а это было достаточно революционное изменение протокола) майнеры могут "проголосовать" за то или иное предложение внеся некую строку /BV8000000/ в coinbase-транзакцию. Когда и если таких строк будет много - будет понятно чего хочет биткойн-коммьюнити. Вернее, голос не у тех майнеров, которые с асиками. А у владельцев пулов (ха-ха, а вы думали что что-то решаете?) Легкие клиенты и просто ноды особо не у дел - от них в "голосовании" ничего не зависит. Короче, f2pool уже проголосовал: https://blockchain.info/tx/002607f6814f7e009533b773186429c2335f6f5515594c371906aa1ccb0ec07bUpdate: модераторы перенесли это в раздел "Форки" (я публиковал в "Кодеры"). ну, я спорить не стану, хотя тут помойка по-моему.
|
|
|
Тут в нескольких местах уже звучал вопрос - как данные запихнуть в блокчейн на "вечное хранение".
Я вот тут подумал, может быть тулзу создать для этого удобную? Теоретически, это можно сделать в веб-интерфейсе, то есть сайт. Но сайт пока меня делать не прикалывает, можно поэкспериментировать в "ручном" режиме.
Алгоритм мне видится примерно следующий: Вы (пользователь) даете мне (сервису) какой-то текст. Можно файл любого иного формата, но для начала остановимся на тексте. Я вам в ответ сообщаю а) адрес в формате 3xxxx (это p2sh-адрес) б) транзакцию перевода с этого адреса на мой личный адрес небольшой комиссии (ну не бесплатно же я работаю, да?)
Вам надо будет самостоятельно отправить на этот адрес со своего аккаунта сумму равную примерно 0.00001 за килобайт + моя комиссия После чего отправить эту транзакцию, которую я вам предоставил. Вы заранее можете увидеть, что бинарное представление этой транзакции содержит ваш текст. Если вы чем-то недовольны - просто не пополняете адрес 3xxxx и не выводите. То есть вы по сути ничем не рискуете.
Рискую только я - сделаю работу, а она не будет оплачена
UPD: не, ни хрена не получится. для транзакции вывода нужно заранее знать инпут фундинг-транзакции. То есть сперва надо пополнить адрес 3ххххх, а только потом я смогу создать транзакцию записывающую ваш текст в блокчейн. Но в общем, если хотите поэкспериментировать - обращайтесь
|
|
|
https://blockchain.info/tx/455e64c2ffaf40ba8b1d2f0443f7ddb880bd2251431480a31faa7009041e60d2multisig 2-of-3 (two signatures of three persons) where each 'person' - is also multiisig 1-of-2 ? this is funny. "52" // 2 "6b" // toalt "51" "210269fdfceccb4b7a2fac99bde52e1a23b4b257a16ddbc91e17ebbe1299c9bf8a80" "2103bdbd61f48e79213ff7c05a6a9a7027642911170346c05c10e2fa35a848e7c504" "52ae" "636c8c6b68" // if { fromalt 1sub toalt } "51" "2103e2e957c8ea1b0c56ec8820b10b6b9ca76074da6a176f0fae9a2d3975f14d2563" "2102d7ebe6b06b97d866efe5c7650ccf65fb4f17ffe69b10c0333e9421b8d6d5886c" "52ae" "636c8c6b68" // if { fromalt 1sub toalt } "51" "2103a36b65fd0a7f928cd96a399a29cd31988c0e29f6e696d0be9d58f57c02021833" "21029fb6694ccd1b075c1abe6147eac32971bc099db052ef5370124625ecddc8577f" "52ae" "636c8c6b68" // if { fromalt 1sub toalt } "6c91" // fromalt op_not
|
|
|
Хочу создать отдельную тему с конкретным вопросом:
Какова минимальная цена биткойна при которой сеть может существовать в сегодняшних условиях?
Объясню конкретику. Факт того, что 5 лет назад биткойн стоил $0.01 и кто-то купил пару пицц за 10килобиткойнов я не считаю аргументом. Сейчас у майнеров хеш-мощностей ~350 петахеш/секунду - до хуя короче. Можно утверждать, что сейчас никто биткойн на видеокартах и процах не майнит, а если кто-то и запускает - этим можно пренебречь.
Представим себе, что биткойн уже месяц колеблется около $0.01 Сеть работает, транзакции проходят, ну интервал можду блоками может быть не 10 минут, но в общем в пределах разумного. Что это значит? То что биткойн майнится на халявной электроэнергии, а мощность сети значительно меньше сегодняшней. Потому что найти халявные розетки для 350 петахеш нереально - воровать на работе электроэнергию видеокартой это одно, а ферму не спрячешь. Значит основная часть этих сегодняшних майнеров не работает. Либо сломана, либо просто выключена из розетки и пылится на складе. Ну либо майнит другую sha256-валюту
Сломать такое количество майнеров - это вряд ли. Другая крипта? Сомневась с чего бы ей взлететь, если все-таки все на биток ориентированы.
Вопрос: если у вас выключенная ферма майнеров, которые не окупают электроэнергию, а биткойн стоит $0.01 - то как вам заработать на хлеб насущный? Допустим, что битков и баксов у вас нет. Ну, точнее есть в каком-то непринципиальном количестве, ну скажем на 1 сутки оплаты электричества для работы фермы.
Действия могут быть разные. Можно просто ничего не делать, ждать у моря погоды, когда курс вырастет. Но рассматриваем "активную стратегию". Например делаем атаку 51% даблспендинга. Заводим свои битки на биржу, продаем их, выводим прибыль в баксы на счет в банке. Потом включаем свою ферму и начинаем майнить не от последнего блока, а от позавчерашнего. Наша майнинговая ферма быстро "догоняет" по сложности и создает альтернативную цепочку блоков и в какой-то момент мы публикуем в сеть эту цепочку блоков. В результате - у нас на биткойн-балансе награды от нескольких сотен последних блоков (так как мы майнили в одно рыло), плюс те битки которые мы продали на бирже (но даблспенднули), плюс баксы в банке. И пассивов - счет за электроэнергию, бан на бирже и вопли в форуме. При определеных раскладах этот финт может быть выгоден. И может быть повторен несколько раз.
Я веду к тому, что $0.01 не может быть ценой биткойна, так как обязательно кто-нибудь такой фокус провернет. Это школьное "доказательство от противного".
И возвращаюсь к заглавному вопросу: Если сегодня $220 и биткойн существует, а по моим выкладкам $0.01 - существовать не может - то где-то на этом отрезке есть "граница минимальной цены". Какая она на ваш взгляд?
|
|
|
I want to create a list of bitcoin services which generate and use p2sh addresses (addresses started with "3")
1. Bitstamp exchange use these as users deposit addresses. What are m,n in m-of-n multisigs and who holds privkeys? 2. Counterparty? (not sure) 3. ? 4. ?
Do you know such services?
|
|
|
Just wondering who is creating these transactions: https://blockchain.info/tx/db195e4bfcfb3cc6d47f8d6231cb59e543c31e01d196d557457bca0fa5c1aba0 ... 20402 byteshttps://blockchain.info/tx/24560b7fbd172ff0e95dc8cc0af88a332e3be016a7f2aa35e432fd8beac3ed46 ... 63433 byteshttps://blockchain.info/tx/ce8c8d8154546bdbe28ff10dc4044a63cf11758839362c94dc6b9a99d55af3e5 ... 56905 bytesand so on. These transactions store some text data in blockchain with P2SH technique. It is not too difficult to create a tool to get data as a plain text from these transactions (but I do not have interest to do it) You can download them as binary and view in hex editor. You will see something like: 0000000140: 20 20 20 20 20 20 20 20 │ 00 49 00 59 6F 75 6E 67 I Young 0000000150: 20 41 6D 65 72 69 63 61 │ 6E 73 20 77 68 6F 20 6C Americans who l 0000000160: 65 61 76 65 20 74 68 65 │ 69 72 20 67 72 65 61 74 eave their great 0000000170: 20 62 69 67 20 68 6F 6D │ 6F 67 65 6E 65 6F 75 73 big homogeneous 0000000180: 20 63 6F 75 6E 74 72 79 │ 20 61 6E 64 20 76 69 73 country and vis 0000000190: 69 74 00 45 00 73 6F 6D │ 65 20 6F 74 68 65 72 20 it E some other 00000001A0: 70 61 72 74 20 6F 66 20 │ 74 68 65 20 77 6F 72 6C part of the worl 00000001B0: 64 20 74 79 70 69 63 61 │ 6C 6C 79 20 67 6F 20 74 d typically go t 00000001C0: 68 72 6F 75 67 68 20 73 │ 65 76 65 72 61 6C 20 73 hrough several s 00000001D0: 74 61 67 65 73 20 6F 66 │ 00 45 00 63 75 6C 74 75 tages of E cultu 00000001E0: 72 65 20 73 68 6F 63 6B │ 3A 20 66 69 72 73 74 2C re shock: first, 00000001F0: 20 64 75 6D 62 20 77 69 │ 64 65 2D 65 79 65 64 20 dumb wide-eyed 0000000200: 61 73 74 6F 6E 69 73 68 │ 6D 65 6E 74 2E 20 54 68 astonishment. Th 0000000210: 65 6E 20 61 20 74 65 6E │ 74 61 74 69 76 65 00 44 en a tentative D 0000000220: 00 65 6E 67 61 67 65 6D │ 65 6E 74 20 77 69 74 68 engagement with 0000000230: 20 74 68 65 20 6E 65 77 │ 20 63 6F 75 6E 74 72 79 the new country 0000000240: 27 73 20 6D 61 6E 6E 65 │ 72 73 2C 20 63 75 69 73 's manners, cuis 0000000250: 69 6E 65 2C 20 70 75 62 │ 6C 69 63 20 74 72 61 6E ine, public tran 0000000260: 73 69 74 00 46 00 73 79 │ 73 74 65 6D 73 20 61 6E sit F systems an 0000000270: 64 20 74 6F 69 6C 65 74 │ 73 2C 20 6C 65 61 64 69 d toilets, leadi 0000000280: 6E 67 20 74 6F 20 61 20 │ 62 72 69 65 66 20 70 65 ng to a brief pe 0000000290: 72 69 6F 64 20 6F 66 20 │ 66 61 74 75 6F 75 73 20 riod of fatuous 00000002A0: 63 6F 6E 66 69 64 65 6E │ 63 65 00 4A 00 74 68 61 confidence J tha 00000002B0: 74 20 74 68 65 79 20 61 │ 72 65 20 69 6E 73 74 61 t they are insta 00000002C0: 6E 74 20 65 78 70 65 72 │ 74 73 20 6F 6E 20 74 68 nt experts on th 00000002D0: 65 20 6E 65 77 20 63 6F │ 75 6E 74 72 79 2E 20 41 e new country. A 00000002E0: 73 20 74 68 65 20 76 69 │ 73 69 74 20 77 65 61 72 s the visit wear 00000002F0: 73 20 6F 6E 2C 00 47 00 │ 68 6F 6D 65 73 69 63 6B s on, G homesick 0000000300: 6E 65 73 73 20 62 65 67 │ 69 6E 73 20 74 6F 20 73 ness begins to s 0000000310: 65 74 20 69 6E 2C 20 61 │ 6E 64 20 74 68 65 20 74 et in, and the t 0000000320: 72 61 76 65 6C 65 72 20 │ 62 65 67 69 6E 73 20 74 raveler begins t 0000000330: 6F 20 61 70 70 72 65 63 │ 69 61 74 65 2C 00 49 00 o appreciate, I
I am just wondering - what a nice blockchain flooding for very small cost
|
|
|
Хочется странного Арендовать скрипт-майнер для вновь созданного альткойна. Нужно же кому-нибудь блоки создавать, да? Майнить на процессоре - дурной тон, верно? У меня мысль возникла - а что если арендовать у кого-то мощности? Вы майните мой форк, а я с вами расплачиваюсь биткойнами. (Я могу, конечно, предложить свои говнокойны, но вы вряд ли захотите получить их в качестве оплаты) Я вообще-то в этом полный ноль пока, хочу разобраться как все работает. Планирую создать альткойн на http://coincreator.net (еще пока не создал, присматриваюсь) Ну поставлю какой-нибудь клиент на виртуальный сервер где-нибудь в интернете. Что дальше-то? Я во всяких стратумах и гетворках ни в зуб ногой - не на процессоре же мне его майнить в одно рыло по первости? Но готов платить за то, что ваш асик будет подключен к моему клиенту (расскажете как это делать и что мне с моей стороны надо сделать) Срок - от месяца и больше. Очень вероятно что до полугода. Если мой говнофорк наберет какую-то критическую массу - то мне уже это сотрудничество не очень нужно будет. Если не наберет - буду платить, пока мы не прекратим сотрудничество. Естественно, оплата должна будет покрывать электроэнергию, иначе вы просто выключаете асик и мне машете ручкой. Поэтому я готов рассматривать привязку цены к баксу или рублю. Расплачиваться битками - тоже не обязательно, если вы любите яндекс-деньги или вебмани - можно ими. Конечно, мне бы хотелось зависеть не от одного поставщика мощностей, а от нескольких. Но я думаю, вам не интересно будет одну свою видюху "сдавать в аренду", а мне геморно будет с десятком "поставщиков" ежедневно расплачиваться. Я буду благодарен за любые комментарии к данному топику. Ну и предлагайте свои услуги. Железный асик меня не интересует даже забесплатно - мне его ставить негде.
|
|
|
Just received this transaction contains the text message in unspendable output https://blockchain.info/tx/f9b6342b21f354a679f4761572c117fd807a52164fb6297c4d5a0f1b9d0224a3the message is: dropbox.com/s/oaib1ejwtpzh7aq/ghost_in_the_shell.jpg There are some other outputs with encoded messages: 9011ed0f3c4fe86c506385c562a1f4a07721c44fb60e00931bdd6e32a8b541b4:1 b29840d85edf945d077525486c03ebeb89cb66a03be143dd7d7e34a9ec875027:1 491808082a96f7c50c0a1c8534c800e49ade998d13be6382f8a7011469397616:1 I am too lazy to check them. I want just to say that using multisig outputs for storing data is not a good way.
|
|
|
Why IsValidSignatureEncoding (const std::vector<unsigned char> &sig) does not check R & S sizes? My suggestion below in blue color
bool static IsValidSignatureEncoding(const std::vector<unsigned char> &sig) { // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [ S] [sighash] // * total-length: 1-byte length descriptor of everything that follows, // excluding the sighash byte. // * R-length: 1-byte length descriptor of the R value that follows. // * R: arbitrary-length big-endian encoded R value. It must use the shortest // possible encoding for a positive integers (which means no null bytes at // the start, except a single one when the next byte has its highest bit set). // * S-length: 1-byte length descriptor of the S value that follows. // * S: arbitrary-length big-endian encoded S value. The same rules apply. // * sighash: 1-byte value indicating what data is hashed (not part of the DER // signature)
// Minimum and maximum size constraints. if (sig.size() < 9) return false; if (sig.size() > 73) return false;
// A signature is of type 0x30 (compound). if (sig[0] != 0x30) return false;
// Make sure the length covers the entire signature. if (sig[1] != sig.size() - 3) return false;
// Extract the length of the R element. unsigned int lenR = sig[3];
// Make sure the length of the S element is still inside the signature. if (5 + lenR >= sig.size()) return false;
// Extract the length of the S element. unsigned int lenS = sig[5 + lenR];
// Verify that the length of the signature matches the sum of the length // of the elements. if ((size_t)(lenR + lenS + 7) != sig.size()) return false; // Check whether the R element is an integer. if (sig[2] != 0x02) return false;
// Zero-length integers are not allowed for R. if (lenR == 0) return false;
// R can not be wider than 32 bytes if (lenR > 33 || (lenR==33 && sig[4] != 0x00)) return false;
// Negative numbers are not allowed for R. if (sig[4] & 0x80) return false;
// Null bytes at the start of R are not allowed, unless R would // otherwise be interpreted as a negative number. if ((sig[4] == 0x00) && lenR > 1 && !(sig[5] & 0x80)) return false;
// Check whether the S element is an integer. if (sig[lenR + 4] != 0x02) return false;
// Zero-length integers are not allowed for S. if (lenS == 0) return false;
// S can not be wider than 32 bytes if (lenS > 33 || (lenS==33 && sig[lenR + 6] != 0x00)) return false;
// Negative numbers are not allowed for S. if (sig[lenR + 6] & 0x80) return false;
// Null bytes at the start of S are not allowed, unless S would otherwise be // interpreted as a negative number. if (lenS > 1 && (sig[lenR + 6] == 0x00) && !(sig[lenR + 7] & 0x80)) return false;
return true; }
|
|
|
Задумался над вопросом - а не создать ли еще один говнофорк? Самому заниматься лень, да и знаний не хватает во всех областях. Интересно, сколько будет стоить вариант "под ключ", если уже есть прототип? Допустим, берём CLAM https://bitcointalk.org/index.php?topic=623147.0Нужно: 1. Исходный клиент в сорцах (любые варианты изменений приветствуются, но не являются необходимыми) 2. Клиент (бинарники) под винды x64/x32 3. Клиента под Linux (можно не сразу) OSX (можно не сразу) 4. Сайт (англоязычный, хотя бы на начальном этапе простенький) 5. Премайн раскидывается по существующим адресам 6. Какая-то часть премайна раздается с сайта кранами. Доступ к сайту/гитхабу после разработки должен быть только у меня. Компиляция клиента из сорцов с подробнейшим руководством как и откуда всё ставить Начиная со свежепоставленной винды - типа "сперва идем на qt-project.org, там кликаем download, ставим Qt, потом идем туда-то, качаем буст, запускаем то-то..." Про торговлю на бирже тоже хорошо было бы задуматься сразу, но... рано об этом думать.
|
|
|
|