⚫pos(proof of stake)譯為權益證明,是一種在公鏈中的共識演算法,可作為 pow 算 法的一種替換
⚫基於權益證明的數字貨幣中,下乙個區塊的選擇是根據不同節點的股份和時間進行 隨機選擇的
⚫pos 的設計理念,來自於對位元幣危機的思考,位元幣的區塊產量每 4 年會減半, 在不久的未來,隨著位元幣區塊包含的產量越來越低,大家挖礦的動力將會不斷下 降,礦工人數越來越少,整個位元幣網路有可能會逐漸陷入癱瘓
⚫其次,若干年後,隨著礦工人數的下降,位元幣很有可能被一些高算力的人、或團 隊、或礦池,進行 51%攻擊,導致整個位元幣網路崩潰
package main
import (
"time"
"strconv"
"crypto/sha256"
"encoding/hex"
"math/rand"
"fmt"
)//實現pos演算法
//定義區塊
type block struct
//建立區塊鏈,陣列
var blockchain block
//生成新的區塊
//address是礦工位址
func generatenextblock(oldblock block, bpm int, address string) block
//計算雜湊
func generatehashvalue(block block) string
//網路上的全節點
type node struct
//存放幾個節點,有幾個使用者在參與
var n [2] node
//用於記錄挖礦位址
var addr [6000] string
func main()
n[1] = node
//以下為pos共識演算法
var count = 0
//外出迴圈節點個數
for i := 0; i < len(n); i++
} //設定隨機種子
rand.seed(time.now().unix())
//通過隨機值[0,6000)
var rd = rand.intn(6000)
//隨機選礦工
var adds = addr[rd]
//建立創世區塊
var firstblock block
firstblock.bpm = 100
firstblock.prevhash = "0"
firstblock.timestamp = time.now().string()
firstblock.validator = "abc123"
firstblock.index = 1
firstblock.hashcode = generatehashvalue(firstblock)
//將區塊加到區塊鏈
//第二個區塊
//讓adds
var secondblock = generatenextblock(firstblock, 200, adds)
fmt.println(blockchain)
}
優點
節能,不需要耗費太多電力和資源
更加去中心化,51%算力+51%貨幣量才可以攻破
避免通貨緊縮
缺點
純pos機制,通過ipo方法發行,導致少數人獲得大量成本低的貨幣
pos信用基礎不牢固
POS權益證明
proof of stake,權益證明,是即將在以太坊中使用的共識機制。與pow不同的是,pos用幣齡的概念替換了pow中算力的概念,幣齡即持有的貨幣數量與持有時間的乘積,單個節點的幣齡越大,則其越容易找到滿足難度目標的隨機值,從而獲得記賬權。pos避免了pow中的資源消耗,縮短了共識達成的時間,但...
DPoS 股份授權證明 go簡單實現
dpos 即 delegated proof of stake 譯為股份授權證明 最早於 2013 年由 bitshares 提出,目的為解決 pow 和 pos 機制的不足 dpos 機制的加密貨幣,每個節點都可以操作區塊,並按照個人的持股比例獲得 利 息 dpos 是由被社群選舉的可信帳戶 受託...
PoW 工作量證明 go實現
proof of work 簡稱 pow,即為工作量證明 通過計算乙個數值,使得拼揍上交易資料後內容的值滿足規定的上限,在節點成功 找到滿足的 hash 值之後,會馬上對全網進行廣播打包區塊,網路的節點收到廣播 打包區塊,會立刻對其進行驗證 網路中只有最快解密的區塊,才會新增的賬本中,其他的節點進行...