Pelajaran 3

FA1.2 契約について

トークン化コースの3番目のレッスンへようこそ。 完全なトークンコントラクトをデプロイしたら、コントラクトコードを分解して、さまざまな要素を理解しましょう。 このレッスンは、FA1.2トークンコントラクトがどのように構築されるかを深く理解することを目的としています。

1. 管理者契約

Adminトークンコントラクトのコントラクトクラスは、管理者権限を定義する役割を担います。これには、1 つのエントリ ポイント が含まれます setAdministrator。 このエントリ ポイントを使用すると、現在の管理者は新しい管理者を割り当てることができます。

ニシキヘビ
class Admin(sp.契約):
    デフ __init__(自己、管理者):
        self.init(管理者=管理者)    @sp.entrypointdef setAdministrator(self、params):
        sp.verify(sp.sender == self.data.administrator)        self.data.administrator (セルフ・データ・アドミニストレーター) = パラメータ

この関数は、現在の管理者のみがこの setAdministrator 関数を実行できることを確認します。 検証に失敗した場合、操作は拒否されます。 合格すると、関数は新しい管理者の割り当てに進みます。

2. 契約の一時停止

コントラクト クラスは Pause 、コントラクト操作を一時停止および一時停止解除するメカニズムを提供します。 これには、契約の一時停止ステータスを変更できるエントリポイント setPause が含まれています。

ニシキヘビ
class Pause(sp.契約):
    デフ __init__(セルフ):
        self.init(一時停止=False)    @sp.entrypointdef setPause(self、params):
        sp.verify(sp.sender == self.data.administrator)        self.data.paused = パラメータ

この関数 setPause は、最初に操作が管理者によって実行されたことを確認します。 チェックに合格すると、契約の一時停止ステータスが更新されます。

3. 造幣契約

コントラクトクラスにより Mint 、トークンの供給量を増やすことができます。 総供給量を増やし、特定のアドレスの残高を更新するエントリポイントが付属 mint しています。

ニシキヘビ
class Mint(sp.契約):
    @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

ニシキヘビ
class Burn(sp.契約):
    @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 トークンを書き込みます

ニシキヘビ
  sc.h2("管理者がボブトークンを燃やす")
        c1.burn(アドレス= bob.address、 値=1).run(送信者=管理者)

5. ChangeMetadataコントラクト

コントラクト クラスは ChangeMetadata 、コントラクトのメタデータを更新するためのものです。 これには、メタデータのキーと値のペアを更新する関数 update_metadata が含まれています。

ニシキヘビ
class ChangeMetadata(sp.契約):
    @sp.entrypointdef update_metadata(self, key, value):
        sp.verify(sp.sender == self.data.administrator)        self.data.metadata[キー] = 値

この関数は update_metadata 、前の関数と同様に、送信者が管理者であることを確認します。 次に、メタデータ内の指定されたキーと値のペアを更新します。

次のレッスンでは、これらすべての機能 Fa1_2TestFullを含む最終的なコントラクトについて掘り下げます。 このコントラクトが今日説明したすべてのクラスからどのように継承され、それらすべてがトークンの機能にどのように貢献するかについて学びます。 乞うご期待!

Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.
Katalog
Pelajaran 3

FA1.2 契約について

トークン化コースの3番目のレッスンへようこそ。 完全なトークンコントラクトをデプロイしたら、コントラクトコードを分解して、さまざまな要素を理解しましょう。 このレッスンは、FA1.2トークンコントラクトがどのように構築されるかを深く理解することを目的としています。

1. 管理者契約

Adminトークンコントラクトのコントラクトクラスは、管理者権限を定義する役割を担います。これには、1 つのエントリ ポイント が含まれます setAdministrator。 このエントリ ポイントを使用すると、現在の管理者は新しい管理者を割り当てることができます。

ニシキヘビ
class Admin(sp.契約):
    デフ __init__(自己、管理者):
        self.init(管理者=管理者)    @sp.entrypointdef setAdministrator(self、params):
        sp.verify(sp.sender == self.data.administrator)        self.data.administrator (セルフ・データ・アドミニストレーター) = パラメータ

この関数は、現在の管理者のみがこの setAdministrator 関数を実行できることを確認します。 検証に失敗した場合、操作は拒否されます。 合格すると、関数は新しい管理者の割り当てに進みます。

2. 契約の一時停止

コントラクト クラスは Pause 、コントラクト操作を一時停止および一時停止解除するメカニズムを提供します。 これには、契約の一時停止ステータスを変更できるエントリポイント setPause が含まれています。

ニシキヘビ
class Pause(sp.契約):
    デフ __init__(セルフ):
        self.init(一時停止=False)    @sp.entrypointdef setPause(self、params):
        sp.verify(sp.sender == self.data.administrator)        self.data.paused = パラメータ

この関数 setPause は、最初に操作が管理者によって実行されたことを確認します。 チェックに合格すると、契約の一時停止ステータスが更新されます。

3. 造幣契約

コントラクトクラスにより Mint 、トークンの供給量を増やすことができます。 総供給量を増やし、特定のアドレスの残高を更新するエントリポイントが付属 mint しています。

ニシキヘビ
class Mint(sp.契約):
    @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

ニシキヘビ
class Burn(sp.契約):
    @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 トークンを書き込みます

ニシキヘビ
  sc.h2("管理者がボブトークンを燃やす")
        c1.burn(アドレス= bob.address、 値=1).run(送信者=管理者)

5. ChangeMetadataコントラクト

コントラクト クラスは ChangeMetadata 、コントラクトのメタデータを更新するためのものです。 これには、メタデータのキーと値のペアを更新する関数 update_metadata が含まれています。

ニシキヘビ
class ChangeMetadata(sp.契約):
    @sp.entrypointdef update_metadata(self, key, value):
        sp.verify(sp.sender == self.data.administrator)        self.data.metadata[キー] = 値

この関数は update_metadata 、前の関数と同様に、送信者が管理者であることを確認します。 次に、メタデータ内の指定されたキーと値のペアを更新します。

次のレッスンでは、これらすべての機能 Fa1_2TestFullを含む最終的なコントラクトについて掘り下げます。 このコントラクトが今日説明したすべてのクラスからどのように継承され、それらすべてがトークンの機能にどのように貢献するかについて学びます。 乞うご期待!

Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.