Tải bản đầy đủ (.pdf) (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 (736.31 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

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

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

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

Mai Công Danh


5

MỤC LỤC

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, 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.

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

Mai Công Danh


10

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).

Hình 2.2 React Native new architecture

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

Mai Công Danh


12

• 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”.
• 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ị.

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

Mai Công Danh


13

+ useState: Hook ln 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).
• 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ớ

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

Mai Công Danh


14

ứ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.
- 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:

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

Mai Công Danh


15

+ 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 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 open-source từ cộng
đồng (react-native-orientation), hay qua chính Dimension API như sau:

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

Mai Công Danh


16

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.
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)
Báo cáo thực tập

Mai Công Danh


17

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ờ.
* 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ọ.
Báo cáo thực tập

Mai Công Danh


18

* 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 sốt hoặc phá hủy dữ liệu
trở nên bất khả thi
* Ứng dụng:

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

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

Mai Công Danh


19

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
Ethereum có một loại tiền tệ riêng được gọi là "Ether" hoặc "ETH". Token
này được yê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..

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

Mai Cơng Danh


20

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.
Chi tiết project sẽ được nói ở phần sau.

2.4

Lịch làm việc

Tuần


Cơng việc

-

Người hướng
dẫn

Tìm hiểu về cơng ty, Anh Phạm Minh

Mức độ
hồn
thành

Nhận xét
của người
hướng
dẫn

100

quy trình làm việc, Cường
quy trình xử lý.
1

-

Chị Trần Thùy

Làm quen với các Dương

cơng cụ làm việc
trong công ty.

-

Học cách trao đổi,
làm việc qua email.

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

Mai Công Danh



×