主页 > imtoken国内无法下载 > 区块链-1 理解

区块链-1 理解

imtoken国内无法下载 2023-05-07 07:34:14

区块链-1 理解

区块链概念

区块链技术使用块来记录日志。 (比特币的第一个区块——创世区块)

支付宝的湘湖宝使用了蚂蚁的区块链技术。

区块链的优势

去中心化,更安全

分布式系统

一个公共账本通过互联网维护,它由两个或多个节点作为一个整体组成。 节点是独立的,可以相互通信。

区块链中的所有节点如何达成共识? 按算法:

共识算法:工作量证明 (PoW) – 代理权益证明 (DPoS) – PBFT(拜占庭容错)

行业组织:Bitcoin Foundation – Ethereum Foundation – block.one (EOS) – Hyperledger (Linux Foundation)(专注于企业应用)

可以看到很多大公司都加入了

主流币种区块浏览器

比特币网

以太扫描网

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%算力攻击

比特币如何匿名

固有的匿名性 由于只有公钥在交易各方之间是公开的,因此不需要任何个人或组织信息。

但是公钥是假名,因为账本是公开的,一个公钥的交易历史很容易查到。 仔细分析这些交易元数据,仍然可以追踪到相关资金的使用情况。

使用密码学技术创建一个安全的账本,使交易无需通过第三方。

加密货币的使用远比法定货币简单。 通过创建一个加密货币比特币区块浏览器,它可以代表任何资产,比如代表一美元,代表一桶石油等等。 以实现一个全球性的、实时的、可靠的、超低运营成本的、匿名的交易系统。

减少对中心化的依赖。