十六進制在白名單市場搶購方式

背景:

目前越來越多項目推出自己的白名單市場,像是著名的Godjira、Habibiz等,都有相當不錯的優質白單,然而相信家人們也有遇過,每當稀有白單發售開始時,前端網頁總是塞車,不塞時卻被科學家們購買完的狀況,因此上網查了關於十六進制直接調用合約的方式,希望能夠幫助到想在白單市場搶購到心儀白單的家人們。

手動VS機器人:

不知道有沒有手上有Clay的家人,明天白單市場開放,可以利用$mud購買BF_Party、NFTKEYS等優質白單。透過官方連結(https://market.martian.tech/index.html)可以發現此市場是許多著名白單市場的聚合器(或總模板網頁,我不知道怎麼稱呼它),Project Godjira、Chain Scouts都是使用他的前端,這加速了此篇教學的研究速度。此外之後需要使用的家人也可以在這裡直接做市場選擇,不用一個個網頁翻。

想當然明天的白單販售必定又是科學家的世界,雖然最快最強的還是用機器人調用合約,但是我還不會,所以寫不出教程,只能先使用這個方法增加自己的成功機率,至少減免了網頁前端lag的大問題,能在同一區塊送出,就有機會搶到。

示例教程:

以上以Martian白單市場做舉例,

1,找到白單市場合約與調用案例

透過在網頁前端按F12,然後一個個檔案用Ctrl+F尋找0x開頭的關鍵字,找到了Martian白單市場的合約地址:

0xFD8f4aC172457FD30Df92395BC69d4eF6d92eDd4”

利用Etherscan查看合約後,尋找購買白單的紀錄,這裡用最上方一筆的交易做示範,點入Txn Hash進入查看詳情

在Tokens Transfer可以看到,此購買數據是利用$Jira購買白單的,

接著拉到詳情最下面,點開Click to see More在View Input As中選取Original,可以看到input Data部分,有一串編碼後的16進制數據:

“0x063d11de00000000000000000000000000000000000000000000001043561a8829300000”

實際上這部分內容就是調用合約所需要的所有內容,它包含了合約的方法和參數。

2. 分析調用合約方法的來源

每個人調用合約方法的參數可能會有差異,下面我們接著分析,怎麼生成自己的inputdata,點擊下拉框,在View Input As中選擇Default View,可以看到三部分內容:Function為調用合約的目標函數名稱,MethodID為使用keccak256算出來的purchaseWLVendingItem(uint256) 目標函數的哈希值的十六進制(此部分我不會算,僅知道而已)

接著我們查看[0]這部分後方的數據,可以看到:

“517ab044bda9629e785657dbbcae95c40c8f452c”

這一串數字正好是$Jira代幣地址的0x後的數字,此函數方法中的參數是uint256類型的,在輸入參數的時候需要佔用對應位數,uint256類型的參數如果換成16進制的話總共需要64位,所以將「517ab044bda9629e785657dbbcae95c40c8f452c」補0到64位即為

”000000000000000000000000517ab044bda9629e785657dbbcae95c40c8f452c”

我們獲得了前面[0]那一行的來源,那麼[1]又是怎麼來的呢?

我們將[1]的內容利用工具從16進制轉換到10進制可以看到數字為62,

回到白單市場,對Project Godjira市場最上方的物件圖片點inspect,在展開的部分我們發現,project後方的數字正好是剛才得到的62,又翻了幾條交易紀錄,確定了[1]所寫入的,是關於購買物件的選擇,

我們接著可以看出,前面Original Input Data的

”0xba17a3b4000000000000000000000000517ab044bda9629e785657dbbcae95c40c8f452c000000000000000000000000000000000000000000000000000000000000003e”

就是MethodID+[0]+[1]的總和,

到這步,該有的都有了,因此下一步就是製作我們要使用的十六進位數據。

3. 製作欲購買物件的十六進制數據

我們用上方的方法來實做一次,用Clay的代幣$mud做示範,可以得到[0]內的數據應為:

“000000000000000000000000ee0240888291bb5d2b41b778971a7730a26dcf24”

接著看到Clay官方的公告,有四項商品,我在這邊猜測官方會用這個方式排序商品,因此要購買到我要的BF_Party,就必須選擇第三個商品(從後面數),因為程式碼是從零開始計數,因此編號應為2,我們可以得到[1]為:

“0000000000000000000000000000000000000000000000000000000000000002”

最後將MethodID+[0]+[1]拼起來,得到

“0xba17a3b4000000000000000000000000ee0240888291bb5d2b41b778971a7730a26dcf240000000000000000000000000000000000000000000000000000000000000002”

扣掉前方的0x前綴,就是我們要在Metamask上輸入的十六進制Input Data,我們打開小狐狸進行測試,對Martian合約地址0xFD8f4aC172457FD30Df92395BC69d4eF6d92eDd4進行轉帳,金額填0,貼上Input Data點選下一頁:

可以看到我們成功調用了purchaseWLVendingItem(uint256)函數,並且交易使用$mud合約地址,交易物件index:2(第三個物件),只要在物品上架時準時送出,過了科學家這關,就能成功購買了!

學會此方式的大家,在遇到不同的白單商店時,也能效仿以上教學找出該商店的調用合約數據(像是TOS白單),只要找到對的交易哈希,基本上八九不離十,都是類似的辦法。

後記

大家好,我是Kyle,這篇文大概花了三個小時研究+兩個小時寫出來XD,這是我人生的第一篇Mirror教學文,也是偏關於科學家的。從小到大玩過很多遊戲,不時都能聽聞有人靠開外掛賺錢,我對這種人抱著一種莫名的憧憬,而加入幣圈之後也才知道在幣圈也有一群開外掛的人的存在,就是科學家們,雖然科學家對於一般玩家來說,是很可惡的存在,甚至破壞市場環境,但我覺得這種用資訊、甚至智商差製造出的成功,也無非是一件很厲害的事,近期開始緩慢的摸Solidity教程,希望在未來的某一天,我也能幫助群內的大家在nft方面製造更多的成公(前提是我的學業跟下學期的營隊撐得住🥵)。

BTW雖然教程寫完了,但依舊不確定等等早上的戰果會如何,還請大家幫我加油🙏


如果你覺得對你有用

可以關注我的推特:https://twitter.com/kylekkkkwu61

和我的Mirror:https://mirror.xyz/0xB946795A5CeBb3f252f7Ae7d38fF83B9ad3031D0

Debank: [互關](https://Debank: https://debank.com/profile/0xb946795a5cebb3f252f7ae7d38ff83b9ad3031d0)

Subscribe to kylekkkk.eth
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.