PoS即股权证明(Proof of Stake)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luckydog612/article/details/80463449

随着以太坊从原来的工作量证明(PoW)机制逐步向股权证明(PoS)过度,股权证明受到了越来越多的关注。为了更好地理解股权证明,我们需要先了解一下工作量证明的基本概念。

工作量证明

工作量证明是一个挖矿的过程,用户安装强大的计算机或者挖矿设备来解决复杂的数学难题,一旦成功地对各种交易进行了计算,已验证的交易将被存储到分布式账本或者公链上新的区块中。挖矿验证交易的合法性并创建新的货币单元。

这个工作对旷工来说是有一定困难的,但对于网络却很容易。网络上许多旷工都争相成为首先解决数学难题的人,第一个解决数学难题的旷工向全网广播自己的解决方案,其他旷工进行验证,验证成功后,区块链存储交易信息,并提供一定数量的数字货币作为奖励给该旷工。这个过程本质上就是需要旷工通过不断地计算,去寻找一个合适的nonce值,代入到事先设置好的数学公式,如果其他旷工成功地验证了这个nonce值,那就说明挖矿成功,存储交易信息并产生奖励。

随着越来越多的算力参与挖矿,大部分数字货币被挖出,对产生新区块的计算次数要求越来越高,从而给旷工得到奖励增加了难度。在工作量证明机制中,旷工需要收回硬件和电力成本,为了产生更大的财富,这促使旷工尽可能的使用挖矿效率较高的挖矿设备,寻找更廉价的电力。

股权证明

工作量证明是通过一定量的计算来验证交易并产生新的区块,与此不同的是,股权证明要求用户拥有一定数量的加密货币。新区块的创造者是由一种伪随机的方式选择的,取决于用户拥有的财富,也被成为“股权”。在股权证明机制中,区块的产生被成为“伪造”或者“创造”,而不是通过挖矿。验证交易并产生新区块的用户成为伪造者。

在大多数应用股权证明的区块链中,在启动区块链的时候创建了数字货币单位,并且数字货币的数量是固定不变的,因此,伪造者通过收取交易手续费作为奖励。在有些区块链中,可以通过增加货币发行数量来创建货币单元,此时就可以将创建新的货币单元产生的数字货币作为奖励。

为了验证交易并创建新的区块,伪造者必须将自己拥有的数字货币来换取这种权利,可以把这种行为看作是把财富放在托管账户中来获得股票,如果他们验证了欺诈性交易,他们将会失去他们所有用的股票,以及他们作为伪造者的权利。一旦将自己拥有的货币换取股权,他们就可以参与区块的产生,因为他们在区块链上投入了自己的资金,理论上来说这促使他们只会验证正确的交易。

这个机制没有提供在区块链创立初始阶段处理数字货币的方法,所以使用这个机制的加密货币会从ICO开始出售他们预先开采的货币,或者初始时使用工作量证明机制,让旷工挖矿获得货币,然后再转换成股权证明机制。
这里写图片描述

区块选择方法

为了使股权证明机制有效的工作,需要有一种方法来选择哪个用户可以伪造区块链中的新的有效区块。如果仅仅通过用户投入资金的多少来选择区块的伪造者,这将会对投入大量资金的用户带来永久的优势。为了解决这个问题,创建了集中独特的选择方法,这些方法中最受欢迎的就属“随机区块选择”和“基于币龄的选择方法”。

随机区块选择

在这种选择方法中,用一个公式来选择下一个区块的伪造者,这取决于用户最小hash值和股权的大小组合。因为股权的大小是公开的,每个节点通常都可以预测谁会成为下一个区块的伪造者。Nxt和BlackCoin是使用随机区块选择方法的加密货币。

基于币龄的选择方法

基于币龄的选择方法是计算投入者的币龄来决定下一个区块的伪造者,币龄的计算方法是投入者将数字货币作为股权的天数乘以作为股权的数字货币的数量。持有者持有数字货币至少30天才能参与下一个区块的竞选,拥有股权越多,持有股权时间越长,成为下一个区块的伪造者的几率就会越大。用户一旦成为伪造者,他们的币龄将会重置为0,因此,他们需要等待至少30天才能再次参加竞选。该机制分配用户最多在90天的时间内伪造下一个区块,这个可以阻止拥有大量股权的用户操控区块链,从而使网络更加安全。因为伪造者成功创建区块的机会越大,他们创建区块的时间就越长,伪造者期待更多的创造区块,这个机制促进了一个健康的社区。

Peercoin是一个基于股权证明的加密货币系统,它使用了基于币龄的选择方法和随机区块选择相结合的选择方法。Peercoin的开发者声称,这使得对网络的恶意攻击变得更加困难,因为购买超过一半的加密货币会比收购51%的股权散列能力更加昂贵。

大部分基于股权证明的加密货币通过手续费的形式支付奖励以验证交易并创建新的区块,设定一个用户期待的目标利率。在这种加密货币的情况下,随着时间的推移,伪造者得到越来越多的加密货币,该利率就会变成货币供应的最大利率。

因为电力和硬件成本远远低于工作量证明机制,股权证明显得更加的友好和高效,鼓励越来越多的人参与进来。

注:本文基于国外文档翻译总结,如有错误还请不吝赐教!

展开阅读全文

Stake Your Claim

10-16

DescriptionnnThe designers at Gazillion Games Inc. have come up with a new, relatively simple game called "Stake Your Claim". Two players – 0 and 1 – initially select two values n and m and an n × n board is created with m 0's and m 1's randomly placed on the board. Starting with player 0, each player puts his/her number in one of the empty squares on the board. After the board is filled, each player's score is equal to the largest connected region on the board filled with that player's number (where a connected region is one where for any two squares in the region a path exists consisting of only N/S/E/W moves). The player with the highest score wins, and is awarded the difference between his/her score and the score of the other player. Two examples of finished games are shown below, with the largest connected regions for each player outlined. Note in the second example that the two sections with 2 0's each are not connected.n![](http://poj.org/images/3317_1.gif)nnIn order to test how good this game is, the gang at Gazillion has hired you to write a program which can play the game. Specifically, given any starting configuration, they would like a program to determine the best move for the current player, i.e., the score which maximizes the points awarded to that player (or minimizes those awarded to the player's opponent).nnInputnnInput will consist of multiple test cases. Each test case will start with a line containing a positive integer n (≤ 8) indicating the size of the board. Next will come n lines describing the current board layout (row 0 first, followed by row 1, etc). Each of these lines will contain n characters taken from '0', '1' and '.', where '.' represents an empty square. The first character will be in column 0, the second in column 1, etc. The number of 0's on the board will either be equal to the number of 1's or one greater, and there will be between 1 and 10 (inclusive) empty squares. The last case is followed by a line containing 0 which indicates end-of-input and should not be processed.nnOutputnnFor each test case, output a single line containing two items: the coordinates of the best move for the player and the best point total achieved by that player. In case of ties, print the move which comes first lexicographically. Use the format shown in the sample output.nnSample Inputnn4n01.1n00..n.01.n...1n4n0.01n0.01n1..0n.1..n0nSample Outputnn(1,2) 2n(2,2) -1 问答

没有更多推荐了,返回首页