Kevin Chang
    • Create new note
    • Create a note from template
      • 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
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Publish Note

      Everyone on the web can find and read all notes of this public team.
      Once published, notes can be searched and viewed by anyone online.
      See published notes
      Please check the box to agree to the Community Guidelines.
    • 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
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Versions and GitHub Sync Engagement control 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
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Publish Note

Everyone on the web can find and read all notes of this public team.
Once published, notes can be searched and viewed by anyone online.
See published notes
Please check the box to agree to the Community Guidelines.
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
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
# Cyber Aquarium:重新定義 Web3 養成遊戲 ## 初探 ERC-6551 水族箱應用的創新 ![1](https://hackmd.io/_uploads/r1e8xFq56.png) 邁思達團隊的[**Cyber Aquarium**](https://tbw-2023-hyper-aquarium.vercel.app/) 是一款前所未見的 Web3 養成項目,很榮幸在Taiwan Block Chain Week 黑客松的BNB chain 獲得winner獎項。作品以水族箱為主題,結合英式拍賣的機制。這不僅賦予遊戲化創新元素,還讓玩家能參與虛擬水族箱的建設,同時兼顧交易與商業行為的融合。 **ERC-6551** 是由 Jayden Windle 和 Benny Giang 等於 2023 年 2 月提出的標準。這一提案定義了**代幣綁定賬戶(Token Bound Accounts, TBA)**,使得 TBA 可以像錢包一樣擁有資産,與應用程序進行交互,而無需更改現有的智能合約或基礎設施,突破了 NFT 傳統應用的層面帶來了更多創新: - **NFT 作為帳戶:我們讓水族箱NFT具有自己的代幣餘額、智能合約和其他資產,為遊戲玩法開啟了無限的可能性。 - **NFT 作為組件:** ERC-6551 允許 NFT 組合在一起,讓不同的魚NFT成為魚群,從此不再是單一價值,可以透過水族箱批量販賣。 ![Cyber Aquarium - TBW](https://hackmd.io/_uploads/HJqLLjqqp.jpg) ## Cyber Aquarium 介紹 ### 養成機制與競拍交易的結合 **Cyber Aquarium** 是一款前所未見的 NFT 展示應用,以水族箱為主題,結合英式拍賣的機制。這使得項目不僅具有創新元素,還讓玩家參與虛擬水族箱的建設和經營。在網頁中,玩家擁有虛擬水族箱,需要精心管理和照顧其中的生物。這種混合了 NFT 和遊戲經營的元素,為玩家提供了更豐富的體驗。 透過將水族箱的 NFT 打包銷售,創建了一個全新的商業模式。這種方案不僅提供了更多的選擇給玩家,同時也能夠增加 NFT 的價值和特色。遊戲性上還允許將不同的 NFT 收藏組合在一起,創建出全新的創意作品。這種結合不僅促進了 NFT 的多元應用,同時也激發了玩家對於藝術和收藏的興趣。 ![7](https://hackmd.io/_uploads/HJJietc5p.png) ## DApp 開發技術 ![Aquarium_11zon](https://hackmd.io/_uploads/Sy1k6cc5p.png) **Cyber Aquarium** 開發時程為 2 個月,使用的 Web3 技術可以在 Z-Institute 的前端開發課程中學習到。講師李婷婷分享了許多使用 React 框架製作 DApp 的案例,在錢包串接以及合約互動方面提供了相當有幫助的指導。黑客松的初期階段參考了課程的NFT名片範例,進行修改以符合比賽主題需求,加速了前期元件和版型的規劃。 我們使用 **RainbowKit** 作為與錢包進行串接的主要工具。RainbowKit 整合了 Wagmi 並將其打包成易於使用的錢包連接功能,同時提供了包含 Next.js 框架的專案初始化工具,讓開發者能夠快速創建web3前端專案。 在與 **ERC-6551** 合約互動上,使用 Hardhat 框架進行部署和測試。驗證功能後導入了 **TokenBound** 的 SDK,只要設定好要查詢的 chain id ,並且提供 NFT 合約地址、token id ,即可計算出該 NFT 的 TBA 地址,省去了很多原本合約互動上繁複的流程。某些頁面需要把錢包裡面的 NFT 顯示在頁面上,剛開始嘗試去 IPFS 拿 NFT 的資料,但後來發現 **Opensea** 有提供測試用的 API 給開發者使用,在經過一系列的測試後成功解決了從 TBA 中的 NFT 圖片顯示的問題。 ## 水族箱競標功能設計 ![截圖 2024-02-03 凌晨12.59.49](https://hackmd.io/_uploads/BJG-gocqa.png) 針對 NFT 交易功能,我們參考了 Opensea 的出價系統,並採用了英式拍賣的經典機制。基於 Solidity by Example 上的[範例合約](https://solidity-by-example.org/app/english-auction/)加上了直接購買功能、修改起始競標時間和設定超時可收回出價等功能,打造了一個更靈活、便捷和安全的 **ERC-6551 NFT 競標合約**。這種競標合約不僅提供了一個全新的拍賣體驗,還為玩家創造了更多參與的機會。 1. **直接購買功能:** 賣家能設定直接購買價,也就是俗稱的地板價,讓不想等待的買家可以使用此價格直接買斷水族箱。這在交易行為中更加人性化,同時可以加速市場上水族箱的流通性。 2. **Gas Fee 優化:** 一般的競標時間是從拍賣開始計算直到倒數時間到期為止。為了在沒有人競標的情況下節省重新部署競標合約的 gas fee ,我們將競標時間修改為第一筆出價發生後才開始倒數。在競標時間結束後,可以再次設定時間重啟競標,而不需重新部署競標合約。 3. **超時收回出價:** 一開始由於我們的結束競標方法 `end()` 只有 owner 可以 call,會存在一種情況是如果賣家遲遲不結束競標,則出價者的資金會被卡在該競標合約裡。於是設計了一個機制,當競標合約已到期且超過一個特定時間都沒有被 owner call 完成的時候,出價者可以拿回原本的出價,且此時競標合約的狀態會被重置。 ### NFT 與生成式藝術整合《SoulFish》 專案很榮幸與生成式藝術家吳哲宇合作,獲得墨雨互動設計的 [靈魂魚](https://www.fxhash.xyz/generative/15625) IP 授權產品概念展出。我們在 2023 NFT Taipei 認識了吳哲宇的作品,他透過數學公式結合 Shader 渲染出美麗的魚形象,程式的即時運算讓作品栩栩如生,彷彿在虛擬世界悠遊其中。在 **Cyber Aquarium** 中,點擊範例帳號後,你可以欣賞到吳哲宇的生成式藝術結合TBA水族箱全新火花。 ![截圖 2024-02-03 凌晨12.37.22 (3)](https://hackmd.io/_uploads/Skicjcq5a.png) ### 邁思達對未來理想的 GameFi 新樣貌 邁思達團隊的理念是以技術革新為動力,打造遊戲開發的未來。我們致力於提供全方位的技術支援,讓開發者能夠突破傳統的限制,透過XR、AI和Web3等尖端技術創造引人入勝的遊戲體驗。強調去除物理障礙,透過虛實整合技術連結人與人之間的互動。 我們產品的TBA養成機制帶來的報酬為玩家提供了更多參與遊戲的動力,同時也創造了一個具有生態循環的遊戲環境: - 使用者可以從遊玩的過程中感受到獨特的體驗,並且在體驗過程中產生自己的內在價值。 - 創作者有得以發揮自己才華的舞台,同時也能在出售自己創作的同時獲取利潤。 - 開發者得到足夠的營運資金,以持續維護、開發後續的遊戲機制。 玩家在各種管道獲得的 NFT 都可以放入到水族箱中,並且水族箱本身可以進行交易。玩家也可以透過出售自己的水族箱設計,發揮自己的才華,同時,NFT 項目方也能從中獲取報酬,開發者則從中收取手續費,最終創建出玩家、NFT 項目方、開發者三方的共贏。 > 撰文者:SharKevin, Owen Lu, Aron Yu

Import from clipboard

Paste your webpage below. It will be converted to Markdown.

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 is not available.
Upgrade
All
  • All
  • Team
No template found.

Create custom 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

How to use Slide mode

API Docs

Edit in VSCode

Install browser extension

Get in Touch

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

No updates to save
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