---
# System prepended metadata

title: We are What We Eat 為什麼會發生超賣

---

# We are What We Eat 為什麼會發生超賣

## 事件內容
[We are What We Eat](https://www.tatlerasia.com/dining/journeys/we-are-what-we-eat-seed-nfts-presale?fbclid=IwAR1tgZ0xCJFSPIdAle5sFayF78f-PCz3nZbpEfzcC1MSveUyVLaVJ0oXN7Y) 1/10 11:00 優先釋出的 200 個 Seed NFTs 在 2 分鐘內全數鑄造完成 🚀 反應熱烈，因此項目方與三位創作者：黃心健、江振誠及張逸軍宣布明天（1/11）11:00 將啟動第二波活動 Public Sale。
但第二波活動卻發生**超賣**和**提前購買**的問題，那我們就往下看為什麼會發生吧。

## 應對
1. 項目方放棄現有合約，之前透過官方渠道順利鑄造 Seed NFT 的買家，會重新空投原購買量的 Seed NFT 到你的錢包。
2. 在 OpenSea 二級市場買到「非官方 Seed NFT」的買家，EchoX 會直接空投新合約的 Seed NFT 至買家錢包，但請於1/12 6pm（UTC+8）前 Email：service@echox.io 回報。需附上 1. 錢包地址 2. 你的 OpenSea NFT 連結。

---

#### 項目方：[EchoX](https://www.echox.app/) 是虛實整合的策展專家，提供NFT管理工具及線上策展顧問。

---

## 先找出合約的 Mint Function
https://etherscan.io/address/0x52afa21bb061bb8a434102802c3d1625a86e9870#writeContract
![](https://i.imgur.com/V0Y8o0u.jpg)


* 首先我們到合約的 "Write Contract" 找哪一個是 mint function
* 這裡只有 `presale` 需要傳送 ETH，所以它就是 mint function
* 因此我們到 "Code" 裡面去看

![](https://i.imgur.com/6UJohBF.jpg)

`presale` 的功能為購買 NFT，這裡有兩個限制 :
1. 規定的時間後才能購買
2. 不能超過最大發行數量

這裡目前還看不太出問題，接著我們來看一下合約要如何**更新**和**設定**。

---

## 合約如何更新和設定
https://etherscan.io/address/0x52afa21bb061bb8a434102802c3d1625a86e9870#writeContract
![](https://i.imgur.com/is0rRvm.jpg)

`setActivity`
* 設定 NFT 價格、開賣時間、最大發行量等等...



---

## 第一波活動的合約設定
https://etherscan.io/tx/0x719ab9537f6d210f6308f22a0adf7ab78cbce11d93c0526b8f391a754162b2e4

![](https://i.imgur.com/alYkJ4Y.jpg)

![](https://i.imgur.com/mFlZahv.jpg)

![](https://i.imgur.com/ENggC8h.jpg)

* 從 etherscan 的活動紀錄我們可以明顯看出
* 第一次的設定是在 Jan-07-2022 10:54:28 AM +UTC (台北時間要 +8 小時)

`setActivity` 設定內容為 :
1. **活動 ID(activityID) :** 3
1. **價格(charges.price) :** 0.095 ETH
1. **時間(period) :** 1672272000 (Thursday, December 29, 2022 12:00:00 AM GMT)
1. **最大發行數量(maxCirculation) :** 200

---

## 第一波購買
第一波活動設定完成後就可以等人購買了，這裡 NFT 最大發行數量設定為 200 個，和 [官網](https://www.facebook.com/TheEchoXio/) 宣布的一樣，這裡沒甚麼問題。
但**時間**的設定會有點問題，因為 1672272000 的時間是 2022/12/29，這樣等同於沒有限制，但因為沒人發現，所以第一波沒有人提前購買。

![](https://i.imgur.com/8b1f6Bp.jpg)

**售出**
2022-01-10 11:17:52 - 2022-01-10 11:21:09 (台北時間)
得到 19 eth，共賣出 200 個（每個 NFT 定價 0.095 ETH）

---

## 第二波活動的合約設定
https://etherscan.io/tx/0xf1a55b20727cbf7ee53bf18425e3cd64987337cc0239ed6e3a2982622c6eae03

![](https://i.imgur.com/Nhyv4Iw.jpg)

![](https://i.imgur.com/ATD5dDA.jpg)

![](https://i.imgur.com/s9N1zky.jpg)

* 從 etherscan 的活動紀錄我們可以明顯看出
* 第二次的設定是在 Jan-11-2022 02:24:32 AM +UTC (台北時間要 +8 小時)

`setActivity` 設定內容為 :
1. **活動 ID(activityID) :** 3
1. **價格(charges.price) :** 0.095 ETH
1. **時間(period) :** 1672272000 (Thursday, December 29, 2022 12:00:00 AM GMT)
1. **最大發行數量(maxCirculation) :** 250

---

## 第二波購買
第二次的設定只有最大發行量有更動，這也是為什麼會發生**超賣**和**提前購買**的問題了，但這個部分需要從程式碼去解析。


**售出**
2022-01-11 10:25:32 - 2022-01-11 10:30:55 (台北時間)
得到 23.75 eth，共賣出 250個（每個 NFT 定價 0.095 ETH）

---

## 為什麼可以偷跑
![](https://i.imgur.com/FTRxadz.jpg)

**錯誤 :**
時間的判斷方式有問題，上面的寫法會變成只有開關的功能，因為合約的設定是在購買之前。


**改善 :**
改成 block.timestamp >= activity.period 會比較好，因為區塊時間會一直往前走，超過設定的時間就可以開始購買，然後時間要設定正確。

第 1 波開啟時間 : 1641783600 (January 10, 2022 11:00:00 AM GMT+08:00)
第 2 波開啟時間 : 1641870000 (January 11, 2022 11:00:00 AM GMT+08:00)

## 為什麼會超賣

![](https://i.imgur.com/YsUN3ds.jpg)

1/10、1/11 的活動都是透過 `setActivity` 去更新和設定，每次執行都會把**當前售出數量**歸零，所以 1/11 的活動就又變成可以買 250 個 NFT 了

---

## 參考資料
https://mirror.xyz/0x0b399FD0a7F694774EC7Df64aD431714cE8129a6/dxvRnNajnBLNY5GLngsljmWkPtLKSwqLUvlPnbTkTtY


---

