Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
18 мая 2014, 1:01:51 PM   # 1
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я пытаюсь понять внутреннюю работу транзакции, поэтому я выполнил следующую команду против bitcoind
Код:
bitcoind getrawtransaction fd3d049c9e75f96f9786b965b77b99fa0e7d39fa95e0b126682658299e71ac70 1

Вот ответ:

Код:
{
    "наговор" : "0100000001359815939bba9941e3bc0f9ffedea4e6b1c5c1885250b54cc11a20bc9c7fae51010000008c493046022100fbb4a90b868bdbd9229d7cc834373b502aa00eebb3d045088e8173be714f6943022100a26707f25a9955c23e71819300c1b32224881d8c09f65333503cb09d4fe62d4a014104558f3b743874639994ea070955847e85824b8bb9327c0297647f468bfd18e669c31ede14c44ae06af1b0bc4ffd06d6ffe564560e9c725b060bfd1ce89c843f2cffffffff028861706b030000001976a9148ca2fb6f0fcc4447764c6e4ed7929ed06f9797de88ac7874a112000000001976a9144640f7994705548593e476856e3680c42a641f8788ac00000000",
    "TXID" : "fd3d049c9e75f96f9786b965b77b99fa0e7d39fa95e0b126682658299e71ac70",
    "версия" : 1,
    "Locktime" : 0,
    "Vin" : [
        {
            "TXID" : "51ae7f9cbc201ac14cb5505288c1c5b1e6a4defe9f0fbce34199ba9b93159835",
            "Vout" : 1,
            "scriptSig" : {
                "как м" : "3046022100fbb4a90b868bdbd9229d7cc834373b502aa00eebb3d045088e8173be714f6943022100a26707f25a9955c23e71819300c1b32224881d8c09f65333503cb09d4fe62d4a01 04558f3b743874639994ea070955847e85824b8bb9327c0297647f468bfd18e669c31ede14c44ae06af1b0bc4ffd06d6ffe564560e9c725b060bfd1ce89c843f2c",
                "наговор" : "493046022100fbb4a90b868bdbd9229d7cc834373b502aa00eebb3d045088e8173be714f6943022100a26707f25a9955c23e71819300c1b32224881d8c09f65333503cb09d4fe62d4a014104558f3b743874639994ea070955847e85824b8bb9327c0297647f468bfd18e669c31ede14c44ae06af1b0bc4ffd06d6ffe564560e9c725b060bfd1ce89c843f2c"
            },
            "последовательность" : 4294967295
        }
    ],
    "Vout" : [
        {
            "стоимость" : 146.87429000,
            "N" : 0,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 8ca2fb6f0fcc4447764c6e4ed7929ed06f9797de OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a9148ca2fb6f0fcc4447764c6e4ed7929ed06f9797de88ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "1Dpcr4DhdAF8HaNKEnYgv9PJgBjErdUdnM"
                ]
            }
        },
        {
            "стоимость" : 3.12571000,
            "N" : 1,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 4640f7994705548593e476856e3680c42a641f87 OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a9144640f7994705548593e476856e3680c42a641f8788ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "17QU8RmoQT9T2uQadi24piJ2nE1rDjfn8g"
                ]
            }
        }
    ],
    "blockhash" : "000000000000050f650c03af06696d141dfaf39a213d1cd8aa46837fd37e425b",
    "подтверждения" : 101258,
    "время" : 1348383754,
    "blocktime" : 1348383754
}

В сценарии с несколько сига, я предполагаю "reqSigs" под scriptPubKey (который равен 1 в этом примере) будет выше, чем 1, и не было бы несколько адреса в "адреса" массив. Так вот мои вопросы

  • Кто-нибудь знает транзакцию с несколько сига я мог смотреть вверх на blockchain, чтобы увидеть его структура?
  • Как определить целевой адрес выхода мульти-сиг?

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

Благодарю.
bigbeninlondon сейчас офлайн Пожаловаться на bigbeninlondon   Ответить с цитированием Мультицитирование сообщения от bigbeninlondon Быстрый ответ на сообщение bigbeninlondon


Как заработать Биткоины?
Без вложений. Не майнинг.


18 мая 2014, 2:07:41 PM   # 2
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Получил 1806 Биткоинов
Реальная история.





Кто-нибудь знает транзакцию с несколько сига я мог смотреть вверх на blockchain, чтобы увидеть его структура?
Отправка в ма multisig адрес выглядит следующим образом: https://blockchain.info/tx/a93bd9eeaebcf4cd28e5822d28dddeb3e766e65e01e140168a90f928144e1c38 (Первый выход)

И расходы от него, как это: https://blockchain.info/tx/d9a2ef9c07ab71ac12680df72cbbbf6153e7bb7ea511eb8ca764f434d378bbea
На самом деле это один тратит от multisig адреса и отправляет изменения в себе (шестой выход)


котировка
Как определить целевой адрес выхода мульти-сиг?
Целевой адрес в основном хэш сценария, который может потратить на это.

Взяв в качестве примера сделки от предыдущей ссылки, внутри входного скрипта вы можете найти скрипт Потратьте:
Код:
532102de57a0ac92a982903599cc1125f3ad6c360f5e091be2667bd2a07efae637d68a2102f0003265a9c7f5acdb7a40b9b98ace45f3111f421274c7b94f697faa337ac4c02103938fcd91c0a318876975a5648053eccb9ef275a0bade7b79f35d0f90694866652103a145418c25662a857248a9f49ff10ee4a53d28ce144a6954b19a71bbdc68c0c12103cf2e5b02d6f02340f5a9defbbf710c388b8451c82145b1419fe9696837b1cdef55ae
Теперь, когда вы хэш этих данных с rimped160 (SHA256 (данные)) это даст вам:
Код:
0136d001619faba572df2ef3d193a57ad29122d9
Это хэш фактического адреса: https://blockchain.info/address/31oSGBBNrpCiENH3XMZpiP6GTC4tad4bMy

Для того, чтобы превратить этот Hash160 в текстовом представлении, вы делаете это: https://en.bitcoin.it/wiki/Base58Check_encoding
Вы будете использовать 0x05 в качестве версии байта для multisig адреса.
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

18 мая 2014, 2:26:21 PM   # 3
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

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

Я предполагаю, что я ошибочно полагаю, что vout.scriptPubKey.addresses [] свойство будет список адресов, которые могут потратить на выход.

Что такое массив для? Похоже, что это всегда просто держит открытый ключ выхода. Это верно? В каком сценарий этот массив имеет несколько адресов?
bigbeninlondon сейчас офлайн Пожаловаться на bigbeninlondon   Ответить с цитированием Мультицитирование сообщения от bigbeninlondon Быстрый ответ на сообщение bigbeninlondon

18 мая 2014, 2:28:47 PM   # 4
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

К сожалению, этого я не знаю.
Кажется, что вы говорите о специфике какой-то исходный код, который я не знаком с.
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

18 мая 2014, 2:33:56 PM   # 5
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

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

Нет, я имею в виду bitcoind выход. если вы посмотрите на вывод для расходов сделки "из" мульти-сиг, вы получите это:

Запрос:
Код:
bitcoind getrawtransaction d9a2ef9c07ab71ac12680df72cbbbf6153e7bb7ea511eb8ca764f434d378bbea 1

Отклик:
Код:
{
    "наговор" : "0100000001e90191367cd56649ff96f45be2d21ba7e360aaea496b72c262dec4020826914c01000000fd8c0100483045022100adeac51e47a88cf6d3c1476550f9b34e5dbe5b347ef4ef590b5739a15bd7e0b2022006c24b4231028a8e1ad051aee5cb03884e763962d0d30fa94b51395c5107c79f01493046022100c6c3594f88b6ce4a71bd68a7dc8b0871176573cde99169a0e29611087e61e74102210095606fb6ad2c830013705101ad3762196e5c5c8577a48d9829d236dbb8c9a6e501483045022100b11868f0f99f0bb1e9ad2653358f8a420e29a0f56fb5426903d26d72520ad00f02206d87c4dba546045dddbc4cd3f23f5c53b51f8d53054718b67cdbc4d3601faf58014cad532102de57a0ac92a982903599cc1125f3ad6c360f5e091be2667bd2a07efae637d68a2102f0003265a9c7f5acdb7a40b9b98ace45f3111f421274c7b94f697faa337ac4c02103938fcd91c0a318876975a5648053eccb9ef275a0bade7b79f35d0f90694866652103a145418c25662a857248a9f49ff10ee4a53d28ce144a6954b19a71bbdc68c0c12103cf2e5b02d6f02340f5a9defbbf710c388b8451c82145b1419fe9696837b1cdef55aeffffffff0600a3e111000000001976a914a133373fb270ac403dc1a0bc2ccefcaf25261eef88ac00a3e111000000001976a9145749515e39e6962521 072cd322c51939b7d9ff5c88ac00a3e111000000001976a914b87d8c0c149020ca55616a798bf71618b76e31d888ac00a3e111000000001976a914c3323e8f2a4acca83f0a07aaee359f8b0bd3e79488ac00e1f505000000001976a9145cc3df6331431526585aeba326406cfa9add2edd88acb01df5050000000017a9140136d001619faba572df2ef3d193a57ad29122d98700000000",
    "TXID" : "d9a2ef9c07ab71ac12680df72cbbbf6153e7bb7ea511eb8ca764f434d378bbea",
    "версия" : 1,
    "Locktime" : 0,
    "Vin" : [
        {
            "TXID" : "4c91260802c4de62c2726b49eaaa60e3a71bd2e25bf496ff4966d57c369101e9",
            "Vout" : 1,
            "scriptSig" : {
                "как м" : "0 3045022100adeac51e47a88cf6d3c1476550f9b34e5dbe5b347ef4ef590b5739a15bd7e0b2022006c24b4231028a8e1ad051aee5cb03884e763962d0d30fa94b51395c5107c79f01 3046022100c6c3594f88b6ce4a71bd68a7dc8b0871176573cde99169a0e29611087e61e74102210095606fb6ad2c830013705101ad3762196e5c5c8577a48d9829d236dbb8c9a6e501 3045022100b11868f0f99f0bb1e9ad2653358f8a420e29a0f56fb5426903d26d72520ad00f02206d87c4dba546045dddbc4cd3f23f5c53b51f8d53054718b67cdbc4d3601faf5801 532102de57a0ac92a982903599cc1125f3ad6c360f5e091be2667bd2a07efae637d68a2102f0003265a9c7f5acdb7a40b9b98ace45f3111f421274c7b94f697faa337ac4c02103938fcd91c0a318876975a5648053eccb9ef275a0bade7b79f35d0f90694866652103a145418c25662a857248a9f49ff10ee4a53d28ce144a6954b19a71bbdc68c0c12103cf2e5b02d6f02340f5a9defbbf710c388b8451c82145b1419fe9696837b1cdef55ae",
                "наговор" : "00483045022100adeac51e47a88cf6d3c1476550f9b34e5dbe5b347ef4ef590b5739a15bd7e0b2022006c24b4231028a8e1ad051aee5cb03884e763962d0d30fa94b51395c5107c79f01493046022100c6c3594f88b6ce4a71bd68a7dc8b0871176573cde99169a0e29611087e61e74102210095606fb6ad2c830013705101ad3762196e5c5c8577a48d9829d236dbb8c9a6e501483045022100b11868f0f99f0bb1e9ad2653358f8a420e29a0f56fb5426903d26d72520ad00f02206d87c4dba546045dddbc4cd3f23f5c53b51f8d53054718b67cdbc4d3601faf58014cad532102de57a0ac92a982903599cc1125f3ad6c360f5e091be2667bd2a07efae637d68a2102f0003265a9c7f5acdb7a40b9b98ace45f3111f421274c7b94f697faa337ac4c02103938fcd91c0a318876975a5648053eccb9ef275a0bade7b79f35d0f90694866652103a145418c25662a857248a9f49ff10ee4a53d28ce144a6954b19a71bbdc68c0c12103cf2e5b02d6f02340f5a9defbbf710c388b8451c82145b1419fe9696837b1cdef55ae"
            },
            "последовательность" : 4294967295
        }
    ],
    "Vout" : [
        {
            "стоимость" : 3.00000000,
            "N" : 0,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 a133373fb270ac403dc1a0bc2ccefcaf25261eef OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a914a133373fb270ac403dc1a0bc2ccefcaf25261eef88ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "1FhM9RUTswvr1RPPDLC7ddm1d1kMPQ85oD"
                ]
            }
        },
        {
            "стоимость" : 3.00000000,
            "N" : 1,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 5749515e39e6962521072cd322c51939b7d9ff5c OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a9145749515e39e6962521072cd322c51939b7d9ff5c88ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "18xXcuLXhJmFcKoiLHqbjcpG4ip66pSf3E"
                ]
            }
        },
        {
            "стоимость" : 3.00000000,
            "N" : 2,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 b87d8c0c149020ca55616a798bf71618b76e31d8 OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a914b87d8c0c149020ca55616a798bf71618b76e31d888ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "1HpVjTeSnoqCkoCsX2iwMYqWrDy5UTzGC1"
                ]
            }
        },
        {
            "стоимость" : 3.00000000,
            "N" : 3,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 c3323e8f2a4acca83f0a07aaee359f8b0bd3e794 OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a914c3323e8f2a4acca83f0a07aaee359f8b0bd3e79488ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "1Jo6xSw431qX7GoVwc7oMTccLQwhfQVG6w"
                ]
            }
        },
        {
            "стоимость" : 1.00000000,
            "N" : 4,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 5cc3df6331431526585aeba326406cfa9add2edd OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a9145cc3df6331431526585aeba326406cfa9add2edd88ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "19TVp7iN6FjSQJTA6DNS9nfauR6PM3Mb8N"
                ]
            }
        },
        {
            "стоимость" : 0.99950000,
            "N" : 5,
            "scriptPubKey" : {
                "как м" : "OP_HASH160 0136d001619faba572df2ef3d193a57ad29122d9 OP_EQUAL",
                "наговор" : "a9140136d001619faba572df2ef3d193a57ad29122d987",
                "reqSigs" : 1,
                "тип" : "scripthash",
                "адреса" : [
                    "31oSGBBNrpCiENH3XMZpiP6GTC4tad4bMy"
                ]
            }
        }
    ],
    "blockhash" : "00000000000000000ce0a18c852d827e4936e800a81c58c3f1f8bfd7103ab5f4",
    "подтверждения" : 1123,
    "время" : 1399840827,
    "blocktime" : 1399840827
}

Выход имеет массив "vouts", каждый "Vout" имеет "scriptPubKey" собственности, и каждый "scriptPubKey" Свойство имеет массив "адреса", Мне интересно, что в "адреса" массив в последовательном выходе из rawtransaction bitcoind.

bigbeninlondon сейчас офлайн Пожаловаться на bigbeninlondon   Ответить с цитированием Мультицитирование сообщения от bigbeninlondon Быстрый ответ на сообщение bigbeninlondon

18 мая 2014, 2:38:10 PM   # 6
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

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

Вы должны были бы спросить, то ребята, которые ставят его там.
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

18 мая 2014, 2:39:57 PM   # 7
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Есть два типа multisig. Там есть "родной" multisig, где скрипт и pubkeyhashes находятся в Vout, однако, что делает для очень больших адресов. P2SH был добавлен позже. С P2SH выход хэш-скрипта и что делает адрес прессовки.

С родной multisig было бы несколько pubkeyhashes в выводе. С P2SH есть только один scripthash на выходе. 

В то время как Bitcoin может показать адреса понять, что адреса кодируются хэшей (либо PubKeyHashes или ScriptHashes), и они не существуют в самом протоколе. При предоставлении адреса клиента декодирует адрес в reslting HashType и Hash является то, что действительно находится на выходе сделки.
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

18 мая 2014, 4:44:13 PM   # 8
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Есть два типа multisig. Там есть "родной" multisig, где скрипт и pubkeyhashes находятся в Vout, однако, что делает для очень больших адресов. P2SH был добавлен позже. С P2SH выход хэш-скрипта и что делает адрес прессовки.

С родной multisig было бы несколько pubkeyhashes в выводе. С P2SH есть только один scripthash на выходе. 

В то время как Bitcoin может показать адреса понять, что адреса кодируются хэшей (либо PubKeyHashes или ScriptHashes), и они не существуют в самом протоколе. При предоставлении адреса клиента декодирует адрес в reslting HashType и Hash является то, что действительно находится на выходе сделки.

Мне очень жаль, что я не совсем уверен, что я понимаю.

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

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

18 мая 2014, 5:10:53 PM   # 9
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Ну нет никакого адреса в любой сделке, так что вам не нужно декодировать адрес (но вам нужно будет декодировать выходной сценарий). Там нет такого понятия, как баланс, когда бумажник говорит, что это имеет X баланс это означает сумму стоимости израсходованных результатов он имеет возможность провести в X. Есть только входы и выходы. Входы ссылки на предшествующий неизрасходованный выход, так что вам не нужно, чтобы добавить их. Выходы либо отработанный или неизрасходованные. Если выход ссылка является будущим вводом транзакции, то она проводится. Только неизрасходованные выходы могут быть потрачены в будущем, чтобы ваш "баланс" только сумма выходов, которые еще не ссылаются на входе уже существующие транзакции.

Существуют не обязательно 1: 1 отношения между выходами и открытыми ключами, как выходы на самом деле скрипты и могут быть в различных форматах. Так что если вы хотите, чтобы обрабатывать все возможные выходы парсер нужно будет декодировать сценарии.

Наиболее распространенные форматы
PayToPubKey (устаревшее был использован в начале генерации "coinbase" сделок)
PayToPubKeyHash (то, что большинство людей думают, как "нормальный" сделка)
PayToScriptHash (ака P2SH, адрес кодирует скрипт, окрошка не является pubkeyhash поэтому платежи заблокированы в соответствии с условиями конкретного сценария)
Native Multisig (выход скрипт содержит несколько открытых ключей и OP_CHECKMULTISIG опкод)

P2SH и родная Multisig оба метода загромождать выход с несколькими ключами. Они делают то же самое по-разному. В родной, выход содержит фактический сценарий. В P2SH вывод содержит хэш сценария, необходимого для "проводить" выход. P2SH является более распространенным в настоящее время, и часто просто называют multisig, которые могут сделать это сложнее.

Вот сделка с нативной multisig (1 из 2) в выходной (Vout [0]): 60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1
Вот сделка с выходным P2SH (Vout [5]): d9a2ef9c07ab71ac12680df72cbbbf6153e7bb7ea511eb8ca764f434d378bbea

Да Bitcoin сложно.

Мы часто говорим о "отправка монет по этому адресу" но это своего рода ломается при фактическом уровне протокола. Все выходы (как и во всех, даже "нормальный" сделок) скрипты. Скрипт определяет, что требуется, чтобы провести этот вывод. Если вы используете термин, как "баланс Публичных" в случае multisig (либо нативный или P2SH), который Публичный "имеет" баланс на выходе? С родной multisig есть несколько pubkeys и один выход. С P2SH вы можете даже не знать сценарий еще (только хеш сценария), так что вы не имеете никакого способа, чтобы определить, какой Публичные (ы) может провести его.

Если вы хотите, чтобы ограничить его "нормальный" сделок (PayToPubKeyHash) вы можете просто игнорировать все выходы, которые не соответствуют этому шаблону
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG


Это может быть хорошим первым шагом.
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

18 мая 2014, 5:35:59 PM   # 10
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Ну нет никакого адреса в любой сделке, так что вам не нужно декодировать адрес (но вам нужно будет декодировать выходной сценарий).

Итак, когда я вижу "адреса" массив в bitcoind подробного вывода, является bitcoind сервер делает некоторые вычисления для меня?

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

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

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

Мы часто говорим о "отправка монет по этому адресу" но это своего рода ломается при фактическом уровне протокола. Все выходы (как и во всех, даже "нормальный" сделок) скрипты. Скрипт определяет, что требуется, чтобы провести этот вывод. Если вы используете термин, как "баланс Публичных" в случае multisig (либо нативный или P2SH), который Публичный "имеет" баланс на выходе?

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

Если вы хотите, чтобы ограничить его "нормальный" сделок (PayToPubKeyHash) вы можете просто игнорировать все выходы, которые не соответствуют этому шаблону
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG


Это может быть хорошим первым шагом.

На данный момент я, наверное, сделать это просто так я могу иметь некоторую информацию для работы, но в конце концов мне придется обрабатывать все случаи.  
bigbeninlondon сейчас офлайн Пожаловаться на bigbeninlondon   Ответить с цитированием Мультицитирование сообщения от bigbeninlondon Быстрый ответ на сообщение bigbeninlondon

18 мая 2014, 5:53:01 PM   # 11
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

котировка
Именно мой вопрос. Я чувствую, что я что-то фундаментальное здесь отсутствует; как бы клиент вычислить «баланс», который будет отображаться в такой ситуации?
Это не было бы, если кошелек имел необходимое количество закрытых ключей.

котировка
Когда я говорю "bitcoind getbalance"Он суммирует все неизрасходованные выходные у меня есть мне доступен. Я хотел бы программно сделать то же самое для произвольного списка открытых ключей.
Когда вы декодирует выходной PayToPubKeyHash легко это 1: 1 отношения между неизрасходованными выходами и Публичным.

Для того, чтобы правильно показать "баланс" нативный multisig вам нужно будет расшифровать скрипт и следуйте "инструкции", Если сценарий требует 2 из 5 подписей из списка PubKeys (Р1-Р5), и у вас есть P1 и P4 в кошельке, то вы можете "проводить" что выходной поэтому логично было бы сказать, что баланс доступен. Если у вас есть только 1 из этих клавиш P1 хорошо, как вы показываете, это будет зависеть от того, что вы пытаетесь показать. Вы можете просто рассмотреть его unspendable, как 1 из 5 ключей недостаточно. Вы можете показать это как отдельный баланс (дополнительные ключи / подпись требуется).

P2SH работает очень похоже, за исключением сценария не на выходе. Вам понадобится копия выкуплен скрипт, который хэшей для получения ScriptHash на выходе. Если вы не имеете сценария выкупа, вы не можете даже проверить, если у вас есть необходимый PubKeys (как они неизвестны). Если у вас есть сценарий выкупа он будет обработан похож на multisig выше.

Что касается как существующих клиентов сделать это. Я понимаю, что Bitcoin-ядро клиента "баланс" отражает все неизрасходованные выходы, которые могут быть потрачены. Для одного ключа это означает, что закрытый ключ находится в бумажнике, для нативного multisig это означает, что необходимые частные ключи находятся в бумажнике, для P2SH адрес P2SH, спасите скрипт, и необходимые личные ключи находятся в бумажнике. Это может помочь думать о "баланс" как сумма стоимости всех выходов бумажник имеет возможность тратить.

DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

18 мая 2014, 10:13:55 PM   # 12
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Понимание Основной структуры сделки

Хорошо, что делает немного больше смысла. Спасибо за очистку, что для меня. Есть ли у вас адрес наконечника?
bigbeninlondon сейчас офлайн Пожаловаться на bigbeninlondon   Ответить с цитированием Мультицитирование сообщения от bigbeninlondon Быстрый ответ на сообщение bigbeninlondon



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW