IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 区块链-1 了解 -> 正文阅读

[区块链]区块链-1 了解

区块链-1 了解

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

区块链的优点
去中心化,更安全

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

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

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

https://www.hyperledger.org/about/members 可以看到很多大企业加入

主流币区块浏览器
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%算力攻击

比特币如何匿名
天生匿名性由于交易双方只有公钥公开,不需要任何个人或组织信息。
但公钥就是化名,因为账本公开,可轻松找到一个公钥的交易历史。仔细分析这些交易元数据,依然可以追踪相关资金的使用情况。

使用密码学技术创建一个安全的账本,让交易无须通过第三方进行。
加密货币的使用远比法币简单,通过创造一种加密货币,代表任何资产,比如代表一美元,代表一桶石油等等。从而实现一个全球化的、实时的、可靠的、超低运行费用、而且可以匿名的交易系统。
降低对中心化的依赖。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:34:31  更:2021-11-09 19:35:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:40:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码