Hdac Software Patch

There were chain splits on September 24, 0:38 am (GMT + 9 ). We have done the issue analyzing and released a software patch (Hdac 1.06.0 version) to prevent any similar problem in the future.

Please note that every Hdac Full Nodes must apply this version.
The application period is from block height 138,700, which is expected to be generated on September 24th (GMT + 9).
This patch version requires a change in the block reward receiving address.
We are here asking every of our dear mining partners’ cooperation, please refer to the details below and change the mining pool setting (NOMP).

■ Issue Summary

● Adding a miner’s signature to the latest found block is required in Hdac system. Since the subject of the signature cannot be assigned in NOMP but the configuration of the Coinbase Transaction is generated in NOMP, the mining address and reward receiving address can be set differently.

● It seems that there have been various attempts on the fact that mining address and the reward address do not need to be identical.
For now, it is difficult to recognize if those attempts were malicious, but there did exist some problems in Coinbase Transaction of few specific blocks even before the chain split, and it was possible to reproduce the same phenomenon based on the analyzed result.

■ Revise

We need to update the value of Merkle root to deal with the primary issue, but in addition to Core modification, it will also affect the Transaction generating process in NOMP. Thus we decided to minimize the patch coverage.
Block generation will be possible only when the Full Node address (Miner address) is identical with the reward address, which is the first address of Coinbase Transaction vout.

● Miner address and reward address must be set identically before applying patch version. (Block generation will be possible only when two addresses are identical.).

■ Example of application (Changing NOMP settings)

1. Execute “hdac-cli hdac getaddresses” in Full Node’s command window.

{“method”:”getaddresses”,”params”:[],”id”:1,”chain_name”:”hdac”}
[
“HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“H8GjPffVnW9eqNtf7KyMhosWusUofXvqwx”,
“HRp4UWK9HTdZFv9WWjHiqEnAjckQyweiTE”,
“HMQCrLxwaeziVAKMAwpg5wRPDAW7whsVM6”
]

2. Make sure the “address” in NOMP pool_configs / hdac.json file is identical with the red one in 1).

{
“enabled”: true,
“coin”: “hdac.json”,
“address”: “HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“rewardRecipients”: {
},

 

Hdac 소프트웨어 패치

9월 24일 월요일 오전 0시 38분 경(GMT+9) 체인이 분리되는 현상이 발생했습니다. 이에 대한 원인 분석을 진행한 결과 취약점을 파악하였으며, 추후에 동일한 현상이 발생하는 것을 방지하기 위해 소프트웨어 패치(Hdac 1.06.0 버전)를 배포하게 되었습니다.

본 버전은 Hdac을 운영하는 전체 Full node에 적용이 이루어 져야 합니다.
적용 시점은 138,700블록 이후부터 입니다. ((GMT+9) 9월24일 예상)
이번 패치 버전은 채굴 블록에 대한 보상주소 설정 변경이 필요합니다. 채굴 파트너께서는 하기 상세 내역을 참고하시어 채굴풀(NOMP) 등의 설정을 변경해 주시기 바랍니다.

■ 취약점 요약

● Hdac은 새롭게 찾은 블록에 Miner의 서명(Signature)을 추가하도록 되어 있습니다.
서명의 주체를 채굴풀(NOMP)에서는 지정할 수 없으며 CoinBase Transaction의 구성은 채굴풀(NOMP)에서 생성되는 형태로 채굴주소(Miner address)와 보상주소(reward address)를 다르게 설정할 수 있었습니다.

● 채굴주소와 보상주소가 일치하지 않아도 되는 부분에 대해 여러 형태의 시도가 있었던 것으로 파악됩니다. 현재로서는 악의적 시도였는지 여부 파악이 어려우나, 체인 분리 현상 이전에 특정 블록의 Coinbase Transaction에 문제가 있었으며 분석된 원인을 바탕으로 동일 현상을 재현할 수 있었습니다.

■ 수정 내용

주된 원인을 처리하기 위해 Merkle root의 값을 갱신해야 하지만, 이는 Core의 수정 외에 채굴풀(NOMP)에서의 Transaction 생성 과정에도 영향을 주기 때문에 패치 적용 범위를 최소화 했습니다. 블록 서명(Block Signature)에 이용되는 Full Node의 주소(Miner address)와 Coinbase Transaction의 vout 첫번째 주소인 보상주소(reward address)가 동일한 경우에만 블록 생성이 가능하도록 했습니다.

패치버전 적용 전에 반드시 채굴주소(Miner address)와 보상주소(reward address)를 일치 시켜야 합니다. (주소가 서로 상이할 경우 블록 생성이 되지 않습니다.)

■ 적용 예시 ( NOMP 설정 변경 예 )

1. Full Node의 커맨드 창에서 “hdac-cli hdac getaddresses “ 실행

{“method”:”getaddresses”,”params”:[],”id”:1,”chain_name”:”hdac”}
[
“HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“H8GjPffVnW9eqNtf7KyMhosWusUofXvqwx”,
“HRp4UWK9HTdZFv9WWjHiqEnAjckQyweiTE”,
“HMQCrLxwaeziVAKMAwpg5wRPDAW7whsVM6”
]

2. NOMP pool_configs/hdac.json 파일의 address 항목을 상기 1번 항목의 첫번째 주소와 일치시킴

{
“enabled”: true,
“coin”: “hdac.json”,
“address”: “HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“rewardRecipients”: {
},

 

Hdacのソフトウェア・パッチ

9月24日月曜日午前0時38分頃(GMT+9) 、チェーンが分離される現象が発生しました。 これに対する原因を分析して弱点を把握しており、今後に同一の現象が発生することを防止するために、ソフトウェアパッチ(Hdac 1.06.0バージョン)を配布することになりました。

本バージョンはHdacを運営する全体Full nodeに適用されます。
適用時期は138,700ブロックからです。 (GMT+9) 9月24日予定)
今回のパッチのバージョンは、採掘ブロックに対する補償アドレス変更が必要です。
採掘パートナーの皆さまは下の詳細内訳を参考にして採掘フル(NOMP)の設定を変更してください。

■ 脆弱性のまとめ

● Hdacは新しく採掘したブロックにMinerの署名(Signature)を追加するようになっています。
署名の主体を採掘フル(NOMP)では指定できないし、CoinBase Transactionの構成は、採掘フル(NOMP)で生成される形で採掘アドレス(Miner address)と補償の住所(reward address)を違うように設定できました。

● 採掘アドレスと補償アドレスが一致しなくても良い部分で様々な形の試みがあったと把握されています。 現在、悪意的な試みだったのかどうか把握は難しいが、チェーン分離現象以前に特定ブロックのCoinbase Transactionに問題があったことを発見して分析された原因をもとに、同一現象を再現できました。

■ 修正内容
主な原因を処理するためにMerkle rootの値を更新という点はCoreの修正に加えて採掘プール(NOMP)でのTransaction生成過程にも影響を与えられるので、パッチの適用範囲を最小限に抑えるた。ブロック署名(Block Signature)に利用されるFull Nodeのアドレス(Miner address)とCoinbase Transactionのvout最初アドレスである補償アドレス(reward address)が同じ場合にのみ、ブロックの作成できます。

● パッチのバージョンを適用する前に、必ず採掘アドレス(Miner address)と補償アドレス(reward address)を一致させてください。(アドレスが互いに相違する場合、ブロックの生成ができません。)

■ 適用例(NOMP設定変更の例)

1. Full Nodeのコマンドウィンドウで、「hdac-cli hdac getaddresses”実行

{“method”:”getaddresses”,”params”:[],”id”:1,”chain_name”:”hdac”}
[
“HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“H8GjPffVnW9eqNtf7KyMhosWusUofXvqwx”,
“HRp4UWK9HTdZFv9WWjHiqEnAjckQyweiTE”,
“HMQCrLxwaeziVAKMAwpg5wRPDAW7whsVM6”
]

2. NOMP pool_configs/ hdac.jsonファイルのaddress項目を上記1番項目の最初のアドレスと一致させる。

{
“enabled”: true,
“coin”: “hdac.json”,
“address”: “HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“rewardRecipients”: {
},

Hdac Software Patch

9月24日上午0点38分左右(GMT+9)发生了链条分离现象。对原因进行分析后发现了问题点, 并发布本次更新以防止往后发生类似问题 (Hdac 1.06.0版本)。

本版本应适用于运营Hdac的所有Full node.
从138,700 区块以后开始适用.((GMT+9)预计9月24日)
这次补丁版本需要变更区块奖励的接收地址。参与挖矿的伙伴们请参考下列说明, 更改矿池(NOMP)等的设定。

■ 问题点简要说明

● Hdac在新挖的区块需要矿工的签名(Signature)。
签名主体无法在矿池(NOMP)中指定,CoinBase Transaction的构成则是在矿池(NOMP)中产生,可以设定不同的挖矿地址和奖励接收地址

● 根据我们的确认结果, 对使用不同挖矿地址和奖励接收地址的尝试, 过去出现过几种不同的形态。这些尝试我们很难判定背后是不是有恶意的动机, 但在区块链分离现象之前, 特定区块的Coinbase Transction确实存在一些问题, 以我们分析出来的原因, 也确实能够再现相同的现象。

■ 修改的内容

为了解决主要原因,需要更新Merkle root的数值,但这除了Core的修改之外, 对矿池(NOMP)里Transction形成过程也会产生影响, 因此我们最大限度的最小化了补丁影响范围。
在区块签名(Block Signature)里会使用的两项数值必须相同才能够产生区块. 这两项数值分别是Full Node的挖矿地址,以及Coinbase Transction vout的第一个地址, 同时也就是奖励接收地址.

● 适用补丁版本前必须将挖矿地址与补偿地址设定为相同的地址。(地址不同时无法产生区块)

■ 变更范例(NOMP设定变更)

1. 在Full Node的命令行窗口, 执行”hdac-cli hdac getaddresses”

{“method”:”getaddresses”,”params”:[],”id”:1,”chain_name”:”hdac”}
[
“HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt”,
“H8GjPffVnW9eqNtf7KyMhosWusUofXvqwx”,
“HRp4UWK9HTdZFv9WWjHiqEnAjckQyweiTE”,
“HMQCrLxwaeziVAKMAwpg5wRPDAW7whsVM6”
]

2.NOMP pool_configs/hdac.json文件中的address必须和上述1项的第一地址相同。

{
“enabled”: true,
“coin”: “hdac.json”,
“address”: “HLaRqBJfzRiUc1wGSeUc2rpDQ5dKZwZCjt“,
“rewardRecipients”: {
},