BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Bot giao dịch chạy trước: quái vật trong khu rừng tối tăm của Ethereum

巴比特
特邀专栏作者
2020-08-29 06:40
Bài viết này có khoảng 3042 từ, đọc toàn bộ bài viết mất khoảng 5 phút
Nếu bản thân blockchain là một chiến trường, thì mempool còn là một thứ thậm chí còn tồi tệ hơn: một khu rừng tối tăm.
Tóm tắt AI
Mở rộng
Nếu bản thân blockchain là một chiến trường, thì mempool còn là một thứ thậm chí còn tồi tệ hơn: một khu rừng tối tăm.

Lưu ý của biên tập viên: Bài viết này đến từThông tin Babbitt (ID: bitcoin8btc)Lưu ý của biên tập viên: Bài viết này đến từ

, của Dan Robinson và Georgios Konstantopoulos, do Free and Easy dịch, được phép xuất bản.

thử thách

Đây là một câu chuyện đáng sợ và có thật.

tiêu đề phụ

thử thách

Giống như bất kỳ người bình thường nào, tôi dành nhiều thời gian để tìm kiếm kênh hỗ trợ Uniswap Discord (tiết lộ: Uniswap là một công ty thuộc danh mục đầu tư của Paradigm).Vào chiều thứ Tư, ai đó đã hỏi liệu có thể khôi phục mã thông báo thanh khoản Uniswap vô tình được gửi đến hợp đồng ghép nối hay không.Suy nghĩ ban đầu của tôi là các mã thông báo sẽ bị khóa vĩnh viễn, nhưng vào đêm hôm đó, tôi chợt nhận ra rằng nếu các mã thông báo vẫn còn đó, bất kỳ ai cũng có thể lấy lại chúng.

Khi bất kỳ ai gọi chức năng ghi trên hợp đồng lõi Uniswap, hợp đồng sẽ đo số dư mã thông báo thanh khoản của chính nó và đốt nó, cung cấp mã thông báo đã rút đến địa chỉ do người gọi chỉ định. Đây là một phần cốt lõi trong hành vi dự định của Uniswap v2 (cơ chế cơ bản nằm trong

Giấy trắng Uniswap v2

  • được mô tả trong Mục 3.2 của ).

  • Tôi đã tìm thấy hợp đồng và các mã thông báo thanh khoản vẫn còn đó và chúng trị giá khoảng 12.000 đô la.

  • Có một chiếc đồng hồ tích tắc và bất kỳ ai cũng có thể rút thanh khoản của mình bất kỳ lúc nào và vô tình nhận được những mã thông báo này từ hợp đồng, ngay cả khi không ai khác nhận thấy số tiền miễn phí;

Tôi có thể đội chiếc mũ trắng của mình và cố gắng giúp chủ sở hữu lấy lại mã thông báo của mình. Rất đơn giản, tôi chỉ cần gọi chức năng ghi của nhóm và chuyển địa chỉ của mình cho nó.

Chỉ là... tôi biết nó không dễ dàng gì.

tiêu đề phụDark Forestrừng tối

Không có gì bí mật khi chuỗi khối Ethereum là một môi trường rất thù địch. Nếu một hợp đồng thông minh có thể được khai thác vì lợi nhuận, thì cuối cùng nó cũng sẽ bị khai thác. Việc thường xuyên xảy ra các vụ hack cho thấy một số người rất thông minh đã dành nhiều thời gian để kiểm tra các kẽ hở trong hợp đồng. Nhưng môi trường không khoan nhượng này không thể so sánh với Mempool, một tập hợp các giao dịch chưa được xác nhận đang chờ xử lý. Nếu bản thân blockchain là một chiến trường, thì mempool còn là một thứ thậm chí còn tồi tệ hơn: một khu rừng tối tăm.Flash Boys 2.0The Dark Forest, cuốn tiểu thuyết khoa học viễn tưởng yêu thích của tôi, giới thiệu khái niệm "khu rừng tối", một môi trường mà việc phát hiện đồng nghĩa với cái chết của một số kẻ săn mồi tiên tiến nhất định. Trong môi trường này, xác định công khai vị trí của ai đó cũng tốt như tiêu diệt họ hoàn toàn. (Khái niệm này cũng có trên Ethereum testnet

Nguồn cảm hứng cho trò chơi. )

Trong Ethereum Mempool, những kẻ săn mồi hàng đầu này sẽ ở dạng "chương trình chênh lệch giá". Các bot chênh lệch giá theo dõi các giao dịch đang chờ xử lý và cố gắng khai thác chúng để tạo cơ hội sinh lời. Không mũ trắng nào biết nhiều về các bot này hơn Phil Daian, người đã cùng các đồng nghiệp của mình viết "

Phil đã từng nói với tôi về một nỗi kinh hoàng trong vũ trụ mà anh ấy gọi là "người chạy nhanh tổng quát." Các bot chuyên đăng ký giá thường tìm kiếm các loại giao dịch cụ thể trong Mempool (chẳng hạn như giao dịch DEX hoặc cập nhật tiên tri) và cố gắng thực hiện các giao dịch chạy trước theo thuật toán định trước. Những người đi trước chung tìm kiếm bất kỳ giao dịch nào mang lại lợi nhuận cho những người đi trước bằng cách sao chép và thay thế địa chỉ bằng địa chỉ của chính họ.

Đó là lý do tại sao hoạt động giải cứu này sẽ không dễ dàng. Bất kỳ ai cũng có thể gọi chức năng ghi và nếu tôi gửi một giao dịch gọi chức năng ghi, nó giống như một dấu hiệu "tiền miễn phí" nhấp nháy chỉ thẳng vào cơ hội sinh lời này. Nếu những con quái vật này thực sự ở trong mempool, chúng sẽ nhìn thấy, sao chép và sau đó biến đổi, đồng thời chiếm trước giao dịch của tôi trước khi nó được chấp nhận.

Lưu ý rằng môi trường này tàn bạo hơn trạng thái của chính chuỗi khối Ethereum. Những khoản tiền miễn phí này đã nằm trên chuỗi khối trong khoảng 8 giờ, chưa được khám phá, đang chờ được rút khỏi nhóm bởi bất kỳ ai gọi chức năng ghi. Nhưng bất kỳ nỗ lực nhặt nó lên đã ngay lập tức bị cản trở trong chuyến bay.

tiêu đề phụ

hoạt động cứu hộ

  • Để rút tiền mà không thông báo cho bot, tôi cần làm xáo trộn giao dịch để bot không thể phát hiện lệnh gọi của nó đến cặp Uniswap, điều này sẽ liên quan đến việc viết và triển khai hợp đồng tùy chỉnh. Mặc dù tôi là một nhà lãnh đạo tư tưởng DeFi chuyên nghiệp, nhưng tôi chưa bao giờ triển khai hợp đồng trên Ethereum trước đây.

  • Tôi cần giúp đỡ và đã quá nửa đêm. May mắn thay, một số kỹ sư hợp đồng thông minh giỏi nhất mà tôi biết sống ở múi giờ châu Âu. Đồng nghiệp của tôi, Georgios Konstantopoulos tại Paradigm đã đồng ý giúp triển khai hợp đồng và gửi giao dịch. Alberto Cuesta Cañada, kỹ sư trưởng tại Yield, một công ty khác trong danh mục đầu tư của chúng tôi, đã tự nguyện thực hiện hợp đồng.

  • Triển khai hợp đồng Getter mà khi được gọi bởi chủ sở hữu, sẽ chỉ thực hiện cuộc gọi ghi khi được kích hoạt, nếu không nó sẽ tiếp tục;

Triển khai hợp đồng Setter sẽ kích hoạt hợp đồng Getter khi được chủ sở hữu gọi;

Mô tả hình ảnh

Hình: Mã của hợp đồng thông minh tùy chỉnh của chúng tôi

Nếu kẻ tấn công chỉ cố gắng thực hiện một giao dịch get, nó sẽ phục hồi mà không cần gọi giao dịch đã thiết lập. Chúng tôi muốn giao dịch của mình được đưa vào khối trước khi kẻ tấn công thực hiện hai giao dịch theo trình tự.

Mô tả hình ảnh

Hình: Kịch bản giải cứu của chúng tôi

Và điều này đã trở thành một sai lầm chết người!

Giao dịch nhận của chúng tôi thực sự được bao gồm, nhưng có lỗi UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED, điều đó có nghĩa là mã thông báo thanh khoản đã biến mất. Kết quả là trong vòng vài giây kể từ khi giao dịch get của chúng tôi vào mempool, ai đó đã thực hiện lệnh gọi và quét sạch tiền.

Quái vật nuốt chửng chúng ta.

tiêu đề phụ

bài học

Bài 1: Quái vật là có thật! Mặc dù về mặt trí tuệ, chúng tôi biết rằng các bot chạy trước này rất phổ biến, nhưng rất có thể bạn đang đánh giá thấp chúng cho đến khi bạn thực sự thấy chúng hoạt động.

Chúng tôi đã nắm lấy cơ hội và thực hiện một cuộc gọi nội bộ thông qua hợp đồng ủy quyền, điều mà chúng tôi nghĩ sẽ bảo vệ chúng tôi, nhưng không phải vậy.

Nếu bạn thấy mình trong tình huống này, chúng tôi khuyên bạn nên liên hệ với Scott Bigelow, một nhà nghiên cứu bảo mật đang làm việc về chủ đề này và anh ấy có một triển khai nguyên mẫu tốt hơn về che giấu.

Bài học 2: Đừng hấp tấp Chúng ta nên bám sát kế hoạch ban đầu ngay cả khi thời gian eo hẹp. Nếu chúng tôi dành nhiều thời gian hơn cho tập lệnh, điều chỉnh hợp đồng (có thể thay đổi hợp đồng Getter thành không làm gì thay vì tiếp tục cuộc gọi trước khi kích hoạt) hoặc thậm chí đồng bộ hóa các nút của chính chúng tôi để tránh sử dụng Infura, chúng tôi có thể chuyển đổi hai giao dịch thành đưa vào cùng một khối. Bài học 3: Đừng dựa vào cơ sở hạ tầng chung chung Càng làm những việc kỳ lạ, bạn càng khó vượt qua cơ sở hạ tầng hiện có như Infura. Trong trường hợp của chúng tôi, chúng tôi đang cố gắng gửi một giao dịch có vẻ như sẽ thất bại dựa trên trạng thái hiện tại của chuỗi khối và Infura đã áp dụng các biện pháp bảo vệ hợp lý cho việc này. Sử dụng các nút riêng của chúng tôi sẽ tránh được vấn đề này.

Hoặc, nếu bạn tình cờ biết một công cụ khai thác lớn (chúng tôi thì không), bạn có thể yêu cầu họ đưa giao dịch mà bạn đang cam kết trực tiếp vào một khối, bỏ qua hoàn toàn mempool và quái vật.

Bài học 4: Tương lai sẽ chỉ trở nên đáng sợ hơn

Đây chỉ là một ví dụ về sự kiện chạy trước đã xảy ra với chúng tôi và những điều tương tự xảy ra nhiều lần trong ngày. Hôm nay, những người giao dịch chạy trước chỉ là bot và ngày mai, họ có thể là những người khai thác.

Ngày nay, những người khai thác không tận dụng những cơ hội này và để tiền ở đó, nhưng không có gì đảm bảo rằng họ sẽ sắp xếp lại và gửi các giao dịch của chính họ trong tương lai để phục vụ lợi ích của chính họ. Tồi tệ hơn, họ có thể tái tạo lại các khối được khai thác bởi những người khai thác khác nhằm đánh cắp MEV mà họ không yêu cầu, dẫn đến sự mất ổn định của chuỗi khối.

ETH
投资
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk
Tài khoản chính thức
https://twitter.com/OdailyChina
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk