BÊN TRONG HỢP ĐỒNG THÔNG
3.1. Mô hình tạo ra chuỗi lời gọi hàm
3.1.1. Tổng quan rnô hành đề xuất
Chúng tôi có tham khảo mô hình trong bai báo [9]. Qua nghiên cứu liên quan
này, nhóm nhận thấy được tiềm năng của việc áp dụng học tăng cường sâu vào
tạo chuỗi lời gọi hàm giao dịch. Để đánh giá lại đầy đủ khả năng tạo chuỗi lời
gọi hàm giao dịch của mô hình học tăng cường, chúng tôi chọn việc hiện thực
hóa mô hình như trong bài báo đã đề cập. Tuy nhiên, thay vì tập trung khai
thác lỗi Ether Leaking và Suicidal thì nhóm chọn khai thác lỗi Re-entrancy và Suicidal.
Reward
Hình 3.1: Mô hành tổng quan
Cải tiến chính của việc áp dụng học tăng cường vào mô hình khai thác so với việc thực hiện sinh ra nhiều chuỗi lời gọi hàm như truyền thống rồi thực thi, tất
cả nằm ở việc đánh giá số lần thực thi ít nhất chuỗi lời gọi hàm giao dịch mà vẫn đảm bảo được sự chính xác. Điểm đánh giá khả năng thực thi sẽ ảnh hưởng đến phần thưởng, vì vậy tác tử sẽ học được hành động nào nên sử dụng và hạn chế sử dụng để không ảnh hưởng tới khả năng khai thác.
47 Các bước hoạt động của mô hình:
1. Đầu tiên các tệp tin hợp đồng thông minh sau khi được biên dịch bằng sole
sẽ được deploy lên trên EVM [7] ở mạng local (ngữ cảnh nay chúng tôi dùng
Ganache để mô phỏng lại).
2. Ké đến, sau khi đã phân loại nhóm cho các hàm trong hợp đồng thông minh
thì tác tử sẽ cố gắng chọn được nhóm chứa các hàm mà có chức năng phù hợp và chọn ngẫu nhiên trong nhóm đó 1 hàm (bằng phương pháp học tăng
cường) để khai thác sau đó gởi về phía server.
3. Quan sát phần thưởng r và trang thái tiếp theo s’.
4. Luu lại kinh nghiệm vào trong(s,a,r,s’) bộ nhớ phát lại.
5. Tại server, môi trường tiếp nhận hành động và thực thi lời gọi hàm sau đó
kiểm tra việc vi phạm các tính chất đã đề ra đối với từng loại lỗi. Các kết
quả liên quan đến hàm có khả năng khai thác được trong chuỗi lời gọi hàm
sẽ làm phần thưởng cho tác tử
6. Cứ như vậy, qua nhiều lần thực hiện hành động trên các hợp đồng thông
minh khác nhau, mạng nơ ron của tác tử sẽ học dần và dự đoán các hành
động hợp lí để tối ưu hóa phần thưởng.
3.1.2. Chi tiết mô hinh đề xuất
8.1.2.1. Trang thái trong môi trường
Trạng thái của môi trường chính là các hàm thực hiện giao dịch được trích
xuất thành dạng các vec tơ thuộc tính. Để trích xuất các thuộc tính này, chúng
tôi da . Các vec tơ thuộc tính bao gồm:
Thuộc tính liên quan đến cả 1 hợp đồng thông minh:
e Trace: Chita số lượng opcode của 8 opcode: SHA, CALL, CREATE, SELF-
DESTRUCT, JUMP, JUMPI, SLOAD, SSTRORE.
48
e Coverage: Chita số lượng opcode của tất cả các hàm / số lượng opcode của
nguyên cả 1 hợp đồng thông minh
Thuộc tính liên quan đến 1 hàm trong hợp đồng thông minh:
e Opcode: Chita 25 opcode phổ biến nhất trong hàm được chọn thực thi, sau
đó mapping những opcode đó thành số (có bảng để mapping ở trang này
https: //ethervm. io/)
e Call: Chứa tần số mà hàm này được gọi trong tổng số lần gọi hàm trong 1
hợp đồng thông minh
e Arguments: Chita số lương tham số được truyền vào của hàm được thực thi
e Name: tokenize tên của các hàm thành vector 300 chiều
e Revert: nếu opcode cuối cùng của hàm được thực thi là Revert thì giá trị
sẽ là 1, ngược lại là 0
e Return: nếu opcode cuối cùng của hàm được thực thi là Return thì giá trị
sẽ là 1, ngược lại là 0
e Assert: nếu opcode cuối cùng của ham được thực thi là Assert thì giá tri sẽ
là 1, ngược lại là 0
e Coverage: Chứa số lượng opcode của hàm thực hiện / số lượng opcode của
1 hợp đồng thông minh
Đối với thuôc tính Name, Việc biến tên hàm thành vector không gian để cho ngôn ngữ máy có thể hiểu được thì ban đầu chúng tôi dự định dùng Word2vec
cho mô hình nhưng đối với việc tên hàm của hợp đồng thông minh phụ thuộc
vào cách người lập trình viên đặt tên nên "từ điển" trong mô hình Word2vec sẽ không thể chứa hết được những trường hợp này. Chính vì thế chúng tôi quyết định sử dụng mô hình Fasttext để giải quyết bài toán tên của các hàm trong hợp đồng thông minh không có nằm trong "từ điển" của word2vec.
49
Hai loại thuộc tính này sẽ tạo thành không gian vec tơ với tổng cộng 340
chiều.
8.1.2.2. trinh phát hiện trong môi trường
Re-entrancy Với loại lỗi re-entrancy thi đây là loại lỗi liên quan đến số dư
trong hợ đồng thông minh, do đó cần kiểm tra số dư trước và sau khi giao dich.
Cu thể, nếu số dư ban đầu của hợp đồng nạn nhân có 5 eth, số tiền của hợp
đồng tấn công có 2 eth. Lúc này chưa có phát sinh giao dịch giữa 2 hợp đồng. Sau khi thực hiện 1 hàm nào đó mà số tiền của hợp đồng tấn công tăng lên 7 và
số tiền của hợp đồng nạn nhân giảm xuống thì lúc này việc khai thác đã thành
công.
Suicidal Với loại lỗi Suicidal thì sau khi thực thi 1 hàm thì cần phải kiểm tra liệu xem là hợp đồng nạn nhân có còn tồn tại trên địa chỉ ban đầu lúc mới triển
khai hay không bằng cách gọi tới thuộc tính getCode của w3.provider.eth, nếu hợp đồng vẫn đang chạy bình thường thì kết quả nó sẽ ra được 1 chuỗi có
kiểu dữ liệu dạng byte, còn nếu hợp đồng đã bị hủy thì kết quả lấy ra được chỉ
là 1 byte rỗng.
3.1.2.3. phát sinh mẫu hợp đồng tan công(Đối uới uiệc khai thác lỗi Reentrancy)
Để phát sinh mẫu hợp đồng tấn công thì có những bước sau: