区块链交易

区块链交易流程:

    第一步:交易的生成

        当前所有者利用私钥对前一次交易和下一位所有者签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。一笔新交易产生时,会先被广播到区块链网络中的其它参与节点。

    第二步:交易的传播

        当前所有者将交易单广播至全网,每个节点会将数笔未验证的交易Hash值收集到区块中,每个区块可以包含数百笔或上千笔交易。最快完成POW的节点,会将自己的区块传播给其他节点。

    第三步:工作量证明

        每个节点通过相当于解一道数学题的工作量证明机制,从而获得创建新区块的权力,并争取得到数字货币的奖励。各节点进行工作量证明的计算来决定谁可以验证交易,由最快算出结果的节点来验证交易,这就是取得共识的做法。

    第四步:全节点验证

        当一个节点找到截时,它就向全网广播该区块记录的所有盖时间戳的交易,并由全网其他节点核对,其他节点会确认这个区块所包含的交易是否有效,确认没被重复花费且具有效数位签章后,接受该区块,此时区块才正式接上区块链,无法再窜改资料。

    第五步:区块链记录

        全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块。所有节点一旦接受该区块后,先前没算完POW工作的区块会失效,各节点会重新建立一个区块,继续下一回POW计算工作。每个区块的创建时间大约在10分钟,随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短,随算力减弱而延长。

 

一个 交易 的生命周期:

    1. 某人发出交易请求

    2. 广播交易请求到 P2P 网络

    3. 验证,miners 验证交易正确性

    4. 多个交易组成一个区块

    5. 新的区块加入到一个已经存在区块链中

    6. 交易完成

 

几个问题:

1. 如何证明你有钱?

    根据过往的交易记录,看是否有 UTXO 的公钥与交易发起人的公钥是一致的.

    如果遍历整个去区块链来判断你是否有钱,那么效率将会及其低下.所以一般会维护一个 UTXO集合.

2. 如何证明你是你?

    这么说有点像个哲学问题,不如换个说法,如何防止别人冒用你的钱包?或者说如何防止别人仿冒你的签名.

这就涉及一个密码学问题了.先需要弄清楚私钥,公钥,钱包地址之间的关系.

简单地来说,私钥可以生成公钥,公钥可以生成公钥哈希,公钥哈希又可以生成钱包地址.整个过程中除了公钥哈希生成钱包地址是可逆的,其他都是不可逆的.

    区块链交易

    详细的钱包抵制生成过程如下:

区块链交易

    在发起交易时,交易发起人需要使用[私钥]对交易进行签名,生成交易的过程如下:

区块链交易

    所以,为了防止别人冒用你的钱包,你需要在每笔交易下进行签名.也就是说,转出签名证明了你是你!

    其实每个TX就像一个转账支票,转出公钥就是出票人账号,转入钱包地址就是收款人,而转出签名就是出票人签章!

 

3. 如何防止你的钱被使用两次?

    这个就涉及到比较复杂的共识算法了,比特币是使用的PoW(Proof of Work)算法.每个交易都需要广播请求到P2P网络.经过大家验证,大家验证就需要验证你是否有钱,验证你是不是真正钱包的主人

    区块链交易