⚫PoS(Proof of Stake)译为权益证明,是一种在公链中的共识算法,可作为 PoW 算 法的一种替换
⚫基于权益证明的数字货币中,下一个区块的选择是根据不同节点的股份和时间进行 随机选择的
⚫PoS 的设计理念,来自于对比特币危机的思考,比特币的区块产量每 4 年会减半, 在不久的未来,随着比特币区块包含的产量越来越低,大家挖矿的动力将会不断下 降,矿工人数越来越少,整个比特币网络有可能会逐渐陷入瘫痪
⚫其次,若干年后,随着矿工人数的下降,比特币很有可能被一些高算力的人、或团 队、或矿池,进行 51%攻击,导致整个比特币网络崩溃
package main
import (
"time"
"strconv"
"crypto/sha256"
"encoding/hex"
"math/rand"
"fmt"
)
//实现PoS算法
//定义区块
type Block struct {
Index int
TimeStamp string
BPM int
HashCode string
PrevHash string
//区块验证者
Validator string
}
//创建区块链,数组
var Blockchain []Block
//生成新的区块
//address是矿工地址
func GenerateNextBlock(oldBlock Block, BPM int, address string) Block {
var newBlock Block
newBlock.Index = oldBlock.Index + 1
newBlock.TimeStamp = time.No