1.基因
12個基因塊用256bit表示
去掉前面20個,是240個bit
每個基因塊是20bit,4個性狀,每個性狀是5bit
基因遺傳:3個步驟
1.父親的4個,分別根據(jù)random()<0.25決定是否交換,最終形成tmp1
2.母親的4個,分別根據(jù)random()<0.25決定是否交換,最終形成tmp2
3.每個位分別根據(jù)概率,誰贏了,取誰,最終得到孩子的基因
2.區(qū)塊鏈開發(fā)
基本規(guī)則:
- 非兄妹父母關(guān)系的兩只貓可以生育
- 兩只貓可以來自同個主人,或者一只貓被她的擁有者提供服務(wù)
- 任何一只都可以做父親或者母親
- 貓沒有性別
- 交配后,母親會懷孕,并且進(jìn)入修養(yǎng)期;父親同樣進(jìn)入修養(yǎng)期
- 修養(yǎng)期不能再次剩余,修養(yǎng)期隨著生育次數(shù)而增長
- 母親的修養(yǎng)期結(jié)束后,會生出小貓,并且可再次生育
- 主人可以選擇拍賣貓或者贈送貓
3.核心流程
1.COO每隔15分鐘產(chǎn)生一個0代的貓,并進(jìn)行拍賣(main createGen0Auction())
2.用戶可以購買0代貓(Sale Auction bid())
3.用戶可以查詢貓的數(shù)據(jù)(Main getKitty())
4.用戶可以自己繁衍貓(Main breedWith() or breedWithAuto())
5.修養(yǎng)期后,用戶可以得到新的貓(Main getBirth())
6.用戶可以把一只貓作為父親,拍賣他的生育服務(wù)(Main createSiringAuction())
7.用戶把一只貓作為父親,為某個以太坊地址提供生育服務(wù)(Main approveSiring())
8.用戶可以購買一只貓的生育服務(wù)(Main createSiringAuction())
9.用戶可以拍賣他的貓(Main createSaleAuction())
10.用戶可以購買被拍賣的貓(Sale Auction bid())
11.用戶可以查看被拍賣貓的信息(Sale/Siring Auction getAuction())
12.用戶能夠取消拍賣(Sale/Siring Auction cancelAuction())
13.用戶能夠贈送貓(Main transfer())
14.用戶能夠指定另一個用戶能夠獲得他的貓的權(quán)限(Main approve())
15.用戶可以認(rèn)領(lǐng)自己被指定獲得權(quán)限的貓(Main transferFrom())
16.只有CEO能夠替換COO或者CTO(Main setCEO() setCFO() setCOO())
17.COO能夠創(chuàng)建和操作特殊的貓(Main createPromoKitty())
18.COO能夠轉(zhuǎn)移拍賣的收入(Main withdrawAuctionBalances())
19.CFO能夠轉(zhuǎn)移主協(xié)議的收益(Main withdrawBalance())
4.協(xié)議
graph TD
A[KittyAccessControl定義了CEO COO CFO的基本權(quán)限和管理功能] --> B(KittyBase定義了公共的結(jié)構(gòu)體 事件 基本變量)
B --> C[KittyOwnership 管理貓的歸屬和轉(zhuǎn)移]
C -->D[KittyBreeding 管理貓的交配 懷孕 出生]
D --> E[KittyAuction 對外提供拍賣的能力]
F[ERC721 提供不可分割的Token的管理接口] --> C
G[ERC721 Metadata 數(shù)據(jù)轉(zhuǎn)換] -.-> C
H[GeneScienceInterface 基于父母的基因生成孩子的基因] -.-> D
I[Ownable基于用戶地址提供權(quán)限管理 ] --> J[Pausable提供緊急情況下暫停的能力]
J --> K[ClockAuction提供倒計時拍賣的高級功能]
K --> L[SiringClockAuction生育拍賣]
K --> M[SaleClockAuction銷售拍賣]
L -.-> E
M -.-> E
N[ClockAuctionBase 提供倒計時拍賣的基本功能] --> E
E --> O[KittyMinting 創(chuàng)建0代貓]
O --> P[KittyCore組合了各個核心元素]

整個結(jié)構(gòu)中分成3條線
- 中間的主線,定義了迷戀貓的各個核心操作。為了拆解簡化,有多個contract完成各自的任務(wù),同時通過協(xié)議繼承繼承了整個關(guān)系
- 左側(cè)的拍賣線,提供了單獨的拍賣協(xié)議能力
- 右側(cè)的基因線,僅僅提供新貓基因生成的功能,這樣做能夠部分實現(xiàn)基因算法的加密,但是也很快被人逆向工程了