Lớp hợp đồng Admin
trong hợp đồng mã thông báo của chúng tôi chịu trách nhiệm xác định các đặc quyền quản trị. Nó bao gồm một điểm vào duy nhất: setAdministrator
. Điểm vào này cho phép quản trị viên hiện tại chỉ định quản trị viên mới.
Lớp Python
Quản trị viên(sp.Contract):
def __init__(self, quản trị viên):
self.init(administrator=administrator)
@sp.entrypointdef setAdministrator(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.administrator = thông số
Hàm setAdministrator
xác minh rằng chỉ quản trị viên hiện tại mới có thể thực thi chức năng này. Nếu xác minh không thành công, hoạt động sẽ bị từ chối. Nếu vượt qua, chức năng sẽ tiến hành chỉ định quản trị viên mới.
Lớp hợp đồng Pause
cung cấp cơ chế để tạm dừng và hủy tạm dừng các hoạt động hợp đồng. Nó bao gồm một điểm vào setPause
có thể thay đổi trạng thái tạm dừng của hợp đồng.
Lớp Python
Tạm dừng(sp.Contract):
def __init__(self):
self.init(paused=False)
@sp.entrypointdef setPause(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.paused = thông số
Hàm setPause
trước tiên kiểm tra xem thao tác đó có được quản trị viên thực hiện hay không. Nếu kiểm tra thành công, nó sẽ cập nhật trạng thái tạm dừng của hợp đồng.
Lớp hợp đồng Mint
cho phép tăng nguồn cung cấp mã thông báo. Nó đi kèm với một điểm vào mint
giúp tăng tổng nguồn cung và cập nhật số dư của một địa chỉ cụ thể.
Python
lớp 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
Hàm mint
trước tiên xác minh rằng người gửi là quản trị viên. Sau đó, nó làm tăng tổng nguồn cung và số dư của địa chỉ được chỉ định.
Lớp hợp đồng Burn
dùng để giảm nguồn cung cấp token. Nó có điểm vào lệnh burn
làm giảm tổng nguồn cung và số dư của một địa chỉ cụ thể.
Python
lớp 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
Chức năng burn
hoạt động tương tự như chức năng mint
nhưng thay vào đó làm giảm tổng nguồn cung và số dư của địa chỉ được chỉ định.
Với đoạn code sau Admin burn Bob token
Python
sc.h2("Quản trị viên đốt mã thông báo Bob")
c1.burn(address=bob.address, value=1).run(sender=admin)
Lớp hợp đồng ChangeMetadata
dùng để cập nhật siêu dữ liệu của hợp đồng. Nó bao gồm hàm update_metadata
cập nhật cặp khóa-giá trị trong siêu dữ liệu.
Lớp Python
ChangeMetadata(sp.Contract):
@sp.entrypointdef update_metadata(self, key, value):
sp.verify(sp.sender == self.data.administrator)
self.data.metadata[key] = giá trị
Hàm update_metadata
, tương tự như các hàm trước đó, xác minh rằng người gửi là quản trị viên. Sau đó, nó cập nhật cặp khóa-giá trị được chỉ định trong siêu dữ liệu.
Trong bài học tiếp theo, chúng ta sẽ đi sâu vào hợp đồng cuối cùng bao gồm tất cả các chức năng này, Fa1_2TestFull
. Chúng ta sẽ tìm hiểu về cách hợp đồng này kế thừa từ tất cả các lớp mà chúng ta đã thảo luận hôm nay và cách tất cả chúng đóng góp vào chức năng của mã thông báo. Giữ nguyên!
Lớp hợp đồng Admin
trong hợp đồng mã thông báo của chúng tôi chịu trách nhiệm xác định các đặc quyền quản trị. Nó bao gồm một điểm vào duy nhất: setAdministrator
. Điểm vào này cho phép quản trị viên hiện tại chỉ định quản trị viên mới.
Lớp Python
Quản trị viên(sp.Contract):
def __init__(self, quản trị viên):
self.init(administrator=administrator)
@sp.entrypointdef setAdministrator(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.administrator = thông số
Hàm setAdministrator
xác minh rằng chỉ quản trị viên hiện tại mới có thể thực thi chức năng này. Nếu xác minh không thành công, hoạt động sẽ bị từ chối. Nếu vượt qua, chức năng sẽ tiến hành chỉ định quản trị viên mới.
Lớp hợp đồng Pause
cung cấp cơ chế để tạm dừng và hủy tạm dừng các hoạt động hợp đồng. Nó bao gồm một điểm vào setPause
có thể thay đổi trạng thái tạm dừng của hợp đồng.
Lớp Python
Tạm dừng(sp.Contract):
def __init__(self):
self.init(paused=False)
@sp.entrypointdef setPause(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.paused = thông số
Hàm setPause
trước tiên kiểm tra xem thao tác đó có được quản trị viên thực hiện hay không. Nếu kiểm tra thành công, nó sẽ cập nhật trạng thái tạm dừng của hợp đồng.
Lớp hợp đồng Mint
cho phép tăng nguồn cung cấp mã thông báo. Nó đi kèm với một điểm vào mint
giúp tăng tổng nguồn cung và cập nhật số dư của một địa chỉ cụ thể.
Python
lớp 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
Hàm mint
trước tiên xác minh rằng người gửi là quản trị viên. Sau đó, nó làm tăng tổng nguồn cung và số dư của địa chỉ được chỉ định.
Lớp hợp đồng Burn
dùng để giảm nguồn cung cấp token. Nó có điểm vào lệnh burn
làm giảm tổng nguồn cung và số dư của một địa chỉ cụ thể.
Python
lớp 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
Chức năng burn
hoạt động tương tự như chức năng mint
nhưng thay vào đó làm giảm tổng nguồn cung và số dư của địa chỉ được chỉ định.
Với đoạn code sau Admin burn Bob token
Python
sc.h2("Quản trị viên đốt mã thông báo Bob")
c1.burn(address=bob.address, value=1).run(sender=admin)
Lớp hợp đồng ChangeMetadata
dùng để cập nhật siêu dữ liệu của hợp đồng. Nó bao gồm hàm update_metadata
cập nhật cặp khóa-giá trị trong siêu dữ liệu.
Lớp Python
ChangeMetadata(sp.Contract):
@sp.entrypointdef update_metadata(self, key, value):
sp.verify(sp.sender == self.data.administrator)
self.data.metadata[key] = giá trị
Hàm update_metadata
, tương tự như các hàm trước đó, xác minh rằng người gửi là quản trị viên. Sau đó, nó cập nhật cặp khóa-giá trị được chỉ định trong siêu dữ liệu.
Trong bài học tiếp theo, chúng ta sẽ đi sâu vào hợp đồng cuối cùng bao gồm tất cả các chức năng này, Fa1_2TestFull
. Chúng ta sẽ tìm hiểu về cách hợp đồng này kế thừa từ tất cả các lớp mà chúng ta đã thảo luận hôm nay và cách tất cả chúng đóng góp vào chức năng của mã thông báo. Giữ nguyên!