#Note: Phần này khá nặng về kiến thức chuyên môn nên bạn nào không muốn đọc có thể bỏ qua nhé. Phần 2 mình sẽ nói rõ hơn về Cách thức giao dịch trong hệ thống Bitcoin

#1. Giới thiệu về Blockchain

Blockchain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối thông tin được liên kết với nhau bằng mã hoá và mở rộng theo thời gian. Mỗi khối đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước đó thông qua giá trị băm, kèm một mã thời gian và dữ liệu giao dịch. Blockchain được thiết kế để chống lại việc thay đổi của dữ liệu. Một khi đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được nó.


Vì vậy, Blockchain có ứng dụng rất lớn ví dụ như ghi lại những sự kiện, hồ sơ y tế, xử lý giao dịch, công chứng, danh tính và chứng minh nguồn gốc. Việc này có tiềm năng xoá bỏ các hậu quả lớn khi dữ liệu bị thay đổi trong bối cảnh thương mại toàn cầu.
Blockchain được phát minh và thiết kế bởi Satoshi Nakamoto vào năm 2008 và được hiện thực hoá vào năm 2009 trong việc sử dụng và phát hành Bitcoin – khi Blockchain đóng vai trò như là một sổ cái ghi lại tất các giao dịch. Qua việc sử dụng mạng lưới ngang hàng và một hệ thống dữ liệu phân cấp, Bitcoin Blockchain được quản lý tự động. Việc phát minh ra Blockchain giúp Bitcoin trở thành loại tiền tệ kỹ thuật số đầu tiên giải quyết được vấn đề double spending (chi tiêu gian lận khi 1 lượng tiền được dùng 2 lần).

#2. Giải thuật chữ ký số trên đường cong Elliptic:

#2.1. Thuật toán tạo chữ kí

Chuẩn bị:
Giả sử Alice muốn gửi một thông báo đã ký đến Bob. Ban đầu, họ phải thống nhất các tham số đường cong
Tham số
Mô tả
Đường cong E
Trường đường cong elliptic Fq và phương trình được sử dung
G
Điểm cơ sở thuộc đường cong
N
Bậc của G(nG = O), với O là điểm ở vô cùng

Tạo khóa:
Chọn số ngẫu nhiên d thuộc [1, n – 1] làm khóa bí mật.Tính Q(xQ, yQ) = dG làm khóa công khai.Kí số trên bản rõ m:1.Tính toán e = HASH(m), hash là hàm băm mật mã như sha-1,2Chọn một số ngẫu nhiên k thuộc [1, n – 1]Tính điểm kG = (x1, y1)Tính r = x1 mod n. Nếu r = 0, quay lại bước 2Tính k-1 (theo mod n)
 Tính s = [k^-1 (e + dr)] mod n. Nếu s = 0 quay lại bước 2

#2.1. Thuật toán xác minh chữ kí

Để Bob chứng thực chữ ký của Alice, anh ta phải có một bản sao của điểm cong chính QA :
Tọa độ của QA và O là khác nhauKiểm tra QA có nằm trên đường congKiểm tra n QA = O
Sau đó Bob thực hiên các bước sau:
Kiểm tra r và s có là các số tự nhiên thuộc [1, n – 1] không?Tính toán e = hash(m), hash là hàm băm sử dụng cho kí sôTính w = s^-1 (theo mod n)       Tính u1 = ew mod n và u2 = rw mod nTính điểm đường cong X = u1G + u2Q = (xx, yx)Nếu X = O chữ kí không hợp lệ, Ngược lại tính v = xx mod n.Chữ ký chỉ được chấp nhận nếu v = r.
Quá trình kiểm tra chữ ký được thực hiện như trên bởi: nếu chữ ký (r, s) trên m là đúng thì s = [k-1 (e + dr)] mod n. k đồng dư s^-1 (e + dr) đồng dư (e + s^-1) rd đồng dư we + wrd đồng dư u1 + u2d (mod n). Vì vậy, u1G + u2Q = (u1 + u2d)G = kG, và vì vậy v = r.
Ví dụ minh họa
Chọn đường cong elliptic E: y2 = x 3 + x + 1 trên trường Z23, điểm ở vô cùng O, điểm cơ sở G(17, 3).
Tính bậc n của G:
Ta có 2G = (13, 16); 4G = (5, 19); 6G = (17, 20) = -G; 7G = G + (-G) = O
 Suy ra n = 7 là bậc của G.
Tạo khóa
Chọn số ngẫu nhiên d = 6 làm khóa bí mật.Tính Q(xQ, yQ) = 6G = (17, 20) làm khóa công khai
Kí trên bản rõ m
Tính toán e=hash(m),  tính e là số nguyên e=4Chọn một số ngẫu nhiên 2 Î [2, 6]Tính điểm 2G = (13, 16)Tính r = 13 mod 7 = 6.Tính 2-1 (mod 7) = 4 vì 2*4 mod 7 = 1Tính s = 4 (5 + 6*6) mod 7 = 3 ≠ 0
Vậy chữ kí trên bản rõ m là (6, 3)
Kiểm tra chữ ký
r = 6 và s = 3 trong khoảng [2, 6].Tính hàm băm e=hash(m) = 4Tính w = 3-1 (mod 7) = 5 vì 3*5 mod 7 = 1Tính u1 = 5*5 mod 7 = 4 và u2 = 6*5 mod 7 = 2Tính X = 4G + 2Q = (5, 19) + 2 (17, 20) = (5, 19) + (13, 7) = (13, 16)Vì X ≠ O nên tính v = 13 mod 7 = 6.v = r nên chữ ký là đúng!