Mặc dù có thê lập trình các hợp đồng thông minh trực tiếp bằng bytecode, nhưng EVM bytecode khá khó sử dụng và rất khó cho các lập trình viên đọc và hiểu. Thay vào đó, hầu hết các nhà phát triển Ethereum sử dụng một ngôn ngữ cấp cao đề viết chương trình và một trình biên dịch đề chuyển đổi chúng thành bytecode.
Mặc dù bất kỳ ngôn ngữ cấp cao nào cũng có thể được điều chỉnh đề viết các hợp đồng thông minh, nhưng việc điều chỉnh một ngôn ngữ tùy ý dé có thé biên dịch được với EVM bytecode là một bài toán khá phức tạp. Ngoài ra, cần phải có một bộ biến
và hàm đặc biệt của hệ thống EVM cụ thể. Do đó, việc xây dựng một ngôn ngữ hợp đồng thông minh từ đầu sẽ dễ dàng hơn so với việc tạo ra một ngôn ngữ có mục đích chung phù hợp dé viết các hợp đồng thông minh. Kết quả là, một số ngôn ngữ có mục dich đặc biệt đã xuất hiện dé lập trình các hợp đồng thông minh. Ethereum có một số ngôn ngữ như vậy, cùng với các trình biên dịch cần thiết để tạo ra mã bytecode thực
thi EVM.
Solidity là một ngôn ngữ như vậy, nó được tạo ra như một ngôn ngữ dành riêng cho
việc viết các hợp đồng thông minh với các tính năng hỗ trợ trực tiếp việc thực thi trong môi trường phi tập trung của máy tính thế giới Ethereum. Nó được phát triển
bởi Christian Reitiwessner và sau đó là Alex Beregszaszi, Liana Husikyan, Yoichi
Hirai và một số cựu cộng tác viên cốt lõi của Ethereum. Solidity hiện được phát triển
và duy trì như một dự án độc lập trên GitHub: https://github.com/ethereum/solidity
3.1.3 Khái niệm ứng dụng phi tập trung
Ứng dụng phi tập trung hay Dapps (Decentralized Application) là các ứng dụng chạy trên một hệ thống máy tính phân tán và các máy có quyền hạn như nhau thay vì có một Server tập trung như các ứng dụng truyền thống.
Apps dApps
& 4 4 4
ee 6 |. e-e@- @ -|*
vs
ry ISP. Isp ISP 4
APPl| |Íappl = || app
Hình 3.3: Sự khác nhau giữa Ung dụng truyền thống và Ung dụng phi tap trung
Một ứng dụng được gọi là Dapps phải thé hiện được 4 đặc điểm sau:
o_ Mã nguồn mở: Bắt kỳ ai cũng có thể xem được mã nguồn của ứng dụng.
o Tính phân tán: Lưu trữ mọi thứ trên một hệ thống phân tán như Blockchain. o_ Khuyến khích / Phần thưởng: Những người có tham gia vào việc kiểm tra và
xác thực sẽ được trả một phần thưởng tương ứng.
o_ Thuật toán: Sử dụng cơ chế đồng thuận.
Trong các ứng dụng truyền thống, chẳng hạn như Facebook, khi người ding truy cập vào giao diện (Front End), ứng dụng sẽ gọi các API đề lấy dữ liệu người dùng từ Cơ
sở dữ liệu sau đó hiển thị ra màn hình (theo kiến trúc Front End — API — Database). Trong khi đó, Ứng dụng phi tập trung cơ bản cũng giống như một ứng dụng truyền thống, nhưng điểm khác biệt rõ rệt là thay vì sử dụng các API để kết nói đến Cơ sở
dữ liệu thì Dapps sử dụng Smart Contract dé kết nối đến Blockchain (theo kiến trúc
Front End — Smart Contract — Blockchain).
3.1.4 Các danh sách lỗ hồng phố biến
3.1.4.1 SWC
SWC (The Smart Contract Weakness Classification) (hitps://swcregistry.io/) là một
danh sách phân loại lỗ héng hợp đồng thông minh dành cho các nhà phát triển, nhà cung cấp công cụ và các chuyên gia bảo mật. SWC có liên kết với các thuật ngữ và cấu trúc được sử dung CWE (https://cwe.mitre.org/) nhưng được chồng lên một loạt các biến thê điểm yếu cụ thẻ cho hợp đồng thông minh.
Mục tiêu của dự án này là:
(i) Cung cấp phân loại đơn giản các vấn dé bảo mật trong hệ thống hợp đồng thông
minh.
(ii) Xác định ngôn ngữ chung dé mô tả các van dé bảo mật trong kiến trúc, thiết kế hoặc mã của hệ thống hợp đồng thông minh.
(iii) Phục vụ như một cách dé đào tạo và tăng hiệu suất cho các công cụ phân tích bảo mật hợp đồng thông minh.
3.1.4.2 DASP — Top 10
Đây là một sáng kiến của NCC Group (https:/Avww.nccgroup.com/uk/), là một dự án
mở và hợp tác nhằm khám phá các lỗ hồng hợp đồng thông minh trong cộng đồng bảo mật. Trong đó bao gồm 10 lỗ hồng được cho là nguy hiểm nhất, kèm theo thông tin, số liệu về các cuộc tắn công và thiệt hại tương ứng với mỗi lỗ hồng. Dự án này rất phù hợp làm điểm bắt đầu cho những ai muốn nghiên cứu về các vấn đề bảo mật trên hợp đồng thông minh.
3.1.5 Phương pháp phân tích lỗ hong
Hợp đồng thông minh Ethereum là một trung gian độc lập trong quá trình thực hiện giao dịch. Như đã đề cập, mặc dù thừa hưởng những ưu điểm của nền tảng Blockchain, hợp đồng thông minh vẫn tồn tại nhiều điểm yếu. Điểm yếu chí mạng nhất đó chính là việc không thể cập nhật hợp đồng. Cho dù yêu cầu của người dùng