【转】权益证明与共识机制的未来_权益系统和共识系统-程序员宅基地

-Marina Rudinsky 绘-

权益证明对加密货币和区块链日益深刻的影响从何而来?实现权益证明仍需解决哪些问题?我将撰写一系列文章阐述这两个问题,本文是该系列的开篇。点击下方视频链接,可观看我于 2018 年 6 月 11 日在区块链学会上演讲。欲知详情,请阅读文本。

 

https://www.youtube.com/watch?v=Ha4Tt8RYYow
-David 在区块链学会上介绍新一代权益证明的部分-

Vitalik 有言:“在实行权益证明系统的区块链中,凡是持有该系统代币的人都可以参与添加区块并达成共识,且代理人的影响力与他持有的代币数量(或‘权益’)成正比。它相比工作量证明的‘挖矿’模式要高效得多,而且无需依赖高昂的硬件和电力成本就能让区块链运行起来。”
综上,权益证明可称为一种“高效的工作量证明替代方案”,然而基于工作量证明的区块链到底有什么优点?

-David Yakira 在区块链学会上的演讲照片(Gedalyah Reback 摄)-

这取决于对象是谁——矿工 之所以会受到比特币的吸引是因为它就像一场持续进行的博彩活动,每天会分配大约 1800 万美元的奖励(目前出块奖励为 12.5 个比特币,并假设一个比特币价值 1 万美元)。这种前所未有的“彩票”是用 SHA256 计算购买的。工作量证明的一大主要优点是售出的“彩票”越多,网络就越安全。

安全性具体指的是哪方面?安全性指的是能够保持在一组开放的参与者之间就某一状态达成的共识。比特币利用这一安全性实现了点对点货币——达成共识的状态是 UTXO 集,用户可以通过一组有限的操作加以改变。以太坊更为通用,因为它用的是(近乎)图灵完备的脚本语言更新通用状态。

从 用户 的角度来说,我们喜欢比特币的原因是它能作为另一种价值存储的替代方案。这种替代方案的主要特殊之处在于 信任 。在与比特币进行交互之时,用户无需相信某个实体,且整个系统也不会因为单点故障而瘫痪。从基础层面上来说,用户在交易之时不依赖任何中间人,而且“开户”无需经过任何人的许可。只有 获得了密钥的控制权,才能转移账户内的钱。

从较高层次来说,用户在决策过程中是真正占有权重的,能够以某种方式影响网络的发展方向(例如,增加代币的总供应量或是融入新的共识规则或功能)。我个人认为,这个简单的网站很好地展现了比特币的强大——每分钟都有信任比特币网络的人转移价值数十万美元的比特币。

回头再看看 Vitalik 那段话。

权益证明是“一种高效的工作量证明替代方案”,其高效在于能以更低的成本实现安全性。在工作量证明中,网络安全性与单位时间内计算出的毫无意义的哈希的数量挂钩,而计算出的哈希数量又与网络消耗的电力挂钩。

说得更具体一点——比特币网络的当前算力每秒约产出 3500 万兆个哈希。该网络的年耗电量大约为 70 太瓦时——堪比整个捷克共和国 。权益证明能够在维持同等程度的安全性(以及去中心化或“免信任性”)的情况下减少耗电量。

我们致力于实现一种不依赖外部资源的价值守护系统,其安全性的实现依靠的不是现实世界的能耗,而是系统本身存储的价值。

从某种意义上来说,权益证明系统具有递归性,系统内存储价值的增加,意味着安全性会上升,进而再推动价值的持续增加。

世界上许多顶尖的研究人员和工程师已经投入了大量时间尝试并开发权益证明系统,这体现了它强大的吸引力。然而,也有许多研究人员认为权益证明存在内在缺陷这篇文章就是个很好的例子)。

本文对此不做深入讨论。我想说的仅仅是,比特币和基于工作量证明的共识机制已经让很多人相信基于权益证明的共识机制是很有必要的。此外,通过研究比特币及其独创的工作量证明机制(这一概念首次出现在这篇论文中,用作抵制垃圾邮件的手段,并且被形容为“一种控制共享资源访问权限的通用计算技术”),权益证明的概念由此而生(参见 2011 年 7 月发表在比特币论坛上的帖子)。

因此,为了阐明我们开发权益证明系统的目的,首先必须从工作量证明模式中提取几点关键要素加以类比说明。基于工作量证明的区块链可以解释为:

  1. 领袖选举——以无法检测和预测的方式从一组动态的匿名候选人中选举领袖的过程。这是由工作量证明过程的随机性决定的。在这种随机的选举过程中,候选人根据自己投入的工作量获得权重(此处忽略 51% 攻击和自私式挖矿)。此外,选举过程支持 速率控制 机制(以比特币为例,平均每 10 分钟选出一位领袖) 。最后,这种领袖选举过程无需任何通信——找到有效的工作量证明就是获选的凭据。
  2. 链上选举规则——能够让所有参与者就某版历史记录达成共识。这点可以实现是因为获选领袖可以迅速将获选消息通知给整个网络。下一任领袖可以通过哈希链确认上一任领袖的合法身份。从根本上来说,这使得比特币网络可以实现通信同步。
  3. 通过分配新代币的方式激励链上选举规则合并成一个不断发展的公认历史记录。代币分配也是驱使矿工参与挖矿的首要因素之一。
  4. 最后,节点入网方式是安全(且客观的),能够跟进“合法的”历史记录。

换言之,工作量证明遵循的原则是使创建历史记录的成本高昂,并奖励为比特币主要版本的历史记录做贡献的参与者。

在之后的文章中,我们将从首个试行权益证明的系统—— PPCoin 开始,研究它是如何在免除挖矿之需的同时尝试模拟上述几点要素的。

从 PPCoin 的案例研究中,我们将了解权益证明系统设计过程中的难点。确切说来,如何为领袖选举赋予普遍且不可操纵的随机性,如何激励区块生产者(我会将他们称为 权益者 ,权益持有者或验证者)扩展 单一 版本的历史记录,并激励区块生产者定期参与。

最后,我将讨论针对以太坊(迄今第 2 大加密货币)设计的 Casper FFG 提议。目前为止,这是迈向权益证明最重要的一步——具有以下潜力:

  • 向加密社区(尤其是比特币社区)证明权益证明的优点
  • 增强以太坊网络的韧性
  • 实现扩容  分片这两大解决方案

也许,这会反过来证明权益证明只是空谈。再悲观一点 ,如果设计不当,还有可能摧毁代币,让无辜的权益者蒙受损失,降低系统的公信力。

作为 PoS 模式的案例分析。PPCoin 系统是 PoS 模式的先驱者。从中我们可以了解到,为实现兼具弹性和安全性的区块链系统,PoS 模式必须解决的几大挑战。

PPCoin 发布于 2012 年 8 月 19 日,是第一条真正融入 PoS 模式的区块链。它虽然不是纯粹 PoS 模式的区块链,但是交替使用 PoW 和 PoS 模式生成区块(请看这个区块浏览器)。换言之,PoS 模式生成的区块可以跟在 PoW 模式生成的区块后面,反之亦然。

创建 PPCoin 的主要原因是比特币收益的递减:随着 PoW 模式下挖矿奖励的减少,矿工的挖矿积极性也会下降(除非交易费大幅提高,这是大家都不愿看到的)。由于 PoS 模式下生成区块的成本要低得多,并且,作为一种长期解决方案,相应的挖矿奖励会低得多且恒定不变,旨在将年通胀率维持在 1 %。

PPCoin 铸造新代币的方式不同于 PoW 模式。它的核心理念是在区块中纳入 币龄 消耗量证明(而不是高强度计算量证明)。换言之,如果是 90 天之前创造出的 10 单位代币(即价值为 10 的未花费交易输出(UTXO)),则总的 天数 (即币龄)为 900 。

PPCoin 是如何生成 PoS 块的

?进入技术讲解环节,如引起不适,望请见谅。

如上文所述,PoS 模式下出块方式不同于比特币之类的 PoW 模式。

首先,我们发现 PoW 模式基本都采用的比特币的出块方式。PoS 模式的出块方式则不同。每生成一个 PoS 块就要花费一个旧币,消耗掉它的币龄。一个旧  只有满足下列公式才能在 time_in_seconds 生成一个 PoS 块:

其中:

  • coin(代币)指的是创建了一段时间(timeweight(coin))的 UTXO(为防止旧币的权重过大,创建天数以 90 天为上限),value(coin) 指的是 UTXO 的值。二者相乘得出 币龄 。
  • time_in_seconds 指的是精确到秒的当前时间。和比特币一样,PPCoin 同样要假设诚实的节点拥有同步时钟(偏差很小)。如果一个区块的时间戳晚于节点时钟的当前时间或是早于前一个区块的时间戳,节点应将其视为无效。
  • d 是可调的难度参数,旨在将 PoS 块的出块速度维持在 10 分钟。
  • prev_blocks_data 是这个公式里最有趣,也是最巧妙的参数。它的功能是防止有人预先知道满足上述公式的代币(从而获得生成 PoS 块的资格),并且对选块过程进行操控。这个参数决定了系统的公正性,换言之,从权益者中选出出块者的过程是公正的。(我们有时也会将这一过程称为 出块选举 ——权益者的获选概率应该与其持有代币的总币龄成正比,而且无法提前预知自己会于何时获选)。我们将检验一些 prev_blocks_data 的替代参数,并发现它们的问题所在。

如果满足了上述公式,代币 的所有者就可以生成一个区块,里面包括一个通过花费 代币 创造新的交易输出的 代币权益 交易,它的值略高于 value(coin) (超出每年币龄消耗量的 1/100 ,相当于 1% 的年通胀率)。

PoS 区块和 PoW 区块之间的主要差别在于 随机数(nonce) 字段。 为了生成一个 PoS 区块,区块链中的每个代币每秒都有一次机会参与选举(即符合公式)。如果成功获选,控制 该代币的权益者可以发布一个区块。否则必须等待一秒后才能再次尝试。此处很适合强调工作量证明挖矿的两大不同之处:

  • 在 PoW 模式下,矿工持有的代币量不会影响找到合法区块的过程。
  • 更重要的是,在 PoW 模式下,为了找到一个合法的区块,矿工在硬件条件允许的情况下每秒可以进行尽可能多的尝试。在上一篇文章中,我们指出到 2018 年 6 月为止,比特币网络每秒可产出大约 3500 万兆个哈希——远远超过 PPCoin 中(每个币)每秒只能进行一次尝试。

公平的出块选举

到目前为止是不是看起来前途一片光明。接下来让我们从 prev_blocks_data 的角度更深入地研究一下这个系统。 以下是三种潜在的替代方案:

  • prev_blocks_data = 空值。如果将 prev_blocks_data 从公式中去掉,凡是关注该区块链的人都会有“预见”能力,可以找出哪个币在哪个时刻有资格发布 PoS 区块。出块过程的不可预见性荡然无存。然而,问题还不止于此——聪明的权益者会调整 UTXO ,以便尽快获得出块资格。于是,PPCoin 会成为一种昂贵的 PoW 系统,在寻找“获选潜力大的”代币的过程中消耗大量成本。

  • prev_blocks_data = 前一个区块的哈希值。在这种情况下,由于每个区块使用的 prev_blocks_data 都会变化,出现“预见”情况的可能性要小得多。然而,问题在于区块提议者可以选择区块,这样就有一个特定的代币在不久的将来有资格生成 PoS 块。这就赋予了出块选举过程很高的可操纵性。更糟糕的是,如果持有权益较多的权益者将自己的代币正确分割开来,(只需要很低的成本)就可以偷偷创建出一条很长的链,然后使用这条链发起双花攻击。为操控出块选举过程调整区块通常被称为 粉碎攻击(Grinding Attack) 。

  • prev_blocks_data = 前一个 PoW 区块的哈希值。这种方案理当可以缓解 粉碎攻击 的问题,因为矿工不可能放弃他们找到的合法的 PoW 区块(在 PoW 模式下,自私挖矿 可以被视为一种影响力非常有限的粉碎攻击)。这种方案也有助于抑制“预见”问题——“预见”能力只能持续到下一个 PoW 块出来之前。不过 PoS 模式的问题依然存在。经过简单的分析可知,(如果将持有的币正确分割开来)平均每生成 4⁶=4096 个区块之后,持有全网 1/4 权益的权益者就有资格生成连续 6 个 PoS 区块。对于 PoW 区块来说当然也是如此,不同之处在于潜在的攻击者会预先知道自己是否能够连续生成多个块,从而制定相应的攻击计划。(掌握的算力不足全网 1/2 的矿工)偷偷创建一条 PoW 链需要承担很大的风险,因此矿工为避免经济损失不会试图发动这类攻击。然而,在 PPCoin 的模式下,假设每 6 小时生成一个 PoW 块,如果权益者发现自己接下来有资格生成连续 6 个块,就可以实现长达 6 个块的重组。这样就可以在无成本的情况下发起隐藏链攻击。此外,如果出块率很低的话,会很难留住 PoW 矿工。如果我们提高 PoW 的出块率,所谓的 PoS 系统就名不副实了。

经过上述分析,你应该已经相信公平的权益者选举过程设计起来并不容易了吧。然而,PPCoin 不只存在这一个问题。另一个有趣的问题是 理性分叉 。

理性分叉

要理解这个问题,让我们重新思考一下 PoW ——如果 PoW 链上的一个矿工发现某个可以开挖的区块点(tip),在上面创建了一个区块,然后验证其有效性,她立马就能得到响应。如果区块是合法的,她会将它发布到网络上。否则她会提高 nonce 值,并再次尝试。关键在于她的计算资源在任何时候都是充分利用的。因此,如果矿工当时还知道另一个具有替代性的可挖区块点,她必须决定如何分割自己资源。她的最佳策略是将自己的资源贡献给最有可能认可她的区块的网络,如果她真的有幸找到一个区块的话。

现在让我们考虑一下 PPCoin 的情况。与 PoW 相似,权益者尝试基于已知 tip 创建了一个区块,并立即得到了回复。如果该区块是有效的,她会将它发布到网络上。反之,她必须等待整整一秒才能进行下一次尝试。在这一秒中,她的计算资源是闲置的。因此,在等待期间,如果她将计算资源贡献给了不太可能认可她的区块的链,她不会遭受损失(不过收益也不高)。具体来说,如果权益者(在相同的区块高度上)知道了两个相互竞争的区块点,她不可能老老实实地只选择其中一个创建区块。她更有可能选择同时维护两条分叉链,以便获得更多(预期)收益。

如果所有权益者都采用上述策略,那么这条链会经常出现重组,整个系统的可靠性就会大幅降低。越是缩短出块的间隔时间,这个问题就会越发严重,因此 PPCoin 的 PoS 系统无法实现扩容或是缩短确认时长。

“无利害关系”问题

上述问题还可以从另一个方面思考,即 无利害关系(Nothing-at-stake) 问题。权益者会试图另外创建一条(隐藏的)链来攻击主链。她们会不间断地试图拓展已有的链条,除非发现在某条链上连续出块的机会。因为这些尝试实际上都是零成本的,他们不会遭受损失。如果他们发现主链比隐藏的分叉链长很多,他们只需放弃这条分叉链,再从距当今更近的点上创建一条链。值得一提的是,当攻击发生的时候,他们可以同时尝试扩展主链,确保无论如何自己都不会遭受任何损失。发动这种攻击最后是会成功的,然而更糟糕的是,攻击者不承担任何成本。

PoS 系统的无利害关系问题的主要原因是出块成本“很低”,而且无需“工作量”。在 PPCoin 中,这一问题与出块的出块选举方式有直接关联。我们会在后续文章分开讨论这两个问题,及其解决之道。

上述分析基于 Iddo Bentov 等人所著论文的第二节。

去中心化的妥协?如何实现公平和激励?

要确保持有代币的权益者没有操控 PoS 块的选举流程,prev_blocks_data 选用了一种非常复杂的函数(点击此处查看详情)。PPCoin 的开发人员通过对 prev_blocks_data 的设计降低了权益者在出块选举方面的影响力。然而,这种解决方案的效果如何很难评定,在下一篇文章中,我们将讨论另一种解决方案——“低影响力函数”。

此外,PPCoin 的开发人员会通过 检查点机制 解决理性分叉(以及隐藏链攻击)的问题。 检查点会抑制权益者的隐藏链攻击——由于链的合法性实际由检查点机制决定,任何长链重组行为都将无法实现。

当然,检查点机制也存在一个问题,即作为一种中心化手段来实现系统的稳定性。此外,出块选举过程似乎很容易受到权益者的操控。

在后续文章中,我们将提出 PoS 系统设计者真正需要解决的问题:1)为出块选举赋予无法预测和无法操控的随机性以及 2)如何解决出块的低成本问题(以防 链融合 或 隐藏链攻击 之类的短程攻击和 同步新节点 之类的长程攻击)。

另一个需要解决的问题是在 PoS 系统中,至少是在 PPCoin 的 PoS 系统中,权益者获得的收益很少,因此参与出块过程的积极性不高。由于许多权益者可能会在很长一段时间内保持离线状态,参与度会成为一个问题。

后续文章预告

在这部分,我想提一下 PoS 设计中的三大主要演进阶段。最初模仿比特币 PoW 模式的尝试过于幼稚,而且存在很多弱点。这些尝试包括 PPCoin (及后来者 Nxt 和 BlackCoin)和 Iddo Bentov 的行动证明(Proof-of-Activity)和行动链(Chains-of-Activity)。

之后的尝试将 拜占庭容错层(BFT)融入了原始的链选举规则。从某种意义上说,最长链的选举规则被一种更安全的方案替代了,即研究历史达 30 年之久的拜占庭容错共识算法,如实用拜占庭容错(PBFT) 等。拜占庭容错算法通常会满足几个数学特征,不过要依托于不必然能在实际实现中得到满足的特定假设。具体来说,BFT 链的选举规则可以减少为确保一致性而对同步通信的需求(能够极大地提升出块速度),不过是在假设只有极少数参与者没有诚实地遵守协议的前提下。

在后续的文章中,我们会详细探讨这一点,不过在 PoS 模式的设计中,激励正确的参与具有非常重要的意义。 Tendermint 和 Algorand 最先尝试将 BFT 算法融入 PoS 。

在传统 BFT 算法和现代 PoS 模型中,提议区块和确认区块是由同一个实体进行的。Casper FFG 为代表的第三代 PoS 系统将生成区块和确认区块分开。一方面不断生成区块,并通过哈希链构成一个树状的数据结构,另一方面通过 PoS 驱动的 BFT 协议将从该树中敲定一条不断生长的分支。

这种方法通过 PoW 模式下的区块生成来降低实行 PoS 模式的区块链的难度。通过将 PoS 模式融入 PoW 链的运行能够逐渐向 PoS 模式迁移。这就是以太坊计划实行 Casper FFG 的目的所在,之后会用 PoS 模式代替 PoW 模式生成区块。

 


链接:  

https://medium.com/orbs-network/on-stake-and-consensus-a05e52daa496

https://medium.com/orbs-network/forget-eos-and-ethereum-how-much-has-proof-of-stake-evolved-since-ppcoin-93a56d734884


 

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

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf