我的理解是,交易以双哈希格式存储在区块链上:ie SHA256(SHA256(rawtransation))。但是也可以访问原始事务。这意味着原始事务数据必须存储在某个地方。那么,如果原始交易数据没有存储在区块链上,它存储在哪里呢?或者我的初始语句对以双哈希格式存储的事务是否有误?我不认为可以通过反转双哈希操作来提取原始事务数据。
比特币核心
交易
块链
分享
改进这个问题
跟随
11小时前问的
马克
11322青铜徽章
新贡献者
添加评论
2个答案
4
这是一个定义问题。
区块链不存储任何东西,它是一个抽象的数据结构,由网络中的节点共同维护。这些节点就是存储东西的节点。这可能包括也可能不包括实际的事务数据-这无关紧要。
比特币区块链由哈希链接的块头组成。每个块头都包含上一个块头的哈希。每个块头还包含其中所有事务哈希的哈希(通过Merkle树)。这些事务散列显然是事务数据本身的散列。
这是所有节点都需要同意的结构的定义,因为它涉及散列,这些散列需要匹配。但他们实际上储存的是他们自己的事。具有未运行历史记录的完整节点将存储所有事务和所有块。修剪后的节点可以将所有事务和块存储到历史上的某个特定点。更轻量级的节点可能只存储用户感兴趣的块头和事务。
分享
改进这个答案
跟随
11小时前回答的
彼得·维尔
68.1k88金徽章146146银徽章223223铜徽章
添加评论
0
双哈希格式:ie SHA256(SHA256(rawtransation))
你对这件事的理解是非常非常错误的。
区块链中存储的数据结构不是双重散列的。相反,数据结构中存储了两个哈希值。
而不是SHA256(SHA256(rawtransation))。您应该将区块链数据结构可视化为:
结构块{
交易[]交易;
int256 nonce;
int256 previousHash;//SHA256(previous.transactions+previous.nonce+previousHash)
int256哈希;//SHA256(this.transactions+this.nonce+this.previousHash)
}
您可以看到,数据结构通过将前一个块的哈希作为其自身数据的一部分而链接到前一个块。这是区块链的“链”部分。整个块集的定义是递归的,因为要计算前一个块的哈希值,需要先计算前一个块的哈希值,依此类推,直到到达genesis块为止。
原始提交的事务是块的一部分。
分享
改进这个答案
跟随