Итак: в версии 0.6.3 и выше, gettransaction бы возвращать информацию только об операциях в кошельке, а не возвращать всю информацию о сделке.
Через месяц или два назад Pieter и Лука написал код, чтобы изменить gettransaction / getblock, чтобы возвратить информацию о любой сделке в blockchain и новый аргумент Object «декомпозиций» был добавлен к этим RPC вызовы, которые позволят вам задать 5 различных способов получить информацию о транзакционные входы и выходы (нет / хэш / гекс / ASM / OBJ). Так что вы можете сделать:
Код:
gettransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 «{"скрипт": Шестигранный}»
Я думаю, 5 различных способов получения (или не получить, если не указано «нет») информации-слишком много, так что я изменить код следующим образом:
- getblock не изменяется от версии 0.6; она возвращает список Идентификаторы транзакций в "Техас" Массив.
- gettransaction получает дополнительный логический аргумент, что по умолчанию 0 (ложь). Если ненулевой будет принят, то многословным и выводит информацию о входах и выходах транзакций во всех различных форматах (то же, что разложение "OBJ" делает).
- для совместимости с вызовами «сырые транзакции» API, gettransaction всегда возвращает полные данные транзакции сериализованной-шестигранной-кодироваться как новая "rawtx" поле.
Это означает получение полной информации для каждой транзакции в блоке означает больше, чем один вызов RPC, но Джефф запрос нагрузочного для JSON-2.0 "партия" звонки, поэтому получать полную информацию о каждой транзакции в блоке будут только два RPC круглодонных поездками (один getblock, то одна партии с кучей gettransaction вызывает в нем).
И понятно: эти изменения призваны быть 100% обратно совместим с getblock / gettransaction в версии 0.6.3 и более ранних версий. Мы говорим о дополнительных аргументах и дополнительной информации в возвращенных объектах JSON.
Пример вывода для сложной операции multisignature testnet:
Короче говоря, в-бумажник сделка:
Код:
$ ./bitcoind -testnet gettransaction 4ec492788efb3c9e4e23972f095bd575217288c9f6b8237922145aeff8dae8d5
{
"rawtx" : "0100000001c6660657eb258f9e58d246d767f5aaa15980d4d26ee496e7e24fabf72f2cc3440000000048473044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701ffffffff0100f2052a0100000017a914b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f8700000000",
"количество" : -50,00000000,
"плата" : 0.00000000,
"подтверждения" : 2,
"blockhash" : "0000000003abdd41db27190bb4f19e36497f647d1ea586ef543c44f7ccd40015",
"blockindex" : 1,
"TXID" : "4ec492788efb3c9e4e23972f095bd575217288c9f6b8237922145aeff8dae8d5",
"время" : 1339001503,
"Детали" : [
{
"Счет" : "",
"адрес" : "2N9uknE7Zy9M3cPxWvkHu9HQiArL3pnbcUF",
"категория" : "Отправить",
"количество" : -50,00000000,
"плата" : 0.00000000
}
]
}
Подробный:{
"rawtx" : "0100000001c6660657eb258f9e58d246d767f5aaa15980d4d26ee496e7e24fabf72f2cc3440000000048473044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701ffffffff0100f2052a0100000017a914b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f8700000000",
"количество" : -50,00000000,
"плата" : 0.00000000,
"подтверждения" : 2,
"blockhash" : "0000000003abdd41db27190bb4f19e36497f647d1ea586ef543c44f7ccd40015",
"blockindex" : 1,
"TXID" : "4ec492788efb3c9e4e23972f095bd575217288c9f6b8237922145aeff8dae8d5",
"время" : 1339001503,
"Детали" : [
{
"Счет" : "",
"адрес" : "2N9uknE7Zy9M3cPxWvkHu9HQiArL3pnbcUF",
"категория" : "Отправить",
"количество" : -50,00000000,
"плата" : 0.00000000
}
]
}
Код:
$ ./bitcoind -testnet gettransaction 4ec492788efb3c9e4e23972f095bd575217288c9f6b8237922145aeff8dae8d5 1
{
"rawtx" : "0100000001c6660657eb258f9e58d246d767f5aaa15980d4d26ee496e7e24fabf72f2cc3440000000048473044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701ffffffff0100f2052a0100000017a914b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f8700000000",
"версия" : 1,
"Locktime" : 0,
"Vin" : [
{
"prevout" : {
"гашиш" : "44c32c2ff7ab4fe2e796e46ed2d48059a1aaf567d746d2589e8f25eb570666c6",
"N" : 0
},
"scriptSig" : {
"как м" : "3044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701",
"наговор" : "473044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701",
"тип" : "Публичных",
"адреса" : [
"n4DUWe93vkdfAiSVDaMP3okaU7upK2wtrr"
]
},
"последовательность" : 4294967295
}
],
"Vout" : [
{
"стоимость" : 50.00000000,
"scriptPubKey" : {
"как м" : "OP_HASH160 b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f OP_EQUAL",
"наговор" : "a914b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f87",
"reqSigs" : 1,
"тип" : "scripthash",
"адреса" : [
"2N9uknE7Zy9M3cPxWvkHu9HQiArL3pnbcUF"
]
}
}
],
"количество" : -50,00000000,
"плата" : 0.00000000,
"подтверждения" : 2,
"blockhash" : "0000000003abdd41db27190bb4f19e36497f647d1ea586ef543c44f7ccd40015",
"blockindex" : 1,
"TXID" : "4ec492788efb3c9e4e23972f095bd575217288c9f6b8237922145aeff8dae8d5",
"время" : 1339001503,
"Детали" : [
{
"Счет" : "",
"адрес" : "2N9uknE7Zy9M3cPxWvkHu9HQiArL3pnbcUF",
"категория" : "Отправить",
"количество" : -50,00000000,
"плата" : 0.00000000
}
]
}
{
"rawtx" : "0100000001c6660657eb258f9e58d246d767f5aaa15980d4d26ee496e7e24fabf72f2cc3440000000048473044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701ffffffff0100f2052a0100000017a914b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f8700000000",
"версия" : 1,
"Locktime" : 0,
"Vin" : [
{
"prevout" : {
"гашиш" : "44c32c2ff7ab4fe2e796e46ed2d48059a1aaf567d746d2589e8f25eb570666c6",
"N" : 0
},
"scriptSig" : {
"как м" : "3044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701",
"наговор" : "473044022026b2e3d408a7848ad18b35042163c0efb358c456c6006a0cd13c077ec213aeab02202115a38de465e0c927f858cbb83fca45bddb0e469524667e39fd0c54ab5007d701",
"тип" : "Публичных",
"адреса" : [
"n4DUWe93vkdfAiSVDaMP3okaU7upK2wtrr"
]
},
"последовательность" : 4294967295
}
],
"Vout" : [
{
"стоимость" : 50.00000000,
"scriptPubKey" : {
"как м" : "OP_HASH160 b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f OP_EQUAL",
"наговор" : "a914b6cb85e6fa58b2bff3da23074eb0f1a0ddb23e1f87",
"reqSigs" : 1,
"тип" : "scripthash",
"адреса" : [
"2N9uknE7Zy9M3cPxWvkHu9HQiArL3pnbcUF"
]
}
}
],
"количество" : -50,00000000,
"плата" : 0.00000000,
"подтверждения" : 2,
"blockhash" : "0000000003abdd41db27190bb4f19e36497f647d1ea586ef543c44f7ccd40015",
"blockindex" : 1,
"TXID" : "4ec492788efb3c9e4e23972f095bd575217288c9f6b8237922145aeff8dae8d5",
"время" : 1339001503,
"Детали" : [
{
"Счет" : "",
"адрес" : "2N9uknE7Zy9M3cPxWvkHu9HQiArL3pnbcUF",
"категория" : "Отправить",
"количество" : -50,00000000,
"плата" : 0.00000000
}
]
}
Единственная функция, которая беспокоит меня, отчетность «адрес / типа» для входов транзакций. Это беспокоит меня по двум причинам:
1) Это дорого, чтобы извлечь эти данные, потому что это означает нахождение предыдущей транзакции в blockchain и извлечения его с диска. Это нарушает принцип, согласно которому "функция не должна стоить вам ничего, если вы его не используете."
2) Если "мы" осуществлять отработанные входную обрезку (Pieter имеют некоторые фантастические ранние результаты), что данные не могут существовать.
Я думаю, что было бы лучше, чтобы удалить «адрес / тип» информацию с выхода gettransaction, так gettransaction не имеет для поиска предыдущих операций.
Если вы заботитесь о предыдущей сделке, то вы должны вызвать gettransaction снова, используя vin.prevout.hash искать их (и, опять же, с помощью функции JSON-2.0 «партии» для поиска всех предыдущих транзакций в одном RPC в обе стороны).
Если / когда сделка обрезка происходит тогда семантика ясно: что gettransaction возвратит ошибку, если перед сделка была обрезке.