Принимает ли createrawtransction scriptPubKey и redeemScript в качестве входных данных?

Согласно встроенной документации RPC подпись для createrawtransaction: createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...}.

Гэвин в своем примере с мультиподписью 2-из-3 также проходит scriptPubKeyи redeemScriptв качестве входных данных дляcreaterawtransaction .

Кодcreaterawtransaction в биткойн-ядре для разбора входных данных :

 BOOST_FOREACH(const Value& input, inputs) {
   const Object& o = input.get_obj();
   uint256 txid = ParseHashO(o, "txid");
   const Value& vout_v = find_value(o, "vout");
   if (vout_v.type() != int_type)
   throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, missing vout key");
   int nOutput = vout_v.get_int();
   if (nOutput < 0)
   throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, vout must be positive");
   CTxIn in(COutPoint(txid, nOutput));
   rawTx.vin.push_back(in);
 }

так как именно createrawtransactionиспользует scriptPubKeyand redeemScript?

Ответы (1)

Да, он принимает их (и любые другие параметры, которые вы хотите указать в JSON). Нет, они не используются --- и я не знаю, почему Гэвин использовал их в своем примере.

На странице примеров для разработчиков Bitcoin.org есть более подробный и актуальный пример расходования мультиподписного вывода P2SH .

Действительно, он принимает любое количество входных параметров, как я выяснил в своих тестах (мне даже пришлось передать входной параметр bananaColor=yellow, чтобы убедиться). Я проверю предложенные вами примеры, спасибо!