Hôm nay mạng bị tấn công bởi một cuộc tấn công thư rác giao dịch liên tục kêu gọi các opcode EXTCODESIZE (xem dấu vết mẫu ở đây), do đó tạo ra khối mà mất đến ~ 20-60 giây để xác nhận do ~ 50.000 đĩa fetches cần thiết để xử lý các giao dịch. Kết quả của việc này là một ~ 2-3x giảm được tốc độ tạo khối trong khi các cuộc tấn công đã diễn ra; có NO thất bại đồng thuận (tức là. mạng ngã ba) và không mạng cũng không phải bất kỳ khách hàng bất cứ lúc nào dừng lại hoàn toàn. Các cuộc tấn công có từ, tính đến thời điểm viết bài này, chủ yếu dừng lại, và các mạng đã cho thời gian được phục hồi.
Việc sửa chữa ngắn hạn dành cho người dùng, bao gồm cả thợ mỏ, người dùng doanh nghiệp (kể cả trao đổi) và cá nhân để chạy geth với những lá cờ:
--cache 1024 --targetgaslimit 1500000 --gasprice 20000000000
Hoặc tương đương với những lá cờ:
--cache-size-db 1024 --gas tầng mục tiêu 1500000 --gasprice 20000000000 --gas-cap 1500000
này (i ) làm tăng kích thước bộ nhớ cache, giảm số lượng đĩa đọc rằng các nút cần phải thực hiện, và (ii) phiếu giới hạn khí xuống bởi ~ 3x, giảm thời gian xử lý tối đa của một khối của một yếu tố tương tự.
trong trung hạn (tức là . vài ngày đến một tuần), chúng tôi đang tích cực làm việc trên một số bản sửa lỗi cho các khách hàng Go rằng cả hai nên cung cấp một giải pháp ổn định hơn cho các vấn đề hiện tại và giảm thiểu các nguy cơ của các cuộc tấn công tương tự, bao gồm:
một thay đổi phần mềm khai thác tự động tạm thời cắt mục tiêu giới hạn khí của 2x khi người thợ mỏ thấy một khối mà mất nhiều thời gian hơn 5 giây để xử lý, cho phép điều chỉnh tương tự như những gì đã được phối hợp ngày hôm nay để xảy ra tự động (xem ở đây cho một yêu cầu kéo; lưu ý rằng đây là một sự thay đổi chiến lược khai thác và không một mềm mại ngã ba hoặc cứng ngã ba)
chỉnh bằng số để thiết lập bộ nhớ cache
Thêm cache thêm
Thêm một thêm bộ nhớ cache cho EXTCODESIZE đặc biệt (vì nó có khả năng là EXTCODESIZE đọc nhiều lần chậm hơn so với các hoạt động IO nặng khác kể từ khi hợp đồng được được đọc dài ~ 18 KB)
Một bộ nhớ cache trên đĩa của các giá trị trạng thái đó cho phép họ được nhanh hơn (tức là. O (log (n)) tăng tốc) truy cập
Chúng tôi cũng đang khám phá các tùy chọn thay thế cơ sở dữ liệu LevelDB với một cái gì đó performant hơn và tối ưu hóa cho các trường hợp sử dụng của chúng tôi, mặc dù sự thay đổi này sẽ không đến sớm. Các nhóm chẵn lẻ được thực hiện cải thiện hiệu suất của mình.
Trong dài hạn, có những thay đổi giao thức cấp thấp mà cũng có thể được khám phá. Ví dụ như nó có thể là khôn ngoan để thêm một tính năng Metropolis làm tăng chi phí của khí opcodes rằng yêu cầu đọc của trạng thái tài khoản (SLOAD, EXTCODESIZE, gọi điện thoại, vv), và đặc biệt là các hoạt động đọc mà đọc các tài khoản bên ngoài; tăng chi phí khí của tất cả các hoạt động ít nhất 500 nhiều khả năng sẽ là đủ, mặc dù chăm sóc cần được thực hiện để tránh phá vỡ hợp đồng hiện tại (ví dụ. đồng thời thực hiện EIP 90 sẽ là đủ).
Điều này sẽ đặt một trên thấp hơn nhiều ràng buộc về số byte lớn nhất mà một giao dịch có thể đọc, tăng độ an toàn chống lại tất cả các cuộc tấn công tiềm năng của loại hình này, và giảm kích thước của các bằng chứng Merkle và do đó cải thiện an ninh cho cả khách hàng nhẹ và sharding như một tác dụng phụ. Hiện nay, chúng tôi đang tập trung vào những thay đổi mức độ phần mềm ngay lập tức nhiều hơn; Tuy nhiên, về lâu dài, kiến nghị đó phải được thảo luận và phát triển hợp đồng cần phải nhận thức rằng những thay đổi của phân loại này có thể diễn ra.
đang được dịch, vui lòng đợi..
