0 Members and 1 Guest are viewing this topic.
Quote from: HackFisher on May 24, 2014, 05:51:06 amQuote from: CrazyBit on May 23, 2014, 05:48:25 pmreview了代码,有个问题不太明白,如何保证产生块的delegate是随机的?现在似乎是从list里随机拿出一个跟自己的id对比,如果match则产生块,不是则跳过,假如我的客户端是custermized的,而我又是delegate,我是否就可以跳过这个 checking直接产生块,如何防止这种情况?就是 https://bitsharestalk.org/index.php?topic=4164.0 里面提到的算法,每个delegate先publish secret_hash,下一轮reveal secret,由这些secrets哈希值来更新随机数。之前的实现有一个漏洞,最新的实现每一轮delegate的顺序仍然是随机的,但是只在这一轮开始的时候刷新一下随机顺序,不是随机确定下一个delegate,而是随机确定下一轮delegate顺序。谢谢解答,但是在块产生代码里我还是没看到你说的实现算法(https://github.com/BitShares/bitshares_toolkit/blob/ab177ba65f4355af9805b4e7451ed9f7dba8a0b7/libraries/client/client.cpp#L70#L104)能否指出具体实现在哪里?
Quote from: CrazyBit on May 23, 2014, 05:48:25 pmreview了代码,有个问题不太明白,如何保证产生块的delegate是随机的?现在似乎是从list里随机拿出一个跟自己的id对比,如果match则产生块,不是则跳过,假如我的客户端是custermized的,而我又是delegate,我是否就可以跳过这个 checking直接产生块,如何防止这种情况?就是 https://bitsharestalk.org/index.php?topic=4164.0 里面提到的算法,每个delegate先publish secret_hash,下一轮reveal secret,由这些secrets哈希值来更新随机数。之前的实现有一个漏洞,最新的实现每一轮delegate的顺序仍然是随机的,但是只在这一轮开始的时候刷新一下随机顺序,不是随机确定下一个delegate,而是随机确定下一轮delegate顺序。
review了代码,有个问题不太明白,如何保证产生块的delegate是随机的?现在似乎是从list里随机拿出一个跟自己的id对比,如果match则产生块,不是则跳过,假如我的客户端是custermized的,而我又是delegate,我是否就可以跳过这个 checking直接产生块,如何防止这种情况?
Quote from: logxing on May 23, 2014, 11:13:32 am只有100个代表,按30秒一块,一个特定代表1个小时内都没轮上的概率为0.299。所以盯住一个代表ddos攻击的话,命中率也不算低。其实对100个节点同时发起攻击,成本也不少太高
只有100个代表,按30秒一块,一个特定代表1个小时内都没轮上的概率为0.299。所以盯住一个代表ddos攻击的话,命中率也不算低。
Top的代表仍然是投票选择的,只是现在是随机判断下一个delegate,而不是按照顺序执行。哦 现在执行的顺序是随机 那也不错,我还有几个问题 一直不明白:一共可能是100个代表,每笔交易可能都会去这100个代表的账簿里面核对,现在核对的顺序变成随机了。那是否要完全执行完这100个代表呢,还是 只要随机执行其中50%就行还有 如果某些代表的电脑 down机 又是如何处理的。我估计如果发现down那可能会自动跳过。那么是否有一种机制 每个几分钟去寻找下 有多少个代表在线,因为如果代表只有10个,那就太少了,是否有后补代表什么的。自动切换后补代表。