Skip to content

thuduyen07/MSc_S4_Blockchain_Technology

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MSc_S4_Blockchain_Technology

Giới thiệu

Môn: Blockchain Technology

GV: Nguyễn Đình Thúc - Blockchian_K32 - thuc@nguyendinh (skype/telegram)

Trợ giảng:

  • Ngô Đình Hy: Coding (3 labs blockchain + 2 labs SC, NFT) -- 30%
  • Trần Hà Sơn: Math. (Bài tập hằng tuần - 10 bài) -- 40%

Hình thức thi: vấn đáp -- 30%

Q. Bài tập làm hằng tuần có được sửa và trả lại ko?

Sáng thứ 3, 9h seminar của lớp blockchain chất lượng cao - C23 - ứng dụng blockchain

DAC lab (Decentralized Applied Cryptography) - Phòng I63 hỏi cuốn blockchain thầy vừa viết -- join lab? (seminar hằng tuần nguyên ngày thứ 7, có thể join online)

031123

Blockchain Technology = Công nghệ Blockchain

  • Công nghệ thuộc về khoa học máy tính, trong đó gồm 2 hướng chính:
    • software
    • hệ thống thông tin: blockchain nghiêng hơn về hướng này

Trong hệ thống thông tin bao gồm: DBMS(hệ thống quản lí dữ liệu) và database (data) -- dữ liệu, mục đích chính của việc tổ chức lại dữ liệu này là để tìm kiếm (search)

  • Khi thiết kế dữ liệu để tìm kiếm, ta chú ý đến 2 khía cạnh:
    • performance (nhanh/chậm)
    • security

Blockchain: mang theo nghĩa là sổ cái và là một cơ sở dữ liệu

Cơ sở dữ liệu lại bao gồm 2 loại:

  • cơ sở dữ liệu tập trung (centralized DB): tập trung này không có nghĩa là dữ liệu được lưu tập trung ở một chỗ, mà là được quản lí tập trung bởi 1 người. Như vậy, dữ liệu được lưu phân tán ở nhiều chỗ vẫn có thể là một cơ sở dữ liệu tập trung nếu hoạt động theo cơ chế quản lí bởi một người.
    • khi thiết kế cơ sở dữ liệu, vì tập trung nên:
      • performance cần thiết kế index hợp lí (theo các trường hợp tìm kiếm thường xuyên xảy ra hơn cả)
      • security dễ bị tấn công -> để bảo mật -> ta mã hoá cơ sở dữ liệu này -- E(DB) -- -> nhưng mã hoá xong thì khỏi tìm =)). Vậy mã hoá như nào để có thể tìm kiếm được? -> giải quyết bằng bảo mật cơ sở dữ liệu (access control, encrypt) -> không thật sự thành công cho đến khi blockchain ra đời -> blockchain giải quyết bằng cách decentralized DB (phân tán dữ liệu)

Khi giao dịch, A có 10$, khi A chuyển cho B 8$ thì:

  • A chuyển cho B 8$
  • A chuyển cho chính A 2$ và đóng phiên giao dịch

-> các khái niệm này được ghi lại trên sổ cái nhằm giải quyết vấn đề minh bạch

Để giải quyết vấn đề security khi chỉ có một sổ cái và có thể bị mất: ta replicate thành n sổ cái =)) (ứng dụng của môn hệ thống phân tán)

Như vậy, giải pháp này sẽ gặp hạn chế của hệ thống phân tán: - đó là đồng bộ -> ta giải quyết vấn đề này bằng giải pháp đồng thuận -> cần thời gian đồng thuận -> dẫn đến performance kém =))

Trong blockchain, mỗi block có thể được xem là một trang (page), khi đó, cứ một trang gồm một tập hợp các giao dịch đã xảy ra. Các trang này được xâu chuỗi với nhau (chain) (nếu xâu đứt, tất cả các trang sẽ rời rạc nhau)

Những node giữ sổ cái gọi là miner node, tất cả mọi thiết bị có thể kết nối mạng đều có thể tham gia vào mạng này và có thể tạo thành 1 node. Nếu thiết bị có tham gia thì gọi là user node. Tất cả (miner node và user node) tạo nên blockchain network và được xem như ngang hàng với nhau (Peer-2-Peer network)

Các miner node gom các giao dịch (TX) lại thành một trang (page). Nếu gom nhanh và gắn nhanh vào chain thì được thưởng. Tiền thưởng (reward) cũng được xem như một giao dịch và cũng được ghi vào một trang. Như vậy, quá trình này có thể được gọi là đúc mới 1 đồng coin nếu thành công.

Khi chuyển ta cần validate, hoạt động này có phí.

reward và validate này được xâu thành một cái game. Game này thu hút người chơi nhằm giữ guồng quay / duy trì network

Một node bao gồm:

  1. địa chỉ (tương tự như địa chỉ IP)
  2. Signkey để mở khoá tài khoản tương ứng với địa chỉ. Signkey này bao gồm public key và private key

Chain(mối nối) được tạo ra bằng cách băm các record của block trước và block sau và nối lại với nhau (ứng dụng của mật mã học)

Tóm lại, có 3 công nghệ nền tảng tạo nên blockchain gồm:

  1. Mật mã học (Cryptography)
  2. Mạng ngang hàng (P2P/Peer-2-Peer)
  3. Game Theory (Lý thuyết trò chơi): chủ yếu tập trung vào việc đảm bảo không xoá/sửa chữa record trong sổ cái và phòng chống gian lận

Lưu ý:

  • Blockchain: chỉ được thêm -> database sẽ tiến về dzô cực =)) -> tính phí lưu trữ -> vậy cái gì cần được lưu trên blockchain để tối ưu
  • Database: tuỳ ứng dụng mà sử dụng tập trung hoặc không tập trung. khi cần minh bạch thì dùng blockchain

Nhập môn mật mã ứng dụng (Applied Cryptosystem)

Cryptology (mật mã học) = cryptography (dựng mã) + cryptanalysis (thám mã)

crytography = dựng một algorithm nhằm tạo key

cryptanalysis = chủ yếu là phân tích để tìm ra key

Khi tạo key, ta có 2 khái niệm cần phân biệt:

  • bảo mật(cryptography): thẻ ngân hàng để trên bàn, nhặt được nhưng không dùng được nhờ bảo mật. Analysis (phân tích lỗ hổng nhằm bảo mật). Bảo mật có thể được dùng để phục vụ mục đích an toàn, nhưng không ai dùng an toàn để phục vụ bảo mật tại xàm =)))
  • an toàn (security): tiền bỏ trong két sắt phá được két thì lấy được xiền. hack (dùng sức đâm đầu dô két sắt -> hư được két sắt thì lấy được đồ =))

Định nghĩa hệ mã:

Hệ mã cần được đảm bảo các tính chất sau:

  • Nếu không có k thì không có được m
  • k và k' phải dễ trao đổi và quản lí
  • độc lập với thiết bị (có thể chạy một cách bảo mật ở bất kì máy nào)

Trường hợp 1: k và k'là như nhau.

  • ta gọi mã này là mã đối xứng vì có k ta tìm được k'.
  • symetric cryptosystem, secret key cryptosystem, preshared (qui ước) key cryptosystem
  • Hai cái phổ biến: AES, 3DES, dùng để bảo vệ dữ liệu off-chain,

Trường hợp 2: k khác k'

  • ta gọi là asymetric cryptosystem (mã bất đối xứng), public key cryptosystem,
  • khi đó:
    • k là khoá mã hoá, e-encryption
    • k' là khoá giải mã, d-decryption

Nếu dùng e và d xuôi thì nó là hệ mã theo định nghĩa

Nếu dùng e và d ngược lại trong định nghĩa hệ mã thì nó thành chữ ký

Trường hợp 3: E không khả nghịch

  • chỉ muốn giấu -> gọi là hàm băm, cryptographic hash function.
  • Ví dụ thường dùng khi hash mật khẩu được lưu trữ trên server

171123

Định lý CRT Chứng minh định lí RSA Ref:

Mã công khai dựa trên DLP Alt text

Hệ mã ElGamal (ElGamal CryptoSystems)

DLP - Discrete Logarithm Problem

241123

DLP-Based CryptoSystem

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text

011223 - Bitcoin Network - Ngân hàng ngang hàng

Một số định nghĩa:

  1. Bank account
  2. Transaction
  3. Validation

Alt text Alt text

Một số cơ chế hoạt động:

  1. Tạo địa chỉ (Address Generation)
  2. Xác minh giao dịch (Transaction Validation)

Tạo địa chỉ Alt text Alt text Alt text

Cấu trúc của một Transaction Alt text Alt text

081223

Duy trì sổ cái phi tập trung

Alt text

Proof of Work (PoW) (based on partual inverse hash)

Một số tính chất:

  1. Kháng tiền ảnh (Pre-image Resistance), ie. cho y=h(x), không tìm lại được x. Hay hàm 1 chiều, hàm không song ánh
  2. Kháng tiền ảnh phụ (Second Pre-image Resistance), ie. đã ký rồi thì không giả mạo được mặc dù chữ kí đơn giản. cho y=h(x), không tìm được x' sao cho h(x')=y (cheating)
  3. Kháng đụng độ (Collision Resistance), có 2 đơn 1 đơn 10tr, 1 đơn 10 tỷ, lừa cho ký đơn 10tr rồi lấy nó đi dùng thay cho đơn 10tỷ. Cho (x,x'), không tìm được h(x)=h(x') (fake)

Note: Nonce là số dùng 1 lần, Doc là nội dung

Alt text

Tối ưu hoá chương trình

Alt text

Merkle Tree

Giao thức thanh toán BIP70

Alt text

Alt text

Note: dApp = distributed app

Vấn đề: Phí giao dịch có thể cao hơn giá trị hàng hoá trao đổi :v

=> kỹ thuật multi-sign (nhiều người kí, ie. 2 trong 3 người kí)

=> kỹ thuật bán lẻ P2P, nếu c chưa có quan hệ với A và B mà có (cha-nel) A - B - E - C thì quá giang qua E để thanh toán -> dẫn đến bài toán tìm đường đi ngắn nhất để thanh toán được, mà chi phí thấp và có thể không cần mở channel mới vì mở mới khá đắt

Alt text

DApp Lab DApp Note

DApp Lecture Record

221223

Digital Signature

Nguyên tắc: với mọi hệ mã công khai đều có thể thiết kế hệ ký Alt text

Cài đặt hàm băm

Alt text

$x_0, x_1, x$ có cùng chiều dài

tính h(Doc) (hash của Doc)

  1. chia Doc = $m_1, m_2,..,m_{n-1}, m_n$, riêng $m_n$ có thể không đủ chiều dài, khi đó ta padding(salt) cho đủ chiều dài 2.m_0 = random hoặc seed với chiều dài l
  2. lặp m_0 = M(m_i, m_0)
  3. return $m_0$, khi i>n

Xây dựng hàm M:

Alt text

Cách 1: dùng nguồn mở

Cách 2: dùng mã làm M

  • độ phức tạp khi hợp M_1 o M_2: n(RSA + 4AES)

Cách 3: dùng kỹ thuật hàm hợp

  • độ phức tạp khi hợp: n.RSA + 4.AES

Cách 4: dùng hoán vị: tạo ra một cái hàm toán học của riêng mình

  • đồng cấu cộng
  • đồng cấu nhân

hàm băm đồng cấu (homomorphic hash function) -> nhằm thực hiện giao dịch để người ta verify được nhưng ko cho người ta biết nội dung -> gọi là ZK (zero knowledge)

MAC - Message Authentication Code

MAC(doc) = keyed hash (hàm băm có khoá) Alt text

Chữ ký Elgama-like --- ECC

Alt text Alt text k phải chọn random

phải có d, không có d không kí được

Alt text

Alt text

Alt text

Alt text

Lectures Youtube playlist

Recordings:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors