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

Ứng dụng hỗ trợ xem thông tin cà phê dựa trên Blockchain

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.8 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 HỖ TRỢ XEM THÔNG TIN CÀ PHÊ
DỰA TRÊN BLOCKCHAIN

VĂN CÔNG THIỆU

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




LỜI CẢM ƠN
Em xin chân thành cảm ơn tất cả các giảng viên trường Đại Học Lạc Hồng, các
thầy cô khoa Công Nghệ Thông Tin đã giảng dạy và hướng dẫn chúng em trong suốt
thời gian chúng em theo học tại trường.
Em xin gửi lời cảm ơn đến ThS Phan Thị Hường, là giáo viên đã tận tình hướng
dẫn chúng em hoàn thành đề tài nghiên cứu khoa học này.
Em xin cám ơn các thầy, các cô trong khoa Công Nghệ Thông Tin đã có những
ý kiến đóng góp trong các buổi báo cáo tiến độ.
Ngoài ra em xin cám ơn thầy Tạ Nguyễn, giáo viên chủ nhiệm lớp 14SE111 và
các bạn trong lớp cùng toàn thể gia đình và người thân đã giúp đỡ, động viên chúng
em trong quá trình thực hiện đề tài này.
Với vốn kiến thức còn hạn chế cùng những điều kiện khách quan không cho
phép, đề tài của em khó tránh khỏi những thiếu sót cũng như chưa đáp ứng đầy đủ các
yêu cầu. Do đó em hy vọng tiếp tục 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.
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

Văn Công Thiệu


MỤC LỤC
LỜI CẢM ƠN
MỤC LỤC

I
II

DANH MỤC BẢNG


IV

DANH MỤC HÌNH

IV

DANH MỤC CÁC TỪ VIẾT TẮT

VI

PHẦN MỞ ĐẦU

1

1. Lý do chọn đề tài

1

2. Tình hình nghiên cứu

1

3. Mục tiêu nghiên cứu

2

4. Đối tượng và phạm vi nghiên cứu

2


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

3

6. Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện được 3
7. Kết cấu của đề tài
Chương 1: Tổng quan lý thuyết

3
5

1.1. Tổng quan về blockchain

5

1.1.1. Blockchain là gì?

5

1.1.2. Ý tưởng ra đời

5

1.1.3. Phân loại blockchain

6

1.1.4. Cơ chế đồng thuận trong blockchain


6

1.1.5. Đặc điểm chính của blockchain

7

1.1.6. Tương lai của blockchain

7

1.2. Tổng quan về Ethereum

8

1.2.1. Ethereum là gì? [3]

8

1.2.2. Kiến trúc

8

1.2.3. Ứng dụng

9

1.3. Tổng quan về smart contracts

9


1.3.1. Smart contracts là gì?

9

1.3.2. Ý tưởng ra đời Smart Contract?

9

1.3.3. Nguyên lý hoạt động

9

1.3.4. Các thành phần của smart contracts

10

1.3.5. Lợi ích

10


1.4. Các ứng dụng phi tập trung

10

1.4.1. Ứng dụng phi tập trung là gì?

10

1.4.2. Xây dựng một dApp?


11

1.5. Giới thiệu về một số phần mềm và thư viện sử dụng trong đề tài

11

1.5.1. Phần mềm Geth

11

1.5.2. Trình soạn thảo và biên dịch smart contract Remix.

11

1.5.3. Nodejs

12

1.5.4. Framework hỗ trợ triển khai smart contract Truffle

12

1.5.5. Web3.js

12

1.5.6. Metamask

12


1.5.7. Apache

12

1.6. Tiểu kết

12

Chương 2: Xây dựng hệ thống private network blockchain dựa trên nền tảng Ethereum 13
2.1. Cài đặt môi trường lập trình và một số thư viện cần thiết

13

2.1.1. Cài đặt môi trường Ethereum

13

2.1.2. Chạy thử geth

13

2.2. Thiết lập genesis block

13

2.3. Cài đặt và thiết lập cho miner

14


2.3.1. Khởi tạo miner từ genesis block

14

2.3.2. Tạo tài khoản cho người dùng trong hệ thống

15

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

17

2.5. Tiểu kết

19

Chương 3: Xây dựng ứng dụng và website với hệ thống blockchain dựa trên smart contracts
20
3.1. Sơ đồ hệ thống

21


3.1.1. Mô tả hệ thống

21

