Lição 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。我們將學習該合約如何將我們今天討論的所有類結合起來,併增強代幣功能。請繼續關註!

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.
Catálogo
Lição 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。我們將學習該合約如何將我們今天討論的所有類結合起來,併增強代幣功能。請繼續關註!

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.