iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
自我挑戰組

Side-Project:: 為自己打造個可編輯的區塊鏈系列 第 19

Day 19 Verify Signature and Project Containerization

  • 分享至 

  • xImage
  •  

hi all 來到第19天,昨天已經把變色龍雜湊函數給應用在專案上了,就目前來說區塊訊息的編輯功能是沒有問題的。

但還少了一步驟,那就是驗證的問題。因此在 update block 前,必須來驗證下這個區塊計算出來的變色龍雜湊值簽章是否正確。

這邊我的解法是在 Controller 計算好變色龍雜湊簽章值後直接進行驗證,code如下

var chameleonSignature = chameleonHashService.Sign(request.Data);

var isSignatureValidated = chameleonHashService.Verify(new ChameleonHashVerifyRequest
{
    KeyPairDomain  = EccGenerator.GetKeyDomain(),
    Message = request.Data,
    StrSignature = chameleonSignature.Value
});

這樣一來專案的雛型大致上是完成了,看起來可以來著手下一步: 容器化。 主要的做法呢就是將專案打包成一個 image 檔,在之後直接透過 docker 就可以部屬服務了,其實這個也是為了之後的 K8s 打基底。

那這次的 dockerfile 如下:

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY ./ ./
RUN dotnet restore "CustomBlockChainLab.csproj"
RUN dotnet publish "CustomBlockChainLab.csproj" -c Release -o published

FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine

ENV TZ Asia/Taipei
RUN apk add tzdata                                  && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime  && \
    echo $TZ > /etc/timezone   

RUN apk add --no-cache icu-libs
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
ENV ASPNETCORE_HTTP_PORTS=80

ENV DB_SERVER=localhost
ENV DB_NAME=Blockchain
ENV DB_USER=root
ENV DB_PASS=<YourStrong@Passw0rd> 

WORKDIR /app
COPY --from=build /app/published/ ./

ENTRYPOINT ["dotnet", "CustomBlockChainLab.dll"]

接著透過指令進行編譯

docker build .

編譯完後透過 image 建立一個 container

docker run -itd -p 8080:80 --name custom-chain 

最後,就可以透過 localhost:8080 為專案的 hostname 打打看 api囉。

Conclusion

今天把專案容器化了,明天來進行 redis 的研究,用以降低專案對 db 的讀寫耗能。

結語: 你聽過秒殺系統嗎


上一篇
Day18 Edit Block
下一篇
Day 20 Redis Introduction
系列文
Side-Project:: 為自己打造個可編輯的區塊鏈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言