3.1.2. Mô hình Usecase của người dung

21

3.1.3. Mô hình UseCase của tài khoản User

22

3.1.4. Mô hình UseCase của Admin

23

3.2. Xây dựng smart contracts quản lý thông tin cà phê
3.2.1. Cài đặt framework truffle

25
25


3.2.2. Tạo smart contract

25

3.2.3. Kết nối smart contracts với hệ thống

26


3.3. Kết nối hệ thống lên website và ứng dụng

27

3.3.1. Tạo giao diện website

27

3.3.2. Kết nối website với hệ thống blockchain

29

3.3.3. Sử dụng metamask trình duyệt chạy được dApp

33

3.3.4. Tiểu kết

36

3.4. Xây dựng ứng dụng xem thông tin

36

3.4.1. Giao diện ứng dụng

36

3.4.2. Kết nối ứng dụng với server


37

Chương 4: THỬ NGHIỆM VÀ KẾT LUẬN

39

TÀI LIỆU THAM KHẢO

41

DANH MỤC BẢNG
Bảng 4.1: Bảng so sánh lưu trữ trên blockchain vs server

45

DANH MỤC HÌNH
Hình 1.1: Ý tưởng ra đời blockchain. [2]

5

Hình 1.2: Nguyên lý hoạt động smart contracts. [4]

10

Hình 1.3: Ứng dụng phi tập trung. [5]

11

Hình 2.1: Sau khi khởi tạo miner.


15

Hình 2.2: Chạy miner.

16

Hình 2.3: Vào trình điều khiển của hệ thống.

16

Hình 2.4: Kiểm tra các tài khoản trong hệ thống.

17

Hình 3.1: Sơ đồ hệ thống.

20

Hình 3.2: Mô hình Usecase tổng quát.

21

Hình 3.3: Mô hình Usecase người dùng.

21

Hình 3.4: Mô hình Usecase Admin.

23


Hình 3.5: Sơ đồng hoạt động của smart contract với hệ thống và các API hỗ trợ
giao dịch.
25
Hình 3.6: Biên dịch smart contracts.

26


Hình 3.7: Kết nối với hệ thống blockchain.

27

Hình 3.8:Kiểm tra địa chỉ của smart contracts.

27

Hình 3.9: Giao diện website Admin

28

Hình 3.10: Giao diện quản lý lô hàng.

28

Hình 3.11: Giao diện quản lý user

29

Hình 3.12: Giao diện quản lý của user


29

Hình 3.13: Giao diện của metamask.

33

Hình 3.14: Chọn port để kết nối với private network.

34

Hình 3.15: Chọn Import Account để thêm tài khoản.

34

Hình 3.16: Chọn file json từ keystore để thêm tài khoản.

35

Hình 3.17: Thêm tài khoản thành công.

35

Hình 3.18: Màn hình quét mã QR code.

36

Hình 3.19: Màn hình thông tin lô hàng.

36


Hình 3.20:Sơ đồ truyền dữ liệu từ ứng dụng lên server và ngược lại.

37

Hình 4.1: Khi thay đổi dữ liệu trong block.

39


DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt
dApp
ETH
EVM

Tiếng Việt
Ứng dụng dựa trên nền tảng phân tán phi tập trung.
Đơn vị tiền điện tử của blockchain Ethereum.
Máy ảo Ethereum.



PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Vệ sinh an toàn thực tập là một trong những vấn đề được quan tâm nhất của xã hội và
là vấn đề được thời sự,báo đài quan tâm đặc biệt, nhất là khi ngày càng nhiều các vi phạm
về an toàn thực phẩm của các cơ sở sản xuất được các cơ quan chức năng phát hiện càng
nhiều.Hiện nay giá cả hàng hóa và dịch vụ không còn là yếu tố quan tâm nhiều nhất, mà
thay là đó là chất lượng, tiêu chuẩn liên quan đến an toàn người tiêu dùng và môi

trường.Người tiêu dùng quan tâm đến nguồn gốc và quá trình sản xuất đó là chính đáng.
Do sự phát triển của nhu cầu xã hội, các nước đặc biệt là các nước phát triển đã triển
khai áp dụng các quy định kỹ thuật và vệ sinh đối với các sản phẩm cà phê nhập khẩu. Các
quy định này ngày càng khắt khe, chặt chẽ và kiểm soát nghiêm ngặt. Các nước xuất khẩu
cà phê trên thế giới đề rất quan tâm đến vấn đề đảm bảo chất lượng cũng như an toàn thực
phẩm và coi nhiệm vụ quan trọng trong hoạt động xuất khẩu cà phê của mình. Trong những
năm gần đây, ngành cà phê Việt Nam đã có những bước phát triển dài, đáng ghi nhận,
không những đáp ứng nhu cầu trong nước mà còn trở thành một trong những ngành xuất
khẩu chủ lực, nhưng để vượt qua các rào cản, đẩy mạnh xuất khẩu là một vấn đề rất khó
khăn và cấp bách của ngành xuất khẩu cà phê của nước ta hiện tại.
Chính vì thế các doanh nghiệp sản xuất cà phê của Việt Nam cần thiết áp dụng hệ
thống truy xuất nguồn gốc. Mặc dù hệ thống này có thể làm tăng chi phí, nhưng đồng thời
lợi ích thu lại từ việc an toàn là không hề nhỏ. Hệ thống truy xuất giúp khách hàng tin tưởng
vào chất lượng và an toàn đối với sản phẩm của mình, qua đó nâng cao uy tín trên thị
trường. Thêm vào đó, hệ thống còn giúp các doanh nghiệp có thẻ quản lý tốt chất lượng sản
phẩm, từ khâu nuôi trồng, chế biến cho đến quá trình vận chuyển và phân phối. Nếu có sự
cố xảy ra bất ngờ, doanh nghiệp có thể tìm ra nguyên nhân nhanh chóng và đưa ra biện
pháp xử lý kịp thời.
Đây là vấn đề không còn mới mẻ trên thế giới, họ đã áp dụng và thu được nhiều kết
quả tốt nhưng còn khá xa lạ ở Việt Nam, em hi vọng qua nội dung mà em thực hiện trong
đề tài sẽ có thể hiểu nhiều hơn về hệ thống truy xuất nguồn gốc từ đó có hướng áp dụng
hiệu quả cho các doanh nghiệp sản xuất cà phê. Đây là vấn đề mới và thực tế rất cần thiết.
Chính vì những lý do trên mà em đã chọn thực hiện đề tài này.

2. Tình hình nghiên cứu
❖ Ngoài nước
Hệ thống truy xuất nguồn gốc phổ biến ở châu Âu và Mỹ la tinh đặt biệt là các
nước EU và EU cũng đưa ra nhiều quy định cho các nước nhập khẩu vào EU. Chính vì
là một thị trường phát triển ở trình độ cao nên đòi hỏi của người tiêu dùng đối với hàng
hóa nhập khẩu rất khắt khe. Tại đây, giá cả hàng hóa và dịch vụ không phải là yếu tố

được quan tâm nhiều, mà yêu cầu trước hết là chất lượng, mẫu mã, những tiêu chuẩn
liên quan đến bảo vệ môi trường và bảo vệ sức khoẻ người tiêu dùng. Hiện nay, trên thị
trường tất cả các nước thành viên EU, mọi hàng hóa nhập khẩu thường phải được kiểm


tra ngay từ khâu sản xuất tại nước xuất xứ nhằm đảm bảo cho sản phẩm làm ra đáp ứng
được những tiêu chuẩn của thị trường nhập khẩu. Đối với ngành công nghệ thực phẩm
thì ở Australia, Italia, Canada, Mỹ, Tây Ban Nha áp dụng truy xuất nguồn gốc cho các
sản phẩm thịt bò, thịt cừu, các sản phẩm từ thịt heo, cà phê.
Ví dụ mới đây Quỹ Bảo vệ Động vật Hoang dã Thế giới (WWF) tại Australia, Fiji
và New Zealand, phối hợp với nhà đổi mới công nghệ ConsenSys, công ty TraSeable
và công ty chế biến cá ngừ và chế biến cá ngừ đại dương Sea Quest Fiji Ltd. vừa đưa ra
dự án thí điểm đối với cá ngừ Quần đảo Thái Bình Dương, đây là ngành công nghiệp
mà sẽ sử dụng công nghệ blockchain để theo dõi hành trình của cá ngừ từ "khi đánh bắt
đến khi sử dụng".
Malawi đang tìm cách hiện thực hóa điều này, sử dụng công nghệ blockchain làm
nền tảng để truy xuất các chuỗi cung ứng cho các loại trà mà Unilever và chuỗi siêu thị
Anh Sainsbury đang bày bán. IBM và Walmart sử dụng công nghệ blockchain để truy
xuất nguồn gốc thịt lợn trung quốc,...
❖ Trong nước
UBND TP.Hà Nội cũng nêu rõ các giải pháp sẽ được Thành phố tập trung triển
khai. Trong đó, bên cạnh các giải pháp về tham mưu, chỉ đạo và tuyên truyền, tập huấn,
Kế hoạch cũng dự kiến những nội dung công việc nhằm triển khai duy trì và phát triển
hệ thống thông tin điện tử sử dụng mã QR truy xuất nguồn gốc nông sản thực phẩm.
Mới đây tại diễn đàn Nông nghiệp Mùa Xuân 2018 có chủ đề “Đổi mới chuỗi
cung ứng nhằm tăng cường hiệu quả nền nông nghiệp Việt Nam” ngày 24/4 đã đem lại
nhiều bất ngờ thú vị. Điều đặc biệt, 3 tập đoàn của Thái và Công ty Cổ phần Lina
Network đã chọn khuôn khổ Diễn đàn để thực hiện Lễ ký kết biên bản ghi nhớ thỏa
thuận hợp tác ứng dụng Lina Paltform vào chuỗi cung ứng (còn gọi là ứng dụng Lina
Supply Chain/LINA của Công ty Cổ phần Lina Network).

Vào tháng 6 vừa qua, tại một sự kiện khác về blockchain - Vietnam Blockchain
Summit 2018 với chủ đề "Từ công nghệ tới chính sách" - 500 trái xoài ứng dụng công
nghệ blockchain để truy xuất nguồn gốc của HTX Mỹ Xương đã được trình làng.

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 private network.
Tìm hiểu smart contract.
Lập trình một smart contract để thực hiện quản lý thông tin cà phê.
Xây dựng một website hỗ trợ tra cứu và quản lý thông tin cà phê.

− Xây dựng app để xem thông tin cà phê.

4. Đối tượng và phạm vi nghiên cứu
❖ Đối tượng nghiên cứu


− Nền tảng Ethereum blockchain.
− Ngôn ngữ lập trình Solidity để lập trình smart contract.
− Framework Truffle của nodejs để 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 và ứng dụng dựa trên nền tảng blockchain.

5. Phương pháp nghiên cứu
− Nghiên cứu về cách thức làm việc với hệ thống blockchain của Ethereum.
− Tìm hiểu quy trình của sản phẩm cà phê tới người tiêu dung.
− Phân tích dữ liệu để lập trình smart contract trong quản lý.
− Nghiên cứu cách để kết nối website với blockchain.

6. Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện
được
❖ Những đóng góp mới
− Ứng dụng công nghệ blockchain đưa vào thực tiễn, giúp hạn chế việc làm giả
thông tin sản phẩm.
− Đóng góp thêm một giải pháp chống làm giả thông tin sản phẩm, nâng cao an toàn
thông tin sản phẩm.
❖ Những vấn đề chưa thực hiện được
− Chưa lấy được dữ liệu thực tế.
− Hệ thống còn chậm do phụ thuộc vào cấu hình máy tính.

7. Kết cấu của đề tài
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 3 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ề 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ố thư viện và framework mà tác giả đã dùng trong
đề tài.
● Chương 2: Xây dựng hệ thống blockchain dựa trên nền tản Ethereum
Trong chương này tác giả trình bày chi tiết cho người đọc sẽ hiểu cách để tự xây
dựng một hệ thống private network blockchain dựa trên nền tảng Ethereum.
● Chương 3: Xây dựng ứng dụng và website với hệ thống blockchain dựa trên smart
contracts
Trong chương này tác giả nêu một số kiến thức cơ bản của smart contracts,ngôn
ngữ solidity, kết nối smart contracts lên hệ thống blockchain để tạo ra một cơ sở dữ
liệu kết nối với website.
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.


Chương 1:
1.1.

Tổng quan lý thuyết

Tổng quan về blockchain
1.1.1.

Blockchain là gì?

Blockchain sở hữu tính năng vô cùng đặc biệt đó là việc truyền tải dữ liệu không
đòi hỏi một trung gian để xác nhận thông tin. Hệ thống Blockchain tồn tại rất nhiều

nút độc lập có khả năng xác thực thông tin mà không đòi hỏi “dấu hiệu của niềm tin”.
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ị đánh cắp 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.
Blockchain sở hữu tính năng vô cùng đặc biệt đó là việc truyền tải dữ liệu không
đòi hỏi một trung gian để xác nhận thông tin. Hệ thống Blockchain tồn tại rất nhiều
nút độc lập có khả năng xác thực thông tin mà không đòi hỏi “dấu hiệu của niềm tin”.
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ị đánh cắp 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]fydyvcc
1.1.2.

Ý tưởng ra đời

Bắt nguồn từ bài toán Các vị tướng Byzantine (Byzantine Generals) trong
ngành khoa học máy tính và xử lý đường truyền tin cậy trong một hệ thống phân cấp.
Nội dung bài toán mô tả: Một đạo quân đi chiếm thành và các vị tướng nằm ở
nhiều vị trí khác nhau. Trong đó có N tướng trung thành muốn chiếm thành và M
tướng phản bội muốn rút binh, một tướng phản bội truyền tin cho một nhóm là tấn
công và truyền tin cho nhóm khác là rút binh. Vậy làm sao để các tướng có thể nhất
quán thông tin và cùng nhau chiếm thành? Chỉ cần một sơ xuất trong việc truyền tin
có thể khiến cả đạo quân có thể bị tiêu diệt. [2]


Hình 1.1: Ý tưởng ra đời blockchain. [2]


Đây là ý tưởng mở đầu cho một hệ thống Blockchain có thể giúp các vị tướng
tin tưởng nhau hơn.
Sau cuộc khủng hoảng tài chính năm 2008, hệ thống tài chính Mỹ sụp đổ hoàn
toàn khiến người dân đánh mất niềm tin vào đồng tiền của một bên thứ ba đáng tin
cậy. Ý tưởng về Bitcoin – một đồng tiền phân cấp ngang hàng trên mạng máy tính
lần đầu tiên được Satoshi Nakamoto đưa ra, cũng là ứng dụng đầu tiên của
Blockchain.
1.1.3.

Phân loại blockchain
Hệ thống Blockchain chia thành 3 loại chính:

- Public: Bất kỳ ai cũng có quyền đọ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 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ì chi
phí khá cao. Ví dụ: Bitcoin, Ethereum…
- Private: Người dùng chỉ được quyền đọc dữ liệu, không có quyền ghi vì điều
này thuộc về bên tổ chức thứ ba tuyệt đối tin cậy. Tổ chức 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 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: Hay còn gọi là Consortium, một dạng của Private 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
và “niềm tin tuyệt đối” khi tham gia vào Private. 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. [2]


1.1.4.


Cơ chế đồng thuận trong blockchain

Cơ chế đồng thuận trong Blockchain có thể hiểu như cách thức mà các vị tướng
Byzantine có thể đạt đồng thuận để cùng nhau chiếm thành. Sau đây là các loại cơ chế
đồng thuận phổ biến:
- Proof of Work (Bằng chứng Công việc): Phổ biến trong Bitcoin, Ethereum,
Litecoin, Dogecoin và hầu hết các loại tiền mã hoá. Tiêu tốn khá nhiều năng lượng
điện.
- Proof of Stake (Bằng chứng Cổ phần): Phổ biến trong Decred, Peercoin và trong
tương lai là Ethereum và nhiều loại tiền mã hoá khác. Phân cấp hơn, tiêu hao ít năng
lượng và không dễ gì bị đe doạ.
- Delegated Proof-of-Stake (Uỷ quyền Cổ phần): Phổ biến trong Steemit, EOS,
BitShares. Chi phí giao dịch rẻ; có khả năng mở rộng; hiệu suất năng lượng cao. Tuy
nhiên vẫn một phần hơi hướng tập trung vì thuật toán này lựa chọn người đáng tin cậy
để uỷ quyền.
- Proof of Authority (Bằng chứng Uỷ nhiệm): Đây là mô hình tập trung thường
thấy trong POA.Network, Ethereum Kovan testnet. Hiệu suất cao, có khả năng mở
rộng tốt.
- Proof-of-Weight (Bằng chứng Khối lượng / Càng lớn càng tốt): Phổ biến trong
Algorand, Filecoin. Có thể tuỳ chỉnh và khả năng mở rộng tốt. Tuy nhiên quá trình
thúc đẩy việc phát triển sẽ là một thử thách lớn.
- Byzantine Fault Tolerance (Đồng thuận chống gian lận / Tướng Byzantine bao
vây Blockchain): Phổ biến trong Hyperledger, Stellar, Dispatch, và Ripple. Năng suất
cao; chi phí thấp; có khả năng mở rộng. Tuy nhiên vẫn chưa thể tin tưởng hoàn toàn.
Thuật toán này có 2 phiên bản là:
- Practical Byzantine Fault Tolerance (Đồng thuận chống gian lận / Tướng
Byzantine bao vây Blockchain trong thực tế)
Federated Byzantine Agreement (Liên minh Byzantine cùng đồng thuận)
Directed Acyclic Graphs (Thuật toán tô pô): Thường thấy trong Iota (công nghệ

Tangle), Hashgraph, Raiblocks/Nano (công nghệ Block-lattice), là một đối thủ của
Blockchain. [2]
1.1.5.

Đặc điểm chính 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 toà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ê toàn bộ lịch sử trên địa chỉ đó.
Hợp đồng Thông minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code ifthis-then-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba. [1]
1.1.6.

Tương lai của blockchain

Sự xuất hiện của Blockchain cũng như các cột mốc khi máy tính cá nhân hoặc
Internet ra đời, hệ thống này sẽ thay đổi cách mà chúng ta hiểu biết và nhìn nhận xã
hội.
Thông tin trong Blockchain không thể bị làm giả (có thể nhưng vẫn sẽ để lại dấu
vết), mọi thay đổi cần phải nhận được sự đồng thuận của tất cả các nút tham gia trong
hệ thống. Nó là một hệ thống không dễ dàng sụp đổ, vì ngay cả khi một phần mạng
lưới tê liệt thì các nút khác vẫn sẽ tiếp tục hoạt động để bảo vệ thông tin.
Công nghệ Blockchain mở ra một xu hướng mới cho các lĩnh vực như truy xuất

nguồn gốc sản phẩm ,tài chính ngân hàng, logistics, điện tử viễn thông, kế toán kiểm
toán…
Hiện nay có rất nhiều công ty và tập đoàn lớn đang xây dựng mạng lưới
Blockchain cho riêng mình. Vì thế chúng ta sẽ sớm thấy điều này có thể tạo ra một
làn sóng cho tương lai. [2]
1.2.

Tổng quan về Ethereum
1.2.1.

Ethereum là gì? [3]

● 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à coin 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

● Ether
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.
● 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.
● 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ữ Turing-complete khác nhau.
● Tài khoản
Mỗi tài khoản Ethereum được đại diện bởi 20 ký tự. Các thông số sau được
lưu trong dữ liệu trạng thái (state) của Ethereum cho mỗi tài khoản:
- Số nonce, để đảm bảo mỗi giao dịch chỉ được xử lý một lần.
- Số dư tài khoản
- Mã nguồn hợp đồng (nếu có)
- Phần lưu trữ của tài khoản (mặc định là trống)
Có hai loại tài khoản: Tài khoản ngoại vi được quản lý bởi khóa riêng tư, và
tài khoản hợp đồng được quản lý bởi mã hợp đồng. Tài khoản ngoại vi không chứa
mã hợp đồng, có thể gửi thông điệp đi bằng cách tạo và ký kết một giao dịch, giống
như tài khoản Bitcoin. Về phía tài khoản hợp đồng, mỗi khi nó nhận được 1 thông
điệp, mã hợp đồng sẽ chạy và cho phép đọc và ghi vào phần lưu trữ của nó, kèm

theo việc gửi thông điệp đi và tạo ra hợp đồng khác lần lượt.
1.2.3.

Ứng dụng

Ethereum (ETH) là một loại cryptocurrency mới tương tự như Bitcoin. Nhưng
Ethereum không đơn thuần chỉ là một loại tiền tệ. Ethereum là một nền tảng điện toán
có tính chất phân tán, công cộng, mã nguồn mở dựa trên công nghệ Blockchain. Mục
tiêu của Ethereum hướng tới là tạo ra một nền tảng blockchain cho các lập trình viên
tạo ra các ứng dụng kết nối với smart contracts nhằm giải quyết mọi số vấn đề cần
thiết cho cuộc sống.


1.3.

Tổng quan về smart contracts
1.3.1.

Smart contracts là gì?

− 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
chúng 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.

Ý tưởng ra đời Smart Contract?


Ý tưởng này ban đầu được đưa ra bởi nhà khoa học máy tính và viết mật mã
Nick Szabo vào năm 1994.
Ông đã nêu ra những nguyên tắc hoạt động chính, nhưng ở thời điểm ấy thì vẫn
chưa có đủ phương tiện và môi trường thích hợp để hiện thực hóa tất cả. Thế nhưng
mọi chuyện đã thay đổi với sự ra đời và phát triển của công nghệ Blockchain.
Bitcoin đã đặt ra những nền tảng cơ bản cho việc thiết lập hợp đồng trên
Blockchain. Tuy nhiên, nó vẫn chưa thể thỏa mãn mọi yêu cầu. Chỉ đến khi Ethereum
xuất hiện thì ý tưởng smart contract mới được phổ biến đến cho mọi người dùng, cung
cấp cho ta thêm một phương thức mới để thiết lập hợp đồng. [4]
1.3.3.

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.
Chúng 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 node
hoạt động trên nền tảng đó.


Hình 1.2: Nguyên lý hoạt động smart contracts. [4]

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
1.3.4.

Các thành phần của smart contracts


-

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.5.

Lợi ích

-

Tính bảo mật :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.


-

Hiệu quả về kinh tế và nhanh gọn: 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.

-

Tiêu chuẩn hóa: Hiện đã xuất hiện một loạt các hình thức smart contract khác nhau.
Người dùng có thể chọn ra một kiểu và thay đổi sao cho phù hợp nhất với nhu cầu
bản thân.


Các ứng dụng phi tập trung

1.4.

1.4.1.
-

Ứng dụng phi tập trung là gì?

Ứng dụng phi tập trung, thường được gọi là dApp (Decentralized App) là một ứng
dụng chạy trên nền tảng blockchain.

Hình 1.3: Ứng dụng phi tập trung. [5]

-

Ứ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.

-

Ứng dụng phi tập trung phụ thuộc vào các hợp đồng thông minh. [5]

1.4.2.

Xây dựng một dApp?

-

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 netword blockchain và
sử dụng hệ thống này để xây dựng dApp.

-

Có tài khoản ví điện tử trong 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à ứng dụng kết nối chúng đến hệ thống

blockchain.

-


1.5.

Giới thiệu về một số phần mềm và thư viện sử dụng trong đề tài
1.5.1.

Phần mềm 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.

Trình soạn thảo và biên dịch smart contract 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úng ta chỉ cần
truy cập vào đường link: là có thể sử dụng.
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. 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.

Framework hỗ trợ triển khai smart contract 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.

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.
1.5.6.

Metamask

Metamask cho phép chúng ta 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.5.7.

Apache

Apache hay là chương trình máy chủ HTTP là một chương trình dành cho máy
chủ đối thoại qua giao thức HTTP. Apache chạy trên các hệ điều hành tương tự như
Linux, Microsoft Windows, Novell Netware và các hệ điều hành khác. Apache đóng
một vai trò tạo ra giao thức kết nối website vs hệ thống.

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 network blockchain.



Chương 2:

Xây dựng hệ thống private network blockchain dựa
trên nền tảng Ethereum

Để xây dựng hệ thống, tác giả chia ra bốn bước sau:





Thiết lập 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
Thử nghiệm

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 môi trường lập
trình và một số thư viện cần thiết. Sau đây là quy trình xây dựng hệ thống.
2.1.

Cài đặt môi trường lập trình và một số thư viện cần thiết

2.1.1.

Cài đặt môi trường Ethereum

Để cài đặt phần mềm này trên hệ điều hành Ubuntu: Ta có thể cài đặt bằng package
management (apt) của Ubuntu [6]
Cách cài đặt này khá đơn giản, từ terminal của Ubuntu ta gõ 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.2.

Chạy thử geth

Sau khi cài đặt thành công,ta bắt đầu chạy thử. Từ cửa sổ terminal, ta gõ lệnh:
geth version //để kiểm tra phiên bạn
geth //để chạy thử

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

− 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: [7]
{
"nonce": "0x0000000000000042",
"mixhash":
"0x000000000000000000000000000000000000000000000000000000000
0000000",
"difficulty": "0x400",


"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":
"0x000000000000000000000000000000000000000000000000000000000
0000000",
"extraData":
"0x436861696e536b696c6c732047656e6573697320426c6f636b",
"gasLimit": "0xffffffff",
"config": {
"chainId": 8,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}

Trong file này, ta chỉ cần chú ý chainId 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. 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 chúng 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:
[7]
mkdir ~/PrivateChain/Miner1

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

Sau khi khởi tạo thành công 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 chúng ta, còn thư mục keystore.



×