Transactions 是";“未确认交易”;区块链的';内存池是否分布在节点上?

Transactions 是";“未确认交易”;区块链的';内存池是否分布在节点上?,transactions,blockchain,pool,cryptocurrency,Transactions,Blockchain,Pool,Cryptocurrency,我正在尝试用python实现一个区块链,我已经有了能够创建事务和区块(以及所有加密内容)的链代码。我有一个用于未确认事务的本地内存池,该事务是否应该与其他节点共享 我已经搜索了关于这个主题的信息,但没有找到任何具体的信息。 在我看来,事务分散在一种“未确认事务”内存池中是有意义的,节点检查它们在其他节点中没有的未确认事务,删除链中已经存在的事务。 这是正确的吗?如果是的话,我将很高兴收到一些帮助或信息链接 另一个问题: 假设我拥有0.5枚硬币,我想把它们转移给X先生。我执行交易,节点检查在当前链

我正在尝试用python实现一个区块链,我已经有了能够创建事务和区块(以及所有加密内容)的链代码。我有一个用于未确认事务的本地内存池,该事务是否应该与其他节点共享

我已经搜索了关于这个主题的信息,但没有找到任何具体的信息。 在我看来,事务分散在一种“未确认事务”内存池中是有意义的,节点检查它们在其他节点中没有的未确认事务,删除链中已经存在的事务。 这是正确的吗?如果是的话,我将很高兴收到一些帮助或信息链接

另一个问题: 假设我拥有0.5枚硬币,我想把它们转移给X先生。我执行交易,节点检查在当前链中,我确实有0.5枚硬币,所以我签署交易并将其发送到假定的未确认交易池(提到那些不在真实链上)。那么假设在确认该交易之前,我做了另一个0.5的交易。这是构建块的过程中的工作,检查第一个事务是否得到0.5,但第二个事务是否得到0.5?或者它是事务创建过程中的工作?如果是第二种情况,未经确认的交易应计入实际金额。。。你看到我的烂摊子了吗

区块链内存池的“未确认交易”是否分布在节点上

是的,一旦节点接收到事务(假设节点配置正常),它将在验证后立即向其对等方广播该事务。当然,如果事务已经被挖掘(包含在块中),那么它将无法通过验证。这是必要的,因为除非一个节点有很多hashpower,否则挖掘将非常困难,因为它将是唯一知道事务的节点。如果不共享mempool,也会有很多冲突

关于第二个问题:

当您提交交易时,钱包软件应从您的可用余额中扣除(假设未拒绝)。在比特币(和其他相关货币)中,如果交易未在特定时间段(比特币为2周)内确认(包括在区块中),则该交易将从mempool中删除,并且硬币可以再次自由消费。否则,你可以做一个replaceByFee来覆盖该交易,并以少量费用将硬币发送回你自己

区块链内存池的“未确认交易”是否分布在节点上

是的,一旦节点接收到事务(假设节点配置正常),它将在验证后立即向其对等方广播该事务。当然,如果事务已经被挖掘(包含在块中),那么它将无法通过验证。这是必要的,因为除非一个节点有很多hashpower,否则挖掘将非常困难,因为它将是唯一知道事务的节点。如果不共享mempool,也会有很多冲突

关于第二个问题:


当您提交交易时,钱包软件应从您的可用余额中扣除(假设未拒绝)。在比特币(和其他相关货币)中,如果交易未在特定时间段(比特币为2周)内确认(包括在区块中),则该交易将从mempool中删除,并且硬币可以再次自由消费。否则,您可以使用replaceByFee来覆盖该交易,并以少量费用将硬币发送回您自己。

您解决了所有我要求的问题,我不可能要求更好的答案!实际上我还有一个问题,所有节点都知道所有未确认的事务吗?或者就像分布式对等网络一样,它们只保存一部分已知节点(但在交易中)?我不能代表所有加密货币,但在比特币中,默认配置是与所有节点共享所有交易。例如,一些节点选择按费用过滤交易。是的,感谢比特币示例。没关系,我只是想让knownledge尝试重现一个可行的示例。谢谢问:每个挖掘节点是否都创建相同的块(即相同的未确认事务列表)?你解决了我所有的问题,我不可能要求更好的答案!实际上我还有一个问题,所有节点都知道所有未确认的事务吗?或者就像分布式对等网络一样,它们只保存一部分已知节点(但在交易中)?我不能代表所有加密货币,但在比特币中,默认配置是与所有节点共享所有交易。例如,一些节点选择按费用过滤交易。是的,感谢比特币示例。没关系,我只是想让knownledge尝试重现一个可行的示例。谢谢问题:每个挖掘节点是否创建相同的块(即相同的未确认事务列表)?