You are on page 1of 9

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

——🙠🙡🕮🙣🙢——

BÁO CÁO THỰC TẬP CHUYÊN NGÀNH

Đơn vị thực tập: Công ty CP Công Nghệ Moonlab

Họ và tên SV: Phùng Quốc Toàn

Mã SV: 20020481

Lớp: QH-2020-I/CQ-C-D

Thời gian bắt đầu thực tập: 24/5/2023

Giảng viên hướng dẫn: TS.Lê Nguyên Khôi

HÀ NỘI – 6/2023
CHƯƠNG I: GIỚI THIỆU TỔNG QUAN VỀ CÔNG TY THỰC TẬP
Công ty CP công nghệ Moonlab là một công ty CNTT tiên phong với sự chuyên sâu
trong lĩnh vực blockchain và các ứng dụng liên quan. Công ty tập trung vào việc phát
triển các sản phẩm, giải pháp và trò chơi dựa trên công nghệ blockchain và xây dựng
một hệ sinh thái đa dạng và phong phú trong các lĩnh vực Blockchain, Defi, Gamefi,
Socialfi và Metaverse.
Tên quốc tế: MOONLAB TECHNOLOGY JOINT STOCK COMPANY
Tên viết tắt: MOONLAB TECHNOLOGY., JSC
Mã số thuế: 0109893506
Địa chỉ: Thôn Đại Tự, Xã Kim Chung, Huyện Hoài Đức, Thành phố Hà Nội, Việt Nam
Ngày hoạt động: 20/01/2022

CHƯƠNG II: CÁC NHIỆM VỤ THỰC TẬP


Người hướng dẫn thực tập ở công ty: Tô Bá Minh Đức (Leader team backend)
1, Từ 1/6/2023 - 15/6/2023 (Đã hoàn thành)
- Học về nodejs, ngôn ngữ typescript, csdl mysql, redis.
o Node.js: Node.js là một môi trường chạy mã JavaScript phía máy chủ được
xây dựng trên JavaScript Engine V8 của Google. Nó cho phép bạn thực
hiện các hoạt động phía máy chủ bằng JavaScript, mở ra khả năng xây
dựng ứng dụng mạng hiệu quả và không đồng bộ. Node.js được sử dụng
rộng rãi để phát triển các ứng dụng web thời gian thực, API và ứng dụng đa
nền tảng.
o TypeScript: TypeScript là một ngôn ngữ lập trình mã nguồn mở, mở rộng
từ JavaScript, nhưng với tính năng kiểu tĩnh. Điều này có nghĩa là bạn có
thể xác định kiểu dữ liệu cho các biến, tham số và giá trị trả về từ hàm.
TypeScript giúp kiểm tra lỗi sớm hơn trong quá trình phát triển và cung cấp
tính năng gợi ý thông minh từng khi nhập mã. TypeScript sau đó được biên
dịch thành mã JavaScript để chạy trên trình duyệt hoặc Node.js.
o Cơ sở dữ liệu MySQL: MySQL là hệ quản trị cơ sở dữ liệu phổ biến và
mã nguồn mở. Nó sử dụng ngôn ngữ truy vấn SQL để lưu trữ, quản lý và
truy xuất dữ liệu. MySQL rất thích hợp cho các ứng dụng web và ứng dụng
có yêu cầu lưu trữ dữ liệu cấu trúc như thông tin người dùng, bài viết, sản
phẩm và nhiều dạng dữ liệu khác.
o Redis: Redis là hệ thống cơ sở dữ liệu key-value cách mạng và mã nguồn
mở. Nó tập trung vào hiệu suất cao, hỗ trợ các hoạt động dữ liệu trong bộ
nhớ và có thể được sử dụng để lưu trữ các dạng dữ liệu đơn giản như danh
sách, bảng băm, tập hợp, và đối tượng. Redis thường được sử dụng cho việc
lưu trữ cache, quản lý phiên, và làm nhiệm vụ thông báo thời gian thực.

- Làm các bài tập về cách viết api, xây dựng backend đơn giản như tính lãi suất đầu
tư crypto, xây dựng api đăng nhập, đăng ký.
2, Từ 16/6/2023 - 23/6/2023 (Đã hoàn thành)
- Tìm hiểu cơ bản về công nghệ blockchain(khái niệm, tính chất, thuật toán)
o Khái niệm:
 Blockchain là một loạt các khối dữ liệu liên kết với nhau thông qua
việc sử dụng mã hóa và một số quy tắc cụ thể. Mỗi khối chứa thông
tin về giao dịch hoặc dữ liệu khác và có một mã hash duy nhất. Các
khối được kết nối với nhau bằng cách sử dụng mã hash của khối
trước đó, tạo thành một chuỗi liên tiếp gọi là "blockchain". Do tính
chất phân tán, dữ liệu trên blockchain không thể thay đổi một cách dễ
dàng.
o Tính chất:
 Phân tán: Dữ liệu được lưu trữ và quản lý trên nhiều máy tính khác
nhau trong mạng, không có một điểm kiểm soát duy nhất.
 An toàn: Do mã hóa và tính chất phân tán, dữ liệu trên blockchain
khó có thể bị thay đổi hoặc tấn công.
 Bất biến: Dữ liệu một khi đã được ghi vào blockchain, rất khó để
thay đổi. Điều này đảm bảo tính toàn vẹn của dữ liệu.
 Mở và minh bạch: Mọi giao dịch và thông tin trên blockchain có thể
được kiểm tra bởi mọi người trong mạng, tạo ra tính minh bạch.
o Thuật toán:
 Proof of Work (PoW): Thuật toán này yêu cầu người tham gia mạng
phải giải quyết một vấn đề tính toán phức tạp để thêm khối mới vào
blockchain. Đây là cơ chế mà Bitcoin sử dụng.
 Proof of Stake (PoS): Người tham gia mạng phải đặt cược một số
lượng tiền ảo của họ để được chọn thêm khối. PoS dựa vào sự "cổ
đông" của người dùng.
 Delegated Proof of Stake (DPoS): Một biến thể của PoS, trong đó
người dùng bỏ phiếu cho một số cổ đông được ủy quyền thay vì đặt
cược.
 Proof of Authority (PoA): Các block được tạo bởi các thực thể
được xác định trước dựa trên sự tin cậy và quyền hạn.
 Proof of Space (PoSpace): Dựa trên việc dành không gian lưu trữ
trống trên ổ cứng để đạt được khả năng tham gia.
 Proof of Burn (PoB): Người dùng đốt một số lượng tiền ảo để
chứng minh mức độ cam kết của họ đối với hệ thống.

- Tìm hiểu kiến trúc web3, sự khác biệt giữa web3 và web2 truyền thống
o Kiến trúc Web3:
 Kiến trúc Web3 là một cách tiếp cận mới cho việc xây dựng ứng
dụng trên Internet, tập trung vào sự phi tập trung, bảo mật và quyền
riêng tư. Nó dựa vào công nghệ blockchain và hợp đồng thông minh
để tạo ra các ứng dụng phân tán, trong đó người dùng có quyền kiểm
soát dữ liệu của họ và tham gia vào quá trình quyết định.
o Sự khác biệt giữa Web3 và Web2 truyền thống:
 Kiểm soát dữ liệu: Web3 đặt quyền kiểm soát dữ liệu trở lại tay
người dùng. Trong khi Web2 (web truyền thống) thông thường lưu
trữ và quản lý dữ liệu tập trung, Web3 cho phép người dùng lưu trữ
dữ liệu của họ và chia sẻ nó một cách an toàn.
 Phi tập trung: Web3 hoạt động trên cơ sở dữ liệu phi tập trung như
blockchain, nơi dữ liệu được phân tán trên nhiều nút mạng. Trong
khi Web2 thường dựa vào các máy chủ tập trung để quản lý dữ liệu.
 Bảo mật và quyền riêng tư: Web3 tập trung vào việc cải thiện bảo
mật và quyền riêng tư cho người dùng bằng cách mã hóa dữ liệu và
cung cấp quyền kiểm soát cho người dùng. Web2 thường gặp rủi ro
về quyền riêng tư khi dữ liệu của người dùng được sử dụng mà họ
không kiểm soát.
 Contract: Web3 sử dụng hợp đồng thông minh để thực hiện các giao
dịch và thỏa thuận tự động. Trong khi Web2 thường cần sự tham gia
của bên thứ ba như ngân hàng hoặc trung gian.
 Tiếp cận tài chính: Web3 cho phép tiếp cận tài chính toàn cầu một
cách dễ dàng thông qua tiền điện tử và token. Trong khi Web2
thường cần các cơ chế tài chính truyền thống.
-
3, Từ 24/6/2023 – 30/6/2023 (Đã hoàn thành)
- Tiếp tục tìm hiểu các kiến thức liên quan đến blockchain và web3 như cryto(eth,
bitcoin, bnb), smart contract.
o Coin (Tiền ảo): Coin là một đơn vị tiền tệ kỹ thuật số được sử dụng trong
các mạng blockchain. Chúng có giá trị và có thể được giao dịch trong hệ
thống. Ví dụ, Bitcoin là một loại coin.
o Smart Contract (Hợp đồng thông minh): Smart contract là một chương
trình máy tính tự động hoạt động trên blockchain, thực hiện các thỏa thuận
và giao dịch mà không cần sự can thiệp của bên thứ ba. Chúng xác định
các điều kiện và hành động dựa trên sự kiện trong hệ thống blockchain.
o EVM (Ethereum Virtual Machine - Máy ảo Ethereum): EVM là một
môi trường ảo chạy các smart contract trên mạng Ethereum. Nó là một
phần quan trọng của hệ thống Ethereum, cho phép các nhà phát triển viết
và triển khai smart contract bằng các ngôn ngữ lập trình như Solidity.
EVM đảm bảo tính nhất quán và an toàn của các smart contract trên
blockchain Ethereum.

- Sau khi hiểu cách thức hoạt động của smart contract, nghiên cứu cách thực thi và
biên dịch code smart contract trên mạng etherum dựa vào máy ảo etherum(evm).
4, Từ 1/7/2023 – 15/7/2023 (Đã hoàn thành)
- Đọc và phân tích base code của công ty. Sau đó, viết các api liên quan đến tài
chính, crypto như mua bán và trao đổi coin kết hợp với tương tác thông qua
contract.
5, Từ 16/7/2023 – 31/7/2023 (Đã hoàn thành)
- Áp dụng các kiến thức đã tìm hiểu về blockchain, ứng dụng vào việc xây dựng
web3 bằng cách viết các api và service dựa trên việc listen event, crawl data từ
mạng blockchain, thao tác với smart contract thông qua code backend để tương
tác với blockchain.
6. , Từ 1/8/2023 – 15/8/2023 (Đã hoàn thành)
- Tạo các chat bot trên telegram và discord để sử dụng cho mục đích quản lí cộng
đồng khách hang của dự án mà công ty xây dựng.
- Cách xây dựng bot telegram bằng typescript và nodejs:
o Bước 1: Tạo một Bot trên Telegram:
 Mở ứng dụng Telegram và tìm bot "BotFather".
 Bắt đầu cuộc trò chuyện với BotFather và sử dụng lệnh /newbot để tạo một
bot mới.
 Theo hướng dẫn của BotFather, bạn sẽ nhận được một token truy cập bot.
Hãy lưu trữ token này cho bước sau.
 Bước 2: Thiết lập dự án Node.js:
 Tạo một thư mục cho dự án của bạn và chạy npm init để khởi tạo một dự án
Node.js.
 Cài đặt thư viện node-telegram-bot-api để tương tác với API của Telegram
bằng cách chạy npm install node-telegram-bot-api --save.
o Bước 3: Viết mã Node.js:
 Bây giờ, bạn có thể viết mã để xây dựng bot của mình. Dưới đây là ví dụ
đơn giản:
o Bước 4: Chạy bot của bạn:
 Lưu mã vào tệp JavaScript ví dụ: bot.js.
 Chạy bot bằng lệnh node bot.js.
 Bot của bạn sẽ bắt đầu lắng nghe tin nhắn từ người dùng và phản hồi khi
nhận được tin nhắn "hello".
- Cách xây dựng bot discord bằng typescript và nodejs:
o Bước 1: Tạo Một Ứng Dụng Discord và Bot:
 Đăng nhập vào tài khoản Discord của bạn tại Discord Developer Portal.
 Nhấp vào "New Application" để tạo một ứng dụng mới. Đặt tên cho ứng
dụng của bạn và lưu lại.
 Trong menu bên trái, điều hướng đến phần "Bot" và nhấp vào "Add Bot".
 Dưới phần "Token", nhấp vào "Copy" để sao chép token của bot của bạn.
Hãy lưu token này cho bước sau.
o Bước 2: Thiết Lập Dự Án Node.js:
 Tạo một thư mục cho dự án của bạn và chạy npm init để khởi tạo một dự án
Node.js.
 Cài đặt thư viện discord.js để tương tác với API của Discord bằng cách chạy
npm install discord.js --save.
o Bước 3: Viết Mã Node.js:
 Bây giờ, bạn có thể viết mã để xây dựng bot của mình. Dưới đây là ví dụ
đơn giản:

o Bước 4: Chạy Bot Của Bạn:


 Lưu mã vào tệp JavaScript ví dụ: bot.js.
 Chạy bot bằng lệnh node bot.js.
 Bot của bạn sẽ kết nối đến máy chủ Discord và phản hồi "pong" khi
nhận được tin nhắn "ping".
7, Từ 15/8/2023 – 31/8/2023
- Sau khi nắm được các kiến thức theo yêu cầu của công ty, tham gia vào phát triển
backend các dự án của công ty để xây dựng các Dapp trên mạng blockchain.

You might also like