![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/40e/a47/53b/40ea4753b108d8d48043dceb97e99a96.png)
В этой статье мы разберем транзакции биткоина и научимся очень быстро парсить RawTX из сети блокчейн в папку Google Drive все это поможет нам лучше понять, как работает транзакции биткоина и каково все её содержимое в сети блокчейн.
Для начала нам нужно знать, что все транзакции биткоина хранятся в [txid].
txid - это идентификатор транзакции, хранящиеся в блокчейне биткоина, RawTX хранится в форме двойного хеширования.
Это означает, что RawTX дважды прошла через алгоритм SHA256, чтобы получить хэш транзакции, который мы видим в блокчейне.
Например, транзакция с таким хешем: d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f
Транзакции в блокчейне биткоина хранится в форме двойного хеширования:
SHA256(SHA256(0100000001f2068914e2fea859cacd8df990daf4008f11296b3cb953794051147a265d850a000000008b483045022043784344e1e0cb498c1d73b4cee970fb0f9adf38b7891d0b1310fdb9cbc23929022100a734f4e97a05bd169a9f0eb296fc841fa57f8753db09869f8f6f8cc1232616d4014104d6597d465408e6e11264c116dd98b539740e802dc756d7eb88741696e20dfe7d3588695d2e7ad23cbf0aa056d42afada63036d66a1d9b97070dd6bc0c87ceb0dffffffff0100b864d9450000001976a9142df31a60b02cce392822c9a87198753578ef7de888ac00000000) = d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f
Чтобы получить RawTX нам просто нужно ввести идентификатор транзакции [txid],
https://blockchain.info/rawtx/[txid]?format=hex
далее мы получим сведения в HEX формате это и есть наш заветный RawTX.
https://blockchain.info/rawtx/d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f?format=hex
но как мы знаем в одном Биткоин Адресе могут быть очень много транзакции [txid] и это является основной проблемой на поиск которой уходит много времени, нагружает наш ПК и занимает много места на диске.
Чтобы решить эту проблему достаточно воспользоваться API
сайта https://chain.so/api/
И так, мы указываем один Биткоин Адрес в bash-скрипт: getrawtx.sh «address»
и дальше извлекаем весь предыдущий выходной хэш — все входы ссылаются на выход (UTXO)
UTXO - это (неизрасходованный выход транзакции) который будет потрачен на новом входе. Хэш-значение этого
UTXO
сохраняется в обратном порядке.
В результате весь неизрасходованный выход транзакции будет сохранен в файле: «RawTX.json»
Чтобы получить RawTX
из Биткоин Адреса воспользуемся Bash-скриптом: getrawtx.sh
![Parsing Blockchain in Google Drive Parsing Blockchain in Google Drive](https://habrastorage.org/r/w1560/getpro/habr/upload_files/7e4/268/a3a/7e4268a3ab7e36fc45020c6b222b7611.png)
Как же парсить в папку Google Drive?
Для этого можно воспользоваться Терминалом для Google Colab [TerminalGoogleColab]
Ранее я записывал видеоинструкцию: «TERMINAL в Google Colab создаем все удобства для работ в GITHUB»
Давайте разберем в детали работу Bash-скрипта: getrawtx.sh
![Bash-скрипт: getrawtx.sh Bash-скрипт: getrawtx.sh](https://habrastorage.org/r/w1560/getpro/habr/upload_files/060/833/01b/06083301bd4339d46a9a62e3d8bd606c.png)
./getrawtx.sh 12ib7dApVFvg82TXKycWBNpN8kFyiAN1dr
Биткоин Адрес которую мы указываем для команды утилиты wget
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/b68/785/9f6/b687859f62fd52efdfe6b536cf3040be.png)
![все содержимое сохраняется в файл: index.json все содержимое сохраняется в файл: index.json](https://habrastorage.org/r/w1560/getpro/habr/upload_files/338/b5b/10e/338b5b10ebb67a28ce79bcabb7ed4925.png)
https://chain.so/api/v2/get_tx_spent/BTC/12ib7dApVFvg82TXKycWBNpN8kFyiAN1dr
![Утилита grep сохраняет все идентификаторы транзакции "txid" в один общий файл index2.json Утилита grep сохраняет все идентификаторы транзакции "txid" в один общий файл index2.json](https://habrastorage.org/r/w1560/getpro/habr/upload_files/073/505/252/07350525294fb491a864ca1d19c4c0f5.png)
![все содержимое сохраняется в файл: index2.json все содержимое сохраняется в файл: index2.json](https://habrastorage.org/r/w1560/getpro/habr/upload_files/b0e/fa6/edb/b0efa6edbf242f2f6f70bc1cc8b87640.png)
![Удаляем index.json Удаляем index.json](https://habrastorage.org/r/w1560/getpro/habr/upload_files/4cb/904/b7a/4cb904b7a36460710dd6d51679c8317f.png)
![С помощью утилиты sed убираем префикс "txid" и кавычки запятые С помощью утилиты sed убираем префикс "txid" и кавычки запятые](https://habrastorage.org/r/w1560/getpro/habr/upload_files/395/b95/c44/395b95c44bc13e60cbc0abb38c38108b.png)
![Итоговый результат в файле: index2.json Итоговый результат в файле: index2.json](https://habrastorage.org/r/w1560/getpro/habr/upload_files/951/b67/986/951b6798689d0b357259abf07e711b5a.png)
![Создаем Python-скрипт используя утилиты echo Создаем Python-скрипт используя утилиты echo](https://habrastorage.org/r/w1560/getpro/habr/upload_files/375/856/5cf/3758565cfb656de3fcc0069574fbd93c.png)
![Запускаем Python-скрипт fileopen.py Запускаем Python-скрипт fileopen.py](https://habrastorage.org/r/w1560/getpro/habr/upload_files/9f0/a0f/a55/9f0a0fa556623a5c9e436c0f0c118161.png)
![После запуска Python-скрипта fileopen.py создается Bash-скрипт rawscript.sh После запуска Python-скрипта fileopen.py создается Bash-скрипт rawscript.sh](https://habrastorage.org/r/w1560/getpro/habr/upload_files/8cf/23f/c9c/8cf23fc9ce47c1fc907eb723b13c7c23.png)
![Удаляем index2.json Удаляем index2.json](https://habrastorage.org/r/w1560/getpro/habr/upload_files/35a/f1b/200/35af1b20063d6255c73c95b6628cd111.png)
![Получаем права для Bash-скрипта rawscript.sh и успешно запускаем! Получаем права для Bash-скрипта rawscript.sh и успешно запускаем!](https://habrastorage.org/r/w1560/getpro/habr/upload_files/e63/b09/091/e63b090910e9e2e08d47b61d0ceb065c.png)
![Удаляем скрипты fileopen.py // rawscript.sh Удаляем скрипты fileopen.py // rawscript.sh](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f03/a8d/9c2/f03a8d9c2ecb1e3576e388c59bf33374.png)
![Все транзакции сохранились в файле: «RawTX.json» Все транзакции сохранились в файле: «RawTX.json»](https://habrastorage.org/r/w1560/getpro/habr/upload_files/e91/ddd/baa/e91dddbaa475462a42032e3b0f87cbc5.png)
Какое преимущество получаем мы в итоге:
парсинг RawTX работает быстро и все сохраняется в один файл в папке Google Drive
в отличие от команды getrawtransaction
«txid»
, в консолиBitcoin Сore
нам не нужно вводить«txid»
достаточно ввести только Биткоин Адрес getrawtx.sh «address»bash-скрипт: getrawtx.sh через API сайта https://chain.so/api/ находит неизрасходованный выход транзакции
(UTXO)
Исходный код: https://github.com/demining/CryptoDeepTools/tree/main/01BlockchainGoogleDrive