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

Đồ án tìm hiểu BLOCKCHAIN và ứng dụng minh họa

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 (601.23 KB, 43 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO CUỐI KỲ
ĐỀ TÀI: TÌM HIỂU BLOCKCHAIN VÀ ỨNG
DỤNG MINH HOẠ
Giáo viên hướng dẫn: Ths. Huỳnh Nguyễn Khắc Huy
Nhóm sinh viên thực hiện:
1 Võ Thanh Bình

18520007

2 Trương Hữu Minh Đức

18520626

Thành phố Hồ Chí Minh, tháng 6 năm 2021


MỤC LỤC


A. GIỚI THIỆU CHUNG
1. Tổng quan tình hình nghiên cứu
Internet xuất hiện không chỉ phục vụ cho việc gửi email hay tải phần mềm mà nó cịn
là động lực để phát triển nền kinh tế toàn cầu. Trong thực tế, Internet đã trở thành trình điều
khiển của nền kinh tế. Sự xuất hiện của Internet và các mạng cục bộ đã giúp cho việc trao
đổi thông tin trở nên nhanh chóng, dễ dàng hơn. Email cho phép chúng ta nhận hay gửi thư
ngay trên máy tính của mình, Ebusiness cho phép thực hiện giao dịch, buôn bán trên
mạng… Cũng giống như Internet, blockchain xuất phát như một trào lưu với đồng tiền ảo


Bitcoin.
Sự phát triển của Internet cũng đồng hành với những tổn thất sau các cuộc tấn công
mạng, gây ảnh hưởng lớn đến nền kinh tế cũng như xã hội. Theo cuộc khảo sát của hãng
phân tích Grant Thornton, khoản tiền mà doanh nghiệp mất vào tay tin tặc ở Châu Á-Thái
Bình Dương lên tới 81,3 tỉ đơ la trong vịng 12 tháng (tính đến cuối tháng 9/2015). Mức tổn
thất từ các đợt tấn công mạng ở châu Á nhiều hơn Bắc Mỹ tới 20 tỉ USD và EU với con số
tương tự, và chiếm đến hơn 25% tổng mức tổn thất của thế giới (315 tỉ USD).... Tại Việt
Nam cũng xảy ra tình trạng mất an tồn với các tài khoản gửi ngân hàng, điển hình như vụ
tấn công vào Vietcombank. Tháng 2/2016, thông tin về việc Ngân hàng Trung ương
Bangladesh bị tin tặc đánh cắp 101 triệu USD gây chấn động thế giới là một bài học cho bất
cứ tổ chức nào. Sự cố xảy ra được cho là do Ngân hàng nước này sử dụng bộ định tuyến cũ
giá 10 USD mà khơng có bất cứ một hệ thống tường lửa nào. Số tiền tổn thất trong vụ này có
thể lên đến hơn 1 tỷ USD nếu như tin tặc khơng viết sai lỗi chính tả.
Từ những rủi ro từ an ninh mạng nên các tổ chức tài chính cần những cơng nghệ mới,
ví dụ như nền tảng của đồng tiền số Bitcoin, chính là Blockchain, được kì vọng khơng chỉ
nhằm cắt giảm chi phí ngân hàng mà cịn đảm bảo tính an tồn và xa hơn nữa là cách mạng
hóa các giải pháp bảo mật.
Với thực trạng đó, đồ án này có mục tiêu nghiên cứu, ứng dụng công nghệ Blockchain
trong việc thực hiện các giao dịch.
3


2. Lý do lựa chọn đề tài
Nhận thấy Blockchain là một công nghệ rất phù hợp với mức độ bảo mật cao, tính
minh bạch cao và khơng thể chối bỏ lịch sử giao dịch. Nhóm quyết định nghiên cứu và thực
hiện triển khai ứng dụng minh họa để hiểu được cơng nghệ này cũng như nhằm mục đích
xóa bỏ những gian lận trong các giao dịch hiện đại.

3. Mục tiêu nghiên cứu
Mục tiêu của đồ án này là có một cái nhìn tổng quan về cơng nghệ BlockChain, biết

được các nền tảng lý thuyết và các kỹ thuật chính sử dụng trong BlockChain, đặc biệt là ứng
dụng của hợp đồng thơng minh trong cơng nghệ này. Bên cạnh đó hiểu được Ethereum là
nền tảng BlockChain đã và đang rất phổ biến và có được ứng dụng minh họa.

4


B. BLOCKCHAIN
1. Giới thiệu
Blockchain tên gọi ban đầu là block chain (chuỗi khối) – là một cuốn sổ cái ghi lại
thông tin số dư và lịch sử của tất cả tài khoản tham gia vào chuỗi giao dịch của mình. Mỗi
khối chứa thông tin trong hệ thống blockchain thường được gọi là "block". Các block đều
chứa thông tin về thời gian khởi tạo và được liên kết với khối trước đó, kèm theo đó là một
mã thời gian và dữ liệu giao dịch. Dữ liệu khi đã được mạng lưới chấp nhận thì sẽ khơng có
cách nào thay đổi được. Vì vậy, có thể nói Blockchain ra đời để chống gian lận và thay đổi
các dữ liệu trong các giao dịch.
Cụ thể hơn, một blockchain là một chuỗi tuyến tính gồm nhiều khối được kết nối và
được bảo đảm bằng các bằng chứng mật mã. Một blockchain thường được xây dựng như
một hệ thống phân tán có chức năng như một sổ cái phi tập trung. Điều này có nghĩa là có
nhiều bản sổ cái (phân tán) và khơng có tổ chức nào nắm quyền kiểm soát duy nhất (phi tập
trung). Nói một cách đơn giản, mỗi người dùng tham gia vào mạng blockchain sẽ giữ một
bản sao điện tử của dữ liệu blockchain. Dữ liệu blockchain được cập nhật thường xuyên tất
cả các giao dịch mới nhất và đồng bộ với bản sao của người dùng.
Nói cách khác, một hệ thống phân tán được duy trì bởi cơng việc tập thể của nhiều
người dùng trên khắp thế giới. Những người dùng này còn được gọi là các node mạng, và tất
cả các node này đều tham gia vào quá trình xác minh và xác thực giao dịch theo các quy tắc
của hệ thống. Do đó, quyền lực là phi tập trung. Cơng nghệ Blockchain cũng có thể được áp
dụng trong các lĩnh vực khác khơng nhất thiết phải có các hoạt động tài chính. Trong bối
cảnh tiền điện tử, blockchain có vai trị lưu giữ hồ sơ vĩnh viễn của tất cả các giao dịch đã
được xác nhận.


2. Lịch sử Blockchain
Ý tưởng đằng sau công nghệ blockchain được mô tả ngay từ năm 1991 khi các nhà
nghiên cứu Stuart Haber và W. Scott Stornetta giới thiệu một giải pháp thực tế về mặt tính
5


toán để đánh dấu thời gian các văn bản số để chúng không bị đề lùi ngày về trước hoặc can
thiệp vào. Hệ thống đã sử dụng một chuỗi gồm các khối được bảo mật bằng mật mã để lưu
trữ các văn bản được đánh dấu thời gian, và năm 1992, các cây Merkle đã được tích hợp vào
thiết kế, khiến nó trở nên hiệu quả hơn bằng cách cho phép một khối có thể tập hợp một vài
văn bản. Tuy nhiên, công nghệ này đã không được sử dụng và bằng sáng chế đã hết hạn vào
năm 2004, bốn năm trước khi Bitcoin ra đời.
Năm 2004, nhà khoa học máy tính và người theo chủ nghĩa mật mã Hal Finney (Harold
Thomas Finney II) đưa ra một hệ thống gọi là RPoW, Proof Of Work Tái sử dụng. Hệ thống
hoạt động bằng cách nhận một Hashcash không thể thay đổi hoặc không thể thay thế dựa
trên token proof of work, và đổi lại đã tạo ra một token đã được ký RSA mà sau đó có thể
được trao đổi trực tiếp từ người này sang người khác. RPoW đã giải quyết vấn đề vì tiêu
dùng hai lần bằng cách lưu giữ quyền sở hữu các token đã đăng ký trên một máy chủ đáng
tin cậy; máy chủ này được thiết kế để cho phép người dùng trên toàn thế giới xác minh tính
chính xác và liêm chính trong thời gian thực. RPoW có thể được xem là một thử nghiệm ban
đầu và là những bước đầu tiên quan trọng trong lịch sử tiền điện tử.
Vào cuối năm 2008, cuốn sách trắng giới thiệu về hệ thống tiền mặt điện tử mạng
ngang hàng, phi tập trung – tên là Bitcoin – đã được đăng trên danh sách nhận thư về mật mã
học bởi một người hoặc tổ chức lấy biệt danh là Satoshi Nakamoto. Dựa trên thuật toán
proof of work Hashcash, nhưng thay vì sử dụng một hàm tính tốn dựa trên phần cứng như
RPoW, tính năng chống chi tiêu hai lần trong Bitcoin được cung cấp bởi một giao thức mạng
ngang hàng để theo dõi và xác thực các giao dịch. Nói ngắn gọn, các thợ đào “đào” Bitcoin
để nhận phần thưởng bằng cách sử dụng cơ chế proof-of-work và sau đó xác minh bằng các
node phi tập trung trong mạng. Vào ngày 3 tháng 1 năm 2009, Bitcoin ra đời khi Satoshi

Nakamoto đào được khối bitcoin đầu tiên, đem lại phần thưởng 50 bitcoin. Người nhận
Bitcoin đầu tiên là Hal Finney, ông ta nhận được 10 bitcoin từ Satoshi Nakamoto trong giao
dịch bitcoin đầu tiên của thế giới vào ngày 12 tháng 1 năm 2009.

3. Nguyên lý hoạt động của Blockchain
3.1. Nguyên lý mã hoá
6


Hệ thống blockchain được thiết kế theo cách không yêu cầu sự tin cậy và bảo đảm bởi
độ tin cậy có được thơng qua các hàm mã hóa tốn học đặc biệt. Để có thể thực hiện các giao
dịch trên blockchain, cần một phần mềm cho phép lưu trữ và trao đổi các đồng Bitcoin của
gọi là ví tiền điện tử. Ví tiền điện tử này sẽ được bảo vệ bằng một phương pháp mã hóa đặc
biệt đó là sử dụng một cặp khóa bảo mật duy nhất: khóa riêng tư (private key) và khóa cơng
khai (public key).
Nếu một thơng điệp được mã hóa bằng một khóa cơng khai cụ thể thì chỉ chủ sở hữu
của khóa riêng tư là một cặp với khóa cơng khai này mới có thể giải mã và đọc nội dung
thông điệp.

3.2. Quy tắc của sổ cái
Mỗi nút trong blockchain đều đang lưu giữ một bản sao của cuốn sổ cái công khai. Do
vậy, mỗi nút đều biết số dư tài khoản cũng như các giao dịch đã thực hiện của các địa chỉ.
Hệ thống blockchain chỉ ghi lại mỗi giao dịch được yêu cầu chứ không hề theo dõi số dư tài
khoản.

3.3. Nguyên lý tạo khối
Các giao dịch sau khi được gửi lên trên mạng lưới blockchain sẽ được nhóm vào các
khối và các giao dịch trong cùng 1 khối (block) được coi là đã xảy ra cùng thời điểm. Các
giao dịch chưa được thực hiện trong 1 khối được coi là chưa được xác nhận.
Mỗi nút có thể nhóm các giao dịch với nhau thành một khối và gửi nó vào mạng lưới

như một hàm ý cho các khối tiếp theo được gắn vào sau đó.
Để được thêm vào blockchain, mỗi khối phải chứa một đoạn mã đóng vai trị như một
đáp án cho một vấn đề toán học phức tạp được tạo ra bằng hàm mã hóa băm khơng thể đảo
ngược.
Cách duy nhất để giải quyết vấn đề toán học như vậy là đoán các số ngẫu nhiên, những
số khi mà kết hợp với nội dung khối trước tạo ra một kết quả đã được hệ thống định nghĩa.
Điều này nhiều khi có thể mất khoảng một năm cho một máy tính điển hình với một cấu
hình cơ bản có thể đốn đúng các con số đáp án của vấn đề toán học này.
7


3.4. Thuật tốn bảo mật Blockchain
Nếu có bất kỳ sự bất đồng về khối đại diện sau cùng của chuỗi thì điều này sẽ dẫn đến
khả năng gian lận. Nếu một giao dịch xảy ra trong 1 khối thuộc về đuôi ngắn hơn khi khối
tiếp theo được giải quyết, giao dịch đó sẽ trở lại thành giao dịch chưa được xác nhận vì tất cả
các giao dịch khác được nhóm vào trong khối kia.
Mỗi block chứa một tham chiếu đến khối trước đó, và tham chiếu đó là một phần của
vấn đề toán học cần được giải quyết để truyền khối sau tới mạng lưới. Vì vậy, rất khó để tính
tốn trước một loạt các block bởi nó cần tính ra một số lượng lớn các số ngẫu nhiên cần thiết
để giải quyết một khối và đặt nó trên blockchain.
Các giao dịch trong mạng lưới blockchain của bitcoin được bảo vệ bởi một cuộc chạy
đua tính tốn tốn học: với bất kỳ kẻ tấn công nào muốn cạnh tranh với tồn bộ mạng lưới.
Do đó, giao dịch ngày càng an toàn hơn theo thời gian. Và những khối đã được thêm
vào chuỗi trong quá khứ bao giờ cũng an toàn hơn so với những khối mới được thêm vào.
Bởi một block được thêm vào chuỗi trung bình cứ 10p một lần cho nên trong khoảng 1h kể
từ khi giao dịch được nhóm vào trong khối đầu tiên của nó sẽ tạo ra một xác suất khá cao
rằng giao dịch đã được xử lý và không thể đảo ngược.

4. Đặc điểm
4.1.Ưu điểm

Cơng nghệ Blockchain (Blockchain technology) đóng vai trị giống như một cuốn sổ
cái ghi lại tất cả các giao dịch xảy ra trong hệ thống. Các đặc điểm chính của blockchain có
thể kể đến như:
Khơng thể làm giả, khơng thể phá hủy các chuỗi blockchain: Các chuỗi Blockchian gần
như không thể bị phá hủy được, và theo lý thuyết thì chỉ có máy tính lượng tử mới có thể can
thiệp vào và giải mã chuỗi blockchain và nó chỉ bị phá hủy hồn tồn khi khơng cịn internet
trên tồn cầu

8


Bất biến: Dữ liệu trong blockchan gần như không thể sửa đổi được (chỉ có thể sửa đổi
được bởi chính người đã tạo ra nó, nhưng phải được sự đồng thuận của các nút trên mạng)
và các dữ liệu đó sẽ lưu giữ mãi mãi.
Bảo mật Dữ liệu: Các thông tin, dữ liệu trong các chuỗi blockchain được phân tán và
an tồn tuyệt đối chỉ có người nắm giữ private key mới có quyền truy xuất dữ liệu đó
Minh bạch: Ai cũng có thể theo dõi được đường đi của dữ liệu trong blockchain từ địa
chỉ này tới địa chỉ khác và có thể thống kê tồn bộ lịch sử trên địa chỉ đó.
Hợp đồng thơng minh: là các kỹ thuật số được nhúng bởi một đoạn code if-this-thenthat (IFTTT) trong hệ thống, cho phép chúng tự thực thi mà không cần bên thứ ba.
Blockchain không cần bên thứ ba tham gia vào hệ thống, và nó bảo đảm rằng tất cả các bên
tham gia đều biết được chi tiết hợp đồng và các điều khoản sẽ được tự động thực hiện một
khi các điều kiện được bảo đảm.

4.2.Nhược điểm
Tấn cơng 51%: Blockchain có tính an tồn cao tuy nhiên vẫn có thể bị tấn cơng, trong
đó đặc biệt được nhắc tới nhiều là tấn công 51%. Cuộc tấn công như vậy sẽ xảy ra nếu có
một đơn vị kiểm soát hơn 50% sức mạnh của mạng lưới. Điều này sẽ cho phép đơn vị này
phá vỡ mạng lưới bằng cách cố ý ngăn chặn hoặc sửa đổi việc đặt các giao dịch.
Rất khó sửa đổi dữ liệu: Một khi dữ liệu đã được thêm vào Blockchain thì việc sửa đổi
là rất khó. Việc thay đổi dữ liệu hoặc mã Blockchain thường rất phức tạp và thường cần có

một hard fork (trong đó một chuỗi sẽ bị bỏ và một chuỗi mới được đưa lên).
Chìa khóa cá nhân: Người dùng cần chìa khóa cá nhân để truy cập vào block của họ,
nghĩa là tự họ đóng vai trị như một ngân hàng tự giữ tiền. Nếu người dùng mất chìa khóa cá
nhân, tiền sẽ bị mất và khơng thể mở khóa để lấy lại.
Rất tốn điện: Quy trình này sử dụng rất nhiều điện. Vì mỗi Blockchain đã sao chép
chính mình đến mọi nút trên Blockchain nên đã tạo ra một số lượng lớn những sự dư thừa.

9


5. Phân loại
Trong hệ thống Blockchain chia thành 3 loại chính gồm:
Public: Đây là hệ thống blockchain mà bất kỳ ai cũng có quyền đọc và ghi dữ liệu trên
Blockchain được. 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ì chi phí rất cao. Ví dụ về public blockchain: Bitcoin, Ethereum…
Private: Đây là hệ thống blockchain cho phép 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ề 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 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, 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 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.

6. Các phiên bản
Hiện tại thì cơng nghệ blockchain có 3 phiên bản chính gồm:

Blockchain 1.0 – Tiền tệ và Thanh toán: Là phiên bản sơ khai và đầu tiên của
blockchain, ưng dụng chính của phiên bản này là các công việc liên quan đến tiền mã hoá:
bao gồm việc chuyển đổi tiền tệ, kiều hối và tạo lập hệ thống thanh toán kỹ thuật số. Đây
cũng là lĩnh vực quen thuộc với rất nhiều ngườt nhất, đôi khi khá nhiều người lầm tưởng
Bitcoin và Blockchain là một.
Blockchain 2.0 – Tài chính và Thị trường: Đây là phiên bản thứ 2 của blockchain, ứng
dụng của nó là xử lý tài chính và ngân hàng: mở rộng quy mô của Blockchain, đưa
10


blockchain tích hợp vào các ứng dụng tài chính và thị trường. Các tài sản bao gồm cổ phiếu,
chi phiếu, nợ, quyền sở hữu và bất kỳ điều gì có liên quan đến thỏa thuận hay hợp đồng.
Blockchain 3.0 – Thiết kế và Giám sát hoạt động: Hiện tại đây đang là phiên bản cao
nhất của blockchain, với phiên bản này, công nghệ Blockchain sẽ vượt khỏi biên giới chỉ
phục vụ cho lĩnh vực tài chính, và đi vào các lĩnh vực khác như giáo dục, chính phủ, y tế và
nghệ thuật…

7. Cơ chế đồng thuận
Cơ chế đồng thuận trong Blockchain có thể hiểu như cách thức mà mọi người quản lý
trong hệ thống blockchain có thể đồng ý cho một giao dịch xảy ra trong hệ thống. Dưới đây
là các loại cơ chế đồng thuận phổ biến trong blockchain:
Proof of Work (Bằng chứng Công việc): Đây là cơ chế đồng thuận phổ biến nhất, được
dùng trong Bitcoin, Ethereum, Litecoin, Dogecoin và hầu hết các loại tiền mã hoá. Đây là cơ
chế đồng thuận tiêu tốn khá nhiều điện năng.
Proof of Stake (Bằng chứng Cổ phần): Đây là cơ chế đồng thuậ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. Cơ chế
đồng thuận này 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): Đây là cơ chế đồng thuận phổ biến
trong Steemit, EOS, BitShares. Cơ chế đồng thuận này có 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

tố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à cơ chế đồng thuận phổ biến thường
thấy trong POA.Network, Ethereum Kovan testnet. Cơ chế đồng thuận này có 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): Đây là cơ chế đồng
thuận phổ biến trong Algorand, Filecoin. Cơ chế đồng thuận này 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.

11


Byzantine Fault Tolerance (Đồng thuận chống gian lận /Tướng Byzantine bao vây
Blockchain): Đây là cơ chế đồng thuận phổ biến trong Hyperledger, Stellar, Dispatch, và
Ripple. Cơ chế đồng thuận này có 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.

12


C. ETHEREUM
1. Giới thiệu chung
Trong cộng đồng Blockchain nói riêng cũng như những người khơng chun nói
chung, thì Ethereum là cái tên nổi tiếng thứ 2 sau Bitcoin. Khác với Bitcoin là hệ thống tiền
điện tử ngang hàng (Blockchain 1.0), Ethereum cho phép người tham gia có thể xây dựng
những ứng dụng trên nền tảng này, đem các ứng dụng của Blockchain thoát ra khỏi sự đánh
đồng với tiền ảo trong mắt nhiều người.

1.1.Ethereum là gì ?
Ethereum là nền tảng điện tốn phân tán, mã nguồn mở dựa trên cơng nghệ Blockchain
có khả năng thực thi hợp đồng thơng minh (Smart Contract).

Đồng thời, nó cho phép các nhà phát triển xây dựng các ứng dụng phi tập trung (dapps)
và các tổ chức tự trị phi tập trung (decentralized autonomous organizations).

1.2.Lịch sử
 Ý tưởng
Vào tháng 10 năm 2013, Vitalik Buterin một lập trình viên trẻ và đam mê Bitcoin đã đề
xuất một giải pháp cải tiến cho dự án Mastercoin (nay là OmniLayer).
Trong bản đề xuất đó, Vitalik đã đưa ra giải pháp cho phép MasterCoin có thể hỗ trợ
được nhiều loại hợp đồng hơn mà không cần phải thêm các tính năng phức tạp.
Mặc dù, đội ngũ phát triển Mastercoin rất ấn tượng với bản đề xuất của Vitalik. Nhưng,
họ đã khơng áp dụng giải pháp đó vào dự án của họ.
 Hình thành
Sau khi MasterCoin khơng áp dụng giải pháp của mình, Vitalk đã tiếp tục nghiên cứu
và nhận ra rằng: Các smart contract có thể được khái quát hố hồn tồn.

13


Vào tháng 11/2013, Vitalik lần đầu tiên chia sẻ bản whitepaper phác thảo của
Ethereum.
Chỉ có vài chục người có quyền truy cập và đọc trước bản phác thảo này. Sau đó họ
đưa ra những phản hồi, giúp cho Vitalik có thể hoàn thiện bản whitepaper cho Ethereum.
Kể từ khi chia sẻ bản whitepaper, Vitalik đã có thêm một người đồng đội cùng tham gia
xây dựng Ethereum và người đó chính là: Gavin Wood.
Gavin Wood là người đầu tiên chủ động liên lạc với Vitalik và đề nghị giúp đỡ bằng kỹ
năng lập trình C++ của mình.
Vào mùa hè năm 2014, Gavin Wood công bố yellow paper cho Ethereum. Cũng trong
thời gian này, Vitalik cũng ra thông báo rằng Ethereum sẽ được phát triển bởi tổ chức phi lợi
nhuận Ethereum Foundation.
Sau một năm xây dựng và phát triển, vào tháng 06/2015 khối block đầu tiên của

Ethereum đã được khai thác. Nó đánh dấu sự hình thành chính thức của chuỗi khối
Ethereum.
Một trong những chuỗi khối có tầm quan trọng nhất trong toàn bộ hệ sinh thái tiền điện
tử sau này.

1.3.Ethereum Blockchain
Về cơ bản, Blockchain của Ethereum cũng như các Blockchain khác. Nó sử dụng
phương thức GHOST (viết tắt của Greedy Heaviest Observed Subtree) để tránh sự phân
nhánh chuỗi. Giao thức GHOST cho rằng phải chọn chuỗi block có nhiều tính tốn nhất
được thực hiện trên mạng blockchain làm chuỗi chính (chuỗi nặng nhất). Độ nặng của chuỗi
trong Ethereum phụ thuộc vào số lượng block trong chuỗi đó và các uncle block của nó.

14


Ethereum Blockchain được cấu thành bởi mạng lưới các máy tính hay cịn gọi là
Nodes. Các nodes sẽ phải chạy một chương trình máy ảo có tên Ethereum Virtual
Machine (EVM).
Khi các nhà phát triển muốn xây dựng ứng dụng phi tập trung (dapps) trên Ethereum,
họ cần phải triển khai smart contract thơng qua ngơn ngữ lập trình Solidity. EVM sẽ chịu
trách nhiệm thực thi smart contract.
Để kích hoạt việc thực thi các hoạt động như smart contract, lệnh giao dịch... mạng
lưới cần đến một lượng phí gọi là “Gas". Phí “Gas” trong mạng Ethereum sẽ được thanh
toán bằng đồng tiền kỹ thuật số gọi là Ether (ETH).
Khi giao dịch được thực thi, đây là lúc cần đến việc xác nhận giao dịch đó có hợp lệ
hay khơng. Trong mạng của Ethereum, thành phần đảm nhiệm việc xác nhận giao dịch này
có tên Miner Node. Để mạng lưới vận hành độc lập, nhất quán các miner nodes phải tuân
theo luật đồng thuận – Consensus (hay còn gọi là cơ chế đồng thuận). Ethereum sử dụng
luật đồng thuận có tên Proof of Work (PoW) hay cịn gọi là bằng chứng cơng việc. Tức là
các miner nodes phải chứng minh được công việc họ đã hồn thành và thơng báo đến tồn

mạng lưới. Sau đó, các miner nodes khác trong mạng lưới sẽ xác nhận xem bằng chứng này
là có hợp lệ hay khơng.
Cơng việc ở đây có thể là:
-

Tạo ra block mới bằng cách tìm ra lời giải thơng qua thuật tốn - Ethash.

-

Xác nhận giao dịch trên mạng lưới.

15


Khi bằng chứng được thông qua (tức hợp lệ), dữ liệu giao dịch sẽ được ghi vào
Blockchain của Ethereum và không thể thay đổi.

1.4.Ethereum và Bitcoin
Về cơ bản, Ethereum và Bitcoin đều là một hệ thống Blockchain phân tán và cơng
khai, tuy nhiên, mục đích chính, tầm nhìn của hai nền tảng này là hoàn toàn khác nhau.
Trong khi Bitcoin được thành lập để trờ thành hệ thống thanh toán ngang hàng, một hệ thống
tiền tệ cho phép người dùng giao dịch trực tuyến bằng đồng Bitcoin thì Ethereum lại hướng
đến việc trở thành nền tảng giúp cho việc phát triển các ứng dụng phi tập trung (Dapps) trở
nên dễ dàng hơn.
Ngoài ra, về mặt kỹ thuật (technical) Ethereum và Bitcoin cịn có một số điểm khác
nhau:
Tên
Ethereum
Ngày phát hành
30/07/2015

Người tạo lập
Vitalik Buterin
Native token
ETH
Cách thức xuất hiện
Initial Coin Offering
Tổng cung
Không cố định
Thời gian tạo block mới
12 giây
Cơ chế đồng thuận
PoW
Thuật toán
Ethash
Vốn thị trường (2/2021) 222.14 triệu đô la Mỹ
Tốc độ giao dịch mỗi
25 TPS
giây (TPS)
Smart Contract


Bitcoin
03/01/2009
Satoshi Nakamoto
BTC
Genesis Block Mined
21,000,000 BTC
240 giây
PoW
SHA-256

1010.21 tỉ đô la Mỹ
7 TPS
Không

2. Các khái niệm trong Ethereum
2.1. Ether (ETH)
ETH hay Ether là đồng tiền điện tử chính thức của chuỗi khối Ethereum. Trong mạng
lưới của Ethereum, ETH có vai trị như nhiên liệu để thực thi các hoạt động liên quan đến
giao dịch.
Mọi tính tốn xảy ra trên mạng Ethereum đều phải trả phí, với mỗi giao dịch, người gửi
đều phải cung cấp một lượng Ether. Lý do là các bước tính tốn trên Máy ảo Ethereum rất
16


tốn kém. Do đó, hợp đồng thơng minh Ethereum được sử dụng tốt nhất cho các tác vụ đơn
giản, như chạy logic business đơn giản, xác minh chữ ký,... thay vì sử dụng các tác vụ phức
tạp hơn, như lưu trữ tệp, email hoặc học máy, có thể gây quá tải cho mạng. Áp dụng phí
ngăn người dùng cố tính sử dụng các tác vụ nặng đó. Một lý do khác là nền tảng Ethereum
được xây dựng với một ngôn ngữ hồn chỉnh Turing (Turing-Complete). Nói đơn giản, ngơn
ngữ Turing hồn chỉnh là ngơn ngữ có thể mơ phỏng bất kỳ thuật tốn máy tính nào. Điều
này cho phép các vòng lặp và khiến Ethereum dễ gặp phải vấn đề sự cố dừng (Halting
problem) nếu khơng có phí giao dịch thì một người dùng xấu có thể dễ dàng phá vỡ mạng
bằng cách thực hiện một vịng lặp vơ hạn trong một giao dịch, mà khơng có gặp trở ngại nào.

2.2. Web3
Thư viện web3.js là một thư viện JavaScript mã nguồn mở (GNU Lesser General
Public License phiên bản 3) được xây dựng bởi Ethereum Foundation, bao gồm các chức
năng giao tiếp với các nút Ethereum thông qua giao thức JavaScript Object Notation –
Remote Procedure Call (JSON-RPC) . Nói cách khác, nó là một thư viện JavaScript hỗ trợ
các nhà phát triển tương tác với chuỗi khối Ethereum.

Trước đây, các nhà phát triển sử dụng web2, tuy nhiên, web2 có nhiều nhược điểm và
vấn đề, đó là:
-

Sử dụng Stateless protocol: Giao thức khơng lưu dữ liệu của client trên server.

-

Khơng có cơ chế gốc để chuyển “state”.

Vì vậy, điều này dẫn đến 2 vấn đề:
-

Thiếu state: Khi thiếu state, sẽ không thấy bất cứ thông tin lưu trữ nào khi truy
vấn từ một node (một thiết bị được kết nối với internet) về lịch sử hoặc trạng
thái hiện tại của nó. Điều này khiến tính ứng dụng và hiệu quả của Internet
khơng cao.

-

Thiếu cơ chế gốc để chuyển đổi state

Do đó, web3 hình thành và được sử dụng bởi vì những lợi ích:

17


-

Bất kỳ ai trong mạng đều có quyền sử dụng dịch vụ - hay nói cách khác, khơng

cần có quyền.

-

Khơng ai có thể chặn bạn hoặc từ chối bạn truy cập vào dịch vụ.

-

Thanh tốn được tích hợp thơng qua mã thơng báo gốc, ether (ETH).

-

Ethereum hồn chỉnh, có nghĩa là bạn có thể lập trình khá nhiều thứ.

So sánh web2 và web3:

Web3.js có một lớp chính được gọi là web3. Hầu hết các chức năng của thư viện có thể
được tìm thấy trong danh mục này. 5 mơ-đun khác tạo nên web3js là:
-

web3-eth

-

web3-shh

-

web3-bzz


-

web3-net

-

web3-utils

Tuy nhiên, web3 cũng có một số hạn chế:
-

Khả năng mở rộng - giao dịch chậm hơn trên web3 vì chúng được phân cấp.
Các thay đổi đối với trạng thái, chẳng hạn như một khoản thanh toán, cần phải
được xử lý bởi người khai thác và được phổ biến trên toàn mạng.

-

UX - tương tác với các ứng dụng web3 có thể yêu cầu các bước bổ sung, phần
mềm và giáo dục. Đây có thể là một trở ngại cho việc áp dụng.
18


-

Chi phí - hầu hết các dapp thành cơng đều đưa một phần rất nhỏ code của họ lên
blockchain vì nó đắt.

2.3. Ether.js
Nói một cách đơn giản, ethers.js là một thư viện được viết bằng Javascript giúp Dapp
tương tác với mạng Ethereum Blockchain.

Hẳn những lập trình viên Dapp sẽ khơng quá xa lạ với thư viện web3.js dùng để tương
tác với Ethereum blockchain. Cịn với ethers.js thì hẳn chưa có quá nhiều người biết. Ether.js
có 1 ưu điểm nổi bật so với web3.
-

Các tính năng của Ether.js
o Giữ private key ở client một cách an toàn
o Import và export JSON wallets
o Import và export ví theo chuẩn BIP 39
o Hỗ trợ ABI, ABIv2 và Human-Readable ABI
o Kết nối với Ethereum nodes thông qua nhiều provider như JSON-RPC,
INFURA, Etherscan, Alchemy, Cloudflare, MetaMask ...
o Hỗ trợ ENS
o Nhẹ (88kb khi nén và 284kb khi không nén)
o Hỗ trợ TypeScript

-

Tương tự như web3.js, ethers.js có bốn mơ-đun tạo thành giao diện lập trình ứng
dụng (API):
o Ethers.provider
o Ethers.contract
o Ethers.utils
o Ethers.wallets
19


Ưu điểm của Ethers.js nằm ở sự nhỏ gọn, đồng thời chứa được số lượng lớn test case.
Nó cung cấp tài liệu hữu ích cho người mới bắt đầu sử dụng nó. Nhiều nhà phát triển nhận
xét rằng ethers.js “đơn giản” và “trực quan” để sử dụng, và thư viện ngày càng trở nên phổ

biến hơn trong hai năm qua, và số lượng tải xuống và sử dụng trong các dự án cũng tăng lên.

2.4. Accounts
Ethereum có hai loại tài khoản:
-

Thuộc sở hữu bên ngồi - được kiểm sốt bởi bất kỳ ai bằng khóa cá nhân

-

Hợp đồng - một hợp đồng thông minh được triển khai vào mạng, được kiểm
sốt bằng mã. Tìm hiểu về hợp đồng thơng minh

Cả hai loại tài khoản đều có khả năng:
-

Nhận, giữ và gửi ETH và mã thông báo

-

Tương tác với các hợp đồng thông minh đã triển khai

Sự khác biệt giữa 2 loại tài khoản:
-

Thuộc sở hữu bên ngoài
o Tạo một tài khoản khơng tốn phí
o Có thể bắt đầu giao dịch
o Giao dịch giữa các tài khoản thuộc sở hữu bên ngồi chỉ có thể là chuyển
ETH


-

Hợp đồng
o Việc tạo hợp đồng có chi phí vì bạn đang sử dụng bộ nhớ mạng
o Chỉ có thể gửi giao dịch khi nhận được giao dịch
o Các giao dịch từ tài khoản bên ngồi sang tài khoản hợp đồng có thể kích
hoạt mã có thể thực hiện nhiều hành động khác nhau, chẳng hạn như
chuyển mã thơng báo hoặc thậm chí tạo hợp đồng mới
20


Tài khoản Ethereum có bốn trường:
-

nonce - một bộ đếm cho biết số lượng giao dịch được gửi từ tài khoản. Điều này
đảm bảo các giao dịch chỉ được xử lý một lần. Trong tài khoản hợp đồng, số này
đại diện cho số lượng hợp đồng được tạo bởi tài khoản

-

balance - số lượng “wei” thuộc sở hữu của địa chỉ này. “Wei” là một mệnh giá
của ETH và có 1e + 18 “wei” trên mỗi ETH.

-

codeHash - hàm băm này đề cập đến mã của tài khoản trên máy ảo Ethereum
(EVM). Tài khoản hợp đồng có các đoạn mã được lập trình để có thể thực hiện
các hoạt động khác nhau. Mã EVM này được thực thi nếu tài khoản nhận được
cuộc gọi tin nhắn. Không thể thay đổi nó khơng giống như các trường tài khoản

khác. Tất cả các đoạn mã như vậy được chứa trong cơ sở dữ liệu trạng thái dưới
các hàm băm tương ứng của chúng để truy xuất sau này. Giá trị băm này được
gọi là mã Hash. Đối với các tài khoản thuộc sở hữu bên ngoài, trường codeHash
là hàm băm của một chuỗi trống.

-

storageRoot - Đôi khi được biết đến như một hàm băm lưu trữ. Một băm 256
bit của node gốc của bộ ba Merkle Patricia mã hóa nội dung lưu trữ của tài
khoản (ánh xạ giữa các giá trị số nguyên 256 bit), được mã hóa thành bộ ba dưới
dạng ánh xạ từ băm 256 bit Keccak của 256 khóa số nguyên-bit cho các giá trị
số nguyên 256 bit được mã hóa RLP. Bộ ba này mã hóa hàm băm của nội dung
lưu trữ của tài khoản này và trống theo mặc định.

21


Một tài khoản hợp đồng có địa chỉ thập lục phân 42 ký tự. Ví dụ:
0x06012c8cf97bead5deae237070f9587f8e7a266d

2.5. Transactions
Giao dịch Ethereum đề cập đến một hành động được thực hiện bởi một tài khoản thuộc
sở hữu bên ngồi, nói cách khác là một tài khoản được quản lý bởi con người, không phải
một hợp đồng. Ví dụ: nếu Bình gửi cho Đức 1 ETH, tài khoản của Bình phải được ghi nợ và
của Đức phải được ghi có. Hành động thay đổi trạng thái này diễn ra trong một giao dịch.

Các giao dịch thay đổi trạng thái của EVM cần được phát tới tồn mạng. Bất kỳ nút
nào cũng có thể phát yêu cầu thực hiện một giao dịch trên EVM; sau khi điều này xảy ra,
22



một người khai thác sẽ thực hiện giao dịch và tuyên truyền sự thay đổi trạng thái kết quả cho
phần còn lại của mạng.
Các giao dịch yêu cầu một khoản phí và phải được khai thác để trở nên hợp lệ. Để làm
cho tổng quan này đơn giản hơn, chúng tơi sẽ bao gồm phí gas và khai thác ở những nơi
khác.
Một giao dịch đã gửi bao gồm các thông tin sau:
-

recipient - địa chỉ nhận (nếu là tài khoản bên ngoài, giao dịch sẽ chuyển giá trị.
Nếu là tài khoản hợp đồng, giao dịch sẽ thực hiện mã hợp đồng)

-

signature - định danh của người gửi. Điều này được tạo ra khi khóa cá nhân của
người gửi ký vào giao dịch và xác nhận rằng người gửi đã ủy quyền giao dịch
này

-

value - số lượng ETH để chuyển từ người gửi sang người nhận (trong WEI, một
mệnh giá của ETH)

-

data - trường tùy chọn để bao gồm dữ liệu tùy ý

-

gasLimit - số lượng đơn vị gas tối đa có thể được tiêu thụ trong giao dịch. Các

đơn vị gas đại diện cho các bước tính tốn

-

gasPrice - phí người gửi trả cho mỗi đơn vị gas

Ví dụ về một đối tượng giao dịch:
{
from : "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8" ,
to : "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a" ,
gasLimit : "21000" ,
gasPrice : "200" ,
nonce : "0" ,
value : "10000000000" ,
23


}
Nhưng một đối tượng giao dịch cần được ký bằng khóa riêng của người gửi. Điều này
chứng tỏ rằng giao dịch chỉ có thể đến từ người gửi và khơng được gửi một cách gian lận.
Với mã transaction được băm, giao dịch có thể được chứng minh bằng mật mã rằng nó đến
từ người gửi và được gửi đến mạng.

2.6. Nodes
Ethereum là một mạng phân tán gồm các máy tính chạy phần mềm (được gọi là các
node) có thể xác minh các block và dữ liệu giao dịch. Ta cần một ứng dụng (client) trên máy
tính của mình để "chạy" một node.
"Node" đề cập đến một phần đang chạy của Client Software.
Có 3 loại Node trong Ethereum:
-


Full node
o Lưu trữ dữ liệu blockchain đầy đủ.
o Tham gia xác nhận khối, xác minh tất cả các khối và trạng thái.
o Tất cả các trạng thái có thể bắt nguồn từ một nút đầy đủ.
o Phục vụ mạng và cung cấp dữ liệu theo yêu cầu.

-

Light node
o Lưu trữ chuỗi tiêu đề và yêu cầu mọi thứ khác.
o Có thể xác minh tính hợp lệ của dữ liệu so với gốc trạng thái trong tiêu
đề khối.
o Hữu ích cho các thiết bị có dung lượng thấp, chẳng hạn như thiết bị
nhúng hoặc điện thoại di động, khơng có khả năng lưu trữ gigabyte dữ
liệu blockchain.

-

Archive node
24


o Lưu trữ mọi thứ được lưu giữ trong nút đầy đủ và xây dựng một kho lưu
trữ các trạng thái lịch sử. Cần thiết nếu bạn muốn truy vấn điều gì đó như
số dư tài khoản ở khối # 4.000.000.
o Những dữ liệu này đại diện cho các đơn vị terabyte khiến các nút lưu trữ
kém hấp dẫn hơn đối với người dùng bình thường nhưng có thể hữu ích
cho các dịch vụ như trình khám phá khối, nhà cung cấp ví và phân tích
chuỗi.

Lợi ích khi chạy một Node Ethereum
-

Đối với người dùng:
o Node của bạn tự xác minh tất cả các giao dịch và chặn theo các quy tắc
đồng thuận. Điều này có nghĩa là bạn khơng phải dựa vào bất kỳ node
nào khác trong mạng hoặc hồn tồn tin tưởng vào chúng.
o Bạn sẽ khơng phải rị rỉ địa chỉ và số dư của mình cho các nút ngẫu
nhiên. Mọi thứ có thể được kiểm tra với khách hàng của riêng bạn.
o Dapp của bạn có thể an toàn và riêng tư hơn nếu bạn sử dụng node của
riêng mình. Metamask, MyEtherWallet và một số ví khác có thể dễ dàng
trỏ đến nút cục bộ của riêng bạn.

25


×