同学区块链,同学数字货币。
201期【币圈人物】 计数员王纯|超级君【2019-11-29 1732】
“从童年起,我便独自一人照顾着,历代的星辰。” 这首短诗瞬间打动人心,将孤独写绝,远胜“独立寒江雪”和“念天地之悠悠”,揭示着浩瀚下的孤独,意象令人神往。翻看区块链朋友圈,若从中选一个人来当那个照顾历代星辰的孩子,王纯是不二人选。因为他也是一个孤独的大男孩,同时他对浩瀚的时空有着如痴如醉的爱好,计数是他照看的办法,数的递增,让他有着充实感和成就感。浩瀚无垠的星辰,是一个天文数字,数星星或许可以给他带来极致满足。 他从小就是一个计数员,远在他读初中的时候,第一天注册登陆QQ时,他就给自己的QQ名取名为1,第二天改为2,第三天改名为3.......光阴似箭,日月如梭,花开花落八年后,直到第2523天,他终于觉得这份计数过于无聊了,所以才放弃继续计数,其QQ名就停留在2523。2013年,在一个矿工群里,“2523”遇到了“七彩神仙鱼”。当时七彩神仙鱼是半个中国矿工的老师傅,从显卡时代到阿瓦隆矿机时代,从QQ群到论坛。说到这里,想起当年还有一个“传说哥“,50元教挖矿,风吹雨打,几年后,神鱼还是神鱼,传说哥早没了传说。总而言之,王纯和神鱼几经交流之后,决定联手打造一个比特币矿池,矿池名...
235期【基础知识】 北纬老师---比特币常见问题
本内容来自于北纬老师 前言: 这个帖子主要是为新手解惑,目前币圈因为在国内未被统一化,一如既往对新手很不友好,甚至连你开始下载的交易所app都有可能是假的,这个帖子主要是为了避免新手踏坑。 当你决定进入这个市场,一定要明白,这是一个无涨跌限制、24小时全球不间断交易、风险巨大的市场。的确,很多人在这个市场里面,赚取了无数财富,完成人生越级,这些故事每天都在被人津津乐道口口相传,但是,更多的是,无数人亏损黯然离场,只是他们一直保持沉默。 1.比特币是什么。 比特币是一个共识网络,促成了一个全新的支付系统和一种完全数字化的货币。可以把比特币理解为2个层面:1.这是一个去中心支付系统;2.数字互联网货币。 比特币总量为2100万枚,通过“挖矿”形式,每十分钟产生一个块,块里面包含50个比特币和手续费。块奖励是每四年减半一次,第一次减半后块奖励为25个比特币,第二次是12.5,目前块奖励为6.25个比特币。 2.新人对比特币的误解。 1)市面上显卡断货,涨价,却不是用来挖比特币的; 2)比特币在国内并不违法,公民可以合法持有,但,金融机构禁止进入,国内不允许开交易所,且国内比特币并不能称...
币圈人士必备工具(收藏)
币圈新闻、资讯金色财经网址:https://www.jinse.com/ 目前国内最大的区块链行业新闻媒体平台,资讯行情做的都还可以,特色:签约作者比较多,内容差异化做的不错。巴比特网址:https://www.8btc.com/ 巴比特创始人长侠,依靠论坛起家,里面有很多牛人,现在转型做新闻平台,旗下链节点论坛做的也不错。传统输出型媒体,资讯内容丰富且质量较高,特色:老牌资讯行情软件,综合实力最强。火星财经网址:https://www.huoxing24.com/ 火星是区块链行业新闻媒体平台,定位和金色差不多,优点是可以听新闻。区块链头条网址:http://blocktop.cn/Home/Index/index.html 区块链头条是新锐区块链媒体品牌,聚焦全球区块链行业资讯,专注于区块链产业的服务平台。集快讯、时讯、深研、行情、课堂等为一体。7*24 小时行业资讯追踪报道,秉承“客观、真实、深度”的理念,服务全球区块链领域生态。 行情软件Aicoin网址:https://www.aicoin.cn/ 炒币软件必备,圈子里用的人挺多的。Aicoin适合技术分析派,里面有很多...
201期【币圈人物】 计数员王纯|超级君【2019-11-29 1732】
“从童年起,我便独自一人照顾着,历代的星辰。” 这首短诗瞬间打动人心,将孤独写绝,远胜“独立寒江雪”和“念天地之悠悠”,揭示着浩瀚下的孤独,意象令人神往。翻看区块链朋友圈,若从中选一个人来当那个照顾历代星辰的孩子,王纯是不二人选。因为他也是一个孤独的大男孩,同时他对浩瀚的时空有着如痴如醉的爱好,计数是他照看的办法,数的递增,让他有着充实感和成就感。浩瀚无垠的星辰,是一个天文数字,数星星或许可以给他带来极致满足。 他从小就是一个计数员,远在他读初中的时候,第一天注册登陆QQ时,他就给自己的QQ名取名为1,第二天改为2,第三天改名为3.......光阴似箭,日月如梭,花开花落八年后,直到第2523天,他终于觉得这份计数过于无聊了,所以才放弃继续计数,其QQ名就停留在2523。2013年,在一个矿工群里,“2523”遇到了“七彩神仙鱼”。当时七彩神仙鱼是半个中国矿工的老师傅,从显卡时代到阿瓦隆矿机时代,从QQ群到论坛。说到这里,想起当年还有一个“传说哥“,50元教挖矿,风吹雨打,几年后,神鱼还是神鱼,传说哥早没了传说。总而言之,王纯和神鱼几经交流之后,决定联手打造一个比特币矿池,矿池名...
235期【基础知识】 北纬老师---比特币常见问题
本内容来自于北纬老师 前言: 这个帖子主要是为新手解惑,目前币圈因为在国内未被统一化,一如既往对新手很不友好,甚至连你开始下载的交易所app都有可能是假的,这个帖子主要是为了避免新手踏坑。 当你决定进入这个市场,一定要明白,这是一个无涨跌限制、24小时全球不间断交易、风险巨大的市场。的确,很多人在这个市场里面,赚取了无数财富,完成人生越级,这些故事每天都在被人津津乐道口口相传,但是,更多的是,无数人亏损黯然离场,只是他们一直保持沉默。 1.比特币是什么。 比特币是一个共识网络,促成了一个全新的支付系统和一种完全数字化的货币。可以把比特币理解为2个层面:1.这是一个去中心支付系统;2.数字互联网货币。 比特币总量为2100万枚,通过“挖矿”形式,每十分钟产生一个块,块里面包含50个比特币和手续费。块奖励是每四年减半一次,第一次减半后块奖励为25个比特币,第二次是12.5,目前块奖励为6.25个比特币。 2.新人对比特币的误解。 1)市面上显卡断货,涨价,却不是用来挖比特币的; 2)比特币在国内并不违法,公民可以合法持有,但,金融机构禁止进入,国内不允许开交易所,且国内比特币并不能称...
币圈人士必备工具(收藏)
币圈新闻、资讯金色财经网址:https://www.jinse.com/ 目前国内最大的区块链行业新闻媒体平台,资讯行情做的都还可以,特色:签约作者比较多,内容差异化做的不错。巴比特网址:https://www.8btc.com/ 巴比特创始人长侠,依靠论坛起家,里面有很多牛人,现在转型做新闻平台,旗下链节点论坛做的也不错。传统输出型媒体,资讯内容丰富且质量较高,特色:老牌资讯行情软件,综合实力最强。火星财经网址:https://www.huoxing24.com/ 火星是区块链行业新闻媒体平台,定位和金色差不多,优点是可以听新闻。区块链头条网址:http://blocktop.cn/Home/Index/index.html 区块链头条是新锐区块链媒体品牌,聚焦全球区块链行业资讯,专注于区块链产业的服务平台。集快讯、时讯、深研、行情、课堂等为一体。7*24 小时行业资讯追踪报道,秉承“客观、真实、深度”的理念,服务全球区块链领域生态。 行情软件Aicoin网址:https://www.aicoin.cn/ 炒币软件必备,圈子里用的人挺多的。Aicoin适合技术分析派,里面有很多...
同学区块链,同学数字货币。
Share Dialog
Share Dialog

Subscribe to 币同学

Subscribe to 币同学
<100 subscribers
<100 subscribers
你好,我是币同学。这是我分享学习的第163天,每天学习进步一点点。
关键词:北大肖臻老师的公开课,关于以太坊的挖矿算法。
1. 比特币系统中使用的挖矿算法,挖矿这一过程,虽然并没有创造什么实际价值,但挖矿本身维持了比特币系统的稳定。【Block chain is secured by mining】
对于基于区块链证明的区块链系统来说,挖矿是保障区块链安全的重要手段。
总体来说,比特币系统中的挖矿算法较为成功,并未发现大的漏洞。
当然,比特币系统的挖矿算法也存在一定问题,其中最为突出的就是导致了挖矿设备的专业化,普通计算机用户难以参与进去,导致了挖矿中心化的局面产生,而这与“去中心化”这一理念相违背。 【中本聪最早期的论文,one cpu one vote】
所以,在比特币之后包括以太坊在内的许多加密货币针对该缺陷进行改进,希图做到ASIC Resistance(抗拒ASIC专用矿机)。
由于ASIC芯片相对普通计算机来说,算力强但访问内存性能上没有多大优势。因此常用的方法为Memory Hard Mining Puzzle,即增加对内存访问的需求。
2. LiteCoin(莱特币)
莱特币曾一度成为市值仅次于比特币的第二大加密货币,其基本设计大体上和比特币一致,但针对挖矿Scrypt进行了修改。
莱特币的puzzle基于Scrypt。Scrypt为一个对内存性能要求较高的哈希函数,之前多用于计算机安全密码学领域。
莱特币挖矿算法基本思想
2.1设置一个很大的数组,按照顺序填充伪随机数。
因为哈希函数的输出我们并不能提前预料,所以看上去就像是一大堆随机的数据,因此称其为“伪随机数”。
Seed为种子节点,通过Seed进行一些运算获得第一个数,之后每个数字都是通过前一个位置的值取哈希得到的。
可以看到,这样的数组中取值存在前后依赖关系。

2.2在需要求解Puzzle的时候,按照伪随机顺序,从数组中读取一些数,每次读取位置与前一个数相关。
伪随机数的好处:如果数组足够大,对于挖矿矿工来说,必须保存该数组以便查询,否则每次不仅计算位置,还要根据Seed计算整个数组数据,才能查询到对应位置的数据。这对于矿工来说,计算复杂度大幅度上升。
当然,矿工可以选择只保存一部分数据,例如:只保存奇数位置数据,偶数位置需要时再根据前一个奇数位置数据计算即可,从而对内存空间大小减少了一半(计算复杂度提高一点,但内存减少一半)————time-memory trade off。
【核心思想:挖矿不能仅仅进行运算,增加其对内存的访问,从而实现对ASIC芯片不友好,普通计算机都可参与。】
这个设计有问题吗?
看似蛮不错的,使得ASIC矿机挖矿变得不友好,但该方法对Puzzle验证并不是很友好。想要验证该Puzzle,也需要存储该数组,因此对于轻节点来说,并不友好(系统中绝大多数节点为轻节点)。
因此,莱特币真正应用来说,数组大小不敢设置太大。
例如:对于计算机而言,1G毫无压力,而对于手机APP来说,1G占据空间就过大了。
所以,实际中,莱特币系统设计的数组大小仅仅128K大小。
起初莱特币发行时,不仅希望能够抗拒ASIC,还希望能抗拒GPU。但实际中,后来慢慢出现了GPU挖矿,再后来,ASIC芯片挖矿也出现了。实际应用中,莱特币的设计并未起到预期作用,也就是说,128k对于ASIC Resistance来说过小了。
莱特币的这一设计是好事还是坏事? 从其并未起到预期作用来看,当然是一件坏事,但换个角度来思考,早期通过宣传这一设计目标,有效吸引了大批矿工参与,解决了莱特币“能启动”问题,因此目前莱特币仍然是一个较为主流的加密货币。
此外,莱特币和比特币另一区别为出块时间,莱特币为2.5分钟,为比特币的1/4。除了这些不同外,这两种货币基本一样。
3. 以太坊
以太坊与莱特币都是Memory Hard Mining Puzzle,但具体设计上与莱特币不同。
以太坊挖矿算法基本思想: 以太坊中,设计了两个数据集,一大一小。小的为16MB的cache,大的数据集为1G的dataset(DAG)。其关系为,1G的数据集是通过16MB数据集生成而来的。
为何要设计一大一小两个数据集?
为了便于进行验证,轻节点保存16MB的Cache进行验证即可,而矿工为了挖矿更快,减少重复计算则需要存储1GB大小的大数据集。
16MB的小Cache数据生成方式与莱特币中生成方式较为类似
1.通过Seed进行一些运算获得第一个数,之后每个数字都是通过前一个位置的值取哈希获得的。
2.(不同):
莱特币:直接从数组中按照伪随机顺序读取一些数据进行运算。
以太坊:先生成一个更大的数组(注:以太坊中这两个数组大小并不固定,因为考虑到计算机内存不断增大,因此该两个数组需要定期增大)。

大的DAG生成方式:
大的数组中每个元素,都是从小数组中按照伪随机顺序读取一些元素,方法同莱特币中求解Puzzle的过程是类似的。
如第一次读取A位置数据,对当前哈希值更新迭代算出下一次读取位置B,再进行哈希值更新迭代计算出C位置元素。
如此来回迭代读取256次,最终算出一个数作为DAG中第一个元素,如此类推,DAG中每个元素生成方式都依次类推。

轻节点只保存小的cache,验证时进行计算即可。但对于挖矿来说,如果这样则大部分算力都花费在了通过Cache计算DAG上面,因此,其必须保存大的数组DAG以便于更快挖矿。
以太坊挖矿过程: 根据区块块头(block header)和其中的Nonce值计算一个初始哈希,根据其映射到某个初始位置A,读取A位置的数及其相邻的后一个位置A’上的数,根据该两个数进行运算,算得下一个位置B,读取B和B’位置上的数,依次类推,迭代读取64次,共读取128个数。

最后,计算出一个哈希值与挖矿难度目标阈值比较,若不符合就重新更换Nonce,重复以上操作直到最终计算哈希值符合难度要求或当前区块已经被挖出。
4. 以太坊挖矿到目前为止,主要还是以GPU为主,用ASIC矿机的很少。
矿工挖矿需要1G的内存,莱特币是128KB。
以太坊:POW(工作量证明)→POS(proof of stake)(权益证明:按照所占的权益进行投票,来形成共识,不挖矿的,类似于股份制公司按照股票多少进行投票。)
以太坊采用的是预挖矿(pre-mining)的过程:并不是说真的去挖矿,而是在当初发行货币的时候,预留一部分的货币给以太坊的开发者。
今天就学习到这里,明天见。
你好,我是币同学。这是我分享学习的第163天,每天学习进步一点点。
关键词:北大肖臻老师的公开课,关于以太坊的挖矿算法。
1. 比特币系统中使用的挖矿算法,挖矿这一过程,虽然并没有创造什么实际价值,但挖矿本身维持了比特币系统的稳定。【Block chain is secured by mining】
对于基于区块链证明的区块链系统来说,挖矿是保障区块链安全的重要手段。
总体来说,比特币系统中的挖矿算法较为成功,并未发现大的漏洞。
当然,比特币系统的挖矿算法也存在一定问题,其中最为突出的就是导致了挖矿设备的专业化,普通计算机用户难以参与进去,导致了挖矿中心化的局面产生,而这与“去中心化”这一理念相违背。 【中本聪最早期的论文,one cpu one vote】
所以,在比特币之后包括以太坊在内的许多加密货币针对该缺陷进行改进,希图做到ASIC Resistance(抗拒ASIC专用矿机)。
由于ASIC芯片相对普通计算机来说,算力强但访问内存性能上没有多大优势。因此常用的方法为Memory Hard Mining Puzzle,即增加对内存访问的需求。
2. LiteCoin(莱特币)
莱特币曾一度成为市值仅次于比特币的第二大加密货币,其基本设计大体上和比特币一致,但针对挖矿Scrypt进行了修改。
莱特币的puzzle基于Scrypt。Scrypt为一个对内存性能要求较高的哈希函数,之前多用于计算机安全密码学领域。
莱特币挖矿算法基本思想
2.1设置一个很大的数组,按照顺序填充伪随机数。
因为哈希函数的输出我们并不能提前预料,所以看上去就像是一大堆随机的数据,因此称其为“伪随机数”。
Seed为种子节点,通过Seed进行一些运算获得第一个数,之后每个数字都是通过前一个位置的值取哈希得到的。
可以看到,这样的数组中取值存在前后依赖关系。

2.2在需要求解Puzzle的时候,按照伪随机顺序,从数组中读取一些数,每次读取位置与前一个数相关。
伪随机数的好处:如果数组足够大,对于挖矿矿工来说,必须保存该数组以便查询,否则每次不仅计算位置,还要根据Seed计算整个数组数据,才能查询到对应位置的数据。这对于矿工来说,计算复杂度大幅度上升。
当然,矿工可以选择只保存一部分数据,例如:只保存奇数位置数据,偶数位置需要时再根据前一个奇数位置数据计算即可,从而对内存空间大小减少了一半(计算复杂度提高一点,但内存减少一半)————time-memory trade off。
【核心思想:挖矿不能仅仅进行运算,增加其对内存的访问,从而实现对ASIC芯片不友好,普通计算机都可参与。】
这个设计有问题吗?
看似蛮不错的,使得ASIC矿机挖矿变得不友好,但该方法对Puzzle验证并不是很友好。想要验证该Puzzle,也需要存储该数组,因此对于轻节点来说,并不友好(系统中绝大多数节点为轻节点)。
因此,莱特币真正应用来说,数组大小不敢设置太大。
例如:对于计算机而言,1G毫无压力,而对于手机APP来说,1G占据空间就过大了。
所以,实际中,莱特币系统设计的数组大小仅仅128K大小。
起初莱特币发行时,不仅希望能够抗拒ASIC,还希望能抗拒GPU。但实际中,后来慢慢出现了GPU挖矿,再后来,ASIC芯片挖矿也出现了。实际应用中,莱特币的设计并未起到预期作用,也就是说,128k对于ASIC Resistance来说过小了。
莱特币的这一设计是好事还是坏事? 从其并未起到预期作用来看,当然是一件坏事,但换个角度来思考,早期通过宣传这一设计目标,有效吸引了大批矿工参与,解决了莱特币“能启动”问题,因此目前莱特币仍然是一个较为主流的加密货币。
此外,莱特币和比特币另一区别为出块时间,莱特币为2.5分钟,为比特币的1/4。除了这些不同外,这两种货币基本一样。
3. 以太坊
以太坊与莱特币都是Memory Hard Mining Puzzle,但具体设计上与莱特币不同。
以太坊挖矿算法基本思想: 以太坊中,设计了两个数据集,一大一小。小的为16MB的cache,大的数据集为1G的dataset(DAG)。其关系为,1G的数据集是通过16MB数据集生成而来的。
为何要设计一大一小两个数据集?
为了便于进行验证,轻节点保存16MB的Cache进行验证即可,而矿工为了挖矿更快,减少重复计算则需要存储1GB大小的大数据集。
16MB的小Cache数据生成方式与莱特币中生成方式较为类似
1.通过Seed进行一些运算获得第一个数,之后每个数字都是通过前一个位置的值取哈希获得的。
2.(不同):
莱特币:直接从数组中按照伪随机顺序读取一些数据进行运算。
以太坊:先生成一个更大的数组(注:以太坊中这两个数组大小并不固定,因为考虑到计算机内存不断增大,因此该两个数组需要定期增大)。

大的DAG生成方式:
大的数组中每个元素,都是从小数组中按照伪随机顺序读取一些元素,方法同莱特币中求解Puzzle的过程是类似的。
如第一次读取A位置数据,对当前哈希值更新迭代算出下一次读取位置B,再进行哈希值更新迭代计算出C位置元素。
如此来回迭代读取256次,最终算出一个数作为DAG中第一个元素,如此类推,DAG中每个元素生成方式都依次类推。

轻节点只保存小的cache,验证时进行计算即可。但对于挖矿来说,如果这样则大部分算力都花费在了通过Cache计算DAG上面,因此,其必须保存大的数组DAG以便于更快挖矿。
以太坊挖矿过程: 根据区块块头(block header)和其中的Nonce值计算一个初始哈希,根据其映射到某个初始位置A,读取A位置的数及其相邻的后一个位置A’上的数,根据该两个数进行运算,算得下一个位置B,读取B和B’位置上的数,依次类推,迭代读取64次,共读取128个数。

最后,计算出一个哈希值与挖矿难度目标阈值比较,若不符合就重新更换Nonce,重复以上操作直到最终计算哈希值符合难度要求或当前区块已经被挖出。
4. 以太坊挖矿到目前为止,主要还是以GPU为主,用ASIC矿机的很少。
矿工挖矿需要1G的内存,莱特币是128KB。
以太坊:POW(工作量证明)→POS(proof of stake)(权益证明:按照所占的权益进行投票,来形成共识,不挖矿的,类似于股份制公司按照股票多少进行投票。)
以太坊采用的是预挖矿(pre-mining)的过程:并不是说真的去挖矿,而是在当初发行货币的时候,预留一部分的货币给以太坊的开发者。
今天就学习到这里,明天见。
No activity yet