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

Báo cáo thực tập lập trình ứng dụng blokchain bằng nodejs

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.25 MB, 38 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 THỰC TẬP
LẬP TRÌNH ỨNG DỤNG BLOKCHAIN BẰNG NODEJS

Cơng ty thực tập:

Công ty TNHH Codelight

Người phụ trách:

Nguyễn Mạnh Đạt

Thực tập sinh:

Ngô Dương Kha

Mã số sinh viên:

19520117

TP. Hồ Chí Minh, tháng 12 năm 2022


ĐẠ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 THỰC TẬP


LẬP TRÌNH ỨNG DỤNG BLOKCHAIN BẰNG NODEJS

Cơng ty thực tập:

Công ty TNHH Codelight

Người phụ trách:

Nguyễn Mạnh Đạt

Thực tập sinh:

Ngô Dương Kha

Mã số sinh viên:

19520117

TP. Hồ Chí Minh, tháng 12 năm 2022


LỜI CẢM ƠN
Em xin chân thành cảm ơn nhà trường và quý thầy cô trường Đại học Công Nghệ
Thông Tin đã tận tâm hướng dẫn, giảng dạy cho em những kiến thức chuyên môn cũng như
kỹ năng mềm trong hơn 3 năm ngồi trên giảng đường đại học, từ đó đã xây dựng cho em
nền tảng vững chắc tạo giúp em thực hiện hóa ước mơ.
Trân trọng gửi lời cảm ơn Công ty TNHH Codelight đã tạo điều kiện cho em có cơ
hội được thực tập tại cơng ty, cho em trải nghiệm một môi trường làm việc cực kỳ chuyên
nghiệp và hiệu quả. Cùng với các người đồng đội trong kỳ thực tập, em mong rằng chúng
em đã để lại một dấu ấn, những kỷ niệm đẹp trong kỳ thực tập vừa qua.

Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các anh chị hướng
dẫn, em đã tiếp thu được những kiến thức quan trọng để có thể làm được một sản phẩm
phần mềm hoàn chỉnh. Chân thành cảm ơn các anh chị trong nhóm hướng dẫn đã bỏ ra
nhiều thời gian, cơng sức để hướng dẫn em hoàn thành đợt thực tập này.
Bên cạnh kinh nghiệm quý báu về kỹ năng chuyên môn về lập trình backend, cịn có
những kỹ năng về làm việc nhóm, quy trình làm việc chun nghiệp. Các anh chị hướng
dẫn đã dạy em những kỹ thuật cần thiết trong giao tiếp và truyền đạt cho em những kinh
nghiệm của anh chị trong quá trình làm việc, trao đổi với khách hàng và tinh thần trách
nhiệm với công việc và với đồng đội. Các anh chị đã tạo cho em nhiều cơ hội để ứng dụng
những kiến thức đó ngay vào thực tế để xây dựng dự án thực tiễn đi từ lúc ban đầu, nâng
cao trình độ, cũng như tốc độ lập trình và trí thức thêm một bậc.
Em xin chân thành cảm ơn!

Ngơ Dương Kha
TP.Hồ Chí Minh, tháng 12 năm 2022

1|Page


LỜI MỞ ĐẦU
Vào thế kỷ 21, cuộc cách mạng Công nghiệp 4.0 Internet bùng nổ kéo theo rất nhiều
những đổi mới với các công nghệ kỹ thuật số sắp tới, giúp mọi việc trở nên dễ dàng, thuận
tiện hơn bao giờ hết. Tuy nhiên, sự phát triển đó cũng đi kèm với những tổn thất gây ảnh
hưởng lớn đến nền kinh tế - xã hội. Những vụ trộm tiền điện tử, tấn công an ninh mạng
đang ngày càng trở nên tinh vi và phức tạp hơn, không chỉ ở thế giới nói chung mà cịn ở
Việt Nam nói riêng. Từ những rủi ro đó, các tổ chức 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 thậm chí cách mạng
hóa các giải pháp bảo mật.
Với xuất phát điểm là công nghệ đằng sau loại tiền điện tử phổ biến Bitcoin,

Blockchain đang ngày càng được công nhận và đang cách mạng hóa thế giới, mang lại
những thay đổi đáng kể trong nhiều lĩnh vực như công nghệ, kinh tế, xã hội, y tế... Nó nhằm
mục đích mang lại tính minh bạch, bảo mật và tính tồn vẹn của dữ liệu. Đó là một loạt các
phát triển mới và hy vọng cho những cơ hội to lớn đang thay đổi Công nghiệp 4.0.
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thông tin chúng em đã được trang bị các kiến thức về chuyên môn và kỹ năng
mềm. Với mong muốn bổ sung thêm kinh nghiệm và các kỹ năng làm việc trong một môi
trường chuyên nghiệp, em lên kế hoạch cho một khóa thực tập trong học kỳ này. Sau khi
tìm hiểu về lịch sử phát triển và văn hóa thì em quyết định chọn Công Ty TNHH Codelight
- một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện hóa dự
định này.

2|Page


NHẬN XÉT CỦA KHOA
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………

………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
3|Page


MỤC LỤC
LỜI CẢM ƠN ..................................................................................................................... 1
LỜI MỞ ĐẦU ..................................................................................................................... 2
NHẬN XÉT CỦA KHOA .................................................................................................. 3
MỤC LỤC ........................................................................................................................... 4
DANH MỤC HÌNH ẢNH .................................................................................................. 6
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP ...................................................... 8
1.1. Giới thiệu công ty Codelight ..................................................................................... 8
1.2. Sản phẩm của công ty ............................................................................................... 9
1.2.1. Warena – Cross-chain DeFi game ..................................................................... 9
1.2.2. Massbit – Innovative infrastructure for DeFi and Web3 apps......................... 10
1.2.3. Pikasso – No code NFT platform for Digital Creators .................................... 11

CHƯƠNG 2: NỘI DUNG THỰC TẬP .......................................................................... 12
2.1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty .......................................... 12
2.2. Nghiên cứu kỹ thuật ................................................................................................ 12
2.2.1. Mơ hình Agile .................................................................................................. 12
2.2.2. Tìm hiểu về blockchain, smart contract và mạng Ethereum ........................... 15
2.2.3. Tìm hiểu và sử dụng framwork NestJS xây dựng hệ thống Backend cơ bản .. 21
CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN BLOX3................................................................ 26
3.1. Giới thiệu................................................................................................................. 26
3.2. Vì sao cần có Blox3 ................................................................................................ 26
3.3. Kiến trúc hệ thống ................................................................................................... 27
3.4. Giao diện sản phẩm ................................................................................................. 28
3.4.1. Giao diện mobile .............................................................................................. 28
4|Page


3.4.2. Giao diện website............................................................................................. 31
CHƯƠNG 4: TỔNG KẾT ............................................................................................... 35
4.1. Thành quả ................................................................................................................ 35
4.2. Rút kinh nghiệm ...................................................................................................... 35
4.3. Cảm nhận của bản thân về công ty ......................................................................... 35
DANH MỤC TÀI LIỆU THAM KHẢO ........................................................................ 36

5|Page


DANH MỤC HÌNH ẢNH
Hình 1-1 Logo cơng ty Codelight ......................................................................................... 8
Hình 1-2 Banner game Warena ............................................................................................ 9
Hình 1-3 Logo Massbit ....................................................................................................... 10
Hình 1-4 Landing Page Pikasso ......................................................................................... 11

Hình 2-1 Smart contract Inbox ........................................................................................... 18
Hình 2-2 Smart contract Lottery......................................................................................... 18
Hình 2-3 Smart contract Campaign .................................................................................... 19
Hình 2-4 Kết quả kiểm thử smart contract ......................................................................... 20
Hình 2-5 Mơ hình Controller NestJS.................................................................................. 21
Hình 2-6 Mơ hình Provider NestJS .................................................................................... 22
Hình 2-7 Mơ hình Module NestJS...................................................................................... 22
Hình 2-8 Vịng đời request trong ứng dụng NestJS ........................................................... 24
Hình 2-9 Kết quả kiểm thử NestJS ..................................................................................... 25
Hình 3-1 Logo Blox3 .......................................................................................................... 26
Hình 3-2 Sơ đồ kiến trúc hệ thống backend Blox3 ............................................................ 27
Hình 3-3 Màn hình OnBoarding (mobile) .......................................................................... 28
Hình 3-4 Màn hình SignIn (mobile) ................................................................................... 29
Hình 3-5 Màn hình Home (mobile) .................................................................................... 29
Hình 3-6 Màn hình Deals (mobile) .................................................................................... 30
Hình 3-7 Màn hình Earnings (mobile) ............................................................................... 30
Hình 3-8 Màn hình Account (mobile) ................................................................................ 31
Hình 3-9 Màn hình Authentication (website) ..................................................................... 31
Hình 3-10 Màn hình Dashboard (website) ......................................................................... 32
6|Page


Hình 3-11 Màn hình Transactions (website) ...................................................................... 32
Hình 3-12 Màn hình Deals (website) ................................................................................. 33
Hình 3-13 Màn hình Earnings (website) ............................................................................ 33
Hình 3-14 Màn hình Account (website) ............................................................................. 34

7|Page



CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP

Hình 1-1 Logo công ty Codelight

1.1. Giới thiệu công ty Codelight
- Tên đơn vị: Công ty trách nhiệm hữu hạn Codelight.
- Lĩnh vực hoạt động: Phát triển sản phẩm blockchain.
- Địa chỉ: Vinhomes Central Park, quận Bình Thạnh, thành phố Hồ Chí Minh.
- Trang web: />- Email:
- Thời gian làm việc: Thứ 2 đến thứ 6: 09h00 - 18h00.
- Slogan: “The Internet evolution through Web3 Infrastructure”.
- Sứ mệnh: Xây dựng các sản phẩm phần mềm mang lại nhiều giá trị cho người dùng
- Giá trị cốt lõi:


Someone of honest integrity: Codelight employees should be honest about their
strengths and weaknesses.



Unafraid to show weakness: At Codelight we do not punish weakness. Rather
we treat it as an opportunity to learn and grow.



Politically neutral: At Codelight we respect every person, regardless of their
ideological beliefs.




Equal opportunity: Everyone at Codelight is encouraged to do more and will be
properly rewarded when they prove themselves.

8|Page




Resilient and innovative: At Codelight we adopt an innovative mindset for how
we think, work, and communicate at work.

1.2. Sản phẩm của cơng ty
1.2.1. Warena – Cross-chain DeFi game

Hình 1-2 Banner game Warena

Warena là một decentralized metaverse. Trò chơi này là một cross-chain play-to-earn
game platform với nhiều loại NFT điều khiển nhân vật dựa trên một thế giới viễn tưởng
khoa học hậu tận thế tuyệt vời, với nhiều vùng lãnh thổ có thể mua được, DEXS, và một
thị trường mở do cộng đồng điều khiển. Trong Warena, người chơi có thể chơi, trải nghiệm
và kiếm tiền bằng cách sử dụng tài sản trong trò chơi của họ trong một loạt các minigame
và các hoạt động trong trò chơi.
Emporia được phát triển sau này là thế giới ảo nơi Warena diễn ra. Emporia là một
khơng gian ảo hữu hạn có thể mua được, có thể chuyển nhượng và có thể khai thác được,
có tiện ích người chơi vơ tận và nhiều cách tích cực và thụ động để sử dụng tài sản của bạn
để tận dụng tối đa nền tảng. Emporia có khu vực tài chính phi tập trung (thành phố Eshuya)
và một địa hình khác nhau cung cấp các loại lợi ích khác nhau cho chủ sở hữu dựa trên vị
trí và địa hình.
Địa chỉ website: />9|Page



1.2.2. Massbit – Innovative infrastructure for DeFi and Web3 apps
Massbit cung cấp các giải pháp phi tập trung hoàn toàn cho phát triển dự án ứng dụng
của DeFi và Web3. Hiện tại với 4 sản phẩm trong giai đoạn phát triển, Massbit cho phép
phát triển ứng dụng của DeFi và Web3 nhanh hơn, ổn định, có thể mở rộng và hiệu quả hơn
về chi phí.
Cơng nghệ cốt lõi giúp kết nối với nhau và hỗ trợ tất cả các sản phẩm là Massbit
Verification Protocol, dựa trên Proof of Stake. Giao thức khuyến khích những người làm
việc trong hệ thống để xác minh công việc của nhau. Việc xác minh các node, gateway hoặc
các indexers khác cung cấp phần thưởng hoặc hình phạt cho lỗi của từng cá nhân hoặc thực
thể. Từ đó, giao thức đảm bảo tồn bộ tính minh bạch của mạng.

Hình 1-3 Logo Massbit

Dịng sản phẩm của MassBit:
- MassBit Route: Làm việc với các nhà cung cấp API nhỏ và các validator để tạo
thành các gateway phi tập trung. Một số nhà cung cấp API chỉ sử dụng 20% năng
lực trong khi validator hoặc miner chỉ làm công việc của họ để kiếm phần thưởng
nhưng lãng phí các tài nguyên khác (dữ liệu và API). Với Massbit, các validator sẽ
kiếm được nhiều phần thưởng hơn và phục vụ nhiều ứng dụng DeFi và Web3.
- Multi-chain Indexing: Blockchain indexing là điều cần thiết cho sự phát triển của
DeFi và Web3. Massbit cung cấp cơ sở hạ tầng để lập chỉ mục dữ liệu từ các
blockchain khác nhau, chẳng hạn như Substrate, Ethereum và đặc biệt là các
blockchain nhanh như Binance Smart Chain, Matic và Solana. Hỗ trợ logic lập chỉ
mục bằng các ngôn ngữ khác nhau (Rust, AssemblyScript, TypeScript).
- MassBit Prime: Massbit Prime giúp lan truyền giao dịch và cung cấp cho người
dùng thông tin mempool nâng cao. Lấy cảm hứng từ Optimus Prime, Massbit Prime
10 | P a g e



rất linh hoạt, cung cấp phân tích chất lượng tốt nhất và có thể biến dữ liệu thành lợi
nhuận.
- MassBit Insights: Massbit Explorer cho phép bạn kiểm tra thông tin liên quan đến
tất cả các mạng Blockchain chính. Dự án này sẽ cho phép người dùng xác minh
giá, số lượng giao dịch, epoch hiện tại, market cap, block height và slot height.
Địa chỉ website: />1.2.3. Pikasso – No code NFT platform for Digital Creators

Hình 1-4 Landing Page Pikasso

Pikasso là nơi mà các nghệ sĩ, game studio và nhà sáng tạo số (digital creator) có thể
tự tin thể hiện các tác phẩm của bản thân vào thị trường mới. Là cầu nối giữa Web2 và
Web3, tạo ra một hạ tầng ổn định, đáng tin cậy và tiết kiệm thời gian mở rộng thị trường
của người dùng mà khơng cần lãng phí thời gian nghiên cứu sâu vào thị trường đó.
Bằng việc sử dụng hạ tầng do Pikasso cung cấp người dùng có thể tạo ra NFT cho
ứng dụng, trị chơi, dự án tiếp theo của bản thân mà không cần xử lý các bước phức tạp trên
blockchain thay vào đó có thể tập trung vào sự sáng tạo và đổi mới sản phẩm của mình.
Địa chỉ website: />
11 | P a g e


CHƯƠNG 2: NỘI DUNG THỰC TẬP
2.1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty
Thời gian: 0.5 ngày song song với thực hành trong suốt quá trình thực tập.
Nội dung: Giới thiệu về cơng ty, cách tổ chức của công ty
Được bộ phận tuyển dụng giới thiệu về công ty, nhân sự, bộ phận lãnh đạo, quá trình
thành lập và phát triển, quy trình làm việc, cách tổ chức của cơng ty, văn hóa, phúc lợi của
nhân viên…
Ngồi ra, thực tập sinh cịn được giới thiệu về cách thức làm việc trong công ty như
thời gian đi làm, các quy định cần phải tuân thủ, các bước cần thực hiện trước khi bắt đầu
vào làm, trong quá trình làm việc và khi kết thúc một ngày làm việc.

Tìm hiểu về các cơng cụ sẽ được sử dụng trong quá trình làm việc. Cũng trong thời
gian này, các anh chị hướng dẫn thực tập sinh tìm hiểu các cơng cụ phục vụ cho từng mục
đích cụ thể khi làm việc. Có các ứng dụng, phần mềm hỗ trợ như Google Meet – phục vụ
cho mục đích gặp và trao đổi trực tiếp khi work from home, tham gia các buổi Workshop,
Tech Talk hay Meeting diễn ra thường xuyên và đều đặn trong công ty.
Kết quả: Hiểu thêm về cơng ty Codelight, q trình thành lập và phát triển cho đến
hiện tại. Cách vận hành trong công ty, cách phối hợp với nhau giữa các thành viên. Có thêm
các kỹ năng về việc quản lý dự án, tinh thần trách nhiệm, kỹ năng giao tiếp qua các công
cụ do công ty cung cấp.
2.2. Nghiên cứu kỹ thuật
2.2.1. Mô hình Agile
Thời gian: 1 ngày song song với thực hành trong suốt quá trình thực tập.
Nội dung: Được training về các kiến thức chung và tìm hiểu về việc áp dụng mơ hình
vào quy trình làm việc nhóm trong q trình thực tập. Đây là mơ hình làm việc mà công ty
Codelight đã apply vào sử dụng trên mọi product của công ty.

12 | P a g e


Khái niệm Agile (viết tắt của Agile Software Development) có nghĩa là phương thức
phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục
tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt.
Rất nhiều nơi định nghĩa Agile như một phương pháp. Thực chất, Agile giống như
một phương pháp luận, một triết lý dựa trên hơn nguyên tắc phân đoạn vịng lặp (iterative)
và tăng trưởng (incremental).
Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình là phát triển
phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở các ngành
khác như sản xuất, dịch vụ, sales, marketing, giáo dục... và trở thành một phương thức quản
lý dự án phổ biến nhất hiện nay với nhiều đại diện được gọi là các phương pháp “họ Agile”.
Bốn tôn chỉ cần tuân thủ trong phương pháp Agile:

- Cá nhân và sự tương hỗ quan trọng hơn quy trình và cơng cụ: Trọng tâm đặt
lên con người, xây dựng tương tác và hỗ trợ giữa các thành viên trong nhóm. Những
thành viên có năng lực, chịu tương trợ nhau trong cơng việc sẽ mang đến thành
công cho dự án.
- Sản phẩm dùng được tốt hơn tài liệu đầy đủ: Tập trung thời gian để làm ra phần
mềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu khách hàng.
- Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng: Hiểu được
khách hàng cần gì để tư vấn và điều chỉnh sản phẩm thay vì chỉ dựa vào các điều
khoản trong hợp đồng.
- Phản hồi thay đổi hơn là bám sát kế hoạch: Agile khuyến khích thích nghi với
sự thay đổi, đó có thể là thay đổi về công nghệ, nhân sự, deadline…
12 nguyên tắc quan trọng trong Agile:
- Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sản phẩm
có giá trị.
- Thay đổi yêu cầu được chào đón, thậm chí là rất muộn trong q trình phát triển.
- Giao phần mềm chạy được cho khách hàng một cách thường xuyên.
- Nhà kinh doanh và các kỹ sư phần mềm cần làm việc cùng nhau trong suốt dự án.
13 | P a g e


- Xây dựng dự án xung quanh các cá nhân có động lực. Cung cấp sự hỗ trợ cần thiết,
mơi trường làm việc và niềm tin để hồn thành cơng việc.
- Trao đổi trực tiếp là cách truyền đạt thông tin hiệu quả nhất.
- Thước đo chính của tiến độ là phần mềm chạy tốt.
- Phát triển liên tục và bền vững.
- Cải tiến sự linh hoạt bằng cách quan tâm đến kỹ thuật và thiết kế.
- Nghệ thuật tối đa hóa lượng cơng việc chưa xong - Sự đơn giản là cần thiết.
- Nhóm tự tổ chức.
- Thích ứng thường xuyên với những thay đổi.
Điểm mạnh:

- Thực hiện thay đổi dễ dàng
- Không cần phải nắm mọi thông tin ngay từ đầu
- Bàn giao nhanh hơn
- Chú ý đến phản hồi của khách hàng và người dùng
- Cải tiến liên tục
Agile ở Codelight:
- Sprint Planning (Họp Kế hoạch Sprint- Iteration): Nhóm phát triển gặp gỡ với
Product Owner để lên kế hoạch làm việc cho một Sprint (xem thêm phần Sprint
bên dưới). Công việc lập kế hoạch bao gồm việc chọn lựa các yêu cầu cần phải
phát triển, phân tích và nhận biết các công việc phải làm kèm theo các ước lượng
thời gian cần thiết để hoàn tất các tác vụ. Chia nhỏ công việc thành các backlog
(task) để có thể theo dõi tiến độ dự án dễ dàng hơn. Scrum sử dụng cách thức lập
kế hoạch từng phần và tăng dần theo thời gian, theo đó, việc lập kế hoạch khơng
diễn ra duy nhất một lần trong vịng đời của dự án mà được lặp đi lặp lại, có sự
thích nghi với các tình hình thực tiễn trong tiến trình đi đến sản phẩm.
- Daily Scrum (Họp Scrum hằng ngày): Scrum Master tổ chức cho Đội sản xuất
họp hằng ngày trong khoảng 15 phút để Nhóm Phát triển chia sẻ tiến độ công việc
cũng như chia sẻ các khó khăn gặp phải trong q trình phát triển phần mềm suốt
một Sprint.
14 | P a g e


- Sprint Review (Họp Sơ kết Sprint): Cuối Sprint, nhóm phát triển cùng với
Product Owner sẽ rà soát lại các cơng việc đã hồn tất (DONE) trong Sprint vừa
qua và đề xuất các chỉnh sửa hoặc thay đổi cần thiết cho sản phẩm.
- Sprint Retrospective (Họp Cải tiến Sprint): Dưới sự trợ giúp của Scrum Master,
nhóm phát triển sẽ rà sốt lại tồn diện Sprint vừa kết thúc và tìm cách cải tiến quy
trình làm việc cũng như bản thân sản phẩm.
Kết quả: Tham gia đầy đủ các buổi training, hiểu được những khái niệm của Agile và
áp dụng tốt vào quá trình deliver sản phẩm.

2.2.2. Tìm hiểu về blockchain, smart contract và mạng Ethereum
Thời gian: 3 ngày
Nội dung: Nắm kiến thức tổng quát về blockchain, các lý thuyết liên quan như smart
contract, Token, metaverse, Decentralized Finance (DeFi), blockchain layer và đặc biệt tìm
hiểu và triển khai smart contract trên mạng Ethereum, kèm theo đó là testing tính đúng đắn
của smart contract.
1. Cơ sở lý thuyết
Blockchain: Một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối thơng tin
được liên kết với nhau bằng mã hóa (HASH) và 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. Blockchain được thiết kế để chống lại sự thay đổi của dữ
liệu. Một khi dữ liệu đã được mạng lưới chấp nhận thì sẽ khơng có cách nào thay đổi được
nó.
Smart Contract: là các chương trình chạy trên blockchain. Hợp đồng thơng minh
cũng giống như một hợp đồng kỹ thuật số bị bắt buộc thực hiện bởi một bộ quy tắc cụ thể.
Các quy tắc này do bộ mã máy tính xác định trước mà tất cả các nút (node) trong mạng đều
phải sao chép và thực thi các quy tắc đó.
- Về bản chất, Smart Contract chỉ là một đoạn mã chạy trên một hệ thống phân tán
(blockchain), cho phép tạo ra các giao thức Permissionless (tức là không cần trao
quyền).
15 | P a g e


- Hai bên trong hợp đồng có thể đưa ra các cam kết thông qua blockchain mà không
cần phải biết về danh tính hay tin tưởng lẫn nhau. Họ có thể đảm bảo rằng nếu các
điều kiện của hợp đồng không được thỏa mãn, hợp đồng sẽ không được thực thi.
Hệ thống Smart Contract thường tuân theo các câu lệnh "nếu… thì…".
- Ưu điểm:
• Hợp đồng thơng minh là một bộ mã có thể lập trình, có khả năng tùy chỉnh cao
và có thể được thiết kế theo nhiều cách khác nhau để có thể cung cấp nhiều loại

dịch vụ và giải pháp.
• Hợp đồng thơng minh là các chương trình phi tập trung và tự thực hiện (selfexecuting), chúng giúp tăng tính minh bạch và giảm chi phí hoạt động. Nếu được
triển khai đúng cách, chúng cũng có thể tăng hiệu quả vận hành và giảm chi phí
hành chính.
- Nhược điểm:
• Smart Contract dựa trên hệ thống blockchain nên không thể sửa đổi và can thiệp.
Một khi Smart Contract được viết ra, nếu muốn thay đổi thì chỉ có cách viết lại
một hợp đồng mới. Tính chất khơng thể thay đổi là một ưu điểm lớn, tuy nhiên
trong một số trường hợp có thể là nhược điểm.
• Smart Contract chỉ là các đoạn mã chạy trên một Blockchain do con người tạo
ra, chúng không thông minh, chúng hoạt động theo cách mà nhà phát triển viết
ra chúng, chứ không phải cách mà nhà phát triển nghĩ chúng sẽ hoạt động. Vì
vậy Hợp đồng thơng minh vẫn có rủi ro vì bộ mã có khả năng bị tấn cơng và có
lỗi.
Token: Được hiểu là một dạng tiền điện tử được mã hóa thành những ký tự số chuyên
biệt. Nó là một loại tài sản kỹ thuật số được phát hành và hoạt động trên nền tảng Blockchain
của các dự án có sẵn khơng sở hữu Blockchain riêng, ví dụ như Ethereum. Tokens thường
đề cập đến bất kỳ loại tài sản điện tử nào ngoài Bitcoin và Ethereum. Cụ thể hơn, nó dùng
để mơ tả các tập tin tiền điện tử chạy trên blockchain của một loại tiền điện tử khác.
- Phân loại Tokens, hiện nay có 4 loại tokens chính:

16 | P a g e


• Payment tokens: Payment tokens là loại tiền xu, mục đích chính của nó giống
như một phương tiện trao đổi, lưu trữ giá trị. Các loại tiền điện tử chính như
Bitcoin và Litecoin là các payment tokens.
• Utility tokens: Đây là những mã thông báo cung cấp cho chủ sở hữu quyền truy
cập vào sản phẩm hoặc dịch vụ dựa trên chuỗi khối.
• Security tokens: là tài sản truyền thống như cổ phiếu và cổ phiếu đã được chuyển

đổi thành mã thơng báo kỹ thuật số trên blockchain.
• Non-fungible tokens (tài sản không thể thay thế): là một nội dung số (digital
content) được xây dựng trên hệ thống chuỗi khối – blockchain, tương tự như
Bitcoin hay ETH.
- Các loại tiền điện tử là tài sản “Fungible”có khả năng thay thế và trao đổi được.
Chúng ta có thể đổi 1 đồng Bitcoin lấy 1 đồng Bitcoin khác, đổi tờ 100.000 VND
lấy tờ 100.000 VND khác, giá trị của tài sản không có sự khác biệt. Tuy nhiên, khi
đổi NFT này lấy một NFT khác, ta đã sở hữu một “tài sản” có giá trị hồn tồn
khác tài sản ban đầu. Mỗi NFT là duy nhất!
- Bản thân NFT không phải là một tài sản vật lý, không thể cầm nắm được, mà là
một loại mã hoá để lưu trữ và giao dịch trên thế giới số. Nói cách khác, NFT là một
“dữ liệu” chứa thông tin nhận dạng và xác minh tài sản được lưu giữ trên
blockchain, mỗi “mã” đại diện cho một tài sản. Vậy nên, khi “mua” một bức tranh
NFT, khơng có nghĩa là bạn mang một bức tranh về treo ở phòng khách, mà bạn đã
“mua” quyền sở hữu của tác phẩm đó.

17 | P a g e


2. Triển khai dự án

Hình 2-1 Smart contract Inbox

Contract Inbox là một contract đơn giản giúp làm quen cú pháp ngôn ngữ Solidity.
Chức năng của contract là tạo ra một Inbox với message truyền vào tại contructor, sao đó
có thể update lại message của Inbox đó bằng việc gọi đến hàm updateMessage.

Hình 2-2 Smart contract Lottery

18 | P a g e



Contract Lottery giả lập trò chơi chọn ra ngẫu nhiên một người chiến thắng trong số
những người tham gia trò chơi, mỗi lần tham gia cần phải trả trên 0.01 ether. Khi muốn kết
thúc trị chơi thì chỉ có owner của contract có thể random ra một người chơi và thực hiện
chuyển tất cả số tiền đã thu được của trận đấu đó.

Hình 2-3 Smart contract Campaign

19 | P a g e


Campaign là nơi mọi người có thể tham gia vào với mức tiền nhỏ nhất khi khởi tạo
campaign, người dùng sẽ trở thành approver cho các request của campaign. Người chủ
campaign có thể tạo các request để chuyển tiền đến một địa chỉ nhất định, phải có trên nửa
tổng số người approver của campaign thì người chủ mới có thể finalize request và giao dịch
chuyển tiền mới được thực hiện.
3. Kiểm thử dự án

Hình 2-4 Kết quả kiểm thử smart contract

Github repository: />
20 | P a g e


2.2.3. Tìm hiểu và sử dụng framwork NestJS xây dựng hệ thống Backend cơ bản
Thời gian: 3 ngày.
Nội dung: Được đào tạo khóa học cơ bản về NodeJS và framework NestJS. Sau đó
xây dựng một hệ thống Backend cơ bản.
1. Cơ sở lý thuyết

NestJS là framework NodeJS để xây dựng các ứng dụng phía máy chủ hiệu quả, đáng
tin cậy và có thể mở rộng. Là framework backend được sử dụng nhiều và đặc biệt hiệu quả
với các dự án dApp của blockchain.
NestJS mở rộng từ các framework nối tiếng của NodeJs như Express hoặc Fastify,
thêm tổ chức mô-đun và nhiều thư viện khác để xử lý các tác vụ lặp đi lặp lại. Đây là một
framework mã nguồn mở, sử dụng TypeScript và rất linh hoạt để xây dựng các hệ thống
backend.
Bên cạnh đó, NestJS cịn giúp mở rộng các server Node để hỗ trợ những cơ sở dữ liệu
như MongoDB, Redis hay Apache Cassandra.
NestJS gồm ba có thành phần chính:

Hình 2-5 Mơ hình Controller NestJS

- Controller đảm nhận nhiệm vụ xử lý request đến và trả về response cho phía client.
Khi có request HTTP đến, cơ chế routing sẽ chuyển request này đến controller
tương ứng để xử lý và trả về phản hồi thích hợp.
21 | P a g e


Hình 2-6 Mơ hình Provider NestJS

- Provider là thành phần cơ bản trong Nest, một provider có thể được đưa vào làm
một dependency để tạo ra mối liên hệ giữa nhiều đối tượng khác nhau. Các lớp như
services, repositories hay helpers có thể được xem như provider.

Hình 2-7 Mơ hình Module NestJS

- Một module được thiết kế để đóng gói các logic liên quan của những chức năng
cần triển khai đến client một cách độc lập. Mỗi ứng dụng Nest phải có ít nhất một
module gốc. Module gốc là điểm khởi đầu sử dụng để xây dựng biểu đồ ứng dụng

để giải quyết các mối quan hệ và phụ thuộc của Module và các Providers.
Các thành phần khác trong NestJS:

22 | P a g e


- Middleware là một hàm được gọi trước khi đến route handler. Các hàm này có
quyền truy cập vào các request và response, và hàm next() trong chu kỳ requestresponse của ứng dụng.
- Exception filter chịu trách nhiệm xử lý tất cả các exception chưa được xử lý trên
một ứng dụng. Khi một exception không được xử lý bởi code, nó sẽ được lớp này
bắt, sau đó tự động gửi phản hồi thân thiện đến người dùng.
- Pipe có hai trường hợp sử dụng:
• Transformation: Chuyển đổi dữ liệu đầu vào sang dạng mong muốn.
• Validation: Kiểm tra hợp lệ dữ liệu đầu vào. Sẽ ném một exception khi dữ liệu
khơng chính xác.
- Interceptor có khả năng:
• Ràng buộc logic bổ sung trước/sau khi thực thi phương thức.
• Biến đổi kết quả trả về từ một hàm.
• Biến đổi exception được ném ra từ một hàm.
• Mở rộng hành vi hàm cơ bản.
• Ghi đè hồn tồn một function tùy thuộc vào các điều kiện cụ thể.
- Guard xác định xem một request nhất định sẽ được xử lý bởi route handler hay
không, tùy thuộc vào các điều kiện nhất định (như permissons, roles) hiện có tại
thời điểm chạy. Điều này thường được gọi là ủy quyền (xác thực). Ủy quyền thường
được xử lý bởi middleware trong các ứng dụng Express. Nhưng middleware không
biết handler nào sẽ được thực thi sau khi gọi hàm next(). Mặt khác, Guard có quyền
truy cập vào instance ExecutionContext và do đó biết chính xác những gì sẽ được
thực thi tiếp theo.

23 | P a g e



×