1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứ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

57 102 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 2,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 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 smar

Trang 1

- -

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

Trang 2

- -

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

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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

Từ viết tắt Tiếng Anh Tiếng Việt

Trang 10

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

Trang 11

 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

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

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ữ Turing-complete 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

Trang 16

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

Trang 17

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: https://remix.ethereum.org/ 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

Trang 18

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: https://github.com/ethereum/web3.js

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

Trang 19

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:

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: https://geth.ethereum.org/downloads/

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

Hệ thống blockchain

Miner 1

Account 1 Account 2

Miner 2

Account 1 Account 2

Miner 3

Account 1 Account 2

Trang 20

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

Trang 21

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

Trang 22

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":

"0x0000000000000000000000000000000000000000000000000000000000000000",

"extraData":

"0x436861696e536b696c6c732047656e6573697320426c6f636b", "gasLimit": "0xffffffff",

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:

Trang 23

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

Trang 24

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

Trang 25

geth identity "miner1" networkid 8 datadir

"~/PrivateChain/miner1" mine targetgaslimit

'9000000000000' rpc rpcapi "db,eth,net,web3,personal" -rpcport "8545" unlock 0 password

Để 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

Trang 26

Hình 2.9 – Console để điều khiển miner

Để gửi 10 Ether từ tài khoản thứ nhất đến tài khoản thứ hai, dùng lệnh:

eth.sendTransaction({from: eth.accounts[0], to:

eth.accounts[1], value: web3.toWei(10, "ether")})

Console sẽ xuất ra giá trị hash của cuộc giao dịch

Trang 27

Hình 2.10 – Thông tin trả về của một giao dịch trên miner

Vì trước khi thực hiện giao dịch, tác giả đã tạm cho ngừng việc đào nên ta có thể xem danh sách các cuộc giao dịch đang đợi được thực hiện bằng lệnh:

eth.pendingTransactions

Ta có thể thấy các giá trị như địa chỉ người gửi, người nhận, số ethers cần gửi…

Hình 2.11 – Danh sách các giao dịch đang chờ được thực hiện

Sau khi cho miner tiếp tục đào, ta sẽ thấy giao dịch được thực hiện và không còn giao dịch nào nữa đang ở trạng thái đợi Đồng thời, trong số dư trong tài khoản thứ hai đã có 10 Ether

Như vậy là miner đầu tiên của hệ thống đã được thiết lập và cài đặt thành công, trong các bước tiếp theo, tác giả sẽ tạo thêm miner và kết nối chúng lại với nhau

2.4 Kết nối và đồng bộ các miner với nhau

Sau khi thiết lập thành công miner1, tác giả sẽ tạo thêm một miner nữa để thử giao dịch giữa miner

Trang 28

Quá trình tương tự như việc tạo miner1, miner2 cũng được khởi tạo từ file genesis.json, tuy nhiên việc tạo một file script để chạy miner2 sẽ có một số thông số được thay đổi Cụ thể là các thông số sau:

Identity: tên của miner2

Datadir: đường dẫn đến thư mục chứa dữ liệu của miner2

Rpcport: một giá trị khác với port number của miner1

Port: nếu không khai báo thì mặc đinh của port sẽ là 30303, port của các miner phải khác nhau

Password: đường dẫn đến file password.sec của miner2

Như vậy, file startminer.sh của miner2 sẽ như sau:

geth identity "miner2" networkid 8 datadir

"~/PrivateChain/miner2" mine targetgaslimit

'9000000000000' rpc rpcapi "db,eth,net,web3,personal" -rpcport "8546" port 30304 unlock 0 password

Hình 2.12 – Thông tin enode của một miner

Sau khi có thông tin enode của từng miner, ta sẽ tạo một file static-nodes.json, file này sẽ lưu thông tin của hai miner để hai miner có thể kết nối với nhau Ta sẽ copy thông tin enode của từng miner, thay thế đoạn [::] của enode thành địa chỉ ip của máy tính và

bỏ đi đoạn ?discport=0, từng thông tin của miner cách nhau bằng dấu phẩy và tất cả đều được đặt trong cặp dấu ngoặc vuông File static-nodes.json:

Ngày đăng: 25/07/2020, 10:43

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] 50+ ví dụ về cách ứng dụng công nghệ Blockchain phủ sóng mọi mặt của thế giới, ngày truy cập 10/04/2018, https://coin68.com/50-vi-du-ve-cach-blockchain-dan-phu-song-moi-mat-tren-the-gioi/ Link
[2] Thử nghiệm truy xuất nguồn gốc xoài Cát Chu trên nền tảng blockchain, người tiêu dùng 5 châu đều dễ dàng truy xuất nguồn gốc, ngày truy cập 12/07/2018, https://ictnews.vn/internet/blockchain/thu-nghiem-truy-xuat-nguon-goc-xoai-cat-chu-tren-nen-tang-blockchain-nguoi-tieu-dung-5-chau-deu-de-dang-truy-xuat-nguon-goc-168419.ict Link
[3] Create a private Ethereum blockchain with IoT devices (1/6), ngày truy cập 04/05/2018, http://chainskills.com/2017/02/24/create-a-private-ethereum-blockchain-with-iot-devices-16/ Link
[4] Set up the private chain – miners (3/6), ngày truy cập 15/05/2018, http://chainskills.com/2017/03/10/part-3-setup-the-private-chain-miners/ Link
[5] Pair the miners (4/6), ngày truy cập 28/05/2018, http://chainskills.com/2017/03/17/pair-the-miners-46/ Link
[6] Ethereum Development Walkthrough (Part 1: Smart contracts), ngày truy cập 05/07/2018, https://hackernoon.com/ethereum-development-walkthrough-part-1-smart-contracts-b3979e6e573e Link
[7] Ethereum Development Walkthrough (Part 2: Truffle, Ganache, Geth and Mist), ngày truy cập 23/07/2018, https://hackernoon.com/ethereum-development-walkthrough-part-2-truffle-ganache-geth-and-mist-8d6320e12269 Link
[8] Ethereum Development Walkthrough (Part 5: Making a DApp), ngày truy cập 3/08/2018 https://hackernoon.com/ethereum-development-walkthrough-part-5-making-a-DApp-4c2a3bbcd5e5 Link

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w