Transactions

如何解碼非常大(!)的原始交易?

  • October 3, 2020

我正在解析區塊鏈以提取腳本所需的某些資訊。

我做的一件事是解析交易。我要做的是:

getrawtransaction <tx>
decoderawtransaction <rawtx>

這適用於大多數交易 (>99%),但有些交易非常龐大,比特幣客戶端無法處理它們。我想知道如果不是 bitcoind 本身,還有什麼可以處理它們。我在 bitcoind 中遇到的錯誤:

TX decode failed (code -22)

那是因為它不能接受很長的論點。我的紅寶石腳本與

Arguement list too long - (Errno::E2BIG)

如何解碼此類交易?這裡有些例子:

2f50fdf7adbf58e91d738869948f4b191eb3cafa016c6df7e9182c06e4513852
e7229316b5a5b1f53382ec5a526b842dda2ca96bc891cd02d397a52c4a84dba0
540359af779a510828f0afd3c88562b62c37d0e4eeccb08104a167a3600f7956

謝謝。


更新:我只是試圖將 rawtransaction 粘貼到這個線上解析器中,這個解析器可以毫無問題地解碼該事務。這怎麼可能以程式方式實現?

嘗試這個:

bitcoind getrawtransaction 2f50fdf7adbf58e91d738869948f4b191eb3cafa016c6df7e9182c06e4513852 1

注意末尾的1 ,它指示 bitcoind 以詳細模式執行。

聽起來您正在命令行上傳遞整個事務,但是您的作業系統對命令行參數的最大(組合)長度有限制,該長度已超過。消息“參數列表太長”是作業系統錯誤,而不是來自 bitcoind 本身。

您應該能夠使用-stdin參數 frombitcoin-cli通過標準輸入而不是在命令行上傳遞它,在這種情況下沒有長度限制。在類 Unix 作業系統上,您可能希望通過管道傳遞數據,使用popen(3)您選擇的語言或其等效語言,但您也可以寫入臨時文件。

引用自:https://bitcoin.stackexchange.com/questions/19674