• 区块链|学习笔记(二)


    本章将介绍有关比特币的基础知识。

    非对称加密:

    非对称加密有两把密钥,一把公钥一把私钥。顾名思义,公钥是公开的,任何人都能获取,而私钥是私密的,只有拥有者能使用。

    举两个例子来说明一下公私钥是如何使用的:

    • 小王生成一对密钥,并将公钥公开,小明用公钥加密了一段信息,发送给小王,小王使用私钥进行解密,从而获取信息,在传输过程中这段加密信息被小张截获,但因为小张没有小王的私钥而无法解密。
    • 小王生成一对密钥,并将公钥公开,小王用私钥加密了一段信息,发送给小明,小明使用公钥进行解密,从而确认发送者是小王,且未被篡改。

    比特币正是使用了非对称加密的方式,你可以使用私钥打开钱包进行支付,而他人没有你的私钥,所以无法取走你的钱。

    非对称性加密保障了数字货币的交易安全,其中最关键的一环就是私钥,一旦密钥丢失或者被盗,那么资产将不保。

    钱包:

    比特币交易时,交易双方实际上不是人,而是私钥,这就是比特币交易匿名性的根本原因,你无从得知私钥背后的主人是谁。

    所以在进行比特币交易之前你首先需要一对公私钥,这时我们引入钱包这个定义,钱包并不是用来存储比特币的,因为众所周知比特币是存放在区块链上的,这里的钱包是用来存储你的公私钥,钱包会自动帮你生成一对公私钥并存储在内。

    根据协议,公钥的长度是512位,由于公钥过长不方便传播,所以协议规定要为公钥生成一个160位(二进制)的指纹,将二进制转化为十六位制即为钱包的地址。

    每个钱包都会有一个独有的地址,当别人需要向你转账时,你只需要告知对方你的钱包地址,让他向该地址转账,你即可收到该笔转账。

    交易验证:

    简单来说我们可以把一笔比特币交易看作:一定量的比特币从一个地址转移到了另一个地址。

    这里会出现两个问题:

    • 如何检验支付方是否拥有足够的比特币?

      这个很简单,因为比特币上的交易记录是公开的,某个地址下拥有多少比特币一查便知,所以我们可以轻松验证支付方是否有相应支付能力。

    • 如何防止自己的地址被盗用,他人冒用你的名义进行交易?

      比特币协议规定:申报交易时,比特币支出方除了提供交易金额外,还需要提供以下数据:

    1. 上一笔交易的Hash(你获取这些比特币的途径)
    2. 本次交易双方的地址
    3. 支付方的公钥
    4. 支付方的私钥生成的数字签名

      接下来我们要验证这些数据:

    1. 检验上一笔交易,确认支付方的比特币的来源
    2. 计算支付方的公钥指纹,确认与支付方的公钥一致,确保公钥属实
    3. 使用公钥解开数字签名,确保私钥属实

    交易确认:

    我们验证完交易后,需要矿工把交易写入区块链才能算交易完成,这里我们就需要用到矿工,在学习笔记(一)中已经讲了很多关于矿工和挖矿的知识了,这里就不再赘述。

    参考链接:http://www.ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html

  • 相关阅读:
    BZOJ1001 狼抓兔子 终于过了!
    BZOJ 1901: Zju2112 Dynamic Rankings( 树状数组套主席树 )
    BZOJ 2302: [HAOI2011]Problem c( dp )
    BZOJ 1407: [Noi2002]Savage( 数论 )
    BZOJ 2661: [BeiJing wc2012]连连看( 费用流 )
    BZOJ 1021: [SHOI2008]Debt 循环的债务( dp )
    BZOJ 3170: [Tjoi 2013]松鼠聚会( sort )
    BZOJ 2301: [HAOI2011]Problem b( 数论 )
    BZOJ 2434: [Noi2011]阿狸的打字机( AC自动机 + DFS序 + 树状数组 )
    BZOJ 3231: [Sdoi2008]递归数列( 矩阵快速幂 )
  • 原文地址:https://www.cnblogs.com/Cchblogs/p/9322172.html
Copyright © 2020-2023  润新知