Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Xác minh Merkle proof

    Kiểm chứng bằng chứng Merkle

    Cho một lá, Merkle root và một danh sách bước proof (mỗi bước gồm phía L/R và một băm anh-em). Hãy tái tạo đường lên gốc:

    • Khởi tạo h = SHA256(leaf).
    • Với mỗi bước SIDE hash:
      • L (anh-em bên trái): h = SHA256(hash + h).
      • R (anh-em bên phải): h = SHA256(h + hash).

    Cuối cùng nếu h == root thì in VALID, ngược lại INVALID. Đây là cách một light client xác nhận giao dịch mà không tải cả block.

    Ví dụ

    Input:
    a
    <root>
    2
    R <H(b)>
    R <SHA256(H(c)+H(d))>
    
    Output:
    VALID
    
    • Định dạng đầu vào:

      Dòng 1: leaf. Dòng 2: root. Dòng 3: M (số bước). M dòng tiếp: 'SIDE hash'.

    • Ràng buộc đầu vào:

      0 <= M <= 40; root và hash là chuỗi 64 hex.

    • Định dạng đầu ra:

      Một dòng: VALID hoặc INVALID.

    Ví dụ:

    Đầu vào:

    a
    58c89d709329eb37285837b042ab6ff72c7c8f74de0446b091b6a0131c102cfd
    2
    R 3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d
    R d3a0f1c792ccf7f1708d5422696263e35755a86917ea76ef9242bd4a8cf4891a
    

    Đầu ra:

    VALID

    Giải thích:

    Ghép H(a) với các băm anh-em theo proof, ra đúng root → VALID.

    Đang tải editor...