日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

区块链-1 了解

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 区块链-1 了解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**區塊鏈概念**</br>

區塊鏈技術用區塊去記錄流水賬。(比特幣的第一個區塊--創世區塊)

支付寶的相護寶是用了螞蟻的區塊鏈技術。

**區塊鏈的優點**</br>

去中心化,更安全

**分布式系統**</br>

通過互聯網來維護一個公共的賬本,由兩個以上節點組成一個整體,節點獨立,節點能相互通信。


?

區塊鏈所有節點如何達成共識?通過算法:</br>

共識算法:工作量證明(PoW)--代理權益證明(DPoS)--PBFT(拜占庭容錯)</br>

行業組織:比特幣基金會--以太坊基金會--block.one(EOS)--Hyperledger(Linux基金會)(專注企業的應用)

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

**主流幣區塊瀏覽器**</br>

btc.com

etherscan.io

eosx.io

**如何驗證交易雙方**</br>

私鑰---只有發起人知道</br>

公鑰---用私鑰運算得出,單向加密,無法解密</br>

加密計算的在線網站:1024tools.com/hash</br>

交易簽名:跟手寫簽名一樣,“數字簽名”用于提供交易真實的證明。不同的是“數字簽名”對每一筆交易都是唯一的。</br>

**錢包**</br>

生成鑰匙對、賬戶名;查看余額、轉賬;使用去中心化應用

**如何發送和記錄交易**</br>

轉賬信息+私鑰簽名進行廣播式的發送,快速傳遍全網,各個節點拿公鑰進行核對驗證。

驗證后存儲到分布式賬本中。

**驗證交易**</br>

沒有中心機構,由誰來驗證交易;礦工:專門用來驗證交易并維護賬本的節點。</br>

礦工把交易分組成一個區塊

**新區塊決出**</br>

求解新區塊方法:工作量證明(Proof of Work),PoW是解決一個特定的數字問題,費時費力工作量大,但別人容易驗證。</br>

*PoW*三要素:

隨機數(nonce):一個隨機數字,用于參與哈希運算,直到哈希值滿足前幾位是0,這個隨機數就可以確定了。

哈希(hash):一個固定長度的文本,是哈希運算的結果。

交易(Tx):真實的轉賬信息。

**挖礦的回報**

一個比特幣新區塊獎勵12.5個BTC。

**比特幣的發行**新比特幣被發送到采礦成功的礦工(Coinbase)。總共2100萬枚。</br>

**緩釋機制**網絡自動調整難度,區塊哈希的0位數增加,每21萬個區塊,獎勵減半。</br>

**區塊的實現**

```

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的算法選擇有很多種</br>

比如SHA1算法

```

extesnsion String{

? ? function sha1()->String{

? ? ? ? let task=Process()

? ? ? ? task.launchPath="/usr/bin/shasum"

? ? ? ? task.arguments=[]

? ? ? ? let inputPipe=Pipe()

? ? ? ? .....

? ? }

}

```


?

**區塊鏈結構**</br>

區塊的容器(按區塊高度排列)</br>

每一個區塊包含上一個區塊的哈希</br>

每一個區塊哈希滿足前幾位是0(網絡難度自動調整)</br>

創世區塊的哈希為0</br>

```

區塊鏈

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)

```

**同時挖到比特幣算誰的**</br>

同一時間挖到同一個區塊的可能性是存在的。每個節點收到新區塊的時間不一樣,可以產生分支,在經歷過多次分治后,切換到最長的那條。

比特幣一般是等6個新區塊后,就穩定下來了。

短分支中的交易被退回到”待確認交易池“,等待稍后處理。

*偽造新區塊發布*很容易被驗證,不正確的哈希會被忽略。

*更改區塊中的交易*,會導致整體區塊哈希值變化,要想這個區塊被網絡承認,必須重新計算。

由于后續區塊包含前一個區塊的哈希,以此類推,后續所有的都要重新計算。---51%算力攻擊

**比特幣如何匿名**

*天生匿名性*由于交易雙方只有公鑰公開,不需要任何個人或組織信息。

但公鑰就是化名,因為賬本公開,可輕松找到一個公鑰的交易歷史。仔細分析這些交易元數據,依然可以追蹤相關資金的使用情況。


?

使用密碼學技術創建一個安全的賬本,讓交易無須通過第三方進行。</br>

加密貨幣的使用遠比法幣簡單,通過創造一種加密貨幣,代表任何資產,比如代表一美元,代表一桶石油等等。從而實現一個全球化的、實時的、可靠的、超低運行費用、而且可以匿名的交易系統。

降低對中心化的依賴。

總結

以上是生活随笔為你收集整理的区块链-1 了解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。