1.挖矿
- 挖矿是重复计算区块头的hash,不断修改随机数nonce,直到与难度目标匹配
- 挖矿就是在争取记账权,对一段时间内比特币网络中的交易进行确认,并记录在区块链上的过程
- 挖矿的人是矿工,挖矿过程就是争取记账的过程;矿工是记账员,区块链是账本,每个区块就是整个账本中的每一个账页
- 挖矿成功,比特币系统会新产生一笔比特币,将这次奖励给挖矿成功的矿工
- 挖矿成功,矿工争取到了区块的记账权,这10分钟内被打包的所有未确认的交易的手续费都会奖励给该矿工
2.比特币钱包
- 广义上,钱包是一个应用程序,为用户提供交互界面。钱包控制用户访问权限、
管理比特币地址及其秘钥、跟踪余额、创建交易
和签名交易
- 狭义上,即从程序员的角度来看吗,“钱包”是指用于
存贮和管理用户秘钥
的数据结构 钱包是私钥的容器,一般是通过结构化文件或简单数据库来实现。
- 一个常见误解是,比特币钱包里含有比特币。事实上,钱包里只含有钥匙。“钱币”被记录在比特币网络的区块链中。用户通过钱包中的秘钥签名交易,从而来控制网络上的钱币。在某种意义上,比特币钱包是秘钥链。
- 比特币钱包只含有秘钥,而不是钱币。每个用户有一个包含多个秘钥的钱包。钱包只包含私钥/公钥对的秘钥链。用户用秘钥签名交易,从而证明他们拥有交易输出(他们的钱币)
3.比特币节点
- 运行区块链软件的计算机就是一个节点
每个比特币钱包都是一个节点。
- 全节点
拥有完整区块链账本的节点,负责比特币转账交易的广播和验证
同步整个区块链并对交易做验证,同事中继区块的在网络上的传播 - 轻节点
不保存所有区块,因爱全节点做交易
- 挖矿节点
带挖矿功能的全节点
转账交易发生后由所有节点共同广播至全网,挖矿节点验证改交易正确后会记录至区块链账本 - 因为不需要全节点也可以进行比特币转账,所以比特币全节点个数只占全部节点数的一部分
4.挖矿三部曲:记录、打包、挂链
5.发出交易到矿工打包需要几步?
- 发起比特币转账,将交易广播到全网。
- 挖矿节点接到交易后先将其放入本地内存池,进行一些基本验证,判断是否属于TUXO。如果通过验证,则将该笔交易放入未确认交易池,等待被打包;如果未通过验证,则被认为是无效交易,直接废弃,不会被打包。
未确认交易池是所有交易数据的集合,这些交易已经被比特币节点验证,但未被确认。
- 挖矿节点在比拼算力的同时还需要及时验证每笔交易,更新自己的”未确认交易池“。矿工挖矿前,将从“未确认交易池”中抽取“未确认交易”进行打包。
- 有时交易不能被及时打包,是因为“未确认交易池”中交易太多,每个区块能记录的交易数有限,就造成区块拥堵。
6.比特币交易验证过程
- 一笔交易就是一个地址的比特币,转移到另一个地址。由于比特币的交易记录全部都是公开的,哪个地址拥有多少比特币,都是可以查到的。因此,支付方式是否拥有足够的比特币,完成这笔交易,这是可以轻易验证的。问题出在怎么防止其他人,冒用的的名义申报交易。
- 比特币协议规定,申报交易的时候,除了交易金额,转出比特币的一方还必须提供以下数据。
1.上一笔交易的Hash(你从哪里得到这些比特币)
2.本次交易双方的地址
3.支付方的公钥
4.支付方的私钥生成的数字签名
- 验证这笔交易是否属实,需要三步。
1.找到上一笔交易,确认支付放的比特币来源。
2.算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实.
3.使用公钥去解开数字签名,保证签名属实、私钥属实.
经过上面三步,就可以认定这笔交易是真实的。
网友评论