一直以来有困惑
1.私钥确定是完全不能重复的吗?虽然是256位二进制。
2.节点说的是矿工节点吗,还是所有的节点
3.矿工是如何一边打包交易一边破解随机数的,交易被确认的过程不是在网络中广播的过程吗?
比如,我在打包,你也在打包,咱们俩是打的同一个吗?
还是各自打包各自的,谁破解谜题了谁的区块就得到认可。
或者说咱们面对的是同一个交易池吗?
我不能理解的是交易是如何被打包进区块的,比如有一万笔交易,只有1000笔被确认,但是这一万笔都被广播了,莫非会有一些处于“未确认”的状态?等待着被打包进下一个区块?
在区块链研习社咨询后,思路清晰了许多。
1、私钥并不是完全不重复,只是说在地球上,这种重复的概率几乎为0 ;
私钥是程序生成的256位二进制的随机数。他的大小是10^76这个量级的。宇宙所有原子的量级大概是10^80。重复的概率微乎其微。
2、节点就是矿工,你的电脑也可以作为一个节点,虽然算力很小;
3、交易在一个内存池(队列)里,矿工尝试打包,取出交易,计算难题,计算出来了,于是加上自己的签名,完成确认过程。没有准确的时间先后的问题。
但是我还有疑惑,是不是可以这样理解,在未找到答案之前,有许多区块,谁找到答案,谁的区块就被打到区块链中,进而区块中的交易被确认,并且可以进行下一步的交易。
接着就有了下面的回答:
一个交易可能在不同的节点上的队列里 ,就像你在一班排第三,在三班可能排第九。
然后有一个区块打包会包含这个交易,其他节点处理是会把交易抛弃掉。所以,一个交易只能被包含到一个区块里。
区块提交后,其他节点进行同步,同步该区块,并对区块中的每个交易进行验证,如果发现有交易是本地队列已经有的,就将该交易从自己的队列里剔除。
又有了新的困惑,不是说验证只需要查默克尔树吗,为何要对每笔交易都验证?按理说是需要验证每笔交易,这样才能有效剔除自己队列中的交易。那么,是不是在后期查询中需要默克尔树呢?
下一步的解惑。