잘 알려지지 않은 부 코드: 훔치는 로봇은 얼마나 강력합니까? |베이크스타 셀렉션
Ethereum Dark Forest는 야수이며 확실히 무섭지 않습니다. 이러한 선제적 로봇은 계약의 호출을 분석하여 돈을 벌 수 있는 잠재적인 기회를 찾을 수 있습니다.
대부분의 사람들은 선행매매에 대해 들어본 적이 없을 수 있으므로 먼저 개념을 간략하게 소개하고 그 행동을 분석하고 그 효율성, 선행매매의 성공 확률에 대해서도 연구하고 여러 가지 방법으로 저항하려고 노력했습니다.
선두주자란?
먼저 개념을 소개하자면, 일반적으로 Front-running 트랜잭션은 알려진 미래 트랜잭션이 발생하기 전에 다른 트랜잭션을 Execution Queue의 첫 번째 위치에 삽입하는 것을 말합니다.
예를 들어 🌰, 거래소의 거래 프로세스. 예를 들어 누군가가 유니스왑에서 ETH(시장을 끌어당길 만큼의 양)를 대량으로 사려고 한다면 가격이 오르기 전에 빨리 사서 가격이 오르고 나서 파는 것도 수익을 낼 수 있는 한 가지 방법이다. 당겨집니다.
선점은 위에서 언급한 방법에 국한되지 않고 청산, 희귀 NFT 구매 또는 사용자 오류 발생과 같은 많은 다른 방법이 있습니다. 여기에서 모든 사람에게 개념을 소개하고 싶습니다. MEV, 광부는 가치를 추출할 수 있습니다. 거래 또는 거래 그룹의 추출 가능한 가치입니다.
ETH 체인에서 트랜잭션을 선점하기 위해 대상 트랜잭션보다 약간 높은 전송 수수료 인상을 제공하고 채굴자가 패키징할 때 자신의 트랜잭션을 전면에 순위를 매기도록 권장할 수 있습니다. 가스 가격이 높은 트랜잭션이 먼저 실행되기 때문에 두 트랜잭션이 동일한 컨트랙트 콜로 이익을 얻고자 하고 두 트랜잭션을 같은 블록에 패키징한다면 누가 가스 요금을 지불하느냐에 따라 달라지겠죠 점수가 높을수록, 선두에 설 수 있는 사람이 차익거래에서 성공적으로 선두를 차지할 수 있습니다.
따라서 선불 거래도 어느 정도는 차익 거래로 볼 수 있습니다.
동물행동학
Dan Robinson과 Georgios Konstantopoulos가 공동 저술한 "Ethereum is a Dark Forest" 기사에서 가치 추출이라는 개념이 언급되었습니다. 이 이야기는 미화 12,000달러 상당의 토큰을 저장하는 과정에서 차익 거래 로봇("Predator")에 의해 가로채는 이야기를 들려줍니다. 이 차익 거래 로봇은 매우 발전되고 강력하며, 이더리움 거래 풀에서 차익 거래를 추적하고 앞서 언급한 이점을 얻을 수 있습니다.
Dark Forest 기사는 매우 흥미 롭습니다. 시간이있을 때 읽어 보시기 바랍니다. 그것을 읽은 독자는 기사가 너무 상상할 수 없다고 생각할 수 있으며 믿을 수 없습니다. 많은 수의 로봇이 모니터링하는 Uniswap과 같은 플랫폼에는 여전히 음식을 훔칠 수있는 "슈퍼 포식자 로봇"이 있습니다. 많은 차익거래자들의 손에 돈을 훔친다? 소위 말하는 이 로봇들도 평범한 차익 거래자들의 집단입니까?
그러나 모른다고 해서 모르는 것은 아닙니다. 그들은 평범한 봇이 아니며, 돈을 얻기 위해 이전에 호출된 적이 없는 스마트 계약 기능을 호출할 수 있으며 여전히 프록시 스마트 계약에 의해 원래 트랜잭션이 난독화됩니다.
이것을 할 수 있다는 것은 적어도 모든 사람의 경계를 불러일으킬 것입니다. 트랜잭션 풀의 트랜잭션을 모니터링할 수 있다는 것은 큰 무기를 갖는 것과 같기 때문입니다. 그러나 더 걱정스러운 것은 일부 서비스 제공업체가 "다크 풀" 거래 계층을 공개적으로 제공하기 시작했다는 것입니다.
소위 "다크 풀" 트랜잭션 계층은 Infura와 같은 서비스를 사용하거나 개인 노드를 구축할 필요가 없으며 트랜잭션을 채굴자에게 직접 보내고 네트워크의 다른 노드에 트랜잭션을 브로드캐스트하지 않을 것을 약속합니다. 이러한 방식으로 거래는 차익 거래 봇에 의해 발견되지 않으며 거래는 포식자로부터 보호될 수 있습니다.
samczun이라는 잘 알려진 흰 모자가 있는데 그와 그의 많은 친구들도 같은 방법을 채택하여 허술한 계약에서 960만 달러를 성공적으로 절약했습니다. 따라서 광부들이 추가 수수료를 지불하는 거래자에게만 안전한 채널을 제공하면서 선행 거래 봇을 실행하기 시작할 것이라고 상상하는 것은 어렵지 않습니다.
이 봇은 이더리움의 다른 부분과 달리 이더리움 메인넷에서만 실행됩니다. 예를 들어 일부 스마트 계약은 개발 환경이나 테스트넷에서 테스트할 수 있습니다. 일부 예비 실험을 제외하고는 선행 로봇을 선행 테스트넷 트랜잭션으로 보낼 필요가 없으며 돈을 벌지 못할 것입니다. 또한 논리가 숨겨져 있기 때문에 다른 사람들처럼 규칙을 따를 필요가 없습니다.
우리는 아직 어떤 상황에서 선제 로봇이 움직일지, 어떤 상황에서 멈출지 모릅니다. 그래서 지금 이 로봇들을 추적하는 것은 희귀한 야생 동물을 사냥하는 것과 비슷합니다. 그리고 우리는 모든 유형의 로봇을 찾을 수 없고 특정하고 일반화된 로봇에 대해서만 찾을 수 있습니다.
위에서 언급한 "특정하고 일반화된 봇 찾기"라는 목표를 달성하려면 비밀 문자열의 SHA256 해시에서 생성된 새로운 스마트 계약이라는 특별한 함정을 설정해야 합니다. 비밀 문자열을 제공하는 사람은 계약서에 있는 자금을 인출할 수 있으며 누군가가 인출 트랜잭션을 보내면 자금은 트랜잭션 발신자에게 직접 전송됩니다.
이 트랩을 설정하는 원래 아이디어는 올바른 비밀 문자열을 제공하는 "미끼" 트랜잭션을 시작하고 누군가 이 문자열을 복사하는지 확인하고 이 문자열이 포함된 트랜잭션을 보내 자금을 인출하는 것입니다. 누군가가 "미끼" 거래 전에 가져갈 수 있다면 누군가가 거래를 분석하고 관련 콘텐츠를 복사하고 비밀 계약의 콘텐츠를 직접 제공할 수 있음을 의미합니다.
실험 결과는 매우 흥미롭습니다.로봇은 이전에 본 적이없는 계약에 이전에 본 적이없는 비밀 문자열을 제공하고 자금을 도난당했습니다.이것이 진정한 일반화되고 구체적인 선행 로봇입니다!
러시봇은 어떻게 작동하나요?
러쉬 로봇의 작동 메커니즘을 살펴보겠습니다. 그러나 우리는 그들의 행동을 통해서만 역으로 추론할 수 있습니다. 왜냐하면 모두가 돈 버는 기계를 만들었다면 Github에서 공유할 수 있다고 생각하기 때문입니다. 당연히 아니지!
먼저 두 가지 구성 요소가 필요합니다.
1. 스마트 월렛 에이전트가 있거나 없는 이더리움 계정
2. 전체 작업의 두뇌인 "백엔드"는 일반적으로 오프체인에서 발생합니다.
기계 운영자는 일부 기술을 통해 트랜잭션 풀의 각 트랜잭션을 확인하고 분석하고 매개변수를 대체(예: 트랜잭션 호출자 대체)하고 결론을 도출할 수 있습니다(트랜잭션이 수익성이 있는지 여부, 이 단일 값은 가치가 없습니다 Do ).
위의 그림은 러시 트레이딩 로봇의 워크플로를 보여줍니다.
합리적인 로봇 모델은 거래 수수료가 잠재적 이익을 초과하는 거래를 선점하지 않으며 특히 가스 수수료가 높은 경우 거래 수수료가 높을 수 있습니다. 따라서 로봇이 미끼를 물도록 유인하기 위해서는 최소한 일정한 이익을 설정해야 합니다.
또한 트랜잭션 풀에는 많은 트랜잭션이 있고 로봇은 각 트랜잭션을 분석해야 하며 시간이 촉박합니다. 평균 12초 정도에 이더리움 블록이 생성되기 때문에 트랜잭션 수수료가 충분히 높으면 다음 블록이 파내기 전에 선제 로봇이 빠르게 분석한 후 원래 트랜잭션을 빠르게 교체해야 합니다.
이 과정에도 일정한 확률이 있습니다. 예를 들어 트랜잭션이 브로드캐스트된 후 블록이 즉시 파헤쳐지고 로봇이 이를 분석할 시간이 없으므로 기회가 없습니다.
위의 요소를 고려하여 돌진하는 로봇이 미끼를 물도록 유인하기 위해 다음과 같은 일련의 방법을 만들었습니다. 여기에 요점이 있습니다! 👇
덫을 놓다
계약에서 설정한 초기 잔액은 0.035 ETH이며 현재 가격으로 약 $20의 가치가 있습니다. 비밀 계약이라고도 하는 계약에 저장된 해시 값의 정확한 사전 이미지를 제공할 수 있는 사람은 누구나 돈을 가져갈 수 있습니다. 그런 다음 자금을 가져가는 거래는 선행 봇 작업을 트리거하고 다른 계정 수취인은 올바른 비밀 계약을 제공하여 돈을 인출하려고 시도합니다.
첫 번째 라운드 실패: 계약을 직접 호출
트랩이 작동하는지 확인하기 위해 먼저 테이커 계정을 사용하여 스마트 계약을 호출합니다. 당시 가스비가 상대적으로 높았고, 급하게 달리는 로봇을 유치하지 않고 성공적으로 계약 자금을 회수했습니다.
그 이유를 생각해보면 이익이 너무 적어 선두로봇에게 매력이 없기 때문일 수도 있고, 트랜잭션이 담긴 블록이 곧 파헤쳐지고 선두로로봇이 시간이 없어서일 수도 있다. 반응하다.
우리는 조정하고 다음 라운드를 준비했습니다.
2라운드 성공: 돌진하는 봇에게 추가 시간 제공
이번에는 잠재적 이익을 높이고 계약 자금을 0.04 ETH로 늘리고 거래 수수료를 줄여 거래가 포함된 블록을 빨리 파내지 않고 로봇이 캡처할 수 있는 시간을 더 많이 제공했습니다.
이번에는 성공했습니다!
약 3분을 기다려도 거래가 파헤쳐지지 않았고, 컨트랙트 내 자금도 확보되지 않았다. 그런 다음 계약의 모든 내부 거래를 진지하게 살펴보고 다른 사람이 자금을 인출했음을 발견했습니다.
우리의 테이커 계정에서 시작된 거래는 25 Gwei를 사용했고, 선행 로봇은 우리보다 0.000001111 Gwei 더 많은 25.000001111 Gwei를 사용했으며 두 거래는 동일한 블록으로 패키징되었습니다.
2차 검토: 로봇에 대한 단서 찾기
자, 이제 0.04 ETH와 약간의 수수료로 얻었으니 분석할 수 있습니다.
우선 선제적 로봇이 컨트랙트를 직접 호출하지 않는다. 테이커의 트랜잭션을 복사하여 자신의 계정을 통해 전송하는 대신 트랜잭션을 실행하는 스마트 지갑 역할을 하는 프록시 스마트 계약으로 트랜잭션을 전송합니다.
다음으로, 우리는 이 로봇의 주소를 추적하고 얼마나 많은 거래를 성공적으로 강탈했는지 확인하고 작동 원리를 연구할 수 있습니다.
위의 그림은 돌진하는 로봇 자체의 대리 계약을 보여줍니다.대리 계약을 디컴파일한 결과 두 가지 주요 기능이 있음을 발견했습니다.
인출: 계약의 모든 자금을 이 운영자에게 보냅니다. 또 다른 함수는 호출할 계약, 매개변수 목록 및 값을 전달할 매개변수와 같은 매개변수 수신을 담당합니다.
출금 기능을 통해 대리 계약은 운영자의 스마트 지갑이 될 수 있습니다. 외부 기능을 호출하는 기능을 수행할 수 있을 뿐만 아니라 트랜잭션 시작 시 잔액이 종료 시 잔액보다 낮지 않도록 할 수 있습니다. 그렇지 않으면 트랜잭션을 복원할 수 있으므로 호출로 인한 잠재적 손실을 방지할 수 있습니다. 알 수 없는 계약 물론 여기서 손실은 가스비를 포함하지 않습니다.
또한 2018년 5월에 실행되기 시작한 이후로 봇의 성능을 모니터링했습니다.
항상 동일한 프록시 계약 및 주소를 프런트런에 사용한다고 가정하면 다음과 같이 계산할 수 있습니다.지금까지 총 약 17 ETH 획득。
위의 그림은 우리가 모니터링한 로봇의 수입을 나타내며 단위는 ETH입니다.
탐색의 세 번째 라운드: 선행 거래 로봇은 얼마나 강력합니까?
이제 우리는 로봇을 찾았고 이전 가정이 사실임을 모든 사람에게 증명했으므로 두 번째 계약을 사용하여 호출을 혼동하고 미끼 계약에서 자금을 회수할 수 있는지 테스트해 봅시다.
두 번째 계약은 함수를 호출하여 미끼 계약에 저장된 자금을 가져가는 대리 계약입니다. 또한 두 번째 계약에는 자금을 검색할 수 있는 "검색" 기능도 있습니다.
우리는 ProxyTaker 계약을 배포한 다음 함수를 호출하여 자금을 회수하려고 시도합니다. 대리 계약을 사용하여 자금을 인출하는 비용이 상대적으로 높기 때문에 "미끼" 계약의 자금을 0.055 ETH로 늘렸습니다. 아니나 다를까, 거래는 다른 로봇에 의해 즉시 빼앗겼습니다.
이 로봇은 우리의 출금 거래를 감지할 수 있을 뿐만 아니라 실제로도 매우 훌륭합니다! 또한 이 트랜잭션이 완전히 다른 컨트랙트의 내부 호출임을 확인할 수 있습니다! 또한 매우 짧은 시간에 이 일련의 프로세스를 완료할 수 있어 정말 놀랍습니다. 우리 거래가 단 몇 초 만에 성공적으로 채굴되었기 때문에 봇의 거래도 충격적이었습니다.
그리고 이 로봇의 정체도 매우 흥미롭습니다.그 계약은 arden43y라는 계정에 의해 제어됩니다.Bancor 스마트 계약에서 사용자 자금을 인출하는 행위.
위 사진은 로봇 운영자 계정이 이더리움 브라우저에 남긴 댓글입니다. 내가 당신의 돈을 훔쳤다고 생각하고 그것이 실수였다는 것을 증명할 수 있다면 돈을 당신에게 돌려줄 것입니다.
두 번째 로봇의 행동은 첫 번째 로봇과 동일하게 해당 계정의 대리 계약을 호출한 다음 다른 계정으로 자금을 송금하므로 이 로봇이 구출에서 흰 모자에 대한 강도라고 의심됩니다. 활동.달리기.
그러나 두 번째 봇은 첫 번째 봇보다 훨씬 더 복잡합니다. 첫 번째 봇은 이더리움 체인에만 집중하고 두 번째 봇은 다른 많은 차익 거래도 실행합니다.
그리고 두 번째 로봇 계정의 잔액은 약 300 ETH이며 더 많은 수익을 얻습니다. 그리고 프록시 컨트랙트 주소로 들어오고 나가는 모든 자금을 고려하면 두 번째 로봇은 총 900 ETH 정도라고 추정할 수 있습니다.
최종 라운드: 이번에는 로봇을 성공적으로 물리치십시오.
이번에는 호출을 혼동하는 데만 사용할 수 있는 새로운 프록시 계약 OwnedTaker를 사용했습니다. 우리는 또 다른 0.05 ETH를 "미끼" 계약에 넣었습니다. 자금도 계약에 머무르지 않고 거래를 통해 우리에게 반환됩니다.
첫 번째 시도에서 OwnedTaker 계약으로 전송된 트랜잭션은 약 1분 후에 채굴되었으며 "decoy" 계약에서 자금을 되찾는 데 성공했습니다.
실험은 한 번 더 반복되었습니다. 이번에는 "미끼" 컨트랙트에 0.06 ETH를 재입금했는데, 이는 지금까지 투입한 "미끼" 중 최대 규모로, 선제 로봇이 미끼를 물지 않을 가능성을 배제할 수 있습니다.
또한 우리는 거래 수수료를 일부러 상대적으로 낮은 값으로 설정했으며 거래는 약 7분 동안 대기했지만 성공적으로 자금을 회수했습니다.
따라서 결론은 트랜잭션을 전달하기 위해 소유자만 사용할 수 있는 소유 프록시 계약을 사용하면 로봇이 데이터를 구문 분석하고 트랜잭션을 서두르는 것을 효과적으로 방지할 수 있다는 것입니다.
위의 그림은 성공적으로 자금을 인출하는 과정을 보여줍니다.
계약 소유자만 콜을 실행할 수 있거나 자금이 콜 계약과 다른 주소로 전송되기 때문에 선행 거래 봇을 피할 수 있었습니다.
이 로봇은 자기 보존을 우선시하도록 프로그램되었을 가능성이 높습니다. 결국, 그들이 알 수 없는 계약을 호출하면 해당 계약은 임의의 코드를 실행할 가능성이 있습니다. 따라서 수익을 보장할 수 없을 때 불필요한 위험이나 거래 수수료 손실을 피하기 위한 선택을 할 것이라고 합리적으로 추정할 수 있습니다.
우리는 정말로 봇을 물리치는 데 성공했습니까?
우리가 정말 이겼나요? 그것은 당신이 그것을 보는 방법에 달려 있습니다. 우리는 새 계약을 사용하고 우리만 비밀 문자열을 알고 있습니다. 분명히 우리가 캡처한 두 개의 선행 봇은 거래 풀의 모든 거래를 감지합니다. 그들이 버는 이익으로 판단하면 이것이 그들의 강점입니다.
지난번 실험에서 점프 스타트 로봇의 공격을 성공적으로 버틸 수 있었던 이유는 무엇일까요?
결론적으로
결론적으로
이 작은 실험을 통해 우리는 러쉬 로봇이 존재할 뿐만 아니라 매우 지능적이라는 것을 증명했습니다.
물론 우리는 이 실험이 불완전하고 권위 있는 결론을 도출할 수 없다는 것을 알고 있습니다. 트리거 메커니즘과 작동 방식이 다른 많은 다른 유형의 봇이 있으며 잠재적인 이익, 통신 패턴 및 가스 요금 한도와 같은 최소 복잡성과 같은 요소도 작동 방식에 영향을 줄 수 있습니다.
그러나 우리는 우리의 실험이 개념 증명을 제공하고 이러한 선제적 봇의 작업 방식에 대해 더 많은 정보를 제공한다고 믿습니다.
놀랍게도 누군가가 콜할 수 있는 수익 창출 계약을 호출하면 매우 모호하더라도 선행 봇에 의해 퍼질 가능성이 높습니다.
저자: 알렉스 매너스킨
이 문서의 참조:
원본 링크:https://zengo.com/ethology-a-safari-tour-in-ethereums-dark-forest/
저자: 알렉스 매너스킨



