---
# System prepended metadata

title: 區塊鏈合約，質押功能參考文件

---

# 相關名詞解釋 :
 ## 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 需再開發。)
***(獻祭精靈蛋操作頁面，還需確認相關資訊如何取得)***