Есть ли список странных или необычных скриптов, обнаруженных в транзакциях?

производитель вещей7

Есть ли список странных или необычных скриптов, обнаруженных в транзакциях?

Я изучаю скрипты и ищу странные или необычные скрипты, которые появлялись в любой из *монетных сетей..( кроме стандартных, перечисленных на этой странице )

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

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

Моя цель — узнать, какие контракты встречаются в каждой сети, и определить частоту каждого из них. (Насколько популярен multi-sig tx с течением времени)

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

Стивен Горник

У Blockchain Info есть список странных транзакций , которые его узлы получили, но не смогли проверить.

q9f

Все они выглядят как транзакции p2pool.

таймпад

В последнее время я изучал то же самое, чтобы построить «Бестиарий биткойнов» со странными транзакциями. Я скачал биткойн-инструменты ( https://github.com/gavinandresen/bitcointools ). У него есть возможность отслеживать нестандартные транзакции: dbdump.py --search-blocks=NONSTANDARD_CSCRIPTS.

Я построил на этом программу Python для изучения моих локальных файлов blk000x.dat с информацией о блокчейне. BCDataStream и десериализация исходят из инструментов Биткойн.

#!/usr/bin/env python 

from BCDataStream import *
import deserialize

def extract_script(d):

 for t in d['transactions']:


     for txOut in t['txOut']:
          print  "Prev hash: "+(d['hashPrev'][::-1]).encode('hex')+" Script: "+deserialize.decode_script(txOut['scriptPubKey'])+'\n'   


 return None


def findlock(filename):

    f = open(filename, 'r')

    magic=f.read(4)
    magicref='f9beb4d9'.decode('hex')

    while magic:
        size=f.read(4)[::-1].encode('hex')
        N=int(size,16)

        blk = deserialize.BCDataStream()
        blk.write(f.read(N))
        d=deserialize.parse_Block(blk)
        extract_script(d)

        magic=f.read(4)

    f.close()
    return None

def test():
     findlock('blk0001.dat')
     findlock('blk0002.dat')
     findlock('blk0003.dat')


if __name__ == '__main__':
    test()

Программа выгружает Скрипт во всех транзакциях с предыдущим номером блока (мне нужно это исправить, но позже вы сможете найти нужный блок). Весь файл около 3 Гб.

В моем терминале Linux я перенаправляю вывод в файл scripts.txt, а затем использую grep для поиска команд, например:

grep 'ЕСЛИ' scripts.txt > IF.txt

MIN, IF, DROP, SWAP, например, показывают интересные вещи. Некоторые из них являются ошибками (см. https://bitcointalk.org/index.php?topic=67158.0 ), некоторые я не знаю.

производитель вещей7

Из-за отсутствия какого-либо другого ресурса для отслеживания заметной транзакции следующий ответ сделан CW, чтобы любой мог его отредактировать и обновить по мере необходимости.

  • Блок 728: Наиболее распространенным типом оплаты является хеш-ключ, который впервые появился здесь. [источник]

Чиро Сантилли OurBigBook.com

Локальный скрипт для их поиска + предварительно обработанные данные

https://bitcoin.stackexchange.com/a/5890/21282 опубликовал локальный скрипт, а https://bitcoin.stackexchange.com/a/5886/21282 опубликовал список, но здесь оба вместе:

Скрипт основан на прекрасной https://github.com/alecalve/python-bitcoin-blockchain-parser библиотеке Python, которая анализирует blk-файлы без необходимости использования сервера.

Тогда на known_op_signatures.jsonвыходе данные организуются следующим образом:

[
  {
    "count": 1122142242,
    "ioidx": 0,
    "sample": "74c1a6dd6e88f73035143f8fc7420b5c395d28300a70bb35b943f7f2eddc656d",
    "sig": [
      null,
      null
    ]
  },
  {
    "count": 1103133457,
    "ioidx": 0,
    "sample": "6f7cf9580f1c2dfb3c4d5d043cdbb128c640e3f20161245aa7372e9666168516",
    "sig": [
      "OP_DUP",
      "OP_HASH160",
      null,
      "OP_EQUALVERIFY",
      "OP_CHECKSIG"
    ]
  },

Итак, вы можете видеть, что на верхнем уровне у нас есть список типов транзакций, отсортированных по количеству повторений.

В сигнатуре транзакции sigуказывает nullконстанту буквального числа. Таким образом, значение имеют только операнды, и сценарий группирует все транзакции заданного типа только по операндам, чтобы размер данных оставался управляемым.

Например, наиболее распространенным типом транзакции с 1 122 142 242 экземплярами был:

    "sig": [
      null,
      null
    ]

т.е. два литерала, что является входным сценарием транзакции P2PKH.

Второй по распространенности был:

"sig": [
  "OP_DUP",
  "OP_HASH160",
  null,
  "OP_EQUALVERIFY",
  "OP_CHECKSIG"
]

который является выходным скриптом транзакции P2PKH.

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

Обзоры нестандартных скриптов

https://www.quantabytes.com/articles/a-survey-of-bitcoin-transaction-types дает хорошее резюме. Другие источники: