鏈上機器人的基本原理:以FriendTech為例

前言

Friend.Tech 是一個基於智能合約的社交平臺,使用者需要連接自己的推特來進行註冊,並“發行”自己的 key,擁有 key 的使用者可以進入類似群聊的 room 中和 key 的 owner 進行交流。 它依然是一種中心化的社交平臺,只是依賴於鏈上的智慧合約實現了 key 的購買、出售邏輯,而主要的功能是基於網頁所實現的 IM 應用。 而且出售、購買 key 的過程中,會將價值的 10% 劃分為兩部分,一部分給 Friend.Tech 開發者,另一部分給對應 room 的 owner。 那麼,在這樣的 key 可以繞過前端完成購買、出售的情況下,自然而然會產生鏈上的機器人來進行打新、買賣、手續費欺騙的操作。 那麼,它們又是如何實現的?

淺談打新機器人

打新機器人在 Friend.Tech 運營的前期能有很可觀的收益,因為這個時候鏈上的狙擊機器人還沒有進化到一定的程度,在進行簡單的資訊判斷后就可以進行購買且能夠有很高的盈利期望。 現在,先從最簡單的機器人實現邏輯開始,一步步完成一個複雜的 bot 邏輯。

當然,在此之前需要介紹 **Event**,事件是在 Solidity 程式設計語言下對 EVM 中的日誌事件的抽象。 通常會搭配一個emit語句來**觸發事件**。 對應在區塊鏈瀏覽器中就是交易的logs,例如下面一筆購買key的交易,它觸發了一個 Trade 事件,事件中包含了一系列的資訊。

! [鏈上機器人的基本原理:以 FriendTech 為例] (https://cdn-img.panewslab.com/panews/images/6yihX4ZR6n.png)

合約時間

Event 是 DApp 中很重要的一部分,通過它們可以監聽到合約的狀態變更,例如 Friend.Tech 也會監聽該合約來對資料庫中的一系列數據進行調整,例如前端的顯示價格,holding 數量等。

最簡思路

那麼,最為簡單的一個打新機器人的邏輯是這樣:監聽 Friend.Tech 的合約事件,在發現一筆交易所觸發的事件滿足以下條件時就調用 Friend.Tech 的合約跟著買入

* 事件為購買(isBuy 值為真)
* 交易者和 owner 是同一個位址(trader == subject)
* 交易為創建 room 的交易 (supply 為 1)

下圖為該過程的流程示意圖

! [鏈上機器人的基本原理:以 FriendTech 為例] (https://cdn-img.panewslab.com/panews/images/cTUYN1J80k.png)

最簡Bot

合約? 原子性!

這樣的機器人存在一定的問題:

  1. 不能保證打新一定能買到,其次是無法精確地給出能夠購買key所需要花費的 eth數量;
  2. 也不能設置一個上限價格,比如在交易執行時到達多少key或者多少價格就不進行購買;
  3. 容易被狙擊,其他人可以通過新位址執行購買操作來吸引這樣的機器人,以達到騙取手續費、賣出獲利的目的;

首先考慮解決問題1、2,EVM 的一個好處就是可以原子性地在一個合約中調用其他合約,所以只需要部署一個合約去進行購買,並且設置一系列的條件即可,例如 Github 上開源的合約代碼 [friendrekt] ,可以設置最高買入價格,以及數量。

對於問題3,最簡單的方式就是利用官方的介面 進行查詢,得到對應位址的使用者 Twitter 資訊,然後查詢 Twitter 粉絲數等資訊來進行篩選,篩選后再判斷是否購買,購買多少以及最高價格是多少。 於此,機器人的操作流程變為如下圖所示。

! [鏈上機器人的基本原理:以 FriendTech 為例] (https://cdn-img.panewslab.com/panews/images/16OzVP13Ts.png)

引入代購合約

技術爆炸

可以看到,這個過程增加了資訊請求和智慧合約調用,機器人在監聽到合約事件后,經過簡單的邏輯判斷后確定為新的賬號啟動,再利用 api 查詢到相關信息以進行過濾,最後利用部署的智慧合約來完成購買。 但是這樣的機器人依然存在缺陷:

  1. 無法判斷釣魚的推特帳號,部分帳號的粉絲數量較高,但都是殭屍粉,而且也沒有任何的價值,買入有很大的風險;
  2. 粉絲數量不便於判斷一個推特使用者是否有價值,一些 KOL 粉絲數量少,但是會運營,這樣很容易過濾掉這些人;
  3. api 存在一定的延遲,這個介面只有在用戶啟動后一段時間(60s)內才能查詢到,很容易錯過很多的位址且有很高的延遲;

同樣地,一一解決這些問題。 先看問題3,得益於 0xleo 的提醒 [我是如何在 friend.tech 丟失 1萬刀的 - 0xleo],發現另外一個介面可以在用戶註冊后就可以查詢到地址資訊 那麼可以持續遞增地監控這個介面查找最新的 id,並且得到註冊者的資訊。 如果判斷為有價值的註冊者就將位址存放到緩存中(為了保證重啟持久化,還需要一個資料庫),在鏈上事件監聽並命中緩存后就進行購買。

其次是問題1、2,如何判斷一個使用者是否有價值? 那麼就需要一些第三方的 Twitter KOL 評分網站的輔助了,筆者在探索的過程中使用的是 Twiiterscan 來進行查詢,由於可以預先得到註冊資訊,所以在啟動前查詢 Twiiterscan 所耗費的時間是沒有太多的影響的。 除此之外,還可以手動設置白名單以及買入價格來完成購買配置。

最後,我們所實現的 bot 的基本流程如下。 由一個額外的「機器人」去拉取 api 的最新資訊,並在判斷後存放到資料庫、緩存,專門負責購買的機器人則在收到事件後查詢緩存資訊,在命中緩存後進行購買。 這個緩存中也可以存放白名單信息,選擇一些有價值的 KOL 後設定價格、數量去買入。

! [鏈上機器人的基本原理:以 FriendTech 為例] (https://cdn-img.panewslab.com/panews/images/2G0v64Q8N0.png)

提前監聽與影響力分析

由於筆者實現這個 bot 的時間比較晚了,所以盈利也不是很客觀。 9月底開始著手實現、優化,在10月3號左右達到最高1.2E的收益,在那幾天沒有及時出手后利潤回撤,在加上一系列手續費開銷后算是沒有盈利也沒有虧損。 這樣架構的機器人能夠在註冊者買入后的第一個區塊實現買入,由於base上沒有記憶體池掃描這樣的騷操作,大多數跟隨同一個區塊買入的基本上是一種瘋狂的玩法:在監聽到買入后一直執行買入,直到買入完成,例如在這個過程中看到的另外一個機器人: 。

它的策略很簡單,在上面我們所介紹的架構的基礎上,不存放資料庫,直接開始進行買入,直到買入完成。 在優化到這個程度后就是拼資金量的遊戲了,燒得起 gas 就可以這樣的玩法,並且在策略正確的情況下利潤也特別可觀。

結語

在前言部分中我們還提到了買賣、手續費欺騙的操作,在這裡就隨便介紹一下:

  1. 買賣的是一種跟單機器人,跟蹤到盈利較好的位址后可以跟隨它的操作,原理也很簡單,將監聽的地址過濾一下,如果是目標位址就跟隨操作;
  2. 手續費欺騙分兩種(筆者在開發過程中觀察到的),一種是利用粉絲數較多的推特帳號來完成的,直接購買並且很快就出售以完成收割。 另外一種就是不停建立新位址,轉賬然後執行購買操作又很快賣出。 第二種主要針對的是最簡邏輯的bot,在初期應該也能有很好的盈利。

至此,我們完成了對鏈上機器人原理的介紹,具體的實現涉及到代碼不再進行說明,想要瞭解的朋友也可以參考 [friendrekt] 的實現。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)