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

Báo cáo thực tập react native developer

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 (677.48 KB, 28 trang )

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

REACT NATIVE DEVELOPER

Công ty thực tập

: Tech Town Vietnam

Người phụ trách

: Trần Thùy Dương

Thực tập sinh

: Mai Cơng Danh

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


2

LỜI MỞ ĐẦU

Ngày nay, việc phát triển ứng dụng trên thiết bị di động nói riêng và ngành phát
triển phần mềm nói chung đã và đang là một trong những ngành nghề, xu hướng có
sức phát triển hết sức mạnh mẽ, chiếm tỉ trọng lớn trong nền kinh tế toàn cầu và vẫn
còn tiềm năng rất lớn. Cùng với sự phổ biến của các thiết bị như điện thoại thông
minh, máy tính bảng, các vấn đề nhằm nâng cao chất lượng cuộc sống con người, nâng


cao hiệu suất làm việc, thúc đẩy phát triển cho các ngành nghề khác, nhu cầu về phát
triển phần mềm di động hiện là cao hơn bao giờ hết.
Xu hướng phát triển ứng dụng di động được sinh ra là do nhu cầu giải trí của
giới trẻ bằng những thiết bị di động mới nhất. Và cũng chính giới trẻ sẽ là nguồn nhân
lực quan trọng cho việc phát triển của ngành nghề này trong tương lai. Chính nhờ bối
cảnh đó, em đã chọn lập trình trên thiết bị di động làm định hướng học tập cũng như
cơng việc tương lai sau này của mình.
Là một trong nhiều các công ty start-up với đầy tiềm năng, nhiệt huyết và sức
trẻ của mình, Cơng ty TNHH Tech Town đã và đang là nơi đáng tin cậy cho khách
hàng trên thị trường bằng việc cung cấp các giải pháp phần mềm về web và mobile.
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế,
cũng như muốn được tham gia hoạt động trong một môi trường chuyên nghiệp, đồng
thời nhận thấy các giá trị, môi trường, mục tiêu mà Tech Town mang lại đáp ứng rất
đúng với nhu cầu của bản thân, em đã quyết định chọn Tech Town là nơi bắt đầu cho
sự nghiệp, là nơi đầu tiên áp dụng những kiến thức tích lũy được từ mơi trường giảng
đường.

Báo cáo thực tập

Mai Công Danh


3

LỜI CẢM ƠN

Em xin chân thành gửi lời cảm ơn tới Công Ty TNHH Tech Town đã tạo điều
kiện cho em có cơ hội được thực tập tại cơng ty.
Tuy thời gian thực tập kéo dài không lâu, nhưng nhờ sự nhiệt tình hỗ trợ của
trainer, bản thân em đã tiếp thu được những kiến thức thực tiễn quý báu, được tham

gia vào dự án thực tế, được làm việc trong một mơi trường năng động, nhờ đó em có
thể hiểu thêm về công nghệ React Native và xu hướng Web3. Em xin chân thành cảm
ơn các anh chị trong nhóm, đã bỏ ra nhiều thời gian, cơng sức để hướng dẫn em hoàn
thành tốt đợt thực tập này.
Đặc biệt cảm ơn chị Trần Thùy Dương, đã training React Native và các công cụ
liên quan, hướng dẫn, giúp đỡ cho chúng em tận tình cả những khó khăn trong cơng
việc, trong dự án, đến những khó khăn việc làm quen với môi trường mới. Cảm ơn anh
Phạm Minh Cường, đã giúp em hịa đơng với mọi người, giúp em trong các quy trình
thủ tục của cơng ty, tạo điều kiện môi trường tốt nhất cho em học hỏi và làm việc.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ,
tạo điều kiện em thực hiện bài báo cáo này.

Mai Công Danh
TP. HCM, ngày 12 tháng 10 năm 2022

Báo cáo thực tập

Mai Công Danh


4

NHẬN XÉT CỦA KHOA

...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................

...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................

MỤC LỤC
Báo cáo thực tập

Mai Công Danh


5

Mục lục
CHƯƠNG 1. GIỚI THIỆU CÔNG TY THỰC TẬP...........................................................6
1.1

Giới thiệu công ty Tech Town..................................................................................6

1.2

Sản phẩm của công ty................................................................................................6


CHƯƠNG 2. NỘI DUNG THỰC TẬP.................................................................................9
2.1

Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty.........................................9

2.2. Nghiên cứu kỹ thuật...................................................................................................9
2.2.1

Các công cụ làm việc.........................................................................................9

2.2.2

Tìm hiểu framework React Native nâng cao.................................................10

2.2.3

Tìm hiểu blockchain và Web3........................................................................16

2.3

Thực hiện project.....................................................................................................20

2.4

Lịch làm việc............................................................................................................20

CHƯƠNG 3. CHI TIẾT VỀ PROJECT..............................................................................24
3.1


Giới thiệu về project................................................................................................24

3.1.1

Yêu cầu..............................................................................................................24

3.1.2

Các chức năng chính........................................................................................24

3.2

Thực hiện..................................................................................................................24

3.3

Kế hoạch và triển khai.............................................................................................24

TỔNG KẾT.............................................................................................................................27
TÀI LIỆU THAM KHẢO.....................................................................................................28

Báo cáo thực tập

Mai Công Danh


6

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


Hình 1.1 Logo Công Ty TNHH Tech Town

1.1

Giới thiệu công ty Tech Town
Tech Town là công ty công nghệ đến từ Việt Nam, thành lập từ năm 2018. Đến

nay, cơng ty đã chính thức có văn phịng đại diện tại Hoa Kỳ, Canada và Hà Lan từ
năm 2021 và sắp tới là Nhật Bản. Tech Town chuyên cung cấp các giải pháp công
nghệ cho các công ty khởi nghiệp (startup) và doanh nghiệp với việc ứng dụng những
kỹ thuật công nghệ hiện đại như Blockchain, AI, Machine Learning...
Trong hơn 4 năm hoạt động, Tech Town đã trở thành đối tác outsource IT uy
tín được tín nhiệm nhiều đối tác đến từ nhiều quốc gia trên thế giới như: Mỹ, Canada,
Hà Lan, Nhật Bản, Anh Quốc cùng các quốc gia phát triển khác.

1.2

Sản phẩm của công ty
Tech Town chuyên về xây dựng, phát triển và bảo trì các ứng dụng, giải pháp
phần mềm ở các lĩnh vực sau:
-

Web, mobile applications

-

AR/VR, Metaverse

-


Blockchain, Web3

Các sản phẩm nổi bật của cơng ty có thể liệt kê dưới đây:
1.2.1 Revollet – Blockchain web app
Visit site:

Báo cáo thực tập

Mai Công Danh


7

Hình 1.2 Revollet

1.2.2 AlohaDAO – Web3 DApp
Visit site:

Báo cáo thực tập

Mai Công Danh


8

Hình 1.3 AlohaDAO

1.2.3 Zuck Zuck Land – Web3 DApp
Visit site: d


Hình 1.4 Zuck Zuck Land

Báo cáo thực tập

Mai Cơng Danh


9

CHƯƠNG 2. NỘI DUNG THỰC TẬP
Nội dung chính của thời gian thực tập là nghiên cứu framework React Native,
xu hướng Web3 và xây dựng ứng dụng liên quan. Giúp thực tập sinh được đào tạo
toàn diện về React Native, đồng thời rèn luyện các kỹ năng mềm như làm việc nhóm,
giao tiếp. Tại cơng ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong
một môi trường năng động, trẻ trung và chun nghiệ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: 1 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức, giá trị cốt lõi, quy trình làm việc

và xử lý công việc. Cải thiện các kỹ năng mềm.
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát
triển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty. Cách thức
xử lý các vấn đề phát sinh trong lúc làm việc từ các vấn đề về nhân sự, pháp lý đến
máy móc,…
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ách sử dụng email trong công
việc, các kỹ năng mềm.

Kết quả: Hiểu thêm về cơng ty Tech Town, q trình thành lập và phát triển,
giá trị cốt lõi. Có thêm các kỹ năng mềm giúp ích trong cơng việc, làm việc có kế
hoạch, có kỷ luật, có trách nhiệm hơn.

2.2.

Nghiên cứu kỹ thuật
2.2.1 Các công cụ làm việc
Thời gian: 4 ngày
Nội dung: Tìm hiểu về các cơng cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, người phụ trách đã hướng dẫn thực tập sinh tìm hiểu về

các ứng dụng mà công ty sử dung, các cơng cụ sẽ giúp ích trong cơng việc sau này.
Một số phần mềm trong số đó như Microsoft Teams - sử dụng trong làm việc nhóm,

Báo cáo thực tập

Mai Cơng Danh


10

GIT – phần mềm quản lý mã nguồn, Xcode - phần mềm phát triển ứng dụng nền tảng
iOS.
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Lập trình sử dụng các cơng cụ miễn phí, giúp dễ dàng kết hợp các
công cụ với nhau, tiếp cận với các công nghệ đang được sử dụng thực tế ở cơng ty.

2.2.2 Tìm hiểu framework React Native nâng cao
Thời gian: 10 ngày (2 tuần)

Nội dung: Được ôn lại các nội dung cơ bản và training về các kiến thức chuyên
sâu của React Native.
 Kiến trúc hiện tại (old architecture) và kiến trúc mới (new
architecture):
* Kiến trúc hiện tại:
Kiến trúc hiện tại của React Native dựa trên một component trung gian gọi
là “Bridge" (cầu nối), để truyền dữ liệu từ Javascript layer đến native layer phía
dưới. Dù đem lại hiệu năng, ứng dụng tốt cho các ứng dụng, project vừa và nhỏ.
Xong cơ chế cầu nối này tồn tại một số hạn chế như sau:
+ Bất đồng bộ: một layer gửi dữ liệu đến “bridge" và chờ kết quả theo cơ
chế bất đồng bộ, thậm chí ngay cả khi khơng cần thiết.
+ Đơn luồng: mọi tính tốn đều chỉ được thực thi trên luồng Javascript đơn
nhất.
+ Tốn kém: Các layer giao tiếp với nhau đều phải qua cơ chế tuần tự hoá
(serialize) và giải hoá (deserialize) dữ liệu. Điều này làm phát sinh thêm tốn
kém khi vận hành.

Báo cáo thực tập

Mai Công Danh


11

Hình 2.1 React Native architecture
* Kiến trúc mới:
Kiến trúc mới của React Native sẽ thay thế “Bridge” bằng một cơ chế khác
gọi là “the Javascript Interface” (JSI). JSI là một lớp interface cho phép một đối
tượng Javascript giữ một tham chiếu đến một đối tượng C++ và ngược lại. Kiến
trúc này sẽ được xây dựng từ hai thành phần chính gồm: The New Native

Module System - Turbo Modules và The New Renderer – Fabric. Ý tưởng này
sẽ đem lại một số lợi ích sau:
+ Thực thi đồng bộ: các hàm sẽ được thực thi một cách đồng bộ ngay từ đầu
thay vì phải xử lý bất đồng bộ khơng cần thiết.
+ Đa luồng: các hàm Javascript giờ đây có thể chạy trên những luồng xử lý
đồng thời khác.
+ Giảm tốn kém: kiến trúc mới này khơng địi hỏi phải tuần tự hoá và giải
tuần tự hoá dữ liệu nên sẽ giảm được tốn kém hiện có.
+ Code sharing: với C++, giờ đây có thể trừu tượng hố tất cả các code bất
khả tri (agnostic code) và chia sẻ giữa các nền tảng (platform).

Báo cáo thực tập

Mai Công Danh


12

Hình 2.2 React Native new architecture
 Core components and Native components:
Các kiến thức cơ bản về các component có trong React Native. Ngồi ra,
thực tập sinh cịn được hướng dẫn về việc custom lại một native component có
sẵn.
* Custom native component:
1. Tạo một lớp CustomView kế thừa một lớp native UI component bất
kỳ theo nhu cầu.
2. Trong lớp này, xây dựng, thay đổi các thuộc tính, phương thức thoả
yêu cầu vấn đề.
3. Tạo một lớp ViewManager cho CustomView bằng việc kế thừa lớp
wrapper ViewManager của React Native. Trong đây, override lại phương thức

createView

(createViewInstance/RTCViewManager

tương

ứng

trên

Android/iOS). Cũng ở đay, tạo tham chiếu đến Javascript cho các thuộc tính
của native UI qua @ReactProp.
4. Khai báo package ViewManager vừa tạo vào danh sách các native
modules của React Native.
5.

Sử

dụng

trong

code

Javascript

qua

module


“requireNativeComponent”.

Báo cáo thực tập

Mai Công Danh


13

 React Hooks:
Ôn lại, tiếp cận những kiến thức cũ, mới về các hook có trong React.
Định nghĩa: Hook được giới thiệu trong phiên bản React 16.8. Nó cho phép
chúng ta sử dụng state và các tính năng khác của React mà khơng phải dùng
đến Class. Do đó các hooks chỉ có thể sử dụng trong các functional component.
+ useRef: useRef chủ yếu được sử dụng để lưu trữ các tham chiếu đến
các UI component; trở thành một biến không bị khởi tạo mới mỗi lẩn rerender,
đồng thời cũng không trigger rerender khi thay đổi giá trị.
+ useState: Hook luôn trả về một mảng có hai elements: element đầu tiên
sẽ là giá trị của state, element thứ hai sẽ là một hàm dùng để cập nhật giá trị của
state đó. useState chỉ có thể thay đổi giá trị qua hàm setState và cũng trigger
rerender khi giá trị state thay đổi.
+ useEffect: useEffect nhận vào hai tham số gồm: callback function và
mảng dependency. Với cấu trúc này, useEffect có thể thực hiện nhiều chức
năng khác nhau dựa trên giá trị của dependencies, thay thế cho các hàm
componentDidMount, componentWillUnmount, ...
+ useMemo: useMemo tránh cho việc tính tốn lại một function lặp đi
lặp lại nhiều lần mỗi lần component rerender. Để có thể làm như vậy, useMemo
nhận vào hai tham số gồm: function và mảng dependency để lưu lại một
memoized value.
+ useCallback: giống với useMemo về cấu trúc nhưng khác với

useMemo ở điểm: hook này sẽ lưu lại một memoized callback thay vì
memoized value và sẽ chỉ tạo ra callback mới khi dependencies thay đổi.
+ useLayoutEffect: cấu trúc và chức năng tương tự useEffect, tuy nhiên
hook này khác ở chỗ: useLayoutEffect sẽ được chạy trước khi UI được cập nhật
so với useEffect (chạy sau khi UI cập nhật).

Báo cáo thực tập

Mai Công Danh


14

 Tối ưu hiệu suất ứng dụng:
- Sử dụng FlatList hay SectionList thay cho ScrollView khi có nhiều data:
ScrollView sẽ render tất cả data cùng một lúc, trong khi FlatList hay SectionList
có hỗ trợ lazy loading. Điều này giúp tối ưu hiệu suất component cũng như cải
thiện việc tiêu thụ bộ nhớ.
- Hạn chế inline function và inline styles: mỗi lần rerender, những arrow
function hay styles inline sẽ được tạo mới instance. Việc này ảnh hưởng đến
rerender không cần thiết khi instance hàm được tạo mới và còn là sự chưa tối
ưu bộ nhớ ứng dụng. Thay vào đó hãy dùng StyleSheet để tạo reference cho các
style và khai báo các hàm nếu có.
- Cân nhắc sử dụng useMemo, useCallback và React.memo cho tối ưu rerender:
+ useMemo: memoize giá trị của các hàm tính tốn phức tạp.
+ useCallback: memoize function thay vì value như useMemo.
+ React.memo hay PureComponent: nếu component có props khơng thay
đổi qua mỗi lần component cha rerender, thì component được bọc trong
React.memo sẽ khơng bị rerender.
- Sử dụng nativeDriver khi dùng thư viện Animated: sử dụng thư viện

Animated là cách tiếp cận phổ biến nhất cho animation trong React Native.
useNativeDriver sẽ xử lý animation độc lập so với thread Javascript chính của
ứng dụng, giúp cho chúng ta giữ được sự mượt mà, tối ưu của khung hình,
animation.
- Sử dụng Hermes: Hermes là một Javascript engine được Facebook phát triển
vào năm 2019. Engine này giúp cải thiện hiệu suất ứng dụng, giảm tiêu thụ bộ
nhớ, giảm dung lượng app, cải thiện thời gian khởi động app. Hermes có thể
được bật/tắt thông qua việc set trường enableHermes true/false trong hai file
android/app/build.gradle, Podfile tương ứng Android và iOS.

Báo cáo thực tập

Mai Công Danh


15

- Loại bỏ các thư viện không sử sung cũng như các tính năng dư thừa: mỗi thư
viện hay mỗi tab, animation, navigation đều ảnh hưởng ít, nhiều đến ứng dụng.
Ta chỉ nên giữ lại những thứ cần thiết và quan trọng.
- Ln có các hàm dọn dẹp (clean up function) cho các useEffect hay các hàm
subscibe (eventListener) nếu có: Tránh tình trạng tràn bộ nhớ và tối ưu hiệu
suất ứng dụng.
 Mở rộng:
- Responsive trong React Native:
+ Luôn set minWidth và maxWidth: Điều này giúp cover tốt được các
màn hình cỡ lớn.
+ Dimension API: hoạt động tương tự như Media query trong CSS. Về
cơ bản thì nó cung cấp width và height chính xác của màn hình, sau đó tính
tốn để nó ln co giãn được theo từng kích thước màn hình. Đồng thời cũng

có thể sử dụng dạng inline trong style.

Hình 2.3 Ví dụ Dimension API trong React Native
+ Platform Module: React Native cung cấp một Platform module có sẵn,
giúp detetc được nền tảng của thiết bị đang chạy (iOS, Android, Web,…). Sẽ
hữu ích cần style riêng cho từng nền tảng (thay đổi nhỏ).
+ Handle orientation (xoay chiều thiết bị): Nếu khơng khóa chiều của
screen ngay từ ban đầu thì chúng ta phải xử lý được tình huống người dùng
Báo cáo thực tập

Mai Công Danh


16

xoay chiều của thiết bị để thích ứng UI cho phù hợp, đặc biệt là thiết bị di động.
React Native khơng cung cấp module có sẵn để phục vụ việc xử lý orientation,
tuy nhiên ta vẫn có thể tiếp cận được thông qua các cách như: module opensource từ cộng đồng (react-native-orientation), hay qua chính Dimension API
như sau:

Hình 2.4 Ví dụ detect thiết bị xoay chiều qua Dimension API
- Xử lý UX cơ bản và thiết yếu:
+ Detect tình trạng của kết nối internet: Xử lý trong ứng dụng khi thiết bị
của người dùng mất kết nối/ kết nối internet thông qua module react-nativenetinfo từ cộng đồng.
+ Xử lý sự kiện onPress của button: Nếu button có chức năng lớn, cần
thời gian để xử lý khi được nhấn, ta cần có cơ chế chặn người dùng liên tục
spam nhấn nút. Điều này có thể thực hiện qua việc tắt/mở (enable) trạng thái
của nút, và hiển thị UI loading khi đang xử lý.
+ UI loading cho các component cần thời gian để fetch data, mount UI.
+ Chú ý về màn hình ở các thiết bị iOS do chúng khác với Android ở

phần tai thỏ (notch).
- Build iOs và publish lên Apple TestFlight:
Sử dụng Apple Xcode trên hệ điều hành MacOS để build ứng dụng
React Native trên máy ảo iOS. Và chỉ trên MacOS ta mới có thể config, setup
các thơng số, cài đặt để publish lên TestFlight (ứng dụng để preview và test cho
các thiết bị iOS) hay release lên AppStore.

Báo cáo thực tập

Mai Công Danh


17

Thực hiện:
-

Làm các bài thực hành, kiểm tra về kiến thức đã học.

-

Tìm kiếm các tài liệu trên mạng để tìm hiểu thêm.

-

Ứng dụng kiến thức đã học vào project luyện tập, project của công ty.

Kết quả:
-


Nâng cao kiến thức, kỹ năng lập trình với framework React Native.

-

Có được những kiến thức quan trọng cho việc lập trình mobile sau này.

-

Ngồi ra cịn được biết thêm một số quy tắc trong việc viết code sao cho
đúng chuẩn, dễ đọc, dễ hiểu và hiệu quả.

2.2.3 Tìm hiểu blockchain và Web3
Thời gian: 5 ngày (1 tuần)

Nội dung: Các kiến thức cơ bản về blockchain và Web3.
 Blockchain:
* Khái niệm:
Blockchain là một cơ sở dữ liệu được chia sẻ, phân tán và vĩnh viễn được
chia sẻ giữa nhiều node trên mạng máy tính. Blockchain ghi lại dữ liệu theo
cách mà việc sửa đổi hay hack hệ thống là không thể xảy ra.
Như tên gọi, blockchain lưu lại dữ liệu dưới dạng chuỗi các khối liên kết
nhau. Mỗi khối chứa các nhóm giao dịch (transactions), có thể truyền các assets
trong mạng lưới hoặc cập nhật thơng tin trong hệ thống.
* Block (khối):
Vì có hàng triệu giao dịch nên các giao dịch được nhóm lại với nhau thành
các khối. Các khối này được liên kết với nhau theo cách có thể kiểm chứng
bằng mật mã để có thể dễ dàng truy vết. Trạng thái hiện tại của mạng có thể
được tính tốn lại bất cứ lúc nào bằng cách bắt đầu từ khối gốc và cập nhật
trạng thái theo thông tin của khối tiếp theo cho đến bây giờ.


Báo cáo thực tập

Mai Công Danh


18

* Nodes (nút):
Mạng blockchain được quản lý tự động thông qua mạng phân tán ngang
hàng (peer-to-peer) của các node máy tính. Có thể nghĩ đơn giản về mỗi node
trong mạng như giữ một bản sao của sổ cái giao dịch chung. Do đó, mỗi node
có thể xác minh và kiểm tra riêng các giao dịch xảy ra trên mạng và đảm bảo
khơng có hành vi bất hợp pháp.
Một loại node khác, được gọi là node khai thác (mining node), chịu trách
nhiệm nhóm các giao dịch mới được thực hiện trên mạng thành một khối, xác
minh chúng và đề xuất khối được đưa vào sổ cái chung. Khai thác là công việc
khó về mặt tính tốn và rất quan trọng để thực hiện một cách an tồn, vì vậy
những người khai thác có khối được chấp nhận sẽ nhận được phần thưởng
token cho cơng việc khó khăn của họ.
* Decentralization (phi tập trung):
Bằng cách lưu trữ dữ liệu trong mạng ngang hàng của các node,
blockchain là một mạng phi tập trung. Điều này có lợi ích đáng kể so với
phương pháp lưu trữ dữ liệu tập trung truyền thống.
Lợi ích của phi tập trung:
+ Vi phạm dữ liệu trong các hệ thống tập trung làm lộ rất nhiều dữ liệu
+ Hệ thống tập trung có thể kiểm duyệt và hạn chế nội dung
+ Phụ thuộc vào máy chủ hệ thống có nghĩa là các sự cố xảy ra ở tầng
trên của hệ thống sẽ ảnh hưởng đến các bộ phận phía dưới.
Hạn chế:
+ Không kiểm duyệt

+ Khả năng chống tấn công cao khiến việc kiểm soát hoặc phá hủy dữ
liệu trở nên bất khả thi
* Ứng dụng:

Báo cáo thực tập

Mai Công Danh


19

- Tiền điện tử
- Hợp đồng thông minh (smart contract)
- Tài chính phân tán
- Bảo mật thơng tin

 Web3:
* Khái niệm:
Web3, tương lai của internet mà chúng ta đang hướng tới, là một mạng phi
tập trung. Trong Web3, internet được chia sẻ trực tuyến và được quản lý bởi tập
thể “người dùng” (we), thay vì thuộc sở hữu của các thực thể tập trung cấp cao
hơn. Thế giới Web3 là thế giới có các giao thức mã nguồn mở làm nền tảng.
Web3 nói về việc cấu trúc lại các dịch vụ và sản phẩm internet để chúng mang
lại lợi ích cho mọi người hơn là các thực thể.
Web3 cải thiện web mà chúng ta biết ngày nay bằng cách làm cho nó trở
nên phi tập trung, phân tán, mở, khơng tín nhiệm và khơng cần được cấp quyền.
*Ethereum:
Ethereum là một chuỗi khối phi tập trung hỗ trợ các hợp đồng thông minh.
Không giống như Bitcoin, chỉ hỗ trợ transfer Bitcoin token trong hệ thống,
Ethereum có mục đích chung lớn hơn.

Các nhà phát triển có thể xây dựng dApp hay ứng dụng phi tập trung, có thể
được thực thi trên mạng Ethereum trên Máy ảo Ethereum (EVM). Do đó, trạng
thái tồn cầu của Ethereum không chỉ bao gồm số dư của mọi tài khoản mà còn
bao gồm trạng thái của từng dApp.
dApps được xây dựng trên Ethereum bằng ngôn ngữ lập trình của nó,
Solidity. Bạn có thể viết hợp đồng thơng minh bằng Solidity và triển khai hợp
đồng thông minh cho Mạng Ethereum

Báo cáo thực tập

Mai Công Danh


20

Ethereum có một loại tiền tệ riêng được gọi là "Ether" hoặc "ETH". Token
này được u cầu thanh tốn phí giao dịch cho các giao dịch được thực hiện
trên mạng Ethereum.
*Provider, Signer:
Provider là một kết nối node Ethereum cho phép đọc dữ liệu từ trạng thái
của nó. Sử dụng Provider để thực hiện những việc như gọi các chức năng chỉ
đọc (read-only) trong hợp đồng thơng minh, tìm nạp số dư tài khoản, tìm nạp
chi tiết giao dịch, v.v.
Signer là một kết nối node Ethereum cho phép ghi dữ liệu vào blockchain.
Sử dụng Signer để thực hiện những việc như gọi chức năng ghi (write) trong
hợp đồng thông minh, chuyển ETH giữa các tài khoản, v.v. Để làm như vậy,
Signer cần có quyền truy cập vào private key để thực hiện giao dịch thay mặt
tài khoản. Ngồi ra, Signer có thể làm mọi thứ mà Provider có thể làm..
Thực hiện:
-


Tham gia đầy đủ các buổi trainning.

-

Tìm kiếm tài liệu trên mạng để tìm hiểu thêm.

Kết quả:
-

Hiểu được những khái niệm cơ bản về blockchain và web3.

-

Nắm được khái niệm, chức năng của các thành phần cốt lõi khi làm việc
với web3.

2.3

Thực hiện project
Sau gần một tháng được training và thực hành, thực tập sinh đã nắm được

những kiến thức cơ bản và nâng cao về Javascript ES6, React Native và blockchain.
Trong hơn một tháng còn lại, người phụ trách đã hướng dẫn thực tập sinh áp dụng
những kiến thức đã học để thực hiện một project React Native với chủ đề blockchain.

Báo cáo thực tập

Mai Công Danh




×