Tải bản đầy đủ (.docx) (59 trang)

Parachain – nghiên cứu và ứng dụng blockchain trong truy xuất nguồn gốc thuốc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.75 MB, 59 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KINH TẾ - TÀI CHÍNH TP. HỒ CHÍ MINH
____________

PARACHAIN – NGHIÊN CỨU VÀ ỨNG DỤNG
BLOCKCHAIN TRONG TRUY XUẤT NGUỒN
GỐC THUỐC

BÁO CÁO ĐỀ TÀI NGHIÊN CỨU KHOA HỌC

1
TP. Hồ Chí Minh – Năm 2021


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KINH TẾ - TÀI CHÍNH TP. HỒ CHÍ MINH
____________

KHĨA: 2018 – 2022

PARACHAIN – NGHIÊN CỨU VÀ ỨNG DỤNG
BLOCKCHAIN TRONG TRUY XUẤT NGUỒN
GỐC THUỐC
Chuyên ngành: Công Nghệ Phần Mềm

BÁO CÁO ĐỀ TÀI NGHIÊN CỨU KHOA HỌC

GVHD: Huỳnh Đệ Thủ

2
TP. Hồ Chí Minh – Năm 2021



i


NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................

TP.HCM, ngày 11 tháng 06 năm 2021
NGƯỜI HƯỚNG DẪN

3


Tóm tắt
Parachain là một nền tảng thương mại điện tử kết hợp với truy xuất nguồn thuốc
được xây dựng dựa trên nền tảng cơng nghệ blockchain, mơ hình của chúng tôi
kết nối các bên liên quan trong chuỗi cung ứng thuốc nhằm cải thiện độ hiệu quả

của chuỗi cung ứng nâng cao chất lượng các sản phẩm được tạo ra, giảm tình
trạng thuốc giả ảnh hưởng đến sức khỏe con người.
Blockchain – Cơng nghệ chuỗi khối – có thể được xem như một cuốn sổ cái công
khai, chống giả mạo và tất cả các giao dịch được lưu trữ trong một danh sách các
khối. Chuỗi này liên tục được phát triển khi các khối mới được thêm vào. Với
hàm mật mã bất đối xứng và cơ chế đồng thuận phân tán đã làm cho Blockchain
bảo mật, nhất quán hơn các cuốn sổ cái truyền thống.
Vì khả năng cho phép hồn thành thanh tốn mà khơng cần bất kỳ ngân hàng hay
trung gian nào, Blockchain được dùng trong các dịch vụ tài chính khác nhau như
tài sản kỹ thuật số, chuyển tiền hay thanh tốn. Thêm vào đó, nó cịn có thể áp
dụng cho các lĩnh vực khác như hợp đồng thông minh, dịch vụ công cộng,
Internet vạn vật, hệ thống danh tiếng và dịch vụ bảo mật

Keywords: Smart contract, ERC-20, Hyperledger Fabric blockchain, restful api,
nodejs, nuxtjs, mongodb, nosql, drug traceability, supply chain.

4


Mục Lục


Danh Mục Hình


Danh Mục Bảng Biểu


CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
1.1 Đặt vấn đề:

1.1.1 Thực trạng:
Tình trạng thuốc giả, thuốc nhái hàng kém chất lượng trên thị trường gây ảnh
hưởng nghiêm trọng tới niềm tin và sức khỏe người tiêu dùng. Chính vì vậy việc
áp dụng truy xuất nguồn gốc thuốc là một bước tiến quan trọng mà doanh nghiệp
cần thực hiện để lấy lại niềm tin từ người tiêu dùng. Dây chuyền cung ứng dược
bao gồm nhiều người tham gia bao gồm nhà cung cấp nguyên liệu, nhà sản xuất,
nhà phân phối, cơ quan quản lý, hiệu thuốc, bệnh viện, và bệnh nhân. Đó đó mà
việc truy nguồn gốc các sản phẩm dược thường khó thực hiện được.
Theo Cục Quản lý Dược, Bộ Y Tế hiện nay trên tồn quốc có hơn 41.000 cơ sở
bán lẻ thuốc, trong đó hơn 12700 nhà thuốc tư nhân, 1200 nhà thuốc trong các cơ
sở khám bệnh... để quản lý chất lượng thuốc tại hệ thống các cơ sở bán thuốc. Bộ
Y Tế đang có kế hoạch triển khai ứng dụng công nghệ thông tin, kết nối mạng
đối với các cơ sở bán lẻ thuốc nhằm đảm bảo việc truy xuất nguồn gốc kiểm soát
chất lượng thuốc, nguồn gốc, xuất xứ tránh tình trạng hàng giả, hàng nhái hàng
kém chất lượng.
Tuy nhiên, đại diện Cục Quản lý dược cũng cho biết, việc ứng dụng CNTT, kết
nối mạng đối với các nhà thuốc bước đầu có thể gặp một số khó khăn. Các cơ sở
phải kết nối mạng, nhân sự phải được đào tạo, tập huấn, vì vậy, sẽ phát sinh chi
phí nên sẽ có cơ sở bán thuốc thiếu thiện chí.
1.1.2 Ứng dụng Blockchain trong truy vết nguồn gốc thuốc
Với tình trạng thuốc giả thuốc kém chất lượng hiện nay đang tràn ngập trên thị
trường thì việc áp dụng và triển khai phần mềm hệ thống truy xuất nguồn gốc
cho thuốc là điều vô cùng cần thiết.
Bên cạnh việc truy xuất nguồn gốc thì vấn đề xác thực dữ liệu trong truy xuất
nguồn gốc cũng đặt ra nhiều khó khăn. Cộng nghệ blockchain được ví như một
giải pháp quan trọng trong việc truy xuất nguồn gốc và minh bạch hóa trách
nhiệm các bên liện quan trong ngành dược. Giải pháp truy xuất nguồn khơng chỉ
mang lại lợi ích thiết thực cho người tiệu dùng mà ngay cả nhà sản xuất, phân



phối thực phẩm cũng được hưởng lợi.
Hiện nay trên thị trường tồn tại khá nhiều giải pháp truy xuất nguồn gốc sản
phẩm thông qua QR code. Nhưng tuy nhiên, mã QR code lại chỉ thuần túy dẫn
tới website của doanh nghiệp cung cấp sản phẩm đó. Cách làm như vậy không
mang lại nhiều giá trị về phương diện thông tin.
1.1.3 Dữ liệu và bảo mật:
Những vụ bê bối về dữ liệu và bảo mật hiện nay luôn là điều khiến người dùng
phải quan tâm và lo ngại. Các ông lớn như Facebook, Zoom, Google… lưu trữ
quá nhiều dữ liệu người dùng và mức độ bảo mật không cao, dẫn đến việc họ liên
tục gặp phải những vụ bê bối về mặt pháp lý. Mơ hình lưu trữ tập trung truyền
thống ln có một nhược điểm, dữ liệu ln bị kiểm sốt và chi phối bởi một tổ
chức. Điều này vơ tình lại trở thành một điểm yếu “chết” để các hackers nhắm
tới.
Ngồi ra, vì người dùng gần như hồn tồn khơng có quyền can thiệp vào các dữ
liệu cá nhân của họ, các tổ chức ln có thể sử dụng chúng vào nhiều mục đích
khác nhau để sinh lợi nhuận và phổ biến nhất có thể kể đến là việc mua/bán dữ
liệu. Đây chính là vấn đề khó khăn cho việc truy xuất nguồn gốc dữ liệu.
1.2 Mục tiêu đề tài:
1.2.1 Về lý thuyết:
Tìm hiểu lịch sử hình thành và phát triển của công nghệ chuỗi khối - Blockchain.
Hiểu được kiến trúc và hoạt động cơ bản của nền tảng Blockchain, các cơ chế
đồng thuận trong Blockchain. Khảo sát và phân tích ưu nhược điểm một số nền
tảng điển hình của Blockchain hiện nay trong thực tiễn để chọn lựa nền tảng xây
dựng ứng dụng truy xuất nguồn gốc nông sản.
1.2.2 Về ứng dụng:
Xây dựng và triển khai ứng dụng truy xuất nguồn gốc thuốc dựa trên một nền
tảng Blockchain mã nguồn mở (cụ thể là Hyperledger Fabric và Couhdb ) để đáp
ứng nhu cầu thực tế hiện tại. Hệ thống được phát triển trên nền tảng kết hợp các
công nghệ phát triển ứng dụng web và di động mới nhất, cùng với cơng nghệ
điện tốn đám mây để thiết kế và phát triển hệ thống truy xuất nguồn gốc thuốc

hướng tới việc minh bạch trong nguồn sản phẩm, tạo niềm tin tiêu dùng. Người


tiêu dùng chỉ cần quét mã QR được dán trên sản phẩm là có thể tiếp cận được
thơng tin chi tiết về nguồn gốc, xuất xứ và quá trình vận chuyển, cung cấp, sản
xuất của sản phẩm.
1.2.3 Dữ liệu và bảo mật:
Mơ hình phi tập trung của Parachain hướng đến sự phân quyền của dữ liệu.
Parachain sẽ không lưu bất kì dữ liệu cá nhân nào của người dùng. Thay vào đó,
người dùng sẽ chịu hồn tồn trách nhiệm trong việc bảo vệ cũng như chia sẻ dữ
liệu của mình. Điều mà các các mơ hình lưu trữ dữ liệu truyền thống chưa hề làm
được.
Parachain đồng thời xây dựng lên giao thức tập trung và chia sẻ dữ liệu mới. Với
giao thức này, người dùng có tồn quyền trong việc kiểm sốt và chia sẻ dữ liệu
cá nhân mà khơng bị chi phối bởi bất kì tổ chức nào.
1.3 Mục tiêu và nhiệm vụ nghiên cứu:
• Nghiên cứu, tìm hiểu và đưa ra lý do tại sao phải áp dụng các cơng nghệ
Blockchain, AI vào trong nền tảng.
• Tái thiết lập mơ hình lưu trữ dữ liệu truyền thống và xây dựng thành cơng
giao thức chia sẻ dữ liệu.
• Xác định cụ thể tính ứng dụng, nhu cầu và mức độ khả thi của dự án khi
đưa vào sử dụng.
• Phân tích thiết kế và xây dựng nền tảng.
• Viết đề cương, báo cáo, cài đặt chương trình.
1.4 Phạm vi áp dụng:
Parachain hướng tới sáu nhóm đối tượng chính để giải quyết các vấn đề tất yếu
về truy xuất nguồn gốc và thanh tốn điện tử :
• Khách hàng, Nhà cung cấp, Nhà vận chuyển, Nhà chế tạo, Nhà bán lẻ



CHƯƠNG 2: TỔNG QUAN VỀ BLOCKCHAIN
2.1 Nền tảng công nghệ:
2.1.1 Cơng
Blockchain:

nghệ
Tổng

quan:
Blockchain là gì? Blockchain một sổ cái kỹ thuật số được phân chia hay cơ sở dữ
liệu trong một mạng. Sổ cái này được chia sẻ cho những người tham gia vào
mạng lưới. Điều này cho thấy rằng trong toàn bộ hệ thống khơng phải chỉ có một
vị trí duy nhất, một tài liệu có thể làm căn cứ đáng tin (authority) duy nhất, vì
những lần sao chép cùng một phiên bản sổ cái được đặt ở nhiều nơi.
Tất cả các bản sao này được cập nhật khi dữ liệu hoặc giao dịch mới được ghi
vào blockchain thông qua sự đồng thuận của tất cả mọi người tham gia. Người
đào có trách nhiệm phê duyệt các giao dịch và giám sát mạng bằng cách giải
quyết các công thức tinh vi với sự trợ giúp của máy tính. Nó là một hệ thống
ngang hàng P2P, loại bỏ tất cả mọi khâu trung gian, làm tăng cường an ninh,
minh bạch và sự ổn định cũng như giảm thiểu chi phí và lỗi do con người gây ra.
Bằng cách cho phép phân phối các thông tin kỹ thuật số nhưng không được sao
chép, công nghệ blockchain đã tạo ra xương sống cho một loại hình Internet mới.
Trong cuốn sách Blockchain Revolution (2016), Don & Alex Tapscott đã nhận
định rằng: “Blockchain là một sổ cái kỹ thuật số không thể bị phá hỏng của các
giao dịch kinh tế, có thể được lập trình để ghi lại khơng chỉ những giao dịch tài
chính mà có thể ghi lại tất cả mọi thứ có giá trị”.
Cơng nghệ Blockchain là sự kết hợp giữa 3 loại công nghệ:
Ÿ

Mật mã học: Sử dụng public key và hàm hash function để đảm bảo tính minh

bạch, tồn vẹn và riêng tư.

Ÿ

Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là
server để lưu trữ bản sao ứng dụng.

Ÿ

Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật
chơi đồng thuận (PoW, PoS…) và được thúc đẩy bởi động lực kinh tế.
Tiếp cận:


“Blockchain at its core is a peer-to-peer distributed ledger that is
cryptographically secure, append only, immutable and updatable only via
consensus or agreement among peers” (Imran Bashir, 2017, tr.54).
Có nhiều cách để định nghĩa về công nghệ Blockchain. Về cơ bản, Blockchain
thực chất là một hệ thống cơ sở dữ liệu phân tán, lưu trữ trong đó là thơng tin của
các giao dịch. Cấu trúc dữ liệu của Blockchain đơn thuần là Linked List và các
khối được liên kết với nhau bằng mã hóa.

Hình 2. 1 Mơ hình cơ chế hoạt động của cơng nghệ chuỗi khối Blockchain

Thành phần:
Private and Public key
pair:
• Private key: Là một chuỗi ngẫu nhiên chứa các kí tự và chữ số, được dùng
để xác minh danh tính và giải mã dữ liệu trong các giao dịch.
• Public key: Được tạo ra từ Private key và đồng thời là địa chỉ công khai

của người sở hữu. Được người gửi sử dụng để mã hóa dữ liệu trước khi
gửi giao dịch đến chủ sở hữu.
• Q trình mã hóa và giải mã gồm 2 bước như sau:
1. Người gửi sử dụng Public key của người nhận để mã hóa dữ liệu và
gửi đi.
2. Người nhận sử dụng Private key của mình để tiến hành giải mã dữ liệu
đính kèm. Chỉ khi cặp Private và Public key so khớp được với nhau thì


người nhận mới có thể truy cập vào dữ liệu bên trong, nhờ vậy mà dữ
liệu trở nên an toàn và không thể bị xâm nhập. Đây đồng thời cũng là
lý do người dùng phải hết sức lưu ý trong việc bảo vệ Private key để
tránh khả năng bị lộ thông tin hay mất mát tài sản.
Peer-to-peer network: Mạng ngang hàng - các node tham gia vào mạng lưới đều
đóng vai trò là một điểm truy cập và là một máy chủ lưu trữ và chia sẽ dữ liệu
với nhau.
Transaction: Giao dịch được xem là một thành phần cơ bản của Blockchain và
được dùng để ghi nhận số tiền chuyển giao giữa hai địa chỉ trong mạng lưới.
Ngoài ra, trên nền tảng Blockchain Ethereum, các giao dịch cịn đóng vai trò
quan trọng trong việc thực thi các câu lệnh trong Smart Contract.
• Quy trình:
1. Người gửi tiến hành xác nhận thực hiện giao dịch bằng ví điện tử mà
họ đang sử dụng.
2. Ví điện tử sau đó sử dụng Private key của người gửi để “kí nhận“ giao
dịch và đẩy giao dịch vào mạng lưới.
3. Các mining nodes (thợ đào) sẽ tập hợp tất cả các giao dịch vào một
khối block để tiến hành đào.
4. Khối block chứa các giao dịch sẽ được đưa vào Blockchain sau khi thợ
đào đã giải thành cơng thuật tốn đồng thuận.
5. Các nodes trong mạng tiếp tục xác thực lại dữ liệu trong các giao dịch.

6. Cuối cùng, số tiền chuyển giao cũng như thơng tin giao dịch sẽ được
xuất hiện trong ví điện tử của người nhận.
• Các thành phần chính:
1. Input: Chứa thơng tin của các giao dịch trước đó, trong đó quan trọng
nhất là Unspent Transaction Output (UTXO) –số dư trong ví của chủ
sở hữu ở các giao dịch trước.
2. Output: Gồm 2 phần, phần đầu chứa thông tin về số dư sau giao dịch
và phần thứ hai là locking script chứa các điều kiện cần đáp ứng để sử
dụng số dư đó trong các giao dịch tiếp theo. Cấu trúc hoạt động của
locking-unlocking script về cơ bản có nét tương đồng với cặp PrivatePublic key.


Node: Một nút có rất nhiều vai quan trọng đối với hệ thống Blockchain, có thể
coi là thành tố nền tảng cho phép Blockchain hoạt động và tổn tại. Một nút có thể
là bất kì một thiết bị điện tử nào, miễn là chúng có thể kết nối vào mạng lưới.
Mỗi nút sẽ lưu trữ một bản ghi chép về các giao dịch và có quyền ngang hàng
nhau trong việc xác thực và xử lý các giao dịch. Ngoài ra, một số nút cịn đóng
vai trị là mining node (thợ đào), có vai trị xử lý các bài tốn đồng thuận giúp
các giao dịch hợp lệ được lưu vào hệ thống.
Smart Contract: Là những đoạn chương trình được lập trình sẵn dưới dạng mã
máy và chạy trên Blockchain. Hiện nay, Smart Contract đóng vai trị quan trọng
trong việc phát triển các Decentralized Application (Dapp) vì sự tiện dụng, dễ
dàng kiểm sốt và đặc biệt là có thể lập trình được. Các điều khoản (function)
được thiết lập trên Smart Contract sẽ được tự động thực thi ngay khi người dùng
thỏa mãn được các yêu cầu đề ra mà không cần vai trò trung gian của bên thứ ba.
Điều này giúp giảm thiểu tối đa sự gian lận và xây dựng được lịng tin giữa các
bên với nhau.
Mơi trường và cơng cụ:
Hyperledger Fabric: Đây là một trong những nền tảng Blockchain phát triển gần
đây nhất và được biết đến như là cuốn siêu sổ cái vào năm 2016, do Linux

Foundation tạo ra. Mục tiêu của nó là đẩy nhanh sử dụng cơng nghệ Blockchain
trong các ngành công nghiệp khác nhau như tài chính ngân hàng, IoT, chuỗi cung
ứng…


đồ
của

Hình 2. 2 Sơ
mơ tả quy
trình lưu trữ
Hyperledger
Fabric

Mơi

trường cài đặt – Nodejs: Nodejs cung cấp các thư viện và công cụ trong việc
phát triển các sản phẩm về Blockchain.
Trích Nodejs.org:
“Node.js là một JavaScript runtime được build dựa trên engine JavaScript V8
của Chrome. Node.js sử dụng kiến trúc hướng sự kiện event-driven, mơ hình nonblocking I/O làm cho nó nhẹ và hiệu quả hơn. Hệ thống nén của Node.js, npm, là
hệ thống thư viện nguồn mở lớn nhất thế giới.”
Docker: Docker là một nền tảng để cung cấp cách để building, deploying và
running ứng dụng dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng
ảo hóa). Ban đầu viết bằng Python, hiện tại đã chuyển sang Golang, giúp cho
việc kiểm thử và triển khai Smart Contract một cách dễ dàng, đơn giản và nhanh
chóng hơn.


Frontend Library – Nuxtjs: Là một framework, Nuxt.js có rất nhiều tính năng

giúp bạn phát triển giữa phía client và server như Dữ liệu bất đồng bộ
(Asynchronous Data), Middleware, Layouts, v.v. . Nuxtjs giúp cho việc phát triển
ứng dụng trở nên nhanh chóng hơn bao giờ hết. Đây có thể coi là một nền tảng
tuyệt vời để phát triển ứng dụng.
Quy trình tổng qt:

Hình 2. 2 Sơ đồ mơ tả quy trình truy xuất dữ liệu giữa Client và Blockchain sever

2.1.2 Cơng

nghệ

phía

Backend: Cơ sở dữ
liệu Mongodb:
Mongodb là một cơ sở dữ liệu mã nguồn mở và thuộc kiểu cơ sở dữ liệu phi quan
hệ (NoSQL). Dữ liệu trong Mongodb được lưu dưới dạng JSON, đây là kiểu dữ
liệu key-value, cho hiệu suất nhanh nhóng, tính khả dụng cao và khả năng mở
rộng dễ dàng. Đối với các ứng dụng cần tương tác nhiều với thời gian thực (Real
time Application) - những ứng dụng cần truy xuất và cập nhật dữ liệu liên tục, thì
Mongodb là một trong những lựa chọn hàng đầu của các nhà phát triển ứng dụng.
Do đó, đối với Jobchain, một nền tảng học trực tuyến (Real time data streaming)
thì Mongodb là cơ sở dữ liệu phù hợp nhất để lưu trữ dữ liệu.


Resful API:
Resful API là một tiêu chuẩn phổ biến nhất hiện nay được dùng trong việc thiết
kế API cho các ứng dụng website và mobile. Chức năng chính của Resful API là
quy định cách sử dụng các HTTP methods như GET, POST, PUT, DELETE. Cụ

thể:
• GET (SELECT): Trả về dữ liệu.
• POST (CREATE): Thêm mới dữ liệu.
• PUT (UPDATE): Cập nhật dữ liệu.
• DELETE (DELETE): Xố dữ liệu.
Kiểu dữ liệu trả về có thể thuộc dạng JSON hoặc XML, tùy thuộc vào mục đích
và đặc trưng của từng dự án.
ExpressJs:
ExpressJs là một framework được xây dựng trên nền tảng Nodejs, cung cấp nhiều
tính năng mạnh mẽ trong việc xây dựng API cho các ứng dụng website và
mobile. Jobchain sẽ sử dụng ngơn ngữ lập trình Javascript kết hợp với Javascript
runtime là Nodejs và framework ExpressJs để xây dựng Restful API cho ứng
dụng.

Hình
2. 3
Sơ đồ
mơ tả
quy
trình
truy
xuất
dữ liệu giữa Client và Mongodb sever.

2.2 Kiến trúc blockchain:
2.2.1 Quy tắc sổ cái:


Mỗi nút của blockchain là một bản sao của sổ kế toán. Bỏi vậy, mỗi nút đều cập
nhật số dư tài khoản của bạn là bao nhiêu. Hệ thống blockchain sẽ ghi lại mỗi

giao dịch được yêu cầu nhưng không theo dõi số dư tài khoản của bạn.
Bạn cần xác thực và xác nhận tất cả các giao dịch đã diễn ra trên mạng lưới mà
có liên quan tới ví điện tử của bạn để có thể biết được số dư trong ví.
Việc xác minh “số dư” này được thực hiện nhờ các tính tốn dựa vào liên kết đến
các giao dịch trước đó. Nhìn vào hình trên, để gửi 10btc cho John, Mary cần tạo
yêu cầu giao dịch bao gồm các liên kết đến các giao dịch đã diễn ra trước đó với
tổng số dư bằng hoặc vượt quá 10 btc.
Các liên kết này được xem như là giá trị đầu vào, các nút trong mạng lưới sẽ xác
minh xem tổng số tiền của các giao dịch này bằng hoặc vượt quá 10 btc không.
Tất cả điều này được thực hiện tự động trong ví điện tử của Mary và được kiểm
tra bởi các nút trên mạng lưới Bitcoin, Mary chỉ gửi một giao dịch 10 bitcoin tới
ví của John bằng khóa cơng khai của John.

Hình 2. 4 Mơ hình minh họa sổ cái
Vậy, làm thế nào hệ thống có thể tin tưởng các giao dịch đầu vào này và xác thực
tính hợp lệ của chúng?
Thực tế là các nút sẽ kiểm tra tất cả các giao dịch có liên quan đến ví tiền điện tử
bạn sử dụng trước đó để gửi Bitcoin (BTC) thơng qua việc tham chiếu các lịch sử
giao dịch. Có một bản ghi sẽ lưu trữ số BTC chưa được dùng và được các nút
mạng lưu giữ giúp đơn giản hóa và tăng tốc quá trình xác minh. Vì thế, các ví
tiền điện tử tránh được tình trạng chi tiêu đúp giao dịch.


Mã nguồn trên mạng lưới Bitcoin là nguồn mở, có nghĩa là bất kỳ ai có máy tính
kết nối được internet đều có thể tham gia vào mạng lưới và thực hiện giao dịch.
Tuy nhiên, nếu có bất kỳ một lỗi nào trong mã nguồn được sử dụng để phát thơng
báo u cầu giao dịch thì các Bitcoin liên quan sẽ bị mất vĩnh viễn.
Hãy nhớ rằng, sẽ khơng có bộ phận hỗ trợ khách hàng hoặc khơng hề có bất cứ ai
có thể giúp bạn khơi phục lại một giao dịch bị mất hoặc quên mật khẩu ví tiền
điện tử của bạn vì đây là mạng phân tán. Vì thế, bạn cần phải lưu trữ mật khẩu

hoặc khóa riêng tư của ví của bạn cực kỳ cẩn thận và an toàn.
2.2.2 Nguyên lý tạo khối:
Các giao dịch được gửi lên mạng lưới blockchain sẽ được nhóm vào các khối và
các giao dịch trong cùng 1 khối (block). Mỗi nút có thể nhóm các giao dịch với
nhau thành một khối và gửi nó vào mạng lưới như một hàm ý cho các khối tiếp
theo được gắn vào sau đó.
Bất kỳ nút nào cũng có thể tạo ra một khối mới. Vậy, câu hỏi đặt ra là: hệ thống
sẽ đồng thuận với khối nào? khối nào sẽ là khối tiếp theo?
Để được thêm vào blockchain, mỗi khối phải chứa một đoạn mã đóng vai trị như
một đáp án cho một vấn đề toán học phức tạp được tạo ra bằng hàm mã hóa băm
khơng thể đảo ngược.
Cách duy nhất để giải quyết vấn đề toán học như vậy là đoán các số ngẫu nhiên,
những số khi mà kết hợp với nội dung khối trước tạo ra một kết quả đã được hệ
thống định nghĩa. Điều này nhiều khi có thể mất khoảng một năm cho một máy
tính điển hình với một cấu hình cơ bản có thể đốn đúng các con số đáp án của
vấn đề toán học này.
Mạng lưới quy định mỗi khối được tạo ra sau một quãng thời gian là 10 phút một
lần, bởi vì trong mạng lưới ln có một số lượng lớn các máy tính đều tập trung
vào việc đoán ra dãy số này. Nút nào giải quyết được vấn đề toán học như vậy sẽ
được quyền gắn khối tiếp theo lên trên chuỗi và gửi nó tới tồn bộ mạng lưới.


Hình 2. 5 Mơ hình minh họa Ngun lý tạo khối.

Vậy điều gì sẽ xảy ra nếu hai nút giải quyết cùng một vấn đề cùng một lúc và
truyền các khối kết quả của chúng đồng thời lên mạng lưới? Trong trường hợp
này, cả hai khối được gửi lên mạng lưới và mỗi nút sẽ xây dựng các khối kế tiếp
trên khối mà nó nhận được trước tiên.
Mỗi nút phải xây dựng trên chuỗi khối dài nhất mà nó nhận được (đây là yêu cầu
của hệ thống Blockchain). Vì vậy, nếu có sự mơ hồ về việc block nào là khối cuối

cùng thì ngay sau khi khối tiếp theo được giải quyết thì mỗi nút sẽ áp dụng vào
chuỗi dài nhất.
Do xác suất việc xây dựng các block đồng thời là rất thấp nên hầu như khơng có
trường hợp nhiều khối được giải quyết cùng một lúc và nhiều lần tạo ra các khối
nối đi khác nhau. Do đó, tồn bộ chuỗi-khối sẽ nhanh chóng ổn định và hợp
nhất lại khi mà mọi nút đều đồng thuận.
2.2.3 Thuật toán bảo mật Blockchain:
2.2.3.1 Cơ sở lý thuyết
Băm là quá trình chuyển đổi đầu vào gồm các chữ cái và ký tự có kích thước
khơng cố định để tạo đầu ra có kích thước cố định. Q trình này được thực hiện
bằng cách sử dụng các cơng thức tốn học như các hàm băm (được thực hiện
dưới dạng các thuật toán băm).
Hàm băm (hash function) là giải thuật nhằm sinh ra các giá trị băm tương ứng
với mỗi khối dữ liệu (có thể là một chuỗi ký tự, một đối tượng trong lập trình
hướng đối tượng, v.v…). Giá trị băm đóng vai gần như một khóa để phân biệt các
khối dữ liệu, tuy nhiên, người ta chấp hiện tượng trùng khóa hay còn gọi là đụng
độ và cố gắng cải thiện giải thuật để giảm thiểu sự đụng độ đó. Hàm băm thường
được dùng trong bảng băm nhằm giảm chi phí tính tốn khi tìm một khối dữ liệu


trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh hơn việc so sánh
những khối dữ liệu có kích thước lớn).
Vì tính thơng dụng của bảng băm, ngày nay, đa số ngơn ngữ lập trình đều cung
cấp thư viện ứng dụng bảng băm, thường gọi là thư viện collection trong đó có
các vấn đề như: tập hợp (collection), danh sách (list), bảng(table), ánh xạ
(mapping), từ điển (dictionary). Thơng thường, các lập trình viên chỉ cần viết
hàm băm cho các đối tượng nhằm tích hợp với thư viện bảng băm đã được xây
dựng sẵn.
Điều kiện của 1 hàm băm tốt:
Ÿ


Tính tốn nhanh.

Ÿ

Các khố được phân bố đều trong bảng.

Ÿ

Ít xảy ra đụng độ.

Ÿ

Xử lý được các loại khóa có kiểu dữ liệu khác nhau.

2.2.3.2 Cách hoạt động của Hash:
Các hàm băm khác nhau sẽ tạo ra các kết quả đầu ra có kích thước khác nhau,
nhưng kích thước của các kết quả đầu ra có thể nhận được ln cố định, khơng
đổi. Ví dụ, thuật tốn SHA-256 chỉ có thể tạo ra các kết quả đầu ra có kích thước
256 bit, trong khi thuật tốn SHA-1 sẽ ln tạo ra một kết quả đại diện có kích
thước 160-bit.
Để minh họa, hãy chạy các từ “Parachain” và “parachain” qua thuật toán băm
SHA-256 (thuật toán được sử dụng trong Bitcoin).
SHA-256
Đầu vào

Đầu vào (256 bit)

Bảng 2.1
Ví dụ về

hàm băm

Parachain

9d3af39a4845a7af7821732766c45e8ec078e4b093c94629c01769a
23c85720d

parachain

fc37d1c956bc0d76577310b20097dca9b65416d8e942963c026f24
baf82d588b

SHA-256

Có thể thấy một thay đổi nhỏ (viết hoa chữ cái đầu tiên) dẫn đến một giá trị băm
hoàn toàn khác. Tuy nhiên, do chúng ta đang sử dụng SHA-256, các kết quả đầu
ra ln có kích thước cố định là 256-bit (hoặc 64 ký tự) – cho dù kích thước dữ
liệu đầu vào là bao nhiêu. Hai kết quả đầu ra này vẫn giữ nguyên cho dù chúng ta


chạy hai từ này qua thuật toán này bao nhiêu lần.
Ngược lại, khi chúng ta chạy các dữ liệu đầu vào này qua thuật toán băm SHA-1,
chúng ta sẽ thu được các kết quả sau:
SHA-1
Đầu vào

Đầu ra (160 bit)

Parachain


1384d94925b869a84b0b41f10f02874e24de425e

parachain

d2e4c03244f18917247c9d67bea473eb1f1633bb

Bảng 2.2
Ví dụ về
hàm băm
SHA-1

SHA là từ viết tắt của Secure Hash Algorithms (Thuật toán Băm Bảo mật). Đây
là một tập hợp các hàm băm mật mã hóa, bao gồm các hàm băm SHA-0, SHA-1
và các nhóm hàm băm SHA-2 và SHA-3. SHA-256, cùng với SHA-512 và các
hàm băm khác, thuộc về nhóm hàm băm SHA-2. Hiện nay, chỉ các nhóm SHA-2
và SHA-3 được xem là các nhóm hàm băm bảo mật.
2.2.3.3 Đặc trưng của hàm băm
Với mỗi đầu vào ngẫu nhiên, hash tạo ra một giá trị băm tương ứng
Giá trị băm không thể dịch ngược lại giá trị ban đầu
Đầu vào khác nhau sẽ cho ra giá trị băm khác nhau.
2.2.3.4 Tầm quan trọng của hàm băm
Các hàm băm truyền thống có nhiều trường hợp sử dụng, bao gồm tra cứu cơ sở dữ
liệu, phân tích tệp lớn và quản lý dữ liệu. Mặt khác, các hàm băm mật mã còn được sử dụng
rộng rãi trong các ứng dụng bảo mật thông tin, chẳng hạn như xác thực thông điệp và dấu
vân tay kỹ thuật số. Khi được sử dụng trong Bitcoin, các hàm băm mật mã là một phần thiết
yếu của q trình đào và cũng góp phần tạo ra các địa chỉ và khóa mới.


Hình 2. 6. Minh họa hàm băm
Băm thật sự là một công cụ mạnh mẽ khi cần xử lý một lượng thơng tin lớn. Ví dụ,

chúng ta có thể chạy một tệp hoặc tập dữ liệu lớn thông qua hàm băm và sau đó sử dụng kết
quả đầu ra từ của nó để nhanh chóng xác minh tính chính xác và tính tồn vẹn của dữ liệu.
Điều này là có thể bởi vì tính chất tất định của các hàm băm: đầu vào sẽ luôn dẫn đến một
đầu ra ngắn gọn, đơn giản hóa (băm). Nhờ vào kỹ thuật này, sẽ khơng cịn phải lưu trữ và
“ghi nhớ” một lượng thơng tin lớn nữa.
Băm là quy trình đặc biệt hữu ích trong cơng nghệ blockchain. Blockchain Bitcoin có
một số hoạt động sử dụng quy trình băm, hầu hết các hoạt động đó là trong q trình đào.
Trên thực tế, gần như tất cả các giao thức tiền mã hóa đều dựa vào băm để liên kết và rút
gọn các nhóm giao dịch thành các khối và cũng để tạo ra các liên kết mật mã giữa mỗi khối,
tạo ra một blockchain một cách hiệu quả.
2.2.4 Đặc điểm chính / Lợi ích của Blockchain
Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý thuyết thì
chỉ có máy tính lượng tử mới có thể giải mã Blockchain và cơng nghệ Blockchain biến mất
khi khơng cịn Internet trên tồn cầu
Bất biến: dữ liệu trong Blockchain khơng thể sửa (có thể sửa nhưng sẽ để lại dấu vết)
và sẽ lưu trữ mãi mãi.
Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt đối.
Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ
khác và có thể thống kê tồn bộ lịch sử trên địa chỉ đó.
Smart contract Blockchain: Tên gọi khác là Hợp đồng thông minh là hợp đồng kỹ


thuật số được nhúng vào đoạn code if-this-then-that (IFTTT), cho phép chúng tự thực thi
mà không cần bên thứ ba.
2.2.5 Ưu điểm , nhược điểm của Blockchain
Ÿ

Ưu điểm:

Phân tán: Vì dữ liệu được lưu trữ trên tất cả cá node của mạng nên hệ thốn và dữ liệu

có khả năng chống lại các lỗi kỹ thuật và cuộc tấn công độc hại.
Tính ổn định: Một dữ liệu được ghi vào Blockchain thì rất khó loại bỏ hoặc thay đổi.
Nhờ vậy, nó trở thành một cơng nghệ tuyệt vời để lưu trữ hồ sơ hoặc bất kỳ dữ liệu nào cần
theo dõi kiểm tốn.
Hệ thống khơng cần sự tin tưởng: Các giao dịch truyền thống không chỉ phụ thuộc
vào hai bên liên quan mà còn phụ thuộc vào một trung gian. Với cơng nghệ blockchain,
điều này khơng cịn cần thiết vì mạng lưới các nút phân tán thực hiện xác minh các giao
dịch thơng qua một quy trình được gọi là đào. Vì lý do này, Blockchain thường được gọi là
hệ thống ‘khơng cần sự tin tưởng. Do đó, một hệ thống blockchain sẽ loại bỏ được rủi ro từ
việc tin tưởng vào một tổ chức duy nhất và cũng giảm các chi phí chung và phí giao dịch
bằng cách cắt giảm các bên trung gian và bên thứ ba.
Ÿ

Nhược điểm:

Tấn cơng 51%: Một cuộc tấn cơng 51% có thể xảy ra nếu có 1 đơn vị kiểm sốt hơn
50% sức mạnh băm của mạng lưới. Điều này sẽ cho phép đơn vị này phá vỡ mạng lưới bằng
cách ngăn chặn, sửa đổi việc đặt các giao dịch.
Sửa đổi dữ liệu: Đây vừa là ưu điểm cũng vừa là nhược điểm của Blockchain bởi
mọt khi dữ liệu đã được ghi vào Blockchain thì việc sửa đổi là rất khó.
Chìa khóa cá nhân: Blockchain cung cấp cho người dùng mật mã Pubic key để quản
lý tài sản điện tử hoặc dữ liệu của mình. Bạn sẽ có 1 Public key (có thể chia sẻ) và 1 Private
key (khóa bí mật). Nếu bạn bị mất Private key tiền của bạn sẽ bị mất.
Không hiệu quả: Các blockchain, đặc biệt là những loại đang sử dụng Proof of Work,
là rất kém hiệu quả. Lý do là vì đào có tính cạnh tranh cao và cứ sau mười phút lại có một
người chiến thắng nên công sức của các thợ mỏ khác sẽ bị lãng phí. Khi các thợ mỏ liên tục
cố gắng tăng sức mạnh tính tốn, họ sẽ có cơ hội tìm được lời giải hợp lệ cao hơn. Do đó
các tài nguyên được sử dụng bởi mạng lưới Bitcoin đã tăng đáng kể trong vài năm qua, và
hiện tại lượng điện tiêu thụ dành cho bitcoin đã vượt qua nhiều quốc gia.
Lưu trữ: Các sổ cái Blockchain có thể phát triển rất lớn theo thời gian. Blockchain



Bitcoin hiện cần khoảng 200 GB dung lượng lưu trữ. Tốc độ tăng kích thước hiện tại của
blockchain có vẻ như vượt xa tốc độ tăng dung lượng lưu trữ của các ổ đĩa cứng. Mạng lưới
có nguy cơ mất các node nếu kích thước của sổ cái là quá lớn để các cá nhân tải xuống và
lưu trữ.
2.2.6 Phân loại Blockchain
Mạng Blockchain có thể phân loại dựa trên mơ hình quyền hạn của nó mà xác định ai
có thể duy trì chúng (chẳng hạn xuất bản các khối). Nếu bất kỳ ai có thể xuất bản một khối
mới, gọi là Blockchain mở. Nếu chỉ có những người dùng cụ thể xuất bản các khối, gọi là
Blockchain đóng. Hiểu đơn giản, một mạng Blockchain đóng giống như một mạng Intranet
của tổ chức, trong khi đó Blockchain mở lại giống như mạng Internet công cộng vậy.
2.2.6.1 Public Blockchain
Đúng như tên gọi, bất kì ai cũng có thể tham gia vào mạng lưới. Hệ thống khơng bị
kiểm sốt bởi một tổ chức hay cá nhân nào, mà thay vào đó, tự mỗi cá nhân sẽ giữ một bản
ghi chép về các giao dịch trên hệ thống và có quyền như nhau trong việc sử dụng giao thức
đồng thuận để xác minh tính trung trực của giao dịch. Càng nhiều người tham gia vào mạng
lưới thì Blockchain càng trở nên phi tập trung và phân tán. Bitcoin và Ethereum là hai nền
tảng được xây dựng dựa trên loại Blockchain này.
Bởi vì bất kỳ ai đều có quyền xuất bản các khối, nên kết quả là bất kỳ ai cũng có thể đọc
Blockchain cũng như là phát hành các giao dịch trên Blockchain (các giao dịch nằm trong
các khối được xuất bản). Người dùng có ý đồ xấu có thể xuất bản các khối nhằm đánh sập
hệ thống. Để ngăn chặn điều này, mạng Blockchain mở thường triển khai các thỏa thuận đa
bên hay còn gọi là hệ thống “đồng thuận”, yêu cầu người dùng chi tiêu hoặc duy trì tài
nguyên khi muốn xuất bản các khối. Đồng thời, hệ thống “đồng thuận” thường thúc đẩy các
hành vi đúng đắn thông qua việc trao thưởng cho các nhà xuất bản các khối tuân thủ giao
thức với loại tiền điện tử tương ứng.
2.2.6.2 Private Blockchain
Đặc tính của Private Blockchain là sự riêng tư và mang tính nội bộ. Chủ yếu dành cho một
nhóm tổ chức hay các cơng ty, tập đồn muốn cùng nhau dựng một mạng lưới nhằm thực

hiện một nghiệp vụ nhất định mà khơng muốn các bên khơng liên quan có quyền can thiệp
vào.
Mạng Blockchain đóng và Blockchain mở có thể giống nhau ở các đặc điểm: khả năng truy
xuất tài sản kỹ thuật số trên Blockchain; hệ thống phân tán; phục hồi và lưu trữ dữ liệu dự


×