【发布时间】:2017-09-16 16:06:02
【问题描述】:
我希望能够确定给定的哈希是否代表一个区块、区块高度或交易。
我知道区块就像 ^[0-9]+$ 并且 ^0$ 是有效的,因为它是创世区块。 我知道一个块在 base58 中,长度为 64,通常以 0 开头。 我知道一个事务在 base58 中,长度为 64。
现在我得到了正则表达式:
- 块高度:^(0|[1-9][0-9]*)$
- 区块哈希:^0+[BASE58]{63}$
- 交易哈希:^[BASE58]{64}$
但我发现了一些以 0 开头的交易,所以我猜比特币协议中只有以 0 开头的区块不属于比特币协议的一部分。 我还运行了一个难度为 1 的 regtest 本地(假)网络,并且所有块都不以 0 开头。
是否有任何可靠的方法(最有可能使用正则表达式)来区分区块哈希和交易哈希?
【问题讨论】:
-
对比特币一无所知,但您可能应该删除块哈希正则表达式中的
+,否则它会在开始时允许多个零,之后仍然有 63 个 base58 字符。 -
比特币的难度迫使区块通过查找带有前导零的哈希来挖掘,所以这是故意的。但是这个正则表达式会导致我暴露的问题。
-
如果不是每个单独的散列模式将块与交易区分开来,那么我猜它一定是顺序。你如何区分它们(视觉上)?