关于区块链:区块链1-了解

42次阅读

共计 2138 个字符,预计需要花费 6 分钟才能阅读完成。

区块链概念
区块链技术用区块去记录流水账。(比特币的第一个区块 – 创世区块)
支付宝的相护宝是用了蚂蚁的区块链技术。

区块链的长处
去中心化,更平安

分布式系统
通过互联网来保护一个公共的账本,由两个以上节点组成一个整体,节点独立,节点能互相通信。

区块链所有节点如何达成共识?通过算法:
共识算法: 工作量证实(PoW)– 代理权利证实(DPoS)–PBFT(拜占庭容错)

行业组织:比特币基金会 – 以太坊基金会 –block.one(EOS)–Hyperledger(Linux 基金会)(专一企业的利用)

https://www.hyperledger.org/a… 能够看到很多大企业退出

支流币区块浏览器
btc.com
etherscan.io
eosx.io

如何验证交易单方
私钥 — 只有发起人晓得
公钥 — 用私钥运算得出,单向加密,无奈解密
加密计算的在线网站:1024tools.com/hash
交易签名:跟手写签名一样,“数字签名”用于提供交易实在的证实。不同的是“数字签名”对每一笔交易都是惟一的。

钱包
生成钥匙对、账户名;查看余额、转账;应用去中心化利用

如何发送和记录交易
转账信息 + 私钥签名进行广播式的发送,疾速传遍全网,各个节点拿公钥进行核查验证。
验证后存储到分布式账本中。

验证交易
没有核心机构,由谁来验证交易;矿工:专门用来验证交易并保护账本的节点。
矿工把交易分组成一个区块

新区块决出
求解新区块办法:工作量证实(Proof of Work),PoW 是解决一个特定的数字问题,费时费力工作量大,但他人容易验证。

PoW三要素:
随机数(nonce):一个随机数字,用于参加哈希运算,直到哈希值满足前几位是 0,这个随机数就能够确定了。
哈希 (hash):一个固定长度的文本,是哈希运算的后果。
交易(Tx): 实在的转账信息。

挖矿的回报
一个比特币新区块处分 12.5 个 BTC。

比特币的发行 新比特币被发送到采矿胜利的矿工(Coinbase)。总共 2100 万枚。
缓释机制 网络主动调整难度,区块哈希的 0 位数减少,每 21 万个区块,处分减半。

区块的实现

class Block{
    var index=0
    var timeStamp=Date()
    Var preHash=""
    var nonce=0
    var hash=""
    var key:String{
        get{return "\(self.index)\(self.timeStamp)\(self.preHash)\(self.nonce)"
        }
    }  
}

Hash 的算法抉择有很多种
比方 SHA1 算法

extesnsion String{function sha1()->String{let task=Process()
        task.launchPath="/usr/bin/shasum"
        task.arguments=[]

        let inputPipe=Pipe()
        .....
    }
}

区块链构造
区块的容器(按区块高度排列)
每一个区块蕴含上一个区块的哈希
每一个区块哈希满足前几位是 0(网络难度主动调整)
创世区块的哈希为 0

区块链
class Blockchain{var blocks=[Block]()

    init(_genesis:Block){ }
    func add(block:Block){
        if blocks.isEmpty{
            block.preHash="0"
            本区块的哈希计算
        }else{
            block.preHash=blocks.last!.hash
            block.index=blocks.count
            // 本区块的哈希计算
        }
        blocks.append(block)
        print("实现增加新区块!")
    }
    func genHash(for block:Block)->String{var hash=block.key.sha1()
        // 算出哈希,第一位是 0,如果没算进去,就把随机数递增
        while !hash.hasPrefix("0"){
            block.nonce+=1
            hash=block.key.sha1()}
        return hash;
}
}

let block1=Block()
let blockchain=Blockchain(block1)

同时挖到比特币算谁的
同一时间挖到同一个区块的可能性是存在的。每个节点收到新区块的工夫不一样,能够产生分支,在经验过屡次分治后,切换到最长的那条。
比特币个别是等 6 个新区块后,就稳定下来了。
短分支中的交易被退回到”待确认交易池“,期待稍后解决。

伪造新区块公布 很容易被验证,不正确的哈希会被疏忽。
更改区块中的交易 , 会导致整体区块哈希值变动,要想这个区块被网络抵赖,必须从新计算。
因为后续区块蕴含前一个区块的哈希,以此类推,后续所有的都要从新计算。—51% 算力攻打

比特币如何匿名
天生匿名性 因为交易单方只有公钥公开,不须要任何集体或组织信息。
但公钥就是化名,因为账本公开,可轻松找到一个公钥的交易历史。仔细分析这些交易元数据,仍然能够追踪相干资金的应用状况。

应用密码学技术创立一个平安的账本,让交易毋庸通过第三方进行。
加密货币的应用远比法币简略,通过发明一种加密货币,代表任何资产,比方代表一美元,代表一桶石油等等。从而实现一个全球化的、实时的、牢靠的、超低运行费用、而且能够匿名的交易系统。
升高对中心化的依赖。

正文完
 0