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

Tim_Hieu_Ethereum Dapp.pdf

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 (1.8 MB, 55 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TỒN THƠNG TIN

BÁO CÁO MƠN HỌC

CƠNG NGHỆ BLOCKCHAIN
Đề tài:

TÌM HIỂU VỀ ETHEREUM DAPP
Sinh viên thực hiện

: Bùi Thị Phương Duyên - AT160410
Nguyễn Thị Thảo Hiền - AT160418
Phạm Tiến Dũng - AT160409
Nguyễn Văn Trường - AT160451
Đỗ Duy Tùng - AT160455
Trần Văn Nam - AT160632
Trình Thị Xuân - AT160460
Nguyễn Văn Đức - AT160315

Giảng viên hướng dẫn : Th.S Trương Phi Hồ

Hà Nội - 2023
i


LỜI MỞ ĐẦU

Trong thời đại công nghệ kỹ thuật phát triển như hiện nay, công nghệ
Blockchain là một trong những phát minh kỹ thuật đáng chú ý nhất vào thế kỷ 21.
Ban đầu, blockchain được sử dụng để tạo ra tiền điện tử, với Bitcoin là ví dụ điển


hình nhất. Tuy nhiên, công nghệ này đã phát triển rất nhanh chóng trong những
năm gần đây, với nhiều ứng dụng mới được tạo ra như Ethereum, Ripple, Litecoin
và nhiều loại tiền điện tử khác.
Blockchain cũng đã được sử dụng trong các ứng dụng phi tập trung
(decentralized applications - DApps), cung cấp một nền tảng cho các ứng dụng có
tính bảo mật cao và độ tin cậy cao. Điều này đã mở ra một thế giới mới cho các
ứng dụng có thể giải quyết các vấn đề phức tạp một cách đáng tin cậy và minh
bạch hơn. Chính vì lẽ đó, báo cáo sau nhằm mục đích cung cấp cho chúng ta một
cái nhìn thổng quan về cơng nghệ Blockchain, Ethereum cũng như DApps. Cùng
với sự hướng dẫn của giảng viên thầy Trương Phi Hồ, nhóm em thực hiện báo cáo
với nội dung ba chương như sau:
Chương 1: Tổng quan về hệ sinh thái Ethereum
Chương 2: Tổng quan về Smart Contract và Solidity
Chương 3: Các chuẩn Token Ethereum
Chương 4: Giới thiệu về DApps

ii


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

Từ viết tắt

Tiếng Anh

Tiếng Việt

EVM

Ethereum Virtual Machine


Máy ảo Ethereum

EOA

Externally Owned Account

Tài khoản thuộc sở hữu bên ngồi

PC

Program Counter

Bộ đếm chương trình

PoW

Proof-of-Work

Thuật tốn đồng bộ hóa trong
mạng lưới blockchain

ASIC

HTTP

Application-Specific

Mạch tích hợp đặc thù cho ứng


Integrated Circuit

dụng

Hyper Text Transfer

Giao thức truyền tải siêu văn bản

Protocol
NFT

Non-Fungible Token

Token phi tương đồng

DAO

Decentralized Autonomous

Mơ hình kinh doanh khơng phân

Organization

cấp

Distributed Ledger

Cơng nghệ sổ cái phân tán

DLT


Technology
ERC

IDE

Ethereum Request for

Chuẩn giao thức trên nền tảng

Comments

Ethereum

Integrated Development

Mơi trường phát triển tích hợp

Environment
ABI

Chuẩn giao tiếp ứng dụng

Application Binary
Interface

DEX

Decentralized Exchanges


Nền tảng giao dịch phi tập trung

DeFi

Decentralized Finance

Tài chính phi tập trung

ICO

Initial Coin Offering

Một hình thức huy động vốn

PoS

Proof-of-Stake

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

NFT

Non-fungible token

Token không thể thay thế
iii


IEO


Initial Exchange Offering

Được xem là một hình thức ICO
cải tiến

STO

Hình thức gọi vốn mới tương tự

Security Token Offering

ICO
DAPP

Decentralized Application

Một dạng ứng dụng phi tập trung

P2P

peer-to-peer

Mạng ngang hàng

IPFS

InterPlanetary File System

Giao thức mạng phân tán giúp lưu

trữ tài nguyên, hệ thống tệp liên
hành tinh

iv


DANH MỤC HÌNH ẢNH

Hình 1.1. State Machine ....................................................................................... 4
Hình 1.2. Mơ hình sự lựa chọn sử dụng máy tính thế giới .................................. 5
Hình 1.3. Blockchain và State Machine ............................................................... 6
Hình 1.4. Mơ hình EVM ...................................................................................... 6
Hình 1.5. Quy trình Block State ........................................................................... 7
Hình 1.6. Các loại giao dịch Smart Contract ....................................................... 9
Hình 1.7. Giao dịch Smart Contract ..................................................................... 9
Hình 1.8. Ví dụ thực thi mã lệnh ........................................................................ 10
Hình 1.9. Ví dụ về mơ hình GAS ....................................................................... 11
Hình 1.10. Oracle Contract ................................................................................ 13
Hình 1.11. Mơ hình DAO .................................................................................. 15
Hình 1.12. Mơ hình kiến trúc mạng của Ethereum ............................................ 15
Hình 1.13. Geth client đi kèm 6 các ngang hàng được mã hóa cứng ................ 17
Hình 3.1. Quy tắc bắt buộc trong chuẩn ERC-20 .............................................. 29
Hình 3.2. Quy trình phê duyệt và chuyển từ hai bước của mã thơng báo ERC20.30
Hình 3.3. So sánh hai chuẩn ERC-20 và ERC-223............................................ 33
Hình 3.4. Đặc tả giao diện hợp đồng ERC-223 ................................................. 33

v


MỤC LỤC


LỜI MỞ ĐẦU ....................................................................................................... ii
DANH MỤC CÁC TỪ VIẾT TẮT ..................................................................... iii
DANH MỤC HÌNH ẢNH .................................................................................... v
MỤC LỤC ............................................................................................................ vi
CHƯƠNG 1: TỔNG QUAN VỀ HỆ SINH THÁI ETHEREUM ........................ 1
1.1. Giới thiệu về Ethereum .............................................................................. 1
1.2. Kiến trúc hệ thống của Ethereum ............................................................... 3
1.2.1. Khái niệm về một máy tính thế giới.................................................... 3
1.2.2. EVM .................................................................................................... 6
1.2.3. Accounts .............................................................................................. 7
1.2.4. Blockchain Properties ....................................................................... 11
1.2.5. Smart Contracts ................................................................................. 12
1.3. Kiến trúc mạng của Ethereum và vai trò các node .................................. 15
1.3.1. Các loại nút........................................................................................ 16
1.3.2. Các triển khai Ethereum phổ biến ..................................................... 16
CHƯƠNG 2: TỔNG QUAN VỀ SMART CONTRACT VÀ SOLIDITY ........ 18
2.1. Smart contract .......................................................................................... 18
2.1.1. Khái niệm .......................................................................................... 18
2.1.2. Mục đích của smart contracts trong Blockchain là gì? ..................... 18
2.1.3. Smart contract hoạt động như thế nào trong Blockchain? ................ 18
2.1.4. Các đặc điểm của smart contract....................................................... 19
2.1.5. Ưu nhược điểm của smart contract ................................................... 20
2.2. Solidity ..................................................................................................... 21
2.2.1. Khái niệm .......................................................................................... 21
2.2.2. Hoạt động của Solidity ...................................................................... 22
2.2.3. Kiểu dữ liệu và công cụ hỗ trợ trong ................................................ 22
2.2.4. Công cụ hỗ trợ ................................................................................... 22
2.2.5. Các tiêu chuẩn và code logic trong Solidity ..................................... 23
2.2.6. Cấu trúc cơ bản của Solidity ............................................................. 23

2.2.7. Tính năng nổi bật của Solidity .......................................................... 23
2.2.8. Thực thi code Solidity ....................................................................... 24
vi


2.2.9. Ưu và nhược điểm của ngơn ngữ lập trình Solidity .......................... 24
2.2.10. Ứng dụng của Solidity trong thực tế ............................................... 25
CHƯƠNG 3: CÁC CHUẨN TOKEN ETHEREUM ......................................... 26
3.1. Token ........................................................................................................ 26
3.1.1. Khái niệm Token ............................................................................... 26
3.1.2. Các ứng dụng của Token................................................................... 26
3.1.3. Một số đặc điểm của Token .............................................................. 27
3.1.4. Phân loại Token................................................................................. 27
3.2. Các chuẩn Token trong Ethereum ............................................................ 28
3.2.1. ERC-20 .............................................................................................. 28
3.2.2. ERC-223 ............................................................................................ 32
3.2.3. ERC-721 ............................................................................................ 34
3.2.4. ERC-777 ............................................................................................ 36
3.3. Một số vấn đề khi sử dụng Token ............................................................ 39
3.4. Token và ICO ........................................................................................... 40
CHƯƠNG 4: GIỚI THIỆU VỀ DAPP ............................................................... 41
4.1. Khái niệm Dapp ....................................................................................... 41
4.2. Backend .................................................................................................... 42
4.3. Frontend ................................................................................................... 43
4.4. Data Storge ............................................................................................... 43
4.4.1. IPFS ................................................................................................... 44
4.4.2. SWARM ............................................................................................ 44
4.5. Decentralized Message Communicatinns Protocol ................................. 45
4.6. Ưu điểm .................................................................................................... 45
4.7. Nhược điểm .............................................................................................. 46

TÀI LIỆU THAM KHẢO ................................................................................... 48

vii


CHƯƠNG 1: TỔNG QUAN VỀ HỆ SINH THÁI ETHEREUM

1.1. Giới thiệu về Ethereum
Khái niệm
Từ góc độ khoa học máy tính, Ethereum là một máy trạng thái (state machine)
xác định nhưng thực tế không giới hạn, bao gồm một trạng thái đơn lẻ có thể truy
cập tồn cầu và một máy ảo áp dụng các thay đổi cho trạng thái đó.
Từ góc độ thực tế hơn, Ethereum là một cơ sở hạ tầng điện tốn phi tập trung
tồn cầu, mã nguồn mở thực thi các chương trình được gọi là hợp đồng thơng
minh. Nó sử dụng một chuỗi khối để đồng bộ hóa và lưu trữ các thay đổi trạng
thái của hệ thống, cùng với một loại tiền điện tử có tên là ether để đo lường và
hạn chế chi phí tài nguyên thực thi.
Nền tảng Ethereum cho phép các nhà phát triển xây dựng các ứng dụng phi
tập trung với các chức năng kinh tế tích hợp. Trong khi cung cấp tính sẵn sàng
cao, khả năng kiểm tra, tính minh bạch và tính trung lập, nó cũng làm giảm hoặc
loại bỏ kiểm duyệt và giảm rủi ro đối tác nhất định.
Sự ra đời của Ethereum
Ethereum được hình thành vào thời điểm mọi người nhận ra sức mạnh của
mơ hình Bitcoin và đang cố gắng vượt ra ngoài các ứng dụng tiền điện tử. Nhưng
các nhà phát triển phải đối mặt với một câu hỏi hóc búa: họ cần xây dựng dựa trên
Bitcoin hoặc bắt đầu một chuỗi khối mới. Xây dựng dựa trên Bitcoin có nghĩa là
sống trong những hạn chế có chủ ý của mạng và cố gắng tìm giải pháp thay thế.
Vào tháng 12 năm 2013, Vitalik Buterin bắt đầu chia sẻ một phác thảo ý tưởng
đằng sau Ethereum: một chuỗi khối có mục đích chung, hồn chỉnh của Turing.
Tiến sĩ Gavin Wood là một trong những người đầu tiên liên hệ với Vitalik và đề

nghị giúp đỡ về kỹ năng lập trình C++ của anh ấy. Gavin Wood trở thành người
đồng sáng lập, nhà viết mã và CTO của Ethereum.

1


Gavin cũng có thể được ghi nhận phần lớn vì sự thay đổi tinh tế trong tầm
nhìn từ việc xem Ethereum như một nền tảng để xây dựng tiền có thể lập trình,
với các hợp đồng dựa trên chuỗi khối có thể chứa và chuyển giao tài sản kỹ thuật
số chúng theo các quy tắc được thiết lập trước, theo một cách chung - nền tảng
tính tốn mục đích. Điều này bắt đầu với những thay đổi tinh tế trong sự nhấn
mạnh và thuật ngữ, và sau đó ảnh hưởng này đã trở thành mạnh mẽ hơn với sự
nhấn mạnh ngày càng tăng vào nhóm “Web 3”, coi Ethereum là một phần của bộ
công nghệ phi tập trung, hai phần còn lại là Whisper và Swarm. Bắt đầu từ tháng
12 năm 2013, Vitalik và Gavin đã tinh chỉnh và phát triển ý tưởng, cùng nhau xây
dựng lớp giao thức trở thành Ethereum. Những người sáng lập Ethereum đã nghĩ
về một chuỗi khối khơng có mục đích cụ thể, có thể hỗ trợ nhiều loại ứng dụng
bằng cách được lập trình. Ý tưởng là bằng cách sử dụng một chuỗi khối có mục
đích chung như Ethereum, nhà phát triển có thể lập trình ứng dụng cụ thể của họ
mà khơng cần phải triển khai các cơ chế cơ bản của mạng ngang hàng, chuỗi khối,
thuật toán đồng thuận, v.v.
Nền tảng Ethereum được thiết kế để trừu tượng hóa các chi tiết này và cung
cấp một mơi trường lập trình xác định và an toàn cho các ứng dụng chuỗi khối phi
tập trung. Giống như Satoshi, Vitalik và Gavin không chỉ phát minh ra một công
nghệ, họ đã kết hợp các phát minh mới với các cơng nghệ hiện có theo một cách
mới lạ và cung cấp mã nguyên mẫu để chứng minh ý tưởng của họ với thế giới.
Những người sáng lập đã làm việc trong nhiều năm, xây dựng và hồn thiện tầm
nhìn. Và vào ngày 30 tháng 7 năm 2015, khối Ethereum đầu tiên đã được khai
thác. Máy tính của thế giới bắt đầu phục vụ thế giới.
Giai đoạn phát triển của Ethereum

+ Khối #0

Frontier: Giai đoạn ban đầu của Ethereum, kéo dài từ 30/7/2015 đến T3/2016
+ Khối #200.000
Ice Age: Một hard fork để giới thiệu độ khó theo cấp số nhân tăng, thúc đẩy
quá trình chuyển đổi sang PoS khi sẵn sàng.
2


+ Khối #1.150.000
Homestead: Giai đoạn thứ hai của Ethereum, ra mắt vào tháng 3 năm 2016.
+ Khối #1.192.000

DAO: Một hard fork hoàn trả cho các nạn nhân của DAO bị tấn công hợp
đồng và khiến Ethereum và Ethereum Classic chia thành hai hệ thống cạnh
tranh.
+ Khối #2.463.000

Tangerine Whistle: Một hard fork để thay đổi cách tính gas cho một số hoạt
động I/O nặng và để xóa trạng thái tích lũy khỏi cuộc tấn công từ chối dịch
vụ (DoS) khai thác chi phí gas thấp của các hoạt động đó.
+ Khối #2.675.000

Spurious Dragon: Một hard fork để giải quyết nhiều cuộc tấn cơng DoS hơn
vectơ và một trạng thái xóa khác. Ngồi ra, một cuộc tấn cơng phát lại cơ chế
bảo vệ.
+ Khối #4.370.000

Metropolis Byzantium: Metropolis là giai đoạn thứ ba của Ethereum, hiện tại
tại thời điểm viết cuốn sách này, được ra mắt vào tháng 10 năm 2017.

Byzantium là giai đoạn đầu tiên trong số hai nhánh cứng được lên kế hoạch
cho Metropolis.
Sau Byzantium, có thêm một hard fork nữa được lên kế hoạch cho Metropolis:
Constantinople. Metropolis sẽ được theo sau bởi giai đoạn cuối cùng của quá
trình triển khai Ethereum, có tên mã là Serenity.
Serenity là giai đoạn cuối cùng của Ethereum (2020 đến nay), còn được gọi
là Ethereum 2.0. Nó đưa Ethereum từ Proof-of-Work sang Proof-of-Stake và
cải thiện tính mở rộng, tốc độ xử lý và tính bảo mật. Ethereum 2.0 cũng giúp
giảm tải và chi phí giao dịch trên mạng Ethereum.
1.2. Kiến trúc hệ thống của Ethereum
1.2.1. Khái niệm về một máy tính thế giới
State Machine
3


Hình 1.1. State Machine

− Các thuộc tính

+ Tất cả những người tham gia đang sử dụng cùng một máy tính
+ Người dùng thực hiện các giao dịch để gọi các chương trình trên máy
tính
+ Mọi người chia sẻ cùng một tài ngun và lưu trữ
+ Máy tính khơng có chủ sở hữu rõ ràng, duy nhất
+ Sử dụng tài nguyên của máy tính tốn tiền
Ví dụ về sự lựa chọn sử dụng máy tính thế giới

4



Hình 1.2. Mơ hình sự lựa chọn sử dụng máy tính thế giới

5


Blockchain như là một State Machine

Hình 1.3. Blockchain và State Machine

1.2.2. EVM
− Máy ảo trong chuỗi khối: Đơn giản, máy ảo (VM) là cơ chế tạo các phiên

bản phần mềm bắt chước máy thật.
− Máy ảo Ethereum (EVM): EVM là máy ảo đầu tiên được đặt trên mạng

chuỗi khối, lần đầu tiên cho phép các lập trình viên tiến hành tính tốn trên
chuỗi khối. Đó là một kiến trúc dựa trên ngăn xếp được thiết kế bởi Vitalik
Buterin, cho phép các nhà phát triển tạo ra ứng dụng phi tập trung (dApps)
trên Ethereum. Tất cả các tài khoản Ethereum và hợp đồng thơng minh được
lưu trữ trên máy ảo này.

Hình 1.4. Mơ hình EVM

6


State Machine
− EVM chỉ định một mơ hình thực thi cho các thay đổi trạng thái của chuỗi

khối.

− Chính thức, EVM có thể được chỉ định bởi bộ dữ liệu sau:

(block state, giao dịch, tin nhắn, mã, bộ nhớ, ngăn xếp, máy tính, gas)
− block_state đại diện cho trạng thái toàn cầu của toàn bộ chuỗi khối bao gồm

tất cả các tài khoản, hợp đồng và lưu trữ

Hình 1.5. Quy trình Block State

1.2.3. Accounts
Các loại tài khoản Ethereum
So với Bitcoin, Ethereum sử dụng sổ cái dựa trên tài khoản. Mỗi địa chỉ
riêng biệt đại diện cho một tài khoản riêng biệt, duy nhất.
Ethereum hỗ trợ hai loại tài khoản:
− Tài khoản được kiểm sốt bằng khóa riêng và được sở hữu bên ngoài

+ Loại tài khoản này được gọi là “Tài khoản thuộc sở hữu bên ngoài”
(EOA).
+ Các tài khoản được kiểm sốt bởi khóa riêng khơng có bất kỳ mã nào
được lưu trữ trên chuỗi khối. Loại này có thể được coi là ví mặc định
của người dùng. Nó có thể ký giao dịch, phát hành thơng minh
+ chức năng hợp đồng gọi và gửi Ether từ tài khoản này sang tài khoản
khác.

7


+ Nguồn gốc của bất kỳ giao dịch nào luôn là một tài khoản được kiểm
sốt bởi khóa riêng.
− Tài khoản hợp đồng thơng minh được kiểm sốt bằng mã của họ


+ Hợp đồng thông minh được coi là thực thể tài khoản có địa chỉ riêng,
duy nhất.
+ Hợp đồng có thể gửi tin nhắn đến các tài khoản khác, cả hợp đồng được
kiểm sốt bên ngồi và hợp đồng thông minh.
+ Họ không thể tự phát hành giao dịch.
+ Chúng có bộ nhớ trong liên tục để đọc và viết.
Thuộc tính tài khoản
Ở mức độ trừu tượng, tài khoản Ethereum là một bộ 4 chứa dữ liệu sau:
(nonce, balance, contract_code, storage)
− Nonce: Một số ngày càng tăng được đính kèm với bất kỳ giao dịch nào để

ngăn chặn các cuộc tấn công lặp lại.
− Số dư: Số dư tài khoản hiện tại của tài khoản bằng Ether.
− Mã hợp đồng: Biểu diễn mã byte của tài khoản. Nếu không có mã hợp đồng,

thì tài khoản được kiểm sốt bên ngoài.
− Bộ nhớ: Bộ nhớ dữ liệu được sử dụng bởi tài khoản và trống theo mặc định.

Chỉ các tài khoản hợp đồng mới có thể có bộ nhớ riêng.
Giao dịch
Giao dịch là gói dữ liệu đã ký ln được gửi bởi EOA và chứa dữ liệu sau:
− Người nhận giao dịch
− Chữ ký xác định người gửi
− Lượng ether chuyển từ người gửi sang người nhận.
− Trường dữ liệu tùy chọn – trường dữ liệu được sử dụng cho các đối số gọi

hàm (ví dụ: đầu vào hàm)
− Giá trị GASLIMIT1, thể hiện lượng gas tối đa bạn sẵn sàng tiêu thụ trong


một giao dịch
8


− Giá trị GASPRICE, biểu thị phí mà người gửi trả cho mỗi bước tính tốn
− Có hai loại giao dịch: Từ EOA sang EOA và từ EOA sang hợp đồng thơng

minh

Hình 1.6. Các loại giao dịch Smart Contract

Thơng điệp
Một thông điệp rất giống với một giao dịch. Thông điệp chỉ được gửi theo
hợp đồng và chỉ tồn tại ảo, tức là chúng không được khai thác thành một khối
giống như giao dịch.
Một thơng điệp có chứa:
− Người gửi tin nhắn (ngầm)
− Người nhận tin nhắn
− Lượng ether để chuyển cùng với tin nhắn
− Một trường dữ liệu tùy chọn
− Giá trị GASLIMIT

Bất cứ khi nào một hợp đồng gọi một phương thức trên hợp đồng khác, một thông
báo ảo sẽ được gửi.
Bất cứ khi nào EOA gọi một phương thức trên hợp đồng, một giao dịch sẽ được
gửi.

Hình 1.7. Giao dịch Smart Contract

Mã & Bộ nhớ

− Mã số: Mã này về cơ bản đại diện cho một hợp đồng thông minh dưới dạng

mã byte. Đối với EVM, một hợp đồng thông minh là một dãy các opcode
tương tự như mã hợp ngữ.
9


Ví dụ:
PUSH1 0x60
PUSH1 0x40
MSTORE
PUSH1 0x04
CALLDATASIZE
LT
PUSH2 0x00b6
JUMPI
PUSH4 0xffffffff
− Bộ nhớ

Một mảng byte có thể mở rộng vơ hạn, khơng liên tục và được sử dụng làm bộ
lưu trữ tạm thời trong quá trình thực hiện.
Bộ đếm ngăn xếp và chương trình
− Ngăn xếp: cũng được sử dụng như một bộ đệm nhanh, khơng liên tục mà

các giá trị 32byte có thể được đẩy và bật trong khi thực thi.
− PC viết tắt của “bộ đếm chương trình”. Bộ đếm chương trình ln được

khởi tạo bằng 0 và trỏ đến vị trí của lệnh opcode hiện tại.
− Ví dụ thực thi mã lệnh đơn giản:


Hình 1.8. Ví dụ thực thi mã lệnh

Gas
− Mọi lệnh opcode được thực thi đều sử dụng một tài ngun tính tốn của

người khai thác và do đó phải trả một khoản phí nhất định (gọi là gas).
10


− Mỗi opcode sử dụng một lượng gas nhất định có thể phụ thuộc vào các đối

số của hoạt động, ví dụ: số byte được phân bổ.
− Mã tự hủy (địa chỉ) sử dụng khí âm vì nó giải phóng khơng gian khỏi chuỗi

khối.

Hình 1.9. Ví dụ về mơ hình GAS

1.2.4. Blockchain Properties
Ethereum (hiện tại) là một chuỗi khối Proof-of-Work (PoW) giống như
Bitcoin.
− Thuật toán PoW được Ethereum sử dụng có tên là Ethash và được thiết kế

để chống lại ASIC.
− Trong chuỗi khối Ethereum, khi một người khai thác tạo một khối thành

công, họ sẽ được thưởng một mã thông báo kỹ thuật số gọi là “ether”. Người
khai thác dành năng lượng để khai thác và giải một câu đố. Đổi lại, họ nhận
được phần thưởng khối là phí giao dịch + phần thưởng khai thác. Phần
thưởng khai thác là 2 ETH ($5,435 kể từ ngày 25 tháng 2 năm 2022).

− Độ khó khai thác được điều chỉnh sau mỗi khối.
− Các khối được khai thác chính xác vượt trội so với khối của một công cụ

khai thác khác không phải là khối đơn lẻ như trong Bitcoin mà được thêm
vào dưới dạng khối chú.

11


− Ý tưởng đằng sau điều này là để chống lại việc tập trung khai thác vì những

người khai thác khai thác đúng khối vẫn được thưởng.
− Kể từ tháng 1 năm 2022, thời gian khối trung bình của chuỗi khối Ethereum

là 12 đến 14 giây.
− Các giao dịch trong khối chú được coi là không hợp lệ.

1.2.5. Smart Contracts
Hợp đồng thông minh là một tập hợp các chức năng có thể được gọi bởi
người dùng hoặc hợp đồng khác.
− Chúng có thể được sử dụng để thực thi các chức năng, gửi ether hoặc lưu

trữ dữ liệu.
− Mỗi hợp đồng thông minh là một đối tượng nắm giữ tài khoản, tức là có địa

chỉ riêng.
− Hợp đồng thơng minh có một số đặc thù so với phần mềm truyền thống.

Security
Q trình phát triển hợp đồng thơng minh địi hỏi sự chú ý đặc biệt về bảo

mật. Sau khi được triển khai, bất kỳ ai trên mạng đều có thể truy cập công khai
hợp đồng với các thông tin sau:
− Địa chỉ của hợp đồng thông minh
− OPCODE
− Số hàm công khai và chữ ký băm của chúng
− Hơn nữa, có thể truy cập tồn bộ lịch sử giao dịch (gọi hàm + đối số thực

tế).
− Hợp đồng thông minh – một khi đã triển khai – không thể thay đổi hoặc vá

lỗi nữa.
➔ Tất cả các hợp đồng được triển khai trên chuỗi khối Ethereum đều có thể truy
cập công khai và không thể vá lỗi.

12


Thông tin chi tiết ngắn gọn về Hợp đồng thông minh như một hệ thống khép
kín
Hợp đồng thơng minh khơng thể tự mình truy cập bất kỳ dữ liệu nào từ bên
ngồi chuỗi khối. Khơng có HTTP hoặc các phương thức mạng tương tự nào được
triển khai để gọi các dịch vụ bên ngồi. Điều này nhằm mục đích ngăn chặn hành
vi không xác định khi một hàm được gọi (cũng khơng có hàm nào tạo ra các giá
trị ngẫu nhiên).
Hiện tại, cách duy nhất để viết hợp đồng thông minh bằng dữ liệu bên ngồi
(ví dụ: dữ liệu thời tiết, dữ liệu giao thông, v.v.) là sử dụng oracle. Oracle về cơ
bản là các dịch vụ của bên thứ ba xác minh dữ liệu từ các dịch vụ web và ghi dữ
liệu thông qua một hợp đồng thông minh đặc biệt vào chuỗi khối. Các hợp đồng
thông minh khác hiện có thể gọi oracle hợp đồng để lấy dữ liệu.


Hình 1.10. Oracle Contract

Solidity
Thơng thường, các hợp đồng thơng minh không được viết trực tiếp dưới dạng
một chuỗi các lệnh opcode. Solidity là một ngơn ngữ cấp cao có cú pháp giống
như JavaScript và là tiêu chuẩn thực tế để viết các hợp đồng thông minh Ethereum.
Tuy nhiên, không giống như JavaScript, Solidity được gõ tĩnh.
Thuộc tính ngơn ngữ:
− Gõ tĩnh
− Hướng đối tượng
− Hỗ trợ kế thừa
− Các loại phức tạp, do người dùng định nghĩa
− Phương thức công khai & riêng tư

13


− Liên kết động
− Biên dịch thành hướng dẫn opcode EVM

Các trường hợp sử dụng cho hợp đồng thông minh
− Hệ thống mã thơng báo có thể thay thế

Các hệ thống mã thơng báo có thể thay thế hiện là trường hợp sử dụng lớn
nhất cho các hợp đồng thông minh, chủ yếu được sử dụng để thu tiền thông
qua các dịch vụ phát hành tiền mã hóa lần đầu (đợt phát hành đầu tiên hay
chào bán công khai ban đầu của một đồng coin/token. Đây là một hình thức
để nhóm dự án huy động vốn) (ICO). Thơng thường, mã thông báo hoạt
động như một loại tiền tệ phụ của Ethereum và đại diện cho một tài sản nhất
định, chẳng hạn như cổ phiếu. Các ví dụ phổ biến: Tether (USDT), Shiba

Inu (SHIB), Polygon (MATIC)
− Mã thông báo không thể thay thế (NFT)

Ở cấp độ rất cao, NFT là mã thơng báo mã hóa duy nhất được lưu trữ trên
chuỗi khối. Có nhiều loại NFT. Chúng có thể là bất cứ thứ gì kỹ thuật số
như hình vẽ, âm nhạc, phương tiện truyền thơng, mặt hàng thời trang ảo,
v.v.
Ví dụ phổ biến: Bored Ape Yacht Club, CryptoPunks
− Trò chơi chơi để kiếm tiền

Gần đây, hợp đồng thông minh cũng đang được sử dụng trong các trò chơi
chơi để kiếm tiền, nơi người dùng kiếm được mã thông báo gốc trong trị
chơi mà họ có thể sử dụng để mua hoặc giao dịch tài sản trong trị chơi. Ví
dụ phổ biến: Axie Infinity, Decentraland
− Tổ chức tự trị phi tập trung (DAO)

DAO là mơ hình kinh doanh khơng phân cấp được sở hữu chung bởi một
nhóm thành viên. Hãy nghĩ về nó như một dạng tổng qt của ví đa chữ ký
trong đó tất cả các quyết định được đưa ra dựa trên phiếu bầu của các thành
viên.

14


Do đó, khơng một thành viên đơn lẻ nào có thể đưa ra quyết định (ví dụ:
gửi giao dịch). DAO rất hữu ích để bắt đầu một tổ chức với những người
mà bạn có sự tin tưởng hạn chế (ví dụ: chỉ giao tiếp qua internet) vì bạn chỉ
cần tin tưởng vào thiết kế hệ thống và khơng có thành viên nào khác.
Ví dụ phổ biến: BitDAO, Moloch, Maker
Thơng tin chi tiết ngắn gọn về các tổ chức tự trị phi tập trung (DAO)

− Tầm nhìn

+ Tạo một tổ chức kỹ thuật số (ảo) hoàn toàn.
+ Tổ chức độc quyền sử dụng hợp đồng thông minh để tương tác
+ với các cổ đông, nhân viên, khách hàng, nhà cung cấp, đối tác và cơ
quan công quyền.
+ Các bên liên quan này có thể là con người hoặc tổ chức trong
+ “thế giới thực” hoặc các DAO khác.

Hình 1.11. Mơ hình DAO

1.3. Kiến trúc mạng của Ethereum và vai trò các node

Hình 1.12. Mơ hình kiến trúc mạng của Ethereum

15


1.3.1. Các loại nút
− Full nodes

Các nút đầy đủ là nền tảng của mạng Ethereum. Mỗi nút đầy đủ giữ một
bản sao của toàn bộ chuỗi khối và đồng bộ hóa nó với các nút khác. Các
giao dịch phải được gửi đến một nút đầy đủ để phân phối nó giữa những
người tham gia mạng.
− Light nodes

Nút nhẹ là một máy khách được kết nối với một nút đầy đủ để khơng phải
đồng bộ hóa và tải xuống tồn bộ chuỗi khối. Đối với hầu hết những người
riêng tư, các nút ánh sáng là cách tương tác thoải mái nhất với chuỗi khối

Ethereum. Một trong những nút ánh sáng phổ biến nhất là
(luôn kiểm tra ba lần tên miền).
− Solo miner

Công cụ khai thác đơn lẻ là một thực thể cố gắng tự khai thác một khối. Ở
tốc độ băm mạng hiện tại, điều này thực tế là không thể. Tuy nhiên, để khai
thác một khối, cần phải có một bản sao được đồng bộ hóa của tồn bộ chuỗi
khối.
− Mining pools

Nhóm khai thác là một liên minh gồm các thực thể kết hợp sức mạnh băm
của họ để giải quyết vấn đề khai thác. Một nhóm bao gồm một bộ điều
khiển phân chia và phân phối câu đố khai thác giữa những người tham gia.
1.3.2. Các triển khai Ethereum phổ biến
− Nút với Clients

Không phải tất cả các nút Ethereum đều sử dụng cùng một cơ sở mã. Vì
thơng số kỹ thuật cho một nút Ethereum là mã nguồn mở, nên về cơ bản
bất kỳ ai cũng có thể tạo một triển khai khác. Hai triển khai Ethereum chính
là:
− Geth: Việc triển khai Ethereum chính thức và được sử dụng phổ biến nhất.

Geth được triển khai trong Go và cung cấp giao diện dòng lệnh để chạy một
16


nút đầy đủ. Geth đi kèm với bảng điều khiển JavaScript và máy chủ JSON
RPC. Thơng qua đó – nếu được hiển thị công khai – các nút (nhẹ) khác có
thể kết nối với mạng.
− OpenEthereum (trước đây là Parity)


OpenEthereum là một triển khai Ethereum phổ biến khác trong Rust với
mục tiêu trở thành “ứng dụng khách Ethereum nhanh nhất, nhẹ nhất và an
toàn nhất”. OpenEthereum cung cấp giao diện người dùng dựa trên trình
duyệt được coi là một cách rất thân thiện với người dùng để tương tác với
Ethereum. Tuy nhiên, ví đa chữ ký được sử dụng bởi OpenEthereum chịu
trách nhiệm lớn nhất (dựa trên USD) trong lịch sử của Ethereum. Công ty
Parity đã chuyển cơ sở mã Parity và bảo trì sang DAO để cho phép phát
triển liên tục.
Cả Geth và OpenEthereum đều có một danh sách duy trì các ngang hàng mặc định
được mã hóa cứng vào mã nguồn của họ. Nếu khơng, có thể khơng tìm thấy nút
nào và q trình đồng bộ hóa sẽ luôn không thành công.
Geth client đi kèm 6 các ngang hàng được mã hóa cứng

Hình 1.13. Geth client đi kèm 6 các ngang hàng được mã hóa cứng

Khi một nút được chọn, một thông báo xin chào sẽ được gửi để tạo kết nối ban
đầu với nút đó.

17


CHƯƠNG 2: TỔNG QUAN VỀ SMART CONTRACT VÀ SOLIDITY

2.1. Smart contract
2.1.1. Khái niệm
Smart contract (Hợp đồng thông minh) được tự động hóa và tự giải thích
dựa trên các điều kiện định trước được đặt trên hợp đồng. Vì blockchain là công
nghệ sổ lệnh phân tán (DLT) cho phép dữ liệu được lưu trữ trên toàn cầu trên các
máy chủ khác nhau, nên nó chủ yếu dựa vào các cơ sở dữ liệu này để xác nhận

giao dịch. Do đó, các smart contract đang hấp dẫn để loại bỏ chi phí quản lý.
Smart contract đại diện cho các điều khoản và điều kiện được viết bằng mã
tự động chuyển tiền từ bên này sang bên khác sau khi các yêu cầu xác định trước
của hợp đồng được đáp ứng.
Ngày nay, các smart contract vẫn phổ biến trong ngành công nghiệp tiền điện tử,
chủ yếu để trao đổi tiền điện tử. Nhưng nó khơng chỉ giới hạn ở tiền điện tử và
trên thực tế, nhiều công ty bảo hiểm và bất động sản đang áp dụng giao thức tiêu
chuẩn này để có khả năng mở rộng tốt hơn với mức giá rẻ hơn.
2.1.2. Mục đích của smart contracts trong Blockchain
Smart contract được tạo ra bởi mục đích xác thực các mã và khóa logic khi
người dùng cần gửi các yêu cầu giao dịch đến blockchain để bắt đầu chương trình.
Khi đã xác thực thành cơng, thì lúc đó chương trình mới được chạy
Có thể nói mục đích chính của smart contract là đơn giản hóa các giao dịch
kinh doanh giữa các bên trung gian có liên quan đến quy trình kinh doanh truyền
thống. Nó có tác dụng như giảm sự chậm chế thanh tốn, rủi ro có sai sót và phức
tạp của một hợp đồng thông thường nhưng không ảnh hưởng đến tính xác thực và
uy tín. Và lợi thế to lớn khi sử dụng là cho phép ta thực hiện các giao dịch an toàn.
2.1.3. Smart contract hoạt động trong Blockchain
Smart contract đề cập đến một thuật tốn máy tính được thiết kế để hình
thành, kiểm sốt và cung cấp thơng tin về chủ sở hữu nội dung. Nó thực sự là một
18


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×