KryptoCamp 實戰班 1
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    1
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Yolo cat 文章 濃縮 ![](https://hackmd.io/_uploads/BkICot52t.png) 區塊鏈核心始終不變,從以前的Fomo3D到如今的NFT。不管是去年2021年的Adidas mint超長時間,又或者周杰倫 nft闢謠,到如今的yolo cat / murmur cat,echox白名單階段透過合約把NFT買完,公售沒東西可賣。 今天就帶大家從三個方向,聊聊跨入NFT市場的陳零九YOLO Cat事件。 * YOLO Cat 事情經過 * 從合約分析YOLO Cat * YOLO Cat 事件影響 ## YOLO Cat事發經過 2022.1.9 當天藝人陳零九本來預計將在下午1330公開發售的,「 YOLO Cat Club」的系列 NFT,卻在1329分時全數鑄造完,幣圈社群頓時炸鍋。 對此陳零九及其技術合作方團隊 FOMO Dog Club 有在當天晚上的八點鐘,一同在 IG 直播說明整個事件的始末,以及主要的補償措施 https://www.instagram.com/tv/CYgnUQVBV2c/?utm_source=ig_web_copy_link 首先,關於為什麼在發售時間前就可以進行買賣,項目工程師的說明: > 之所以會在開賣時間前就鑄造完畢,是因為他原本就是準備在接近拍賣時間(13:30)時釋出合約,但剛好這次以太坊出塊時間較快,所以才會導致在開買時間(13:30)前,就於官網釋出合約連結。 至於退還 gas fee 的補償措施,項目方將全數退還「4,394 筆」沒有鑄造成功的交易,一共 70,060 美元的 gas fee,此外還將抽出三位用戶,免費空投 YOLO Cat 作為補償。 此事件發酵後區塊鏈科學家社群 AlphaShark 的創辦人也有在,Medium 上發文解釋這次事件的原因 https://medium.com/@b1995/yolo-cat-%E5%BE%A9%E7%9B%A4-1-956565334642 我們可能沒有去搶,又或者沒有搶到熱門的NFT,但不管我們的選擇是什麼,我們可以從中學習到什麼呢? ## 合約即條文,鏈上公開資訊會告訴我們答案 ### 向Vitalik Buterin致敬 我們所有的疑惑都可以從合約去挖掘出答案 就讓我們帶大家透過合約的基礎來解答! 下面我們會分享如何找到NFT的合約,包含合約上架時間,觀看鑄造的機制。 有關機器人搶NFT的原理則不深入探討,簡單來說主要機器人所做的事情分為兩個,分別是暴力查詢提前找到合約以及產生多個智能合約代替人頭,突破每人鑄造數量的限制。 * 如何找到合約 * 如何知道合約上架時間 ### 如何找到合約? 首先我們要先到 opensea 上找到 Yolo Cat 的項目 https://opensea.io/collection/yolo-cat-club09 1. 點擊其中一個NFT 2. 找到左側 Detail,其中有一個 Contract Address,點擊他 3. 會看到在 Etherscan 上的 Contract ![](https://hackmd.io/_uploads/SyFfCtqnF.png) ### 如何知道合約上架時間? 到 Contract Creator: 中 txn 的網址,會有此筆交易的詳細內容 可以看到 timestamp 是 `Jan-09-2022 04:37:34 AM +UTC)`` 從這邊可以得知這個合約是在公開發售約一個小時前上架的, 而這裡的確會有人可以事先取得合約地址進行偷跑的動作, 不過這份合約當中其實有做一個狀態判斷,而從公開發售時間點的 block `13969455`中,我們可以清楚地看到。 在 Etherscan 上 搜尋 `13969455`,可以看到這個 block 的詳細資訊,可以找到這筆交易 filp Sale Active (這邊應該是拼錯flip)。 點擊 129 transcations https://etherscan.io/txs?block=13969455&ps=100&p=1 從這裡我們可以發現,這個動作的意思才是真正開賣,只要在這個動作前的鑄造行為都會失敗,可以從合約的 transactions 觀察 直接看倒數第二頁的交易記錄,可以看到在 filp Sale Active 前都是 fail 的 ![](https://hackmd.io/_uploads/r1_cm5cnt.png) 從這些數據來看如果想只是單純地偷跑,在13:58其實是會失敗的 ## 此NFT事件 從技術面去看兩大方面 1. 第一隻鑄造出來的 NFT 的 ID 2. 智能合約當中的鑄造方法是否有特殊寫法 首先 1 我們可以看 filp Sale Active 完的第一筆交易,他的 id 是 10,而下一筆是11,從這個規律推斷他前面還有九隻,剛好跟白名單的數量相符。 ![](https://hackmd.io/_uploads/HJa_Eqc3K.png) ### 接下來是第二點,也是此事件發生的重點 從合約中我們可以以找到鑄造方法,詳細去合約看發現在 `auctionMintYoloCat` 確實是有寫到時間的判斷 把這兩段做比對,可以看到 `auctionMintYoloCat` 有判斷執行的時間一定要超過`auctionStartTime`,否則就會拒絕執行 第一個方法,的確有判斷狀態,如果有人偷跑是會挖失敗 ![](https://hackmd.io/_uploads/rk9wcc5hY.png) ![](https://hackmd.io/_uploads/SJn-5552F.png) 但類似的方法 `mintYoloCats` 卻少了這個判斷 所以才有出塊時間不一致的問題。這裡的寫法的確需要好好檢視 同時也證明上線前的測試還有程式碼 review 非常重要!!! 因為很重要,所以貼三次 `require(block.timestamp >= auctionStartTime, 'Auction not start');` `require(block.timestamp >= auctionStartTime, 'Auction not start');` `require(block.timestamp >= auctionStartTime, 'Auction not start');` ## 一個可以走長遠的好項目,需同時具備社群與技術能力 ### 此事件中項目方該值得深思的地方『公平』 在整起YOLO Cat凸顯了一件事,那就是對於一般人來說,創造了一個高門檻的標準,單純喜歡想要支持此項目的人如果不會程式,搶不到那就只能到opensea去購買,換句話就是取得門檻就變高了。 這就像是知名歌手的演唱會門票,假設今天公告在12:00開賣,但是11:59就搶購一空,有人先用程式搶完了,那麼不會程式,但是想聽演唱會的人只能透過黃牛去買。 ``` 項目的未來 取決於 社群的認同 信任所產生的認同 來自於 平日互動間的累積 ``` ``` 一次不公平事件很可能造就社會大眾的不信任 ``` ### 針對此一事件被影響者的共勉 身處在區塊鏈圈這個去中心化的世界,多懂一點,就是一種保護自己的方式。 獨立思考,鑒別爆炸的資訊量,哪些對自己有益,哪些對自己有害,永遠是不會錯的 不隨之起舞,不一頭熱,因為永遠都有下一個賺錢的機會 我們能做的,就是在那個時間點到來時,把自己準備好

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully