比特币依赖的技术

2020-06-23  本文已影响0人  Gundy_

一、项目地图

比特币是如何工作的,它用了哪些技术?

image

1. 交易是一切数据的来源

image

2. 交易流程

image image

二、比特币用到了哪些技术

image

1. 概述

1.密码学
2.P2P网络
3.工作量证明
4.base58

三、密码学(保证交易安全)

1. 对称加密

介绍

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

算法

DES、3DES、AES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK。

image

特点

2. 非对称加密(交易验证)


介绍

公钥私钥一一对应,公钥负责加密,对外公开,私钥用于加密和签名,仅自己持有,决不能外漏

组成

公钥加密

image

私钥签名

image

签名图示

image

特点

算法

常用:RSA、ECC、Elgamal、背包算法、Rabin、D-H

应用

image

总结

四、P2P网络(广播交易,同步账本)

计算机网络的初衷就是建立一个相互通信的对等的计算机网络,但是由于历史问题连接在网络的计算机配置不高,计算能力和存储能力不足,因此相当长一段时间我们更倾向于使用基于客户端(client)和服务器(server)的C/S模式及浏览器(Browser)和服务器(server)的B/S模式。

而现代计算机的计算能力和配置都有了显著提高,建立去中心化的P(peer)2P(peer)对等网络,能很好的处理这种高并发数据处理,被广泛应用于文件下载和在线视频领域。

==了解即可==

1. 介绍

P2P(peer-to-peer):点对点技术,无中心服务器,依靠用户群交换信息的互联网体系。

网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client),P2P体系结构是应用层概念。

2. 图示

image

3. 特点

耐攻击、高容错、地位平等。

4. 应用

BT下载、电驴下载。

五、工作量证明(挖矿)

工作量证明(POW:Proof of work)是指出示结果表示你做过一件事情,获取结果的过程很曲折,验证却很简单。

==你出示计算得到随机数nonce,如果和你提供区块数据计算结果满足小于当前的难度值,那么系统就认为你做过一定量的计算工作。==

image

我们都说比特币挖矿是算一道题,那它算什么呢?其实它就是对当前打包好的交易进行哈希sha256运算,那哈希运算很简单啊,为什么说是难题呢?比特币的难题是要求矿工找一个特定的哈希值。我们都知道哈希运算的结果毫无规律可循,找一个明确的哈希是不现实的,我们要有难度,又要可行性,所以挖矿要求找一个比目标值小的哈希值即可。

image

演示:https://anders.com/blockchain/blockchain.html

==计算的时候同步搜集交易,上一个轮竞争结束后对搜集的交易进行打包,进行新一轮竞争。==

==挖矿的时候不会加入新的交易==

难度值(猜测):0x000f00000000000000 0x0000ffffffffffffff 10000

sha256(helloworld+1) => 0x12345.... 0x000100000000000000

sha256(helloworld+2) => 0x0212345.... 0x000100000000000000

.....

sha256(helloworld+10000) => 0x0000f4345.... 0x000100000000000000 挖矿成功! 10000 Nonce

就是我们当前区块的哈希值

10000 就是我们要找的随机数

0x333f00000000000000 -> 0x10087ffffffffff

0x00000000 ->

image

截图

image

1. 介绍

工作量证明(Proof Of Work)缩写为POW,是一种对应服务与资源滥用、或是阻断服务攻击的经济对策。一般是要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。目前该技术成为了加密货币的主流共识机制之一,如比特币所采用的挖矿技术。

2. 原理

BTC的POW要求运行一个哈希算法(sha256),找到一个符合要求(小于目标哈希值)的Block Hash,==,该哈希值由N个前导零构成,零的个数取决于网络的难度值==。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。

image

Hash和Nonce是配套的,只有算出来Nonce,才能确定哈希值。

因为满足条件的Nonce有无穷多个,我们只要找到一个就挖矿成功。

3. 代码

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    var data = "helloworld"
    
    for i := 0; i < 1000000; i++ {
        hash := sha256.Sum256([]byte(data + string(i)))
        fmt.Printf("hash : %x, %d\n", string(hash[:]), i)
    }
}

看一下,前导0个数增加一个,i值的变化情况

image

六、比特币地址生成

1. 地址规则

对随机字符串进行哈希,生成32字节的私钥

image

生成流程如下(目前了解即可,v5版本会使用代码实现)

image
  1. 地址可以校验
  2. 比较短,可读
  3. 前面有版本号,所以可以根据地址迅速判断是属于哪个网络的地址

版本号不一样:

主网:00 ---》 1

测试网:

私有网络:

image

2. 在线演示

在线生成地址(不可靠,只为了演示)

BitCoinAddress(相当有意思的地址,生成真实可用的地址)

七、编码(网络传输、生成地址)

1. Base64

介绍

Base64编码,是我们程序开发中经常使用到的编码方法。因为base64编码的字符串,更适合不同平台、不同语言的传输(一个字符可能其他的系统没有)。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法,一句:将二进制数据文本化(转成ASCII)。

作用

由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。

原理

Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'=’。

为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

Base64编码表

image

恰好三个字节情况:

image

不足三个字节情况:

image

特点

代码

package main

import (
    "encoding/base64"
    "fmt"
    "log"
)

func main() {
    input := []byte("区块链学员中有一群神秘的大佬,他们家里有矿!")

    
    encodeString := base64.StdEncoding.EncodeToString(input)
    fmt.Println(encodeString)

    
    decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
    if err != nil {
        log.Fatalln(err)
    }
    fmt.Println(string(decodeBytes))

    fmt.Println()

    
    uEnc := base64.URLEncoding.EncodeToString([]byte(input))
    fmt.Println(uEnc)

    uDec, err := base64.URLEncoding.DecodeString(uEnc)
    if err != nil {
        log.Fatalln(err)
    }
    fmt.Println(string(uDec))
}

Base58(比特币生成地址)

在base64字符中去掉6种容易混淆的字符

为什么base58

==使用了58个字符(一种Base58数字系统)和校验码,提高了可读性、避免歧义并有效防止了在地址转录和输入中产生 的错误。==

八、总结

我们从交易环节出发,从大方向上介绍了比特币的运作流程及相关技术,但是各个环节到底在系统中具体如何运作的?接下来我们便带领诸位层层剖析,走到其内部结构。

image
上一篇下一篇

猜你喜欢

热点阅读