Raw-Transaction
試圖找到原始創世交易長度
我看到許多不同的山寨幣在初始創世交易中具有不同的長度。我將如何找到初始創世 tx 的長度?我看到了另一個答案,但我不需要讓它變得複雜;我只需要長度,沒有別的。
例如,比特幣是
01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000.
但是,山寨幣有不同的長度。是否有一個標識符可以用來確定 genesis tx 的長度,僅此而已?
編輯:我正在製作一個區塊瀏覽器,所以我不能使用區塊瀏覽器來幫助我獲取資訊。
不幸的是,大多數山寨幣中沒有索引創世塊(因為它們從比特幣分叉並保留相同的錯誤),因此您無法真正通過 RPC 方法訪問它。
你可以做什麼:
- 使用一個區塊瀏覽器,它會告訴你交易的大小。例如,blockchain.info使此資訊可用(204 字節)。
- 找到參數文件並將創世塊的大小列印到標準輸出。
第二個選項基本上需要將以下行放在末尾
CMainParams()
然後編譯。CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION); ssBlock << genesis; printf("block: %s\n", HexStr(ssBlock.begin(), ssBlock.end()).c_str()); printf("block size: %i\n", (int)::GetSerializeSize(genesis, SER_NETWORK, PROTOCOL_VERSION)); printf("tx size: %i\n", (int)::GetSerializeSize(genesis.vtx[0], SER_NETWORK, PROTOCOL_VERSION));
這將列印原始塊數據、大小和交易大小。(注意,這是未經測試的,但這些方面的東西應該可以工作)
注意:雖然不是常態,但可以將多個交易放在一個創世塊中。只需檢查您的假設是否正確。