我們的代幣合約中的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
函數用於驗證隻有當前管理員可以執行此函數。如果驗證失敗,則拒絶該操作。如果驗證通過,則繼續分配新的管理員。
合約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
首先檢查操作是否由管理員執行。若是,則更新合約的暫停狀態。
使用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
函數首先驗證髮送者是否爲管理員。若是,則增加總供應量和指定地址的餘額。
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)
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
。我們將學習該合約如何將我們今天討論的所有類結合起來,併增強代幣功能。請繼續關註!
我們的代幣合約中的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
函數用於驗證隻有當前管理員可以執行此函數。如果驗證失敗,則拒絶該操作。如果驗證通過,則繼續分配新的管理員。
合約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
首先檢查操作是否由管理員執行。若是,則更新合約的暫停狀態。
使用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
函數首先驗證髮送者是否爲管理員。若是,則增加總供應量和指定地址的餘額。
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)
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
。我們將學習該合約如何將我們今天討論的所有類結合起來,併增強代幣功能。請繼續關註!