如何使用Rust实现一个PoS区块链 0x00

区块链是什么?

分布式去中心化P2P账本

PoS 是什么

Proof of Stake(权益证明)是一种共识算法,在Eth迁移完成之后被大家熟知,大概的意思就是你存钱越多你越有信用挣钱也就越多,
关于PoS和PoW的区别请自行谷歌,这里就不再赘述了

Eth2.0使用的PoS算法叫Casper

这东西怎么工作的捏?

传统区块链有一个概念叫矿工,PoS也有,现在一个矿工需要先存一笔钱(保证金)才可以挖矿(验证别人的交易的合法性),存的钱的数量决定了他负责挖矿的权重,当然也为了公平起见会有一个稍微偏心点的随机算法,不过确实有的链是100%公平的,但那样存钱的动力就没了~

哦,假如这个矿工被抓到他不守规矩(如在煤矿里抽烟),那么他的保证金就会被没收,所以大家一般都是很诚实的矿工啦

矿工选择的伪代码如下

#[derive(Debug)]
struct Miner {
    addr: Address,
    stake: u64,
}
let miners : Vec<Miner> = vec![...];

// 计算权重
let total_stake = miners.iter().reduce(|m1, m2| m1.stake + m2.stake ).unwrap();
let weight_pair = calculate_weight(total_stake, miners);

// 带权重随机算出当前leader
let leader = weighted_rand(rand, weight);
println!("current leader is: {:?}", leader);
// > Miner { addr: 第二个, stake: 挺多的 }

这玩意儿的优点是啥?

  • 哦!你看这东西他不需要矿机欸!你的电脑这要能跑起来这个程序,手头有点钱去质押你就可以当矿工!
  • 挖矿不再是比拼算例,所以这东西很快而且很环保~
  • 攻击并不会盈利 攻击者会损失他的财富,所以分叉会变少~

那缺点呢?

  • 你保证金给的越多就约有希望去挖矿,所以只要你占比足够大你就可以控制整个网络
  • 用户仓鼠化,用户会屯钱,因为这样就能赚更多钱

解决方法:

  • 币龄
  • 通缩

但是请原谅我不懂经济

流程和设计

下面是灵魂配图

然后这个过程跑完了其他的区块就会验证,验证失败了富裕的节点就会被打倒地主分田地

所以我们现在已经明确了应该写点啥

  1. 区块结构
  2. 区块链结构
  3. 账户
  4. 验证者
  5. 质押
  6. 交易结构
  7. 交易池
  8. 钱包
  9. libp2p太好了!
  10. 一些对外开放的api

引用和鸣谢

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