Hdac is releasing source code update 1.05.0 to the public, which will improve the problem with the difficulty adjustment and ePoW algorithm. This update will modify “Consensus Algorithm Rules” which requires the full upgrade on every node.
The revised rules will be applied from block number 112,400. The relevant items such as Explorer, Wallet, DApp, etc. will not be affected by this update since additional patchwork for those items are not necessary.
1.1 Difficulty Adjustment
Hdac has set its difficulty adjustment cycle to 480 blocks to prevent the same issues of difficulty adjustment period identified from the Bitcoin. This adjustment is designed to take approximately 24 hours when divided into hours.
However, constant hash attack at the low difficulty level and repeated transaction delay at the high difficulty level have caused the problem, and we believe this update could resolve this exposed issue.
The Hdac core developers analyzed the difficulty adjusting method employed by numerous series of Bitcoin cores and reviewed the possibility of applying the logics through various simulations for Hdac optimization.
The previous difficulty level adjustment takes place at every 480 block-cycle, yet the new system will adjust its difficulty level per block basis, and the creation time of the block will be collected in the same 180 seconds as before.
The interval between block generation and hash rate for the previous blocks is an essential factor in determining the difficulty. Throughout the multiple simulations, it has been found out that the degree of difficulty adjustment at 480 block-cycle was somewhat insignificant, while at 30 block-cycle was too broad and showed lack of discrimination ability. And considering additional simulation result, we have concluded 60 block-cycle is the optimum adjustment period for Hdac, and this new difficulty adjustment regulation will be applied after the update.
1.2 Difficulty Adjustment Operating Mode
● The block generation time and hash ratio from the previous 60 blocks will be extracted and work as a benchmark for future block difficulty adjustment.
● Level of difficulty will rise at a low difficulty level with a high hash ratio.
● Vice versa, the level of difficulty will decrease at a high difficulty level with a low hash ratio.
● Difficulty adjustment will modify the average block generation time to cover 180 seconds limit, and the number of benchmark blocks will be 60 blocks.
● The average block generation time of the last 6 blocks, other than 60 benchmark blocks, are taken into account simultaneously so that the block generation cycle does not extend for more than 10 minutes to 1 hour due to extremely low hash rates at a high difficulty level.
2.1 ePoW Consensus Algorithm Modification
Problems with previous version
This update is designed to prevent the monopoly of a particular miner or mining pool. On the basis of current block height, the total number of miners will be calculated from the previous 480 blocks based on the compensation address. Following this result, suitable window size (WZ) will be re-engineered to stop the continuous mining by the particular entity, which will allow all miners to have an equal opportunity eventually.
The problem with the current system is lack of flexibility in certain circumstances. Regardless of the level of mining difficulty, the WZ value, which should be maintained at 1, may rise rapidly in case of sudden extension of the block height or sudden increase of the miners. These are causing the decrease in mining speed and making the system unable to cope flexibly with the hash attack.
At a low difficulty section, it is not possible to stop the specific miner’s monopoly by 50% or more and at a high section, block generation time takes more than 1 hour which the Hdac team calls “Blackout.”
2.2 Modified ePoW Operating Mode
● New ePoW operates based on two different criteria, a) the block generation time difference between the current and new blocks and b) the total number of miners and miner rates gathered from the latest ten blocks.
● If the time difference value is less than 3 minutes, block collection time will be in 3 minutes to stop the monopoly by considering the miner rates and the mining time intervals.
● If the time difference value is more than 12 minutes, it will be determined by the miner rates and the total amount of continuous mining.
● The “Blackout” time will be changed from 1hour to 48 minutes (12 Min X 4).
● WZ value is based on previous 120 blocks. If the generation time for 120 blocks takes less than standard time (3 Min X 120 blocks), WZ value will have flexibility from 0 to 2 depending on the total number of miners. If the generation time is more than twice the standard time, the WZ value will be 0 or 1 with keeping its flexibility.
난이도 조정(Difficulty Adjustment)과 ePoW 알고리즘의 문제점을 개선한 Hdac 1.05.0 버전을 배포합니다. 본 버전은 합의 알고리즘 규칙 (Consensus rules) 을 변경하는 것으로 Hdac 을 운영하는 전체 Full node에 대한 업그레이드가 이루어 져야 합니다.
변경된 규칙은 Hdac 블록번호 112,400부터 적용됩니다. Hdac 과 관련된 Explorer, Wallet, DApp 등의 동작에 영향을 주는 부분이 없으므로 이에 대한 업그레이드는 불필요합니다.
1.1 난이도 조정
Hdac 의 난이도 조정은 Bitcoin의 난이도 조정 주기의 문제점을 보완하고자 480 blocks 으로 조정하였고 이는 시간으로 분류하면 24시간 정도의 주기를 가지도록 설계 되었습니다.
하지만 낮은 난이도에서의 hash 공격과 높은 난이도에서 거래 지연 현상이 반복되는 등 네트웍 환경에 유연하게 적응하지 못하는 문제를 노출하게 되어 이에 대한 개선 작업을 진행 하였습니다.
Hdac 코어 개발진은 수많은 Bitcoin계열의 코어에서 채용되고 있는 난이도 조정 방식에 대한 분석 및 적용 검토를 진행하였으며 다양한 상황에 대한 시뮬레이션을 통해서 Hdac 에 좀더 최적화 된 형태로 적용 하고자 하였습니다.
기존 480 블록을 주기로 변경되는 난이도를 매 블록마다 변경될 수 있도록 하였으며 블록 생성 시간은 기존과 동일한 180초에 수렴될 수 있도록 하였습니다.
이전 블록들에 대한 블록 생성 시간의 간격과 해시비율(Hash Rate)은 난이도 결정을 위한 중요한 요소로 작용합니다. 이에 대한 표본 입력 값으로 480개의 블록을 기준으로 했을 때 난이도 변경 폭이 다소 미미하였으며 30개 이하의 블록을 기준으로 했을 때는 변화 폭이 너무 크고 변별력이 다소 떨어지는 문제가 있었기 때문에 다양한 상황을 가정한 시뮬레이션을 통해 적정 수준으로 판단되는 60개 블록을 기준으로 난이도가 계산 될 수 있도록 했습니다.
1.2 난이도 조정 동작 방식
● 이전 블록 60개를 표본으로 블록간의 생성 시간과 해시비율을 추출하여 다음 블록의 난이도를 결정하는 데 적용한다.
● 낮은 난이도에서 높은 해시 비율을 보일 때 난이도가 상승 할 수 있도록 조정한다.
● 높은 난이도에서 낮은 해시 비율을 보일 때 난이도가 하락 할 수 있도록 조정한다.
● 난이도 조정은 평균 블록 생성 시간이 180초에 수렴할 수 있도록 조정하며 이에 대한 기준 블록의 개수는 60 블록이다.
● 높은 난이도에서 과도하게 낮은 해시 비율로 인해 블록 생성 주기가 10분 ~ 1시간 이상 오랜 기간 길어지지 않도록 60블록 외에 최근 6개 블록의 평균 블록 생성 시간을 함께 고려하여 해시 비율에 맞는 난이도가 빠르게 유도 될 수 있도록 한다.
2.1 ePoW 합의 알고리즘
기존 버전 문제점
특정 마이너의 독점 채굴을 방지하고자 적용되었으며, 현재 블록 height 기준으로 480개 이전 블록 동안 채굴한 마이너의 수(보상 주소 기준)가 몇 개인지를 확인하여 그에 맞는 윈도우 사이즈(WZ)를 계산하고 WZ 값에 따라 연속 채굴이 불가능하도록 하여 전체 마이너에게 최소한의 공평한 기회가 부여되도록 설계 되었습니다.
현재 방식대로 유지될 경우 문제점은 현재는 WZ값이 1을 유지하고 있으나 블록 height가 커지거나 마이너 수가 많아지게 되면 향후 Hdac의 난이도와 상관없이 WZ 값이 상승하게 되어 채굴의 속도가 느려질 수 있고 난이도에 따른 hash 공격에 유연하게 대처하기가 어렵습니다.
난이도가 낮은 구간에서는 일부 마이너의 50% 이상 독점 채굴을 막을 수가 없고 난이도가 높은 구간에서는 블록 생성 시간이 1시간 이상(Blackout) 걸릴 수도 있습니다.
2.2 변경된 ePoW 알고리즘 동작 방식
● New 블록과 현재 블록의 생성 시간 간의 차이(TimeDiff)와 최근 10개 블록에서의 마이너 수와 마이너의 채굴량(MinerRate)을 기준으로 동작합니다.
● TimeDiff 값이 3분 이하일 경우 MinerRate 및 마이너의 채굴 타임 간격을 보고 결정
특정 마이너가 과반 독점하지 못하도록 하고 블록 타임을 3분에 수렴하도록 함
● TimeDiff가 12분 보다 클 경우 MinerRate 및 연속 채굴량을 보고 결정
● 기존의 blackout 시간은 1시간에서 48분으로 변경 (12분 x 4)
● WZ 값은 이전 120블록을 기준으로 합니다. 120블록의 블록 생성 시간이 기준 시간(3분*120블록)보다 작은 경우 채굴 마이너 수에 따라 WZ는 0, 1, 2 등으로 유동적으로 변화하며 블록 생성 시간이 기준시간보다 2배이상 클 경우 채굴 마이너 수에 따라 WZ는 0, 1 등으로 유동적으로 변화합니다.
難易度調整(Difficulty Adjustment)とePoWアルゴリズムの問題点を改善したHdac1.05.0バージョンを配布します。
本バージョンは、合意アルゴリズムルール(Consensus rules)を変更することでHdacを運営する全Full nodeに対するアップグレードが行われなければなりません。
また、変更されたルールは、Hdacブロック番号112,400から適用されます。
Hdacに関連するExplorer、Wallet、DAppなどの動作に影響を与える部分がないため、これに対するアップグレードは不要です。
1.1 難易度調整 (Difficulty Adjustment)
Hdacの難易度調整は、Bitcoinの難易度調整サイクルの問題点を補完するために480 blocksに調整し、これは、時間に分類すると、24時間程度のサイクルを有するように設計されました。
しかし、低難易度でのhashの攻撃と高難易度での取引遅延現象が繰り返されるなど、ネットワーク環境に柔軟に適応しない問題を公開するようになり、これに対する改善作業を進めました。
Hdacコア開発チームは、数多くのBitcoin系列のコアで採用されている難易度調整方式に関する分析及び適用の検討を進め、多様な状況に対するシミュレーションを通じてHdacにさらに最適化した形態で適用しようとしました。
既存の480のブロックをサイクルとして変更される難易度をブロックごとに変更されるようにし、ブロックの生成時間は、既存と同一な180秒に収束されるようにしました。
以前のブロックに対するブロックの生成時間の間隔とハッシュレート(Hash Rate)は、難易度を決定するための重要な要素として作用します。
これに対する標本入力値として480個のブロックを基準にしたとき、難易度の変更幅がかすかであり、30個以下のブロックを基準にしたときは、変化の幅が大きすぎて 弁別力が多少落ちる問題があったため、多様な状況を想定したシミュレーションにより、適切なレベルと判断される60個のブロックを基準に難易度が計算されるようにしました。
1.2 難易度調整の動作方式
● 以前ブロック60個を標本にブロック間の生成時間とハッシュレートを抽出し、次回のブロックの難易度を決定するのに適用する。
低難易度で高いハッシュレートを示すとき難易度が上昇するように調整する。
● 高難易度で低いハッシュレートを示すとき難易度が低下するように調整する。
● 難易度調整は、平均ブロック生成時間が180秒に収束するように調整し、これに対する基準ブロックの数は、60ブロックである。
● 高難易度で過度に低いハッシュレートによりブロック生成サイクルが10分〜1時間以上、長くならないように、60ブロック以外に、最近6ブロックの平均ブロック生成時間を共に考慮し、ハッシュレートに応じた難易度が速やかに誘導されるようにする。
2.1 ePoW Consensus Algorithm
既存バージョンの問題
特定のマイナーの独占採掘を防止するために適用され、現在のブロックheightを基準に480個以前のブロックの間に採掘されたマイナーの数(補償アドレス基準)がいくつかを確認し、それに適合したウィンドウサイズ(WZ)を計算し、WZ値に基づいて連続採掘が不可能にして全体のマイナーに最小限の公平な機会が与えられるように設計されました。
現在の方式で維持される場合、問題は、現在ではWZ値が1を維持しているが、ブロックheightが大きくなったり、マイナー数が多くなると、今後Hdacの難易度に関係なく、WZ値が上昇するようになり、採掘の速度が遅くなることがあり、難易度によるhashの攻撃に柔軟に対処するのは困難です。
難易度が低い区間では、一部のマイナーの50%以上の独占採掘を防ぐことができず、難易度が高い区間では、ブロックの生成時間が1時間以上(Blackout)かかることもあります。
2.2 変更されたePoW動作方式(採掘独占禁止)
● Newブロックと現在のブロックの生成時間の差(TimeDiff)と最近10個のブロックでのマイナー数とマイナーの採掘量(MinerRate)を基準に動作します。
● TimeDiff値が3分以下である場合、MinerRate及びマイナーの採掘タイムの間隔を見て決定
特定のマイナーが過半独占しないようにし、ブロックタイムを3分に収束するようにする
● TimeDiffが12分より大きい場合、MinerRate及び連続採掘量を見て決定
● 既存のblackout時間は1時間から48分に変更(12分x4)
● WZ値は、以前の120のブロックを基準にします。
120のブロックのブロック生成時間が基準時間(3分*120ブロック)より小さい場合、採掘マイナー数に応じてWZは0、1、2などと流動的に変化し、ブロックの生成時間が基準時間より2倍以上大きい場合、採掘マイナー数に応じてWZは0、1などと流動的に変化します。
我们现在发放对于难度调整(Difficulty Adjustment)和 ePoW 算法问题进行改善的 Hdac 1.05.0 版本。
这一版本改变了共识规则(Consensus rules),应该对运行 Hdac的全体 Full node进行升级。
从 Hdac 的112,400块编号开始,适用于本变更规则。
由于 Explorer、Wallet、Dapp 等动作不受 Hdac 有关问题的影响,所以不必升级。
1.1 难度调整(Difficulty Adjustment)
为了更好地完善比特币(Bitcoin)难度调整的周期问题,将 Hdac 的难度调整为 480 blocks,如果按照时间进行分类的话,周期设计为 24 小时左右。
由于存在一些问题如难度较低情况下发生的 hash 攻击问题和难度较高情况下的交易延迟现象反复出现,无法灵活地适应网络环境问题,所以对此进行了改善。
Hdac 的核心开发团队对于无数 Bitcoin 系列的核心采用的难度调整方式进行了分析,并研究了它的适用情况,通过多种情况的模拟,为寻找在 Hdac 使用更加优化的形态作出了不懈的努力。
我们已把现有的以 480 个区块为周期变更的难度,改成每个区块都进行变更,并使区块的生成时间与现有时间相同,180秒后马上收敛。
以往区块生成时间的间隔和哈希率(Hash Rate)在决定难度方面起到很重要的作用。
由于样品的输入值以 480 个区块为准,使难度的变更幅度微不足道;由于以 30 个以下的区块为准,变化的幅度太大,使分辨力较差,所以通过多种情况的模拟,以 60 个区块为准计算难度,我们认为这是比较适当的水准。
1.2 难度调整动作方式
● 以原有的 60 个区块为样品,抽取区块之间的生成时间和哈希率,然后把它用于决定下一个区块的难度。
● 调整难度,使难度较低而呈现较高的哈希率时,难度上升。
● 调整难度,使难度较高而呈现较低的哈希率时,难度下降。
● 调整难度,使平均区块的生成时间达到180秒时马上收敛,此时的基准区块数量为60个区块。
● 为了不使较高难度时因哈希率过低而区块生成周期延长10分钟~1小时以上,除了60个区块以外,还考虑到最新6个区块的平均区块生成时间,较快地诱导适合哈希率的难度。
2.1 ePoW Consensus Algorithm
现有版本的问题
这是为了防止特定矿工垄断挖矿而设计的版本,设计成以目前区块 height 为准,确定在原有的 480 个区块间挖矿的矿工数量(以回馈地址为准)的多少,然后计算适合的窗口大小(WZ),根据 WZ的数值,不让他连续挖矿,从而赋予每个矿工起码的公平机会。
如果采用目前的方式,会出现一个问题,那就是虽然目前 WZ值为1,但是如果区块 height 扩大或者矿工数量增加,那么无论今后 Hdac 的难度如何,WZ值都会上升,挖矿速度有可能变慢,因此无法灵活地应对不同难度的hash 攻击。
在难度较低的区段,无法防止一些矿工 50% 以上的垄断挖矿行为;在难度较高的区段,区块生成的时间有可能花一个小时以上(Blackout)。
2.2 变更ePoW 的运作方式 (防止垄断挖矿)
● 以新(New) 区块和目前区块生成时间的差异(TimeDiff)以及在最新 10 个区块的矿工数量和矿工挖矿量(MinerRate)为准运作。
● 如果 TimeDiff 值为 3 分钟以下,应考虑 MinerRate 和矿工挖矿时间的间隔后作出决定。
不使特定矿工垄断过半,而使区块时间达到 3 分钟后马上收敛。
● 若 TimeDiff 的时间大于 12 分钟,应考虑 MinerRate 和连续挖矿数量以后再作出决定。
● 关于 blackout 的时间,从现有的一个小时改为 48 分钟 (12分钟 x 4)。
● WZ 值以原有的 120 个区块为准。
120 个区块的生成时间少于基准时间(3分钟 * 120区块)时,根据挖矿的矿工数量,WZ的数值将灵活地变成 0、1、2;区块生成时间大于基准时间 2 倍以上时,根据挖矿的矿工数量,WZ的数值将灵活地变成 0、1。