Почему в режиме regtest есть вывод с оп-возвратом?

Вот вывод из getrawtransaction:

{
  "txid": "a2b9e3aa4adeb68a9b8b8b0bbc8d4890585cd711e89cda83e7f236397fac6218",
  "hash": "6d96c04d49eefe3eab4934188841ef3592c818bf789517b90b1f71ff75a14c26",
  "version": 2,
  "size": 183,
  "vsize": 156,
  "locktime": 0,
  "vin": [
    {
      "coinbase": "02b0010101",
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 12.50000000,
      "n": 0,
      "scriptPubKey": {
    "asm": "03d81b3d2ac76e322dcb2e713cb8fdeaf68cb83406c0e4d28dcd10a880ef172a6a OP_CHECKSIG",
    "hex": "2103d81b3d2ac76e322dcb2e713cb8fdeaf68cb83406c0e4d28dcd10a880ef172a6aac",
    "reqSigs": 1,
    "type": "pubkey",
    "addresses": [
      "mwzWcEU4kBkJPSTgB8LSBfvyaEjdXmyGh7"
    ]
      }
    }, 
    {
      "value": 0.00000000,
      "n": 1,
      "scriptPubKey": {
    "asm": "OP_RETURN aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9",
    "hex": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9",
    "type": "nulldata"
      }
    }
  ],
  "hex": "020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b0010101ffffffff02807c814a00000000232103d81b3d2ac76e322dcb2e713cb8fdeaf68cb83406c0e4d28dcd10a880ef172a6aac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
  "blockhash": "4742b345fb92ce66f5fccaa880ebef29ebe44d8649114ddb06c4f7177047a717",
  "confirmations": 1,
  "time": 1512718207,
  "blocktime": 1512718207
}

Меня интересует вот этот бит:

{
  "value": 0.00000000,
  "n": 1,
  "scriptPubKey": {
    "asm": "OP_RETURN aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9",
    "hex": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9",
    "type": "nulldata"
  }
}

Кто его создал? (Я использую regtestрежим)

Ответы (1)

Вы сделали, по-видимому.

Транзакция, которую вы показываете, — это coinbase; это специальная транзакция, добавленная майнером. Выход OP_RETURN — это подтверждение блока SegWit. Это корень Merkle для wtxid всех транзакций (txid, который включает в себя свидетелей), тем самым гарантируя, что блок фиксируется для всех свидетелей.

При работе в режиме regtest вы, вероятно, прямо или косвенно вызываете скрипт generateRPC, который создает новый блок. Если в блоке были какие-либо транзакции SegWit, обязательство является обязательным (в противном случае необязательным).

Если я правильно понял ваш ответ, у меня нет выходных данных SegWit в моем блоке regtest. Блок имеет только coinbase tx. И единственный выход этого tx - на устаревший mадрес (таким образом, не SegWit). Тем не менее я получаю, OP_RETURNи его данные не являются строкой utf8.
Обязательство SegWit создается всегда, даже если нет транзакций SegWit. Это не обязательно (блоку без свидетелей разрешается не иметь такого обязательства), но Bitcoin Core всегда создаст его. Не ожидается, что он будет удобочитаемым для человека или строкой; он содержит хэш корня wtxid merkle.