iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0

Hi all 來到14天, 昨天我們成功把專案引入EccSDK,同時也將 insert 區塊的變色龍雜湊值補上,但似乎還少了點啥,今天就來定義下吧。

由於目前的區塊雜湊值是這樣組成 ( 如 code)

HashHelper.ToSha256($"{dto.TimeStamp}:{Hash}:{dto.Data}:{nonce}"),

我們需要將其點小調整,如下

HashHelper.ToSha256($"{dto.TimeStamp}:{Hash}:{dto.Data}:{nonce}:{ChameleonHash}"),

我們將變色龍雜湊值加入計算 hash 的要件之一。然而在計算變色龍雜湊前,還需要再定義下 Hash Message 的組成,以下是我目前的做法

    public BlockDomain GenerateNextBlock(GenerateNewBlockDto dto, int nonce)
    {
        var message = $"{dto.TimeStamp}:{Hash}:{nonce}";
        var chameleonHash = ChameleonHashHelper.GetChameleonHash(new ChameleonHashRequest()
        {
            KeyPair =dto.KeyPair ,
            Message = Data 
        });
        
        return new BlockDomain
        {
            Data = dto.Data,
            PreviousHash = Hash,
            TimeStamp = dto.TimeStamp,
            Hash = HashHelper.ToSha256($"{message}:{chameleonHash}"),
            Nonce = nonce,
            ChameleonSignature = ChameleonHashHelper.Sign(new ChameleonHashRequest
            {
                KeyPair = dto.KeyPair,
                Message = message,
                SessionKey = dto.SessionKey.Key,
                Order = dto.KeyPair.PublicKey.Curve.Order,
            }),
        };
    }

經過以上的小調正,我們如果要做message 編輯的話,只需要重新做變色龍雜湊值的計算即可。

由於我們把 message的要素放進 變色龍雜湊的運算,因此只要keypair 維持在同一把的情況下,區塊的雜湊值將不會做變化,但 Data 可以。

好啦,今天先到這邊惹,開心星期五值得開心。


上一篇
Day13 Apply Ecc SDK
下一篇
Day15 Store Key Data for EccSDK
系列文
Side-Project:: 為自己打造個可編輯的區塊鏈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言