# 相關名詞解釋 : ## tokenId: **同一份智能合約產生的tokenId一定會是獨特的,但不同份合約產出的tokenId有可能重複,例的精靈王,但tokenId為7的精靈王在我們的合約中只會有一隻,在我們的合約中是獨一無二的存在,token如我們的合約和axie的合約都能產生一隻tokenId為7Id 7在我們的合約和axie的合約中代表的是不同的NFT物件實例。** **我們的NFT分為<font color="#f00">已孵化和未孵化</font>,未孵化時仍是NFT,也可交易,但看不到基因** ## ABI: **我寫好的合約是sol檔,這會被編譯成byte code, 放到區塊鏈上的是byte code, abi就是方便我們操作區塊鏈上byte code的介面** 以下省略... # ELFCore ## ELFCore.transferFrom ### 描述: 將NFT轉給指定地址, 只有三種人有權轉移NFT擁有權: 1. NFT的擁有人 2. NFT擁有人的operator(詳見function setApprovalForAll) 3. 該NFT的approved address(詳見function approve) **為NFT協議規定的 func,改動區塊鏈 state, 需要 gas** params參數格式如下: *(EX: 可舉範例說明 )* ```javascript= const params = { address: 0xa357969ce308B2E5691b5acb9fBCdBad99a8D357, address: 0xbF38dBb4DF5260F2B7287974B6Fa54e72bBBF392, tokenId: 10000, }; ``` * address, NFT的原擁有者 * address, 欲轉出的地址 * uint256, 欲轉出的NFT的 tokenId *(參數應該是 tokenId? )* ## ELFCore.setApprovalForAll ### 描述: 呼叫此function的人, 指定將某地址設成是(或不是)他的operator, 如果B地址被A地址設成operator, 則B地址有權操作A地址擁有的全部NFT, 包刮A地址後來才擁有的NFT. 每個地址都能有多個operator(讓多個人操作你全部的NFT), 當然也可以選擇完全不要 operator **為NFT協議規定的 func,改動區塊鏈 state, 需要 gas** params參數格式如下: *(EX: 可舉範例說明 )* ```javascript= const params = { address: 0xa357969ce308B2E5691b5acb9fBCdBad99a8D357, bool: false, }; ``` * address, 目標地址 * bool, 如果是, 將目標地址設為operator, 如果否, 剝奪目標地址的operator權力 ## 備註 : ### 需求文件圖片第一張: 4.總獻祭的精靈蛋數量: 打合約中 **stakeELF.totalEggs** 取已獻祭的<font color="#f00">所有</font>精靈蛋總數 5.預期獎勵年報酬率 : <font color="#ff9900">**待合約工程師提供。**</font> (計算方式 : 九種蛋的APR加總起來除以九,加上1100%) 7.ROE 價格,從 uniswap 取得。 8.每日獎勵: <font color="#ff9900">**待合約工程師提供。**</font> 。 9.流通供應量: 取A幣合約即可。 ### 需求文件圖片第二張: 2.取得祭壇耐久度 = 打合約中 **stakeELF.altar** 取得,<font color="#f00">**注意耐久度部分會因獻祭多寡而變動。**</font> 4.取得祭壇右側的容量 = 打合約中 **stakeELF.totalEggs** 取已獻祭的<font color="#f00">**所有**</font>精靈蛋總數 ### 需求文件圖片第三張: 2.個人錢包地址 3.取得已獻祭的<font color="#f00">**該玩家**</font>的精靈蛋總數 = 打合約中 **stakeELF.userStakeEggs** 取特定玩家質押的蛋的總數 5.取得可領取獎勵 = 打合約中 stakeELF.getWithdrawValue 取特定玩家的可領取獎勵 (經開會後,需再確認一次。) (需求第 4 5 6 項, 經 07/12 開會確認後,合約工程師 hoper 需再開發。) ***(獻祭精靈蛋操作頁面,還需確認相關資訊如何取得)***