الدرس رقم 3

了解FA1.2合約

歡迎參加代幣化課程第三課的學習。在部署好完整的代幣合約後,我們將對合約代碼進行逐步分析,了解不衕的元素。本課旨在讓您深入了解FA1.2代幣合約是如何構建的。

1. 管理員(Admin)合約

我們的代幣合約中的Admin合約類負責定義管理權限。它包括一個單一的入口點:setAdministrator。此入口點允許當前管理員分配新的管理員。

Python
class Admin(sp.Contract):
    def __init__(self, administrator):
        self.init(administrator=administrator)

    @sp.entrypointdef setAdministrator(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.administrator = params

使用setAdministrator函數用於驗證隻有當前管理員可以執行此函數。如果驗證失敗,則拒絶該操作。如果驗證通過,則繼續分配新的管理員。

2. 暫停(Pause)合約

合約Pause類提供了一種暫停和取消暫停合約操作的機製,它包括一個入口點setPause,可以更改合約的暫停狀態。

Python
class Pause(sp.Contract):
    def __init__(self):
        self.init(paused=False)

    @sp.entrypointdef setPause(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.paused = params

函數setPause首先檢查操作是否由管理員執行。若是,則更新合約的暫停狀態。

3. 鑄幣(Mint)合約

使用Mint合約類可以增加代幣供應量。它帶有一個名爲mint的入口點,可以增加總供應量併更新特定地址的餘額。

Python
class Mint(sp.Contract):
    @sp.entrypointdef mint(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.total_supply += params.value
        self.data.balances[params.address].balance += params.value

mint函數首先驗證髮送者是否爲管理員。若是,則增加總供應量和指定地址的餘額。

4. 銷毀(Burn)合約

Burn合約類用於減少代幣供應。它有一個burn入口點,用於減少總供應和特定地址的餘額。

Python
class Burn(sp.Contract):
    @sp.entrypointdef burn(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.total_supply -= params.value
        self.data.balances[params.address].balance -= params.value

burn函數的操作類似於mint函數,但用途是減少總供應和指定地址的餘額。

以下代碼可以讓管理員銷毀Bob代幣。

Python
  sc.h2("Admin burns Bob token")
        c1.burn(address=bob.address, value=1).run(sender=admin)

5. 修改元數據(ChangeMetadata)合約

ChangeMetadata合約類用於更新合約的元數據。它包括函數update_metadata,用於更新元數據中的鍵值對。

Python
class ChangeMetadata(sp.Contract):
    @sp.entrypointdef update_metadata(self, key, value):
        sp.verify(sp.sender == self.data.administrator)
        self.data.metadata[key] = value

與前麵的函數類似,update_metadata函數驗證髮送者是否是管理員。若是,則會更新元數據中指定的鍵值對。

在下一課中,我們將深入研究包含所有這些功能的最終合約Fa1_2TestFull。我們將學習該合約如何將我們今天討論的所有類結合起來,併增強代幣功能。請繼續關註!

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.
الكتالوج
الدرس رقم 3

了解FA1.2合約

歡迎參加代幣化課程第三課的學習。在部署好完整的代幣合約後,我們將對合約代碼進行逐步分析,了解不衕的元素。本課旨在讓您深入了解FA1.2代幣合約是如何構建的。

1. 管理員(Admin)合約

我們的代幣合約中的Admin合約類負責定義管理權限。它包括一個單一的入口點:setAdministrator。此入口點允許當前管理員分配新的管理員。

Python
class Admin(sp.Contract):
    def __init__(self, administrator):
        self.init(administrator=administrator)

    @sp.entrypointdef setAdministrator(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.administrator = params

使用setAdministrator函數用於驗證隻有當前管理員可以執行此函數。如果驗證失敗,則拒絶該操作。如果驗證通過,則繼續分配新的管理員。

2. 暫停(Pause)合約

合約Pause類提供了一種暫停和取消暫停合約操作的機製,它包括一個入口點setPause,可以更改合約的暫停狀態。

Python
class Pause(sp.Contract):
    def __init__(self):
        self.init(paused=False)

    @sp.entrypointdef setPause(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.paused = params

函數setPause首先檢查操作是否由管理員執行。若是,則更新合約的暫停狀態。

3. 鑄幣(Mint)合約

使用Mint合約類可以增加代幣供應量。它帶有一個名爲mint的入口點,可以增加總供應量併更新特定地址的餘額。

Python
class Mint(sp.Contract):
    @sp.entrypointdef mint(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.total_supply += params.value
        self.data.balances[params.address].balance += params.value

mint函數首先驗證髮送者是否爲管理員。若是,則增加總供應量和指定地址的餘額。

4. 銷毀(Burn)合約

Burn合約類用於減少代幣供應。它有一個burn入口點,用於減少總供應和特定地址的餘額。

Python
class Burn(sp.Contract):
    @sp.entrypointdef burn(self, params):
        sp.verify(sp.sender == self.data.administrator)
        self.data.total_supply -= params.value
        self.data.balances[params.address].balance -= params.value

burn函數的操作類似於mint函數,但用途是減少總供應和指定地址的餘額。

以下代碼可以讓管理員銷毀Bob代幣。

Python
  sc.h2("Admin burns Bob token")
        c1.burn(address=bob.address, value=1).run(sender=admin)

5. 修改元數據(ChangeMetadata)合約

ChangeMetadata合約類用於更新合約的元數據。它包括函數update_metadata,用於更新元數據中的鍵值對。

Python
class ChangeMetadata(sp.Contract):
    @sp.entrypointdef update_metadata(self, key, value):
        sp.verify(sp.sender == self.data.administrator)
        self.data.metadata[key] = value

與前麵的函數類似,update_metadata函數驗證髮送者是否是管理員。若是,則會更新元數據中指定的鍵值對。

在下一課中,我們將深入研究包含所有這些功能的最終合約Fa1_2TestFull。我們將學習該合約如何將我們今天討論的所有類結合起來,併增強代幣功能。請繼續關註!

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.