Tải bản đầy đủ (.pdf) (57 trang)

Ứng dụng công nghệ blockchain vào quản lý bằng của Trường Đại học Lạc Hồng

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 (2.21 MB, 57 trang )

TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA CÔNG NGHỆ THÔNG TIN

-----
----












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

ỨNG DỤNG CÔNG NGHỆ BLOCKCHAIN
VÀO QUẢN LÝ BẰNG CỦA TRƯỜNG ĐẠI
HỌC LẠC HỒNG

TRẦN DIỆP KHÁNH TRÌNH

BIÊN HÒA, THÁNG 11/2018


TRƯỜNG ĐẠI HỌC LẠC HỒNG


KHOA CÔNG NGHỆ THÔNG TIN
----- -----

BÁO CÁO
NGHIÊN CỨU KHOA HỌC




ĐỀ TÀI:

 NGHỆ BLOCKCHAIN
ỨNG DỤNG CÔNG

VÀO QUẢN LÝ BẰNG
CỦA TRƯỜNG ĐẠI

HỌC LẠC
HỒNG






Sinh viên thực hiện: Trần Diệp Khánh Trình
Giáo viên hướng dẫn: ThS. Phan Thị Hường

BIÊN HÒA, THÁNG 11/2017



I

LỜI CẢM ƠN
Không có sự thành công nào mà không gắn liền với những sự giúp đỡ và hỗ trợ dù
ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời gian từ khi bắt đầu
học tập ở trường cho đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý
thầy cô, gia đình và bạn bè.
Lời đầu tiên em xin chân thành cảm ơn đến cô ThS. Phan Thị Hường là giáo viên
trực tiếp hướng dẫn đã nhiệt tình giúp đỡ, hướng dẫn và đóng góp ý kiến để bài báo cáo
của em được hoàn thành một cách tốt nhất.
Em cũng xin gửi lời cảm ơn đến quý thầy cô ở Khoa Công Nghệ Thông Tin – Trường
Đại Học Lạc Hồng đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức
quý báu cho em trong suốt thời gian học tập tại trường.
Và đặc biệt, xin gửi lời cảm ơn sâu sắc nhất đến ba mẹ, người đã sinh thành và nuôi
dưỡng con nên người, luôn tạo điều kiện, ủng hộ, động viên con mỗi khi thất bại, chán nản.
Vì đây là lần đầu tiên tìm hiểu một lĩnh vực còn khá mới mẻ, nên mặc dù em đã bỏ
rất nhiều thời gian, công sức, tâm huyết vào đó nhưng chắc chắn không tránh khỏi những
hạn chế và sai sót. Hy vọng những vấn đề còn hạn chế trong đề tài sẽ nhận được những ý
kiến đóng góp và hướng dẫn của quý thầy cô để đề tài của em được hoàn thiện hơn.
Sau cùng, em xin kính chúc quý thầy cô trong Khoa Công nghệ thông tin thật dồi
dào sức khỏe để tiếp tục sứ mệnh cao đẹp là truyền đạt những tri thức quý báu cho thế hệ
mai sau.
Em xin chân thành cảm ơn.
Biên Hòa, tháng 11 năm 2018
Sinh viên thực hiện

Trần Diệp Khánh Trình



II

MỤC LỤC
LỜI CẢM ƠN .............................................................................................................. I
MỤC LỤC ................................................................................................................... II
DANH MỤC BẢNG .................................................................................................. V
DANH MỤC HÌNH .................................................................................................. VI
DANH MỤC CÁC TỪ VIẾT TẮT ......................................................................... VII
PHẦN MỞ ĐẦU ......................................................................................................... 1
1.1. Lý do chọn đề tài ................................................................................................ 1
1.2. Tình hình nghiên cứu .......................................................................................... 1


Ngoài nước ............................................................................................... 1



Trong nước ............................................................................................... 2

1.3. Mục tiêu nghiên cứu ........................................................................................... 2
1.4. Đối tượng và phạm vi nghiên cứu ...................................................................... 2


Đối tượng nghiên cứu ............................................................................... 2



Phạm vi nghiên cứu .................................................................................. 2

1.5. Phương pháp nghiên cứu .................................................................................... 2

1.6. Những đóng góp mới và những vấn đề chưa thực hiện được của đề tài ............ 3
1.6.1. Những đóng góp mới ................................................................................ 3
1.6.2. Những vấn đề chưa thực hiện được .......................................................... 3
1.7. Kết cấu của luận văn ........................................................................................... 3
Chương 1: Tổng quan lý thuyết .................................................................................. 4
1.1. Tổng quan về công nghệ blockchain .................................................................. 4
1.1.1. Giới thiệu về blockchain ........................................................................... 4
1.1.2. Đặc điểm ................................................................................................... 4
1.1.3. Nguyên lý hoạt động ................................................................................. 4
1.1.4. Phân loại ................................................................................................... 5
1.2. Tổng quan về Ethereum...................................................................................... 5
1.2.1. Giới thiệu về Ethereum ............................................................................. 5
1.2.2. Kiến trúc ................................................................................................... 5
1.2.3. Ứng dụng .................................................................................................. 6
1.3. Tổng quan về smart contract .............................................................................. 6
1.3.1. Giới thiệu về smart contract...................................................................... 6
1.3.2. Nguyên lý hoạt động ................................................................................. 6
1.3.3. Các thành phần của smart contract ........................................................... 7
1.3.4. Lợi ích của smart contract ........................................................................ 7
1.4. Các ứng dụng phi tập trung ................................................................................ 7


III
1.4.1. Giới thiệu ứng dụng phi tập trung ............................................................ 7
1.4.2. Làm sao để xây dựng một DApp? ............................................................ 8
1.5. Một số phần mềm, thư viện và framework được sử dụng trong đề tài .............. 8
1.5.1. Geth ........................................................................................................... 8
1.5.2. Remix ........................................................................................................ 8
1.5.3. Nodejs ....................................................................................................... 8
1.5.4. Truffle ....................................................................................................... 9

1.5.5. Lite-server ................................................................................................. 9
1.5.6. Web3.js ..................................................................................................... 9
1.5.7. Bootstrap ................................................................................................... 9
1.5.8. Metamask .................................................................................................. 9
1.6. Tiểu kết ............................................................................................................... 9
Chương 2: Hệ thống blockchain ............................................................................... 10
2.1. Cài đặt phần mềm geth ..................................................................................... 10
2.1.1. Cài đặt phiên bản dành cho tất cả bản phân phối của linux.................... 10
2.1.2. Cài đặt bằng package management (apt) của Ubuntu ............................ 11
2.1.3. Chạy thử geth .......................................................................................... 11
2.2. Thiết lập genesis block ..................................................................................... 12
2.3. Cài đặt và thiết lập cho miner ........................................................................... 13
2.3.1. Khởi tạo miner từ genesis block ............................................................. 13
2.3.2. Tạo tài khoản người dùng ....................................................................... 14
2.3.3. Tạo file thực thi miner ............................................................................ 15
2.3.4. Thử thực hiện giao dịch .......................................................................... 17
2.4. Kết nối và đồng bộ các miner với nhau ............................................................ 18
2.5. Tiểu kết ............................................................................................................. 20
Chương 3: Xây dựng và triển khai smart contract lên hệ thống blockchain............. 21
3.1. Cài đặt framework truffle ................................................................................. 21
3.2. Tạo smart contract ............................................................................................ 21
3.2.1. Sơ đồ hoạt động của smart contract ........................................................ 21
3.2.2. Khai báo và lập trình các chức năng cho đối tượng người dùng ............ 24
3.2.3. Khai báo và lập trình các chức năng cho đối tượng sinh viên ................ 26
3.2.4. Khai báo và lập trình các chức năng cho đối tượng bằng cấp ................ 29
3.3. Triển khai smart contract .................................................................................. 32
3.3.1. Thiết lập truffle ....................................................................................... 32
3.3.2. Triển khai smart contract ........................................................................ 33
3.3.3. Chạy thử smart contract .......................................................................... 34
3.4. Tiểu kết ............................................................................................................. 35



IV
Chương 4: Xây dựng DApp quản lý bằng đại học .................................................... 36
4.1. Khảo sát quy trình cấp phát bằng ..................................................................... 36
4.2. Tạo giao diện website ....................................................................................... 36
4.3. Kết nối website với hệ thống blockchain ......................................................... 38
4.4. Sử dụng metamask trình duyệt hỗ trợ chạy DApp ........................................... 42
4.5. Tiểu kết ............................................................................................................. 45
Chương 5: KẾT LUẬN ............................................................................................. 46
TÀI LIỆU THAM KHẢO ......................................................................................... 48


V

DANH MỤC BẢNG
Bảng 5.1 – So sánh phương pháp lưu trữ trên blockchain và server. .............. 46


VI

DANH MỤC HÌNH
Hình 1.1 – Nguyên lý hoạt động của smart contract.......................................... 7
Hình 2.1 – Sơ đồ hệ thống private blockchain. ................................................ 10
Hình 2.2 – Trang web download các phiên bản geth. ...................................... 11
Hình 2.3 – Kiểm tra phiên bản của phần mềm geth. ....................................... 12
Hình 2.4 – Terminal hiển thị khi chạy geth. .................................................... 12
Hình 2.5 – Kết quả khi khởi tạo miner. ........................................................... 14
Hình 2.6 – Kết quả khi tạo tài khoản cho miner. ............................................. 15
Hình 2.7 – Danh sách tài khoản của miner. ..................................................... 15

Hình 2.8 – Terminal hiển thị khi chạy một miner............................................ 16
Hình 2.9 – Console để điều khiển miner.......................................................... 17
Hình 2.10 – Thông tin trả về của một giao dịch trên miner. ............................ 18
Hình 2.11 – Danh sách các giao dịch đang chờ được thực hiện. ..................... 18
Hình 2.12 – Thông tin enode của một miner. .................................................. 19
Hình 2.13 – Danh sách các miner đã kết nối được với nhau. .......................... 20
Hình 3.1 – Mô hình hệ thống xác thực văn bằng trên nền tảng blockchain. ... 21
Hình 3.2 – Sơ đồ hoạt động của smart contract quản lý bằng. ........................ 22
Hình 3.3 – Sơ đồ hoạt động của smart contract quản lý bằng. ........................ 23
Hình 3.4 – Thông báo triển khai smart contract thành công............................ 34
Hình 3.5 – Thực hiện một giao dịch của smart contract. ................................. 35
Hình 3.6 – Lấy kết quả đã được lưu trên blockchain. ...................................... 35
Hình 4.1 – Website tra cứu bằng dựa vào mã sinh viên. ................................. 36
Hình 4.2 – Website tra cứu bằng dựa vào số hiệu của bằng. ........................... 37
Hình 4.3 – Website quản lý người dùng. ......................................................... 37
Hình 4.4 – Website lưu trữ thông tin. ............................................................. 38
Hình 4.5 – Website được chạy trên máy chủ. .................................................. 42
Hình 4.6 – Giao diện metamask. ...................................................................... 42
Hình 4.7 – Lựa chọn port cho metamask. ........................................................ 43
Hình 4.8 – Thêm tài khoản cho metamask. ..................................................... 43
Hình 4.9 – Lấy tài khoản từ file json trong keystore của miner. ..................... 44
Hình 4.10 – Ứng dụng web hoàn chỉnh sau khi cài đặt metamask. ................. 44


VII

DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt

Tiếng Anh


Tiếng Việt

DApp

Decentralized App.

Ứng dụng phân tán phi
tập trung.

EVM

Ethereum Virtual
Machine.

Máy ảo Ethereum.


1

PHẦN MỞ ĐẦU
1.1. Lý do chọn đề tài
Cuộc cách mạng công nghiệp 4.0 đang là xu hướng trên toàn thế giới trong việc tự
động hóa và trao đổi dữ liệu trong công nghệ sản xuất, là sự hội tụ kỹ thuật số với các
yếu tố cốt lõi là: trí tuệ nhân tạo, IoT và big data. Và sẽ là một thiếu sót không nhỏ đối
với cuộc cách mạng này nếu bỏ qua công nghệ Blockchain.
Như đã đề cập ở trên, cuộc cách mạng công nghiệp 4.0 tập trung vào khai thác
nguồn tài nguyên dữ liệu, điều này chính là sự khác biệt lớn nhất so với các cuộc cách
mạng dựa trên nguồn tài nguyên thiên nhiên trước đó, nghĩa là dữ liệu có vai trò cực kỳ
quan trọng đối với cuộc cách mạng này. Tuy nhiên, dữ liệu luôn tiềm ẩn những nguy cơ

về an ninh bảo mật và lòng tin của con người, do đó việc xây dựng nên một nguồn dữ
liệu có ích, đáng tin cậy mà lại không sợ bị đánh cắp chính là một bài toán khó hiện nay.
Blockchain (chuỗi khối) là một cơ sở dữ liệu phân tán, lưu trữ thông tin trong các
khối thông tin được liên kết với nhau dựa vào sự mã hóa và có thể mở rộng theo thời
gian. Mỗi khối thông tin đều chứa thông tin về thời gian khởi tạo và được liên kết tới
khối trước đó, kèm một mã thời gian và dữ liệu giao dịch.
Vì vậy Blockchain phù hợp để 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 giúp xóa 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 hiện đã và đang được các tổ chức, cơ quan đầu tư nghiên cứu, phát
triển và ứng dụng vào nhiều lĩnh vực trong cuộc sống. Thấy được những tiềm năng to
lớn của blockchain trong việc an toàn và minh bạch thông tin, tác giả mong muốn tìm
hiểu công nghệ blockchain và ứng dụng công nghệ này vào quản lý bằng tốt nghiệp của
Trường Đại học Lạc Hồng.

1.2. Tình hình nghiên cứu
 Ngoài nước
Như đã nói trên, công nghệ blockchain đang dần được áp dụng vào nhiều lĩnh
vực trong cuộc sống. Ngày càng nhiều cá nhân, cơ quan và tổ chức quan tâm,
nghiên cứu và cho ra nhiều ứng dụng của blockchain được áp dụng vào cuộc sống.
Một số ví dụ như:
 Zug ở Thụy Sĩ, nơi được gọi là “Thung lũng Crypto” đã hợp tác với Uport
triển khai một dự án Blockchain để cư dân có thể đăng ký ID, cho phép
họ tham gia bỏ phiếu trực tuyến và chứng minh nơi cư trú.
 Các dự án chăm sóc sức khỏe như MedRec đang sử dụng Blockchain như
một phương tiện tạo điều kiện chia sẻ dữ liệu trong khi cung cấp xác thực
và duy trì tính bảo mật.
 IBM và Walmart đã hợp tác để khởi động Liên minh An toàn Thực phẩm
Blockchain tại Trung Quốc. Dự án, hợp tác cùng công ty thuộc Fortune
500 là JD.com, được thiết kế để cải thiện việc theo dõi độ an toàn thực

phẩm, giúp dễ dàng xác minh rằng thực phẩm có thực sự an toàn để tiêu
thụ hay không.[1]


2
 Trong nước
Đối với Việt Nam, công nghệ này vẫn còn khá mới, chưa phổ biến và được
áp dụng rộng rãi. Nhưng đã có một có cá nhân và tổ chức tìm hiểu, nghiên cứu và
áp dụng vào thực tế như: truy xuất nguồn gốc xoài Cát Chu của hợp tác xã Mỹ
Xương dựa trên nền tảng blockchain của Infinity Blockchain Labs (IBL) - công ty
chuyên phát triển các giải pháp công nghệ trên nền tảng blockchain[2].

1.3. Mục tiêu nghiên cứu
Đề tài thực hiện với các mục tiêu:
 Tìm hiểu về blockchain.
 Xây dựng một hệ thống blockchain.
 Tìm hiểu smart contract.
 Lập trình một smart contract để thực hiện quản lý bằng cấp.
 Xây dựng một website hỗ trợ tra cứu và xác thực bằng cấp của Trường Đại
học Lạc Hồng dựa trên nền tảng blockchain đã xây dựng.

1.4. Đối tượng và phạm vi nghiên cứu
 Đối tượng nghiên cứu
 Nền tảng Ethereum.
 Ngôn ngữ lập trình Solidity để lập trình smart contract.
 Framework Truffle của nodejs để hỗ trợ triển khai smart contract lên hệ
thống blockchain.
 Thư viện web3js.
 Phạm vi nghiên cứu
 Xây dựng một hệ thống blockchain nội bộ.

 Lập trình một hợp đồng thông minh trong việc quản lý bằng.
 Xây dựng một website dựa trên nền tảng blockchain.

1.5. Phương pháp nghiên cứu
 Nghiên cứu báo cáo, bài báo và tài liệu hướng dẫn về blockchain: [3], [4], [5].
 Phân tích và thiết kế cấu trúc cho hệ thống blockchain.
 Tìm hiểu các thành phần dữ liệu của một tấm bằng đại học.
 Nghiên cứu báo cáo, bài báo và tài liệu hướng dẫn về DApp: [6], [7], [8].
 Phân tích dữ liệu để lập trình ra một smart contract trong quản lý bằng.
 Nghiên cứu cách để kết nối website với blockchain.


3

1.6. Những đóng góp mới và những vấn đề chưa thực hiện được của đề tài
1.6.1. Những đóng góp mới
 Ứng dụng công nghệ blockchain vào thực tiễn, giúp hạn chế việc làm và sử
dụng bằng cấp giả.
 Đóng góp thêm một giải pháp để chống việc làm và sử dụng bằng cấp giả.
1.6.2. Những vấn đề chưa thực hiện được
Hiện tại, việc lấy thông tin từ một danh sách tổng hợp chẳng hạn như file
excel và lưu vào hệ thống yêu cầu người dùng xác nhận nhiều lần.

1.7. Kết cấu của luận văn
Luận văn được chia làm ba phần: phần mở đầu, phần nội dung và phần kết
luận.
Phần mở đầu
Nêu lý do chọn đề tài, tổng quan tình hình phát triển, mục tiêu nghiên cứu đề
tài, đối tượng, phạm vi, phương pháp nghiên cứu cũng như những đóng góp mới
của đề tài. Bên cạnh đó cũng chỉ ra mặt hạn chế mà đề tài chưa thực hiện được để

giúp mọi người có cái nhìn rõ hơn.
Phần nội dung chính: gồm 4 chương
 Chương 1: Tổng quan lý thuyết
Trong chương này, tác giả sẽ giới thiệu và trình bày những kiến thức cơ bản
về công nghệ blockchain, nền tảng ethereum, smart contract và các ứng dụng phi
tập trung. Đồng thời, tác giả cũng sẽ giới thiệu một số công cụ, thư viện và
framework mà tác giả đã dùng trong đề tài.
 Chương 2: Hệ thống blockchain
Trong chương này, người đọc sẽ hiểu cách để tự xây dựng một hệ thống
private blockchain dựa trên nền tảng Ethereum.
 Chương 3: Xây dựng và triển khai smart contract lên hệ thống blockchain
Trong chương này, tác giả sẽ trình bày một số kiến thức cơ bản để tạo nên
một smart contract và triển khai smart contract lên hệ thống blockchain.
 Chương 4: Xây dựng và triển khai smart contract lên hệ thống blockchain
Trong chương này, tác giả sẽ nêu ra cách để kết nối website với hệ thống
blockchain để tạo ra một ứng dụng phi tập trung.
Phần kết luận
Đưa ra những kết luận và kiến nghị về chương trình đã xây dựng.


4

Chương 1: Tổng quan lý thuyết
1.1. Tổng quan về công nghệ blockchain
1.1.1. Giới thiệu về blockchain
Blockchain là một hệ thống cơ sở dữ liệu phân tán phi tập trung, bao gồm
nhiều máy tính kết nối trong mạng ngang hàng (peer-to-peer) với nhau tạo thành.
Hệ thống này lưu trữ thông tin thành các khối dữ liệu liên kết với nhau, và được
quản lý bởi mọi người tham gia vào trong hệ thống.
Thông tin trong blockchain không thể bị thay đổi và chỉ được bổ sung thêm

khi có sự đồng thuận của tất cả các nút trong hệ thống. Đây là một hệ thống bảo
mật an toàn cao trước khả năng bị sửa đổi dữ liệu. Ngay cả khi một phần của hệ
thống blockchain sụp đổ, những máy tính và các nút khác sẽ tiếp tục bảo vệ thông
tin và giữ cho mạng lưới tiếp tục hoạt động.
1.1.2. Đặc điểm
Các đặc điểm chính và nổi bật của công nghệ blockchain có thể kể đến như:
 Hệ thống được thiết kế phân tán nên mỗi người tham gia vào hệ thống
sẽ lưu giữ một bản sao dữ liệu, điều đó giúp cho dữ liệu không thể bị
làm giả và tấn công.
 Dữ liệu chỉ có thể sửa đổi khi đạt được sự đồng thuận của mọi người
tham gia trong hệ thống, và sẽ được lưu vết trên hệ thống.
 Mọi sự thay đổi dữ liệu sẽ được lưu vết trên hệ thống do đó có thể nói
blockchain là một hệ thống cơ sở dữ liệu có tính minh bạch.
1.1.3. Nguyên lý hoạt động
Ứng dụng được biết đến và thảo luận nhiều nhất về công nghệ blockchain
chính là đồng tiền điện tử Bitcoin. Hiện nay đồng tiền điện tử này có thể được sử
dụng để trao đổi các sản phẩm và dịch vụ, giống như đồng đô la Mỹ (USD), Euro
(EUR), đồng nhân dân tệ Trung Quốc (CNY) và các loại tiền tệ của các quốc gia
khác. Do vậy chúng ta sẽ tạm lấy đồng tiền này làm đại diện để nói về nguyên lý
hoạt động của công nghệ blockchain.
Bitcoin là một đơn vị tiền tệ kỹ thuật số với mã là BTC, cũng giống như đô
la Mỹ bản thân nó không mang giá trị, nó chỉ có giá trị bởi vì có một cộng đồng
đồng ý sử dụng nó làm đơn vị giao dịch hàng hóa và dịch vụ.
Để theo dõi số lượng Bitcoin mà mỗi người sở hữu trong các tài khoản nhất
định và theo dõi các giao dịch phát sinh từ đó thì chúng ta cần đến một cuốn sổ kế
toán, trong trường hợp này nó chính là blockchain và đây thực tế là một tệp kỹ
thuật số theo dõi tất cả các giao dịch Bitcoin.
Tệp sổ cái này không được lưu trữ trong một máy chủ trung tâm, như trong
một ngân hàng hoặc trong một trung tâm dữ liệu mà ngược lại nó được phân phối
trên toàn thế giới thông qua một mạng lưới các máy tính ngang hàng với vai trò

lưu trữ dữ liệu và thực thi các tính toán. Mỗi máy tính này đại diện cho một “nút”
của mạng lưới blockchain và mỗi nút đều có một bản sao của tệp sổ cái này.


5
Giả sử nếu Trình muốn gửi Bitcoin cho Thiệu, Trình sẽ phát một thông báo
tới mạng lưới và cho biết số lượng Bitcoin trong tài khoản của mình sẽ giảm 5
BTC và số lượng Bitcoin trong tài khoản của Thiệu sẽ tăng lên tương ứng. Mỗi nút
trong mạng sau đó sẽ nhận được thông báo này và ánh xạ giao dịch được yêu cầu
vào bản sao sổ cái kế toán của họ, và theo đó số dư tài khoản của cả hai bên đều
được cập nhật.
1.1.4. Phân loại
 Public blockchain, đây là hệ thống blockchain mà bất kỳ ai cũng có thể đọc
và ghi dữ liệu trên blockchain. Quá trình xác thực giao dịch trên blockchain
này đòi hỏi phải có hàng nghìn hay thậm chí là hàng vạn nút tham gia. Do
đó để tấn công vào hệ thống blockchain này là điều bất khả thi. Ví dụ về
public blockchain: Bitcoin, Ethereum…
 Private blockchain, đây là hệ thống blockchain mà người dùng chỉ có quyền
đọc dữ liệu, không có quyền ghi bởi vì điều này thuộc về một bên thứ ba
tuyệt đối tin cậy. Bên thứ ba này có thể hoặc không cho phép người dùng
đọc dữ liệu trong một số trường hợp. Bên thứ ba cũng toàn quyền quyết
định mọi thay đổi trên blockchain. Vì đây là một Private Blockchain, cho
nên thời gian xác nhận giao dịch khá nhanh vì chỉ cần một lượng nhỏ thiết
bị tham gia xác thực giao dịch. Ví dụ: Ripple là một dạng Private
Blockchain, hệ thống này cho phép 20% các nút là gian dối và chỉ cần 80%
còn lại hoạt động ổn định là được.
 Permissioned blockchain hay còn được gọi là consortium blockchain, là một
dạng của private blockchain nhưng bổ sung thêm một số tính năng nhất
định, kết hợp giữa “niềm tin” khi tham gia vào public blockchain và “niềm
tin tuyệt đối” khi tham gia vào private blockchain. Ví dụ: các ngân hàng

hay tổ chức tài chính liên doanh sẽ sử dụng Blockchain cho riêng mình.

1.2. Tổng quan về Ethereum
1.2.1. Giới thiệu về Ethereum
Ethereum là một nền tảng mã nguồn mở dựa trên công nghệ blockchain cho
phép các nhà phát triển xây dựng và triển khai các ứng dụng và hợp đồng thông
minh hoạt động trên nền tảng blockchain.
Mạng lưới Ethereum sử dụng đồng coin “Ether” hoạt động với tư cách tiền
tệ của mạng lưới. Ether được trao đổi như một cách thức chi trả cho việc vận hành
các ứng dụng phi tập trung trên mạng lưới. Đồng Ether cũng là tiền áo lớn thứ hai
thế giới vì giá trị vốn hóa thị trường đứng sau Bitcoin.
1.2.2. Kiến trúc
1.2.2.1. Ether
Ether, là một loại tiền mã hóa được giao dịch trong mạng lưới Ethereum
được gọi là Ether. Nó được liệt kê dưới mã ETH và giao dịch trên các sàn
giao dịch tiền mã hóa. Nó cũng được sử dụng để trả phí giao dịch và dịch vụ
tính toán trên mạng Ethereum.


6
1.2.2.2. Máy ảo Ethereum (Ethereum Virtual Machine)
Máy ảo Ethereum là một môi trường chạy các hợp đồng thông minh
Ethereum.
Nó được hoàn toàn cô lập từ mạng, hệ thống tập tin và các quá trình
khác của hệ thống máy chủ. Mỗi nút Ethereum trong mạng chạy một EVM
và thực hiện các hướng dẫn giống nhau. Ethereum Virtual Machines đã được
lập trình trong C++, Go, Haskell, Java, Python, Ruby, Rust và WebAssembly.
1.2.2.3. Hợp đồng thông minh
Hợp đồng thông minh là một cơ chế trao đổi xác định, được kiểm soát
bởi các phương tiện kỹ thuật số mà có thể giúp cho việc thực hiện giao dịch

trực tiếp giữa các thực thể mà không cần tin cậy nhau. Các hợp đồng này
được định nghĩa bằng cách lập trình và được chạy chính xác như mong muốn
mà không bị kiểm duyệt, lừa đảo hay sự can thiệp từ bên thứ ba trung gian.
Chúng có thể được sử dụng để tạo điều kiện, xác minh và thực thi việc
đàm phán hoặc thực hiện các hướng dẫn thủ tục kinh tế và có khả năng tránh
được sự kiểm duyệt, thông đồng và rủi ro từ phía đối tác. Trong Ethereum,
các hợp đồng thông minh được coi là các kịch bản tự trị hoặc các ứng dụng
phân cấp được lưu trữ trong chuỗi khối Ethereum để thực hiện sau đó bởi
EVM. Các hướng dẫn được nhúng trong các hợp đồng Ethereum được thanh
toán bằng ether và có thể được thực hiện bằng nhiều ngôn ngữ Turingcomplete khác nhau.
1.2.3. Ứng dụng
Rất nhiều người nghĩ Ethereum tạo ra để cạnh tranh với đồng tiền ảo Bitcoin
nhưng thực chất tiền tệ không phải là mục đích mà Ethereum nhắm đến. Công nghệ
blockchain của Ethereum tập trung tạo ra các ứng dụng hoạt động dựa trên smart
contract nhằm giải quyết mọi giao dịch một cách dễ dàng, nhanh chóng, tiết kiệm,
an toàn và công khai.

1.3. Tổng quan về smart contract
1.3.1. Giới thiệu về smart contract
Smart contract là một bộ giao thức đặc biệt với mục tiêu là đóng góp xác
nhận hay tiến hành quá trình đàm phán và thực hiện hợp đồng. Smart contract cho
phép ta triển khai giao dịch mà không cần thông qua một bên thứ ba trung gian.
Những giao dịch này hoàn toàn dễ dàng truy dấu và không thể bị can thiệp
hoặc đảo chiều. Smart contract chứa trong mình toàn bộ những thông tin chi tiết
về các điều khoản và thực hiện chúng một cách tự động.
1.3.2. Nguyên lý hoạt động
Nguyên lý vận hành của smart contract có thể đem so sánh với một chiếc máy
bán hàng tự động.
Smart contract chỉ tự động thực hiện những lệnh mà đã được lập trình sẵn từ
trước. Đầu tiên, tài sản và điều khoản hợp đồng đều được mã hóa và chuyển vào

một block thuộc blockchain. Smart contract này tiếp đó sẽ được phân phối và sao
chép lại bởi các nút hoạt động trên nền tảng đó.


7
Sau khi có nhận lệnh triển khai thì hợp đồng sẽ được triển khai theo đúng
như điều khoản định sẵn. Đồng thời, smart contract cũng sẽ tự động kiểm tra quá
trình thực hiện những cam kết nêu trong hợp đồng.

Hình 1.1 – Nguyên lý hoạt động của smart contract

1.3.3. Các thành phần của smart contract
 Chủ thể hợp đồng, chương trình phải được cấp khả năng truy cập đến sản
phẩm/dịch vụ liệt kê trong hợp đồng để có thể tự động khóa hay mở khóa
chúng.
 Chữ ký điện tử, tất cả các bên tham gia đồng ý triển khai thỏa thuận bằng các
khóa cá nhân của họ.
 Điều khoản hợp đồng, điều khoản của smart contract có dạng một chuỗi các
hoạt động. Các bên tham gia hợp đồng đều phải ký chấp nhận nó.
 Nền tảng phân quyền, smart contract sau khi hoàn tất sẽ được tải lên
Blockchain của nền tảng phân quyền tương ứng và được phân phối về cho
các node của nền tảng ấy.
1.3.4. Lợi ích của smart contract
 Smart contract được mã hóa và phân phối về cho các node. Cách thức này
bảo đảm nó sẽ không bị thất lạc hay sửa đổi mà không được bạn cho phép.
 Hầu hết các công đoạn đều được tự động hoá, và gần như loại bỏ hoàn toàn
bên trung gian.

1.4. Các ứng dụng phi tập trung
1.4.1. Giới thiệu ứng dụng phi tập trung

Như tác giả đã trình bày trong phần giới thiệu về Ethereum ở trên, Ethereum
cung cấp một nền tảng để các nhà phát triển tạo ra các ứng dụng chạy trên


8
blockchain, các ứng dụng này được gọi là ứng dụng phi tập trung, thường được
gọi là DApp (Decentralized App).
Các ứng dụng phi tập trung là ứng dụng có mã nguồn mở, không chịu sự
kiểm soát của một cá nhân hoặc đối tượng nào, và chạy trên blockchain hoặc mạng
lưới máy tính phi tập trung. Các ứng dụng phi tập trung không có máy chủ trung
tâm, người dùng liên hệ với nhau thông qua các kết nối đồng cấp. Các ứng dụng
thông thường đều chịu sự kiểm soát của một đối tượng, chạy trên một máy chủ
trung tâm và dễ bị tấn công hoặc gặp thời gian chết do máy chủ rơi vào trạng thái
ngoại tuyến.
Một ứng dụng phi tập trung không có máy tính chủ hoặc đối tượng đơn lẻ
nào kiểm soát, nó hoạt động trên một mạng máy tính và các thay đổi đều do người
dùng quyết định. Không có vấn đề nghiêm trọng rằng máy chủ có thể bị sập hoặc
bị tấn công. Nếu một máy tính trên mạng lưới thoát tuyến, ứng dụng không bị ảnh
hưởng vì còn hàng ngàn máy khác đang vận hành ứng dụng vào thời điểm đó.
Ngay cả khi một máy tính trong mạng lưới bị tấn công, cũng không thể thực
hiện các thay đổi trên ứng dụng vì cần phần lớn mạng lưới phải đồng thuận với
thay đổi đó.
1.4.2. Làm sao để xây dựng một DApp?
Để xây dựng ra một DApp ta cần phải:
 Có một hệ thống blockchain đóng vai trò như một server để lưu trữ cơ sở dữ
liệu, trong luận văn này, tác giả sẽ tự tạo một hệ thống private blockchain và
sử dụng hệ thống này để xây dựng DApp.
 Có tài khoản ví điện tử trên mạng blockchain đó.
 Tạo ra smart contract quy định các điều khoản, chủ thể, giao dịch và triển
khai smart contract lên hệ thống blockchain.

 Xây dựng ứng dụng hay website và kết nối chúng đến hệ thống blockchain.

1.5. Một số phần mềm, thư viện và framework được sử dụng trong đề tài
1.5.1. Geth
Geth hay còn gọi là Go Ethereum, là một chương trình giúp người dùng tương
tác với hệ thống blockchain của Ethereum như mining, thực hiện giao dịch… Đồng
thời, Geth cũng là chương trình hỗ trợ người dùng tự tạo ra hệ thống blockchain
của riêng mình.
1.5.2. Remix
Remix là một trình soạn thảo và biên dịch ngôn ngữ lập trình Solidity, remix
cũng hỗ trợ các công cụ để nhà phát triển gỡ lỗi và chạy thử smart contract. Điểm
đặc biệt của remix là không cần phải cài đặt mới sử dụng được, mà chỉ cần truy
cập vào đường link: là có thể sử dụng ngay.
1.5.3. Nodejs
NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8
Engine. Nodejs sử dụng rộng bởi hàng ngàn lập trình viên trên toàn thế giới.


9
NodeJS cung cấp các thư viện phong phú ở dạng Javascript Module khác nhau
giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất.
1.5.4. Truffle
Truffle là một môi trường phát triển và là framework để kiểm thử dành cho
blockchain Ethereum, mục tiêu mà Truffle hướng đến chính là giúp cho nhà phát
triển dễ làm việc với Ethereum hơn trong việc tạo ra các ứng dụng phi tập trung
(DApp).
1.5.5. Lite-server
Lite-server là một package của nodejs, giúp tạo ra một localhost để chạy và
kiểm thử ứng dụng web của mình. Ngoài ra lite-server còn tích hợp BrowserSync,
cho phép tự tải lại trang web đang chạy nếu như code của website được chỉnh sửa

và lưu lại.
1.5.6. Web3.js
Web3.js là một thư viện javascript, giúp các ứng dụng javascript chạy trên
trình duyệt web kết nối và tương tác với hệ thống blockchain. Web3.js có thể tải
tại: />1.5.7. Bootstrap
Bootstrap là một framework giúp người dung dễ dàng tạo ra giao diện website,
nó chứa các mẫu thiết kế có sẵn dựa trên HTML và CSS cho các kiểu chữ, biểu
mẫu, nút bấm, điều hướng và các thành phần giao diện khác.
1.5.8. Metamask
Metamask cho phép người dùng chạy các ứng dụng Ethereum DApps ngay
trong trình duyệt mà không cần khởi động toàn bộ node Ethereum dẫn đến trình
duyệt trở nên nặng nề và chậm chạp.

1.6. Tiểu kết
Qua chương này, tác giả đã nêu lên một số cơ sở lý thuyết và một số thư viện, phần
mềm được sử dụng trong đề tài. Trong chương tiếp theo, tác giả sẽ tiến hành xây dựng
một hệ thống private blockchain.


10

Chương 2: Hệ thống blockchain
Để tạo nên một hệ thống blockchain, tác giả chia ra ba bước sau:
 Cài đặt block đầu tiên cho hệ thống
 Cài đặt và thiết lập các miner
 Kết nối và đồng bộ các miner với nhau
Hệ thống mà tác giả tạo ra có sơ đồ như sau:

Account 1
Miner 1

Account 2

Hệ thống
blockchain

Account 1
Miner 2
Account 2
Account 1
Miner 3
Account 2

Hình 2.1 – Sơ đồ hệ thống private blockchain.

Tuy nhiên, trước khi tiến hành thực hiện các bước này, tác giả cần cài đặt các phần
mềm cần thiết để có thể tạo hệ thống.

2.1. Cài đặt phần mềm geth
Geth có thể cài đặt trên nhiều hệ điều hành khác nhau như: Windows, macOS,
linux với nhiều cách khác nhau. Trong bài viết này đây tác giả chỉ nêu ra hai cách cài
đặt cơ bản nhất trên hệ điều hành Ubuntu, đó là cài đặt từ các gói phân phối độc lập và
cài đặt từ quản lý gói tin của Ubuntu.
2.1.1. Cài đặt phiên bản dành cho tất cả bản phân phối của linux
Đầu tiên, truy cập vào đường dẫn sau để vào trang download của Go
Ethereum: />Trong danh sách Stable releases, chọn đến thẻ Linux, các phiên bản dành cho
hệ điều hành linux sẽ được liệt kê ra như hình bên dưới, trong đề tài này, tác giả
đã sử dụng phiên bản 1.8.17.


11


Hình 2.2 – Trang web download các phiên bản geth.

Sau khi tải về, giải nén và di chuyển thư mục vào đường dẫn mà ta muốn cài
đặt, trong luận văn này, tác giả sẽ cài đặt vào đường dẫn /opt/geth.
Sau đó, khai báo đường dẫn vừa được cài đặt vào biến môi trường PATH để
shell có thể tìm đến đúng file thực thi chương trình khi ta gọi lệnh. Thêm dòng
khai báo sau vào file .bashrc nếu dùng bash shell, .zshrc nếu dùng z shell ở thư
mục home của người dùng:
export PATH=$PATH:[đường dẫn nơi cài đặt]

Do tác giả cài đặt theo đường dẫn /opt/geth nên tác giả sẽ khai báo như sau:
export PATH=$PATH:/opt/geth

2.1.2. Cài đặt bằng package management (apt) của Ubuntu
Cách cài đặt này khá đơn giản, từ terminal của Ubuntu nhập lần lượt vào các
lệnh sau:
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

2.1.3. Chạy thử geth
Sau khi cài đặt, tác giả tiến hành kiểm tra xem geth đã được cài đặt và không
bị lỗi gì. Từ terminal, nhập lệnh sau để kiểm tra phiên bản của geth:
geth version


12

Hình 2.3 – Kiểm tra phiên bản của phần mềm geth.


Để chạy thử geth, chỉ cần nhập lệnh:
geth

Hình 2.4 – Terminal hiển thị khi chạy geth.

2.2. Thiết lập genesis block
Mỗi hệ thống blockchain đều bắt đầu với một block khởi đầu, block này sẽ được
sử dụng để tạo nên hệ thống và định nghĩa các điều kiện để được tham gia vào mạng
blockchain.
Khi tạo một hệ thống private blockchain, ta nên sử dụng một thư mục cụ thể để
lưu trữ dữ liệu, việc này nhằm tránh gây ảnh hưởng đến các thư mục được sử dụng để
lưu trữ dữ liệu từ mạng public blockchain của Ethereum. Tạo một thư mục để chứa
private blockchain:
mkdir ~/PrivateChain


13
Trong thư mục vừa tạo, ta sẽ tạo ra một file genesis.json với nội dung như sau:
{
"nonce": "0x0000000000000042",
"mixhash":
"0x00000000000000000000000000000000000000000000000000000000
00000000",
"difficulty": "0x400",
"alloc": {},
"coinbase":
"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":

"0x00000000000000000000000000000000000000000000000000000000
00000000",
"extraData":
"0x436861696e536b696c6c732047656e6573697320426c6f636b",
"gasLimit": "0xffffffff",
"config": {
"chainId": 8,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}

Trong file này, ta chỉ cần chú ý chainId, dificulty và gasLimit. Cũng như một địa
chỉ IP trong mạng internet, chainId giúp người tham gia nhận biết được hệ thống
blockchain của mình so với các hệ thống blockchain khác, các chainId từ 0 đến 3 đã
được dùng cho public blockchain của Ethereum, cho nên không dùng các chainId đó để
tạo private blockchain của Ethereum. Dificulty quy định độ khó khi mã hóa một block,
nếu đặt độ khó càng cao thì thời gian sinh ra một block càng lâu. Còn gasLimit sẽ quy
định số tiền tối đa của đơn vị Gas mà ta sẵn sàng trả để thực hiện giao dịch, điều này
giúp ta tránh được việc tốn rất nhiều tiền để thực hiện một giao dịch bị lỗi.

2.3. Cài đặt và thiết lập cho miner
Trong bước này, tác giả sẽ tạo ra một miner đầu tiên. Miner có nhiệm vụ giúp xác
thực và sinh ra các block trong hệ thống. Miner cũng được sử dụng để đào ra các đồng
tiền ảo Ether, để trả phí thực hiện các giao dịch trên hệ thống.
2.3.1. Khởi tạo miner từ genesis block
Đầu tiên, tạo một thư mục để chứa dữ liệu và tài khoản của miner bằng lệnh
sau:



14
mkdir -p ~/PrivateChain/miner1

Sau khi đã tạo thư mục chứa miner, từ terminal nhập lệnh sau để khởi tạo
miner:
geth --datadir ~/PrivateChain/Miner1 init
~/PrivateChain/genesis.json

Dòng lệnh trên dùng để khởi tạo Miner1 từ file genesis.json, đường dẫn thư
mục thứ nhất là nơi lưu trữ các thông tin và dữ liệu của miner, còn đường dẫn thư
mục thứ hai chính là đường dẫn đến nơi chứa dữ liệu của genesis block.
Sau khi khởi tạo thì terminal sẽ xuất ra thông báo. Khi kiểm tra thư mục
miner1, ta sẽ thấy 2 thư mục mới được tạo ra gồm geth và keystore. Thư mục geth
chứa cơ sở dữ liệu về blockchain của mình, còn thư mục keystore chứa các tài
khoản mà được tạo ra trên miner này.

Hình 2.5 – Kết quả khi khởi tạo miner.

2.3.2. Tạo tài khoản người dùng
Ta sẽ tạo 2 tài khoản cho miner1, tài khoản mặc định và tài khoản phụ. Tài
khoản mặc định sẽ nhận các đồng ethers được tạo ra trong blockchain, các ethers
này sẽ dùng để thực hiện các giao dịch giữa các tài khoản hay các node.
Từ terminal, nhập dòng lệnh sau để tạo một tài khoản mới:
geth --datadir ~/PrivateChain/miner1 account new

Sau khi nhập mật khẩu, một tài khoản mới sẽ được tạo ra, đồng thời một địa
chỉ của tài khoản vừa mới tạo sẽ xuất hiện, địa chỉ này dùng để xác định đích đến
khi ta giao dịch giữa 2 miner.



15

Hình 2.6 – Kết quả khi tạo tài khoản cho miner.

Ta sẽ tạo thêm một tài khoản nữa để làm tài khoản phụ.
Kiểm tra các tài khoản đang có trong miner bằng lệnh sau:
geth --datadir ~/PrivateChain/miner1 account list

Terminal sẽ xuất ra danh sách các tài khoản của miner1, các tài khoản này
được chứa trong thư mục keystore của miner1.

Hình 2.7 – Danh sách tài khoản của miner.

2.3.3. Tạo file thực thi miner
Thay vì mỗi lần chạy miner ta phải nhập vào một dòng lệnh trên terminal với
rất nhiều tham số, đường dẫn và giá trị như sau:
geth --identity "miner1" --networkid 8 --datadir
"~/PrivateChain/miner1" --mine --targetgaslimit
'9000000000000' --rpc --rpcapi "db,eth,net,web3,personal" -rpcport "8545" --unlock 0 --password
~/PrivateChain/miner1/password.sec

Tác giả sẽ tạo ra một file shell script để lưu lại dòng lệnh trên, khi cần chạy
miner, ta chỉ cần thực thi file script là được. Trong thư mục miner1, tạo file
startminer.sh với nội dung sau:
#!/bin/bash


16
geth --identity "miner1" --networkid 8 --datadir

"~/PrivateChain/miner1" --mine --targetgaslimit
'9000000000000' --rpc --rpcapi "db,eth,net,web3,personal" -rpcport "8545" --unlock 0 --password
~/PrivateChain/miner1/password.sec

Sau đó cấp quyền thực thi cho file startminer.sh:
chmod +x ~/PrivateChain/miner1/startminer.sh

Tạo file lưu trữ mật khẩu để khi chạy, miner sẽ tự động đăng nhập vào tài
khoản. Trong thư mục miner1 tạo file password.sec, sau đó nhập mật khẩu của tài
khoản đầu tiên vào file này.
Để chạy miner, thực thi câu lệnh sau:
sh ~/PrivateChain/miner1/startminer.sh

Hình 2.8 – Terminal hiển thị khi chạy một miner.

Terminal mà ta chạy miner chỉ hiển thị tiến trình và thông báo của miner, để
điều khiển được miner, ta cần một terminal khác và nhập vào dòng lệnh:
geth attach ipc:./PrivateChain/miner1/geth.ipc

File geth.ipc là file chỉ phát sinh trong thư mục của miner khi miner chạy.


×