вчера я подал заявку на тянущую, который реализует низкоуровневый "сырье" сделка, и я ищу обратную связь по API и помощь пытается проверить / сломать.
Дизайн док: https://gist.github.com/2839617
Вытащите запрос: https://github.com/bitcoin/bitcoin/pull/1456
План тестирования: https://secure.bettermeans.com/projects/4180/wiki/Raw_Transaction_RPC_Test_Plan
Игра вокруг с этим API в командной строке я очень доволен уровнем абстракции и, как он взаимодействует с существующими командами RPC; например, "createrawtx" это так же, как "sendmany" на пути указаны выходы.
Метод signrawtx является ключом нового метода; он берет сырую сделку, признаки, как много входов, как он может, и возвращает ту же самую сырую сделку с подписями. Обычное использование:
Средства сидят в выходе multisignature сделки, и настало время, чтобы собрать подписи и тратить их.
Предположение: вы знаете, [TXID, outputNumber, сумма] по сделке multisignature в.
Создание сырой сделки, чтобы провести, используя createrawtx.
Используйте signrawtx, чтобы добавить свои подписи (после разблокировки бумажника, если это необходимо).
Дайте сделки к другому лицу (лицам), чтобы подписать.
Вы или они представляют сделку по сети с помощью sendrawtx.
Я не представляю никого, кроме очень-рано-усыновителей или ультра-выродки будут делать это, вызывая эти методы RPC в командной строке. Они действительно предназначены для людей, пишущих услуги поверх bitcoind. Служба должна быть осторожной, чтобы включить соответствующую плату за транзакцию, или sendrawtx метод, вероятно, не в состоянии.
Я спросил несколько раз: почему не signrawtx обрабатывать BIP 0010 (https://en.bitcoin.it/wiki/BIP_0010) Формат транзакции?
Я рассматривал разборе / записи формата BIP 10 сырьевых сделок, но решил, что чтение / запись в формате BIP 10 должно происходить на более высоком уровне, а не в вызовах RPC низкого уровня. Таким образом, «сырые сделки» являются просто шестигранной кодируются в JSON строки, и кодирование / декодирование их всего лишь пару строк уже написанного-и-отлаженного кода.
------
Вот вывод справки и пример использования для всех новых вызовов RPC:
listunspent [minconf = 1] [maxconf = 999999]
Возвращает массив неизрасходованных выходов транзакциев
с между minconf и maxconf (включительно) подтверждениями.
Возвращает массив из 4-элементных массивов, каждый из которых является:
[Идентификатор транзакции, выход, сумма, подтверждение]
Например: listunspent 1 2
Возвращает:
[
[
"2881b33a8c0bbdb45b0a65b36aa6611a05201e316ea3ad718762d48ef9588fb3",
0,
40.00000000,
2
],
[
"894a0fc535c7b49f434ceb633d8555ea24c8f9775144efb42da85b853280bcd7",
0,
50.00000000,
1
]
]
getrawtx
Возвращает шестнадцатеричное-закодированы, сериализованную данные транзакции
для
Например .: getrawtx fce46ea2448820f7bb8091b5f5e3fd75b7b267e60b9a22af88a9eeabfb084233
Возвращает:
01000000016d40da062b6a0edcaf643b6e25b943baf103941589d287e39d6f425d84ae8b1c00000 0004847304402203fb648ff8381d8961e66ef61ab88afe52826a5179b8a7312742c8d93785ca563 02204240ea12de1211fffab49686f13ca0e78011d1985765be6e6aa8e747852f897d01ffffffff0 100f2052a0100000017a914f96e358e80e8b3660256b211a23ce3377d2f9cb18700000000
createrawtx [["TXID", П], ...] {адрес: сумма, ...}
Создание расходов транзакции, данные входы
(Массив (шестнадцатеричный идентификатор транзакции, номер выхода) пар),
отправка данного адреса (ов).
Возвращает ту же информацию, gettransaction, плюс
дополнительный "rawtx" ключ с шестигранными-закодированы транзакциями.
Обратите внимание, что входы сделки не подписаны, и
он не хранится в кошельке или передается в сеть.
Например .: createrawtx «[["fce46ea2448820f7bb8091b5f5e3fd75b7b267e60b9a22af88a9eeabfb084233", 0]]»«{"mqYmZSQQuAWNQcdwBrDwmtTXg2TLNz748L": 50}
Возвращает:
{
"версия" : 1,
"Locktime" : 0,
"размер" : 85,
"Vin" : [
{
"prevout" : {
"гашиш" : "fce46ea2448820f7bb8091b5f5e3fd75b7b267e60b9a22af88a9eeabfb084233",
"N" : 0
},
"scriptSig" : "",
"последовательность" : 4294967295
}
],
"Vout" : [
{
"стоимость" : 50.00000000,
"scriptPubKey" : "OP_DUP OP_HASH160 6e0920fc26383dc7e6101bc417cf87169d0cedbd OP_EQUALVERIFY OP_CHECKSIG"
}
],
"rawtx" : "0100000001334208fbabeea988af229a0be667b2b775fde3f5b59180bbf7208844a26ee4fc00000 00000ffffffff0100f2052a010000001976a9146e0920fc26383dc7e6101bc417cf87169d0cedbd 88ac00000000"
}
signrawtx <шестнадцатеричная строка> [
Вход входы для сырой сделки (сериализации, шестнадцатеричной кодировке).
Второй аргумент является массивом исходных предыдущих сделок,
эта сделка зависит, но еще не в blockchain.
Возвращает объект JSON с ключами:
rawtx: сырая сделка с подписью (ами) (гекс-закодированные строки)
завершения: 1, если сделка имеет полный набор сигнатуры (0, если нет)
Например .: signrawtx "0100000001334208fbabeea988af229a0be667b2b775fde3f5b59180bbf7208844a26ee4fc00000 00000ffffffff0100f2052a010000001976a9146e0920fc26383dc7e6101bc417cf87169d0cedbd 88ac00000000" «["01000000016d40da062b6a0edcaf643b6e25b943baf103941589d287e39d6f425d84ae8b1c00000 0004847304402203fb648ff8381d8961e66ef61ab88afe52826a5179b8a7312742c8d93785ca563 02204240ea12de1211fffab49686f13ca0e78011d1985765be6e6aa8e747852f897d01ffffffff0 100f2052a0100000017a914f96e358e80e8b3660256b211a23ce3377d2f9cb18700000000"]»
Возвращает:
{
"rawtx" : "0100000001334208fbabeea988af229a0be667b2b775fde3f5b59180bbf7208844a26ee4fc00000 0009100473044022007f3ba1b8bdc156f2340ef1222eb287c3f5481a8078a8dad43aa09fd289ba1 9002201cc72e97406d546dc918159978dc78aee8215a6418375956665ee44e6eacc115014752210 2894ca6e7a6483d0f8fa6110c77c431035e8d462e3a932255d9dda65e8fada55c2103c556ef01e8 9a07ee9ba61581658fa007bf442232daed8b465c47c278550d3dab52aeffffffff0100f2052a010 000001976a9146e0920fc26383dc7e6101bc417cf87169d0cedbd88ac00000000",
"полный" : ложный
}
sendrawtx <шестнадцатеричная строка>
Передает сырую сделку (сериализовано, гекс-закодировано) на локальный узел и сеть.
Например .: sendrawtx 0100000001334208fbabeea988af229a0be667b2b775fde3f5b59180bbf7208844a26ee4fc00000 0009100473044022007f3ba1b8bdc156f2340ef1222eb287c3f5481a8078a8dad43aa09fd289ba1 9002201cc72e97406d546dc918159978dc78aee8215a6418375956665ee44e6eacc115014752210 2894ca6e7a6483d0f8fa6110c77c431035e8d462e3a932255d9dda65e8fada55c2103c556ef01e8 9a07ee9ba61581658fa007bf442232daed8b465c47c278550d3dab52aeffffffff0100f2052a010 000001976a9146e0920fc26383dc7e6101bc417cf87169d0cedbd88ac00000000
Возвращает:
ошибка: {"код": -22,"сообщение":"TX отвергнута"}
(Отклонено, так как он не имеет все необходимые подписи, если оно было принято, что бы вернуть идентификатор транзакции)