1

OpenSea 簡易運作原理

 2 years ago
source link: https://www.frank.hk/blog/opensea/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

OpenSea 是目前最大的 NFT 交易平台,就宛如現實世界中的 Amazon , 淘寶網一樣。如果嘗試過在 OpenSea 中出售自己擁有的 NFT,估計你都會有印象,前後要經歷 3 次和 MetaMask 的「互動」, 可是你究竟是否了解這三次「互動」究竟是在做什麼?

上架 NFT

下面的影片,展示了在 OpenSea 上架的過程:

我們可以看到,過程中前後需要經歷 Initialize Wallet ,Approve Token,Confirm Listing 三個步驟,這三個步驟分別是在做什麼呢?

Initialize Wallet

screen-20210928090647.png
Initialize Wallet

我們可以從 MetaMask 中看到,所謂 Initialize Wallet, 其實是調用 OpenSea 上的「Proxy Registry」裡的一個 「Register Proxy」的 function。 從 Etherscan 上可以看到,這個 function 建立並部署了一個新的智能合約 0x...548c,也就是所謂的 Proxy 合約。

根據 OpenSea 的說明:「On OpenSea, each user has a "proxy" account that they control, and is ultimately called by the marketplace contracts to trade their items.」得知,每一個 OpenSea 賬戶, 都會有一個 Proxy 合約與之對應,因此如果是一個全新的賬戶,就必須要經過這個「部署 Proxy 合約」的步驟,但如果已經擁有了 Proxy 合約,則下次上架 NFT 就不需要再次部署了。

因為這個操作需要改寫區塊鏈的數據,因此需要支付礦工費。另外因為需要進行合約部署,礦工費用也會相較其他操作更貴。

Approve Token

screen-20210928091339.png
Approve Token

Approve Token 則比較容易理解。有沒有想過你擁有的 NFT,為什麼 OpenSea 能夠代你賣給別人?它哪裡來的權力呢?答案就是這個步驟,我們看到這個 Approve Token 其實是調用了「Set Approval For All」function, 透過查看ERC721原始碼發現,這個 Set Approval For All , 其實就是一個授權操作,一旦授權,被授權的地址將可以調用 transferFrom 將 NFT 的擁有權轉移到另一個地址。

approval.png

Etherscan 上看到,這個授權操作傳入了一個被授權地址,0x...548c ,而這個地址,正正是上面第一步「Initialize Wallet」時新建立的合約地址,也就是說,這一部完成後,你作為 NFT 的擁有者,便授權了0x...548c 這個合約可以轉移你的 NFT 資產。

因為這個操作也需要改寫區塊鏈的數據,因此也是需要支付礦工費的。

Confirm Listing

screen 20210928092312

最後一步 Confirm Listing, 則最為簡單,這個操作並沒有改寫任何區塊鏈的內容,因此不需要支付任何費用。這個操作是使用你的私鑰簽名一段信息,用以讓 OpenSea 認證你的身份,確認「你是你」,認證成功後才會代你進行上架操作。

購買 NFT

對比上架 NFT, 購買 NFT 則相對簡單。即便是新的帳戶,亦不需要太多的步驟。

DraggedImage

購買的操作,調用了 OpenSea 交易所合約中的 「atomic match」function,這個 function 最後會做幾件事:

  1. 轉帳該筆金額的 97.5% 給NFT 原擁有者;
  2. 轉帳該筆金額的 2.5% 給 OpenSea;
  3. 透過上面的 proxy 合約,調用 NFT 合約的 transferFrom function,轉移 NFT;
screen 20210930150644

至此,一個 NFT 的交易便完成了。

透過查看 Etherscan 不難發現,OpenSea 背後使用的是 Wyvern Protocol , 這是一個基於以太坊的開放協議,用以交易虛擬資產。網上似乎並沒有太多的關於這個協議的資料。以後有時間再研究一下。

screen 20210930150257
技術交流,其他諮詢等,請按此聯絡

訂閱我的網站,接收更新以及其他有趣的消息 😙 。 訂閱不收費,走過路過別錯過。
Subscribe to my website, I will email you if any new posts or interesting stuff available.

如果你喜歡我的內容,請考慮用一杯咖啡支持我一下吧,非常感謝 🥰 。
If you like my contents, please support me via BuyMeCoffee, Thanks a lot.

其它相關文章


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK