请选择 进入手机版 | 继续访问电脑版
查看: 131|回复: 0

鄙人一个测试网宣布的时分,我们会在差别的...

6

主题

24

帖子

489

积分

中级韭菜

Rank: 3

积分
489
 楼主| 2020-2-14 16:02:27 | 显示全部楼层 |阅读模式
鄙人一个测试网宣布的时分,我们会在差别的地域布置大批节点,并在这些节点间做负载均衡。在假想上,这个测试网碰到成绩不会死撑,而是会疾速且明白地暗示出失利。这个测试网的基石是 4 个 AWS t2.medium 实例(硬件设置是 2 vCPU,4gb RAM, 32gb SSD);每个实例都作为公然的指导节点,负载 4096 个考证者。
如许,我们有两个mod n的缩系汇合A、B,按照缩系的界说,将两个汇合的各自元素求其积,可知这两个积mod n是相称的: (a * X1) * (a * X2) * (a * Xφ(n)) ≡ X1* X2 * Xφ(n) mod n => aφ(n) * (X1X2...Xφ(n)) ≡ X1X2...Xφ(n) mod n => (aφ(n) - 1) * (X1X2...Xφ(n)) ≡ 0 mod n 因为Xi与n互质,可得:aφ(n) - 1 ≡ 0 mod n => aφ(n) ≡ 1 mod n,定理得证。比方我们需求计算φ(8),8的质因数只需2,那末: φ(8) = 8 * (1 - 1/2) = 8 * 1/2 = 4,精确 关于任何质数p,φ(p) = p - 1 关于任何质数p和q,φ(p * q) = (p - 1) * (q - 1)  欧拉定理  欧拉定理(Euler Theorem,也称费马-欧拉定理或欧拉函数定理)是一个关于同余的性质。这里需求留神,有能够此办法算出的x是正数,大概大小逾越了p,所以最后需求对x做一个优化。
如许,汇合B能否也是一个缩系?我们能够看一个简朴的例子,比方需求计算A13 mod P,我们能够如许: 法式 公式 值 操纵 op_code 1 A1 = 1 * 1 mod p 1 二次方 1 2 A2 = A1 * A mod p A1 乘A - 3 A3 = A2 * A2 mod p A2 二次方 1 4 A4 = A3 * A mod p A3 乘A - 5 A5 = A4 * A4 mod p A6 二次方 0 6 A6 = A5 * A5 mod p A12 二次方 1 7 A7 = A6 * A mod p A13 乘A - 我们将13按照2进制闪现为:0b1101,大家能够观察到,这里的四个数字,1101,和上表中的op_code的1101相对应,其意义是: 首先设置功效的初始值为1 将幂值的二进制表达式从左向右做循环 碰到1,则做两个操纵:二次方操纵 + 乘A操纵 碰到0,则仅仅做:二次方操纵 二次方操纵,实在就是自乘,所以其中心计心情绪是,将模幂运算降为了模乘运算,算法难度从O(2n)降为了O(n)。 数据解密  alice拿到密文,计算:n ≡ cd (mod N),这里n即是明文。
我们也在 Lighthouse 客户真个代码中到场了复制消息检查,以此避免收发复制消息。 -图片来自 Blair Fraser- 一个测试网倒下,千千万万个测试网页起来 一个礼拜从前(注:本文撰写于 2019 年 12 月 17 日),我们宣布发表利用 Lighthouse 客户端启动一个大型的公然测试网。
 最大条约数  最大条约数,是指能够被两个正整数m,n整除的最大的正整数,记做:***(m, n) 这里举几个举例: ***(2, 6) = 2 ***(6, 39) = 3  展转相除法  展转相除法又称欧几里德算法,是指用于计算两个正整数m,n的最大条约数。如许,按照这个迭代的历程,到了第7步,我们算出了***是2,那末反推到第6步算出的X6与Y6,即是我们需求的解,使得:(-9) * 240 + 47 * 46 = 2。计算公式: ***(m,n) = ***(n, m mod n) 比方,我们要计算***(62, 26) 法式 公式 m mod n 1 ***(62, 26) 10 2 ***(26, 10) 6 3 ***(10, 6) 4 4 ***(6, 4) 2 5 ***(4, 2) 0 如许,***(62, 26) = 2 具体证实请参考这里。
在与模n互素的部分盈余类中,从每个类中各任取一个数作为代表组成的汇合,叫做模m的一个简化盈余系,或称作缩系。pub fn ***(x: u64, y: u64) -> u64 {    let remainder = x % y;    if remainder == 0 {        return y;    } else {        return ***(y, remainder);    } } #[cfg(test)] mod tests {    use super::*;    #[test]    fn ***_works() {        assert_eq!(***(2, 4), 2);        assert_eq!(***(6, 27), 3);        assert_eq!(***(4, 2), 2);        assert_eq!(***(27, 6), 3);    } }  扩展欧几里得算法  扩展欧几里得算法(Extended Euclidean Algorithm,下面简称EEA)是欧几里得算法(又叫展转相除法)的扩展。第二部门是RSA算法的引见与代码部门,包罗了:算法筹办、数据加解密、RSA算法证实、蒙哥马利算法、RSA算法代码与示例等。
期望读者经过历程浏览此文,能够将RSA算法的后果后果搞分明,同时能够基于RUST言语开辟一个简朴的RSA算法模仿。 算法证实  因为:ed ≡ 1 (mod r) 所以:ed = rm + 1,m为正整数 所以:cd ≡ ned ≡ nrm + 1 ≡ n * nrm (mod N) 按照欧拉定理,可知:nr ≡ 1 (mod N),代入上式: n * 1m ≡ n (mod N) 所以结论为:cd ≡ n (mod N)  蒙哥马利算法  在RSA算法的完成历程中,首先需求随机生成两个大质数,目前举荐起码是2048位的质数,如许能够包管宁静。这里,在右边又多了三列,其中Xi与Yi都利用到了商Qi, 其计算公式为: Xi = Xi-2 - Qi * Xi-1 Yi = Yi-2 - Qi * Yi-1 Sumi = Xi * a + Yi * b 算法迭代的第一步,我们看第三行,X3 = 1, Y3 = -5, 代入公式算出:Sum3 = 10 = R3 按照Xi与Yi的计算公式,不有数出每步中,Sumi = Ri。
规复才气对 Lighthouse 客户端是非常主要的,而 Michael 的更新会将 10 小时耽误到 13 天。但是,收集失肯定性(finality)以后,它们就没法修剪和收缩它们的数据库,这就招致它们的数据库以每小时几 GB 的速率增长。该循环在我们布置的四个信标节点(primary node)中的两个节点上闪现了,耗尽了它们的资本,使得它们没法消耗区块和见证数据。
更多 API 端点:becaoncha.in 团队联系上了我们,并期望他们的区块浏览器能够得到更多的 API 端点。第一次挂掉(逾越 100 个 epoch 没有敲定)以后,我们胜利规复了测试网运转;但第二次瓦解时,我们决定就此罢手,不再规复。固然我们很欢愉看到在 100 epoch 不能敲定以后节点能够规复,但目前的状况相称于,一个硬盘不敷 64gb 的节点只需约 10 个小时的保存工夫。
经验 测试网瓦解的主要缘故起因 测试网第一次瓦解的直接缘故起因是软件的联网部件中的一个循环,它会 “看到” 某个见证数据(attestation)不竭地重复宣布。测试网的确挂了,而且是两次。感激他们的反应!
因为只需alice知道私钥Kpri,就算其他人得到了密文c,也没法解密出其明文来。所以汇合A是mod n的一个缩系。?
fn ext_euclid(x: i64, y: i64) -> (i64, i64, i64) {    let (mut old_r, mut r) = (x, y);    let (mut old_s, mut s) = (1, 0);    let (mut old_t, mut t) = (0, 1);    if y == 0 {        return (1, 0, x);    } else {        while r != 0 {            let q = old_r / r;            let t_r = r;            r = old_r - q * r;            old_r = t_r;            let t_s = s;            s = old_s - q * s;            old_s = t_s;            let t_t = t;            t = old_t - q * t;            old_t = t_t;        }        return (old_s, old_t, old_r);    } } fn inv(a: i64, p: i64) -> i64 {    let (r, _, _) = ext_euclid(a, p);    return ((r % p) + p) % p } #[cfg(test)] mod tests {    use super::*;    #[test]    fn ext_euclid_works() {        assert_eq!(inv(5, 11), 9);        assert_eq!(inv(7, 13), 2);        assert_eq!(inv(10, 31), 28);        assert_eq!(inv(12, 29), 17);    } }  欧拉函数  对正整数n,欧拉函数是小于或即是n的正整数中与n互质的数的数目(因此φ(1) = 1)。这时候,bob将密文[1099769683952491905]给到alice。
而没法敲定 epoch 的缘故起因是逾越 1/3 的考证者都掉线了。这就招致别的两个节点也离线了。不外,剩下的两个节点仍在持续收回和领受区块,这也是我们期望看到的情况。
社区反应 很欢愉看到人们到场到 Lighthouse 测试网中来并运转自己的考证者,有 400 多名到场者到场了我们的测试网!在这类状况下,要想规复测试网运转也很简朴,只需加大硬盘、重启节点便可。我们分析了这两次瓦解变乱,也学到了许多(细节在后续章节中)。

相关帖子

您需要登录后才可以回帖 登录 | 立即注册玩币

本版积分规则

扫码下载聚币APP

联系客服

Copyright © 2014-2019 Jubi8.com
快速回复 返回列表 返回顶部