TezosとSmartPyを完全に理解する前に、まずすべてを支える技術であるブロックチェーンを理解する必要があります。 ブロックチェーンはブロックのチェーンであり、各ブロックにはトランザクションのリストが含まれています。 ブロックチェーン技術は、すべてのネットワーク参加者が見ることができるトランザクションの分散型データベース、または「デジタル台帳」を提供します。 そのアーキテクチャは、すべてのトランザクションが一意であることを保証し、一度データベースに記録されると、変更することは不可能です。
Tezosは、そのようなブロックチェーンプラットフォームの1つです。 Tezosがビットコインやイーサリアムなどの他の多くのブロックチェーンプラットフォームと一線を画すのは、ハードフォークを必要とせずにプロトコルをアップグレードできる「自己修正」に重点を置いていることです。 これは、プロトコルの適応性と将来性を高めるため、大きなメリットです。
Tezosは、買い手と売り手の間の合意をコード行に直接書き込んだ自己実行型の契約であるスマートコントラクトのプラットフォームも提供しています。 デジタル契約を管理・検証するこの機能は、金融サービスからサプライチェーン、分散型アプリケーション(DApps)まで、幅広い潜在的なアプリケーションを提供します。 Tezosについてもっと読む: Tezosとは?XTZについて知っておくべきこと
Tezosでスマートコントラクトを作成するには、SmartPyという言語を使用します。 SmartPyは、Tezosブロックチェーン用のスマートコントラクトを開発するためのPythonライブラリです。 これは、コントラクトとそれに関連するテストシナリオを表現するための直感的で効果的な言語です。
SmartPy の最も注目すべき機能は、世界で最も人気があり、最も急速に成長しているプログラミング言語の 1 つである Python との統合です。 すでに Python に慣れ親しんでいる場合は、SmartPy を非常に簡単に習得できます。
SmartPy には、Web ブラウザーからアクセスできるフル機能の統合開発環境 (IDE) が含まれています。 SmartPy IDEに移動して、最初のスマートコントラクトの作成を開始します。
SmartPy IDEには、コントラクトコードを入力できる編集ウィンドウがあります。 まずは基本契約書の書き方から始めましょう。 次のコードをコピーして SmartPy エディターに貼り付けます。
ニシキヘビ
SmartPy を SP としてインポートする
# SmartPy モジュール
@sp.モジュール
デフmain():
# 契約のクラス
class MyContract(sp.契約):
デフ __init__(自己、myParameter1、myParameter2):
self.data.myParameter1 です。 = myパラメータ1
self.data.myParameter2 です。 = myパラメータ2
#エントリポイント、つまりメッセージ受信者
# (コントラクトはメッセージに反応する)
@sp.エントリポイント
デフmyEntryPoint(自己、パラメータ):
self.data.myParameter1をアサートします <= 123
self.data.myParameter1 です。 += パラメータ
この契約コードには、いくつかの重要な部分があります。
import smartpy as sp
- これにより、SmartPy ライブラリがインポートされ、それを使用してコントラクトを記述できるようになります。@sp.module
- このデコレータは、この関数に SmartPy コントラクトが含まれることを SmartPy インタプリタに伝えます。class MyContract(sp.Contract):
- ここでは、コントラクトの新しいクラス(新しいオブジェクトを作成するための設計図)を定義します。 これは、 sp.Contract
コントラクトの状態を処理し、その動作を定義するための多くの便利な機能を提供するスーパークラスを継承します。self.data.myParameter1 = myParameter1
と self.data.myParameter2 = myParameter2
- ここでは、コントラクトの初期状態を定義しています。 これら 2 つのパラメーターは、コントラクトがブロックチェーンにデプロイされるときにコントラクトに渡されます。@sp.entrypoint
- このデコレータは、次の関数 ()myEntryPoint
がコントラクトのエントリポイントであることをインタプリタに伝えます。 エントリポイントは、コントラクトがデプロイされた後にコントラクトとやり取りする方法です。self.data.myParameter1 += params
- このコード行は、 にmyEntryPoint
渡された量だけインクリメントされますmyParameter1
。契約書を書く上で重要なことは、契約書を徹底的にテストすることです。 SmartPy でのテストは、開発プロセスに統合されています。 コントラクトにテストを追加する方法は次のとおりです。
ニシキヘビ
# テスト
@sp.add_test(name="ようこそ")
def test()を使用します。
# テストシナリオを、いくつかの出力とチェックとともに定義します
#シナリオはモジュールをパラメータとして受け取ります
シナリオ = sp.test_scenario(main) scenario.h1("いらっしゃいませ") # まずコントラクトを定義し、シナリオに追加します
C1 = メイン。マイコントラクト(12, 123)
シナリオ += C1
#そして、そのエントリポイントのいくつかを呼び出します
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint(14)
c1.myEntryPoint(50)
c1.myEntryPoint(50)
c1.myEntryPoint(50).run(有効=False) #これは失敗すると予想されます
#最後に、最終的なストレージを確認します
scenario.verify(c1.data.myParameter1 == 151)
# c1 の現在の状態を使用して別のコントラクトを定義できます
C2 = メイン。MyContract(1、c1.data.myParameter1) シナリオ += C2
scenario.verify(c2.data.myParameter2 == 151)
これで、完全な契約は次のようになります。
ニシキヘビ
SmartPy を SP としてインポートする
# これは SmartPy エディタです。# テンプレートを読み込むことで、SmartPy を試すことができます。# (このエディタの上にある [コマンド] メニュー内)
#
# 典型的な SmartPy プログラムは、次の形式になります。
# SmartPy モジュール
@sp.モジュール
デフmain():
# 契約のクラス
class MyContract(sp.契約):
デフ __init__(自己、myParameter1、myParameter2):
self.data.myParameter1 です。 = myパラメータ1
self.data.myParameter2 です。 = myパラメータ2
#エントリポイント、つまりメッセージ受信者
# (コントラクトはメッセージに反応する)
@sp.エントリポイント
デフmyEntryPoint(自己、パラメータ):
self.data.myParameter1をアサートします <= 123
self.data.myParameter1 です。 += パラメータ
# テスト
@sp.add_test(name="ようこそ")
def test()を使用します。
# テストシナリオを、いくつかの出力とチェックとともに定義します
#シナリオはモジュールをパラメータとして受け取ります
シナリオ = sp.test_scenario(main) scenario.h1("いらっしゃいませ") # まずコントラクトを定義し、シナリオに追加します
C1 = メイン。マイコントラクト(12, 123)
シナリオ += C1
#そして、そのエントリポイントのいくつかを呼び出します
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint(14)
c1.myEntryPoint(50)
c1.myEntryPoint(50)
c1.myEntryPoint(50).run(有効=False) #これは失敗すると予想されます
#最後に、最終的なストレージを確認します
scenario.verify(c1.data.myParameter1 == 151)
# c1 の現在の状態を使用して別のコントラクトを定義できます
C2 = メイン。MyContract(1、c1.data.myParameter1) シナリオ += C2
scenario.verify(c2.data.myParameter2 == 151)
コントラクトとテストを作成したら、IDE で直接実行できます。 IDEの右上隅にある[実行]ボタンをクリックします。 IDE によってコントラクトがコンパイルされ、テストが実行され、各操作と状態変更の詳細な説明とともに出力が表示されます。
結論として、このレッスンでは、Tezosブロックチェーンと、Tezosのスマートコントラクト言語であるSmartPyを紹介しました。 また、最初の SmartPy コントラクトを作成し、理解し、テストしました。 これはほんの始まりに過ぎません - SmartPyとTezosで学ぶべきこと、やるべきことはまだまだたくさんあります。 今後のレッスンでも、この旅を続けていただければ幸いです。
TezosとSmartPyを完全に理解する前に、まずすべてを支える技術であるブロックチェーンを理解する必要があります。 ブロックチェーンはブロックのチェーンであり、各ブロックにはトランザクションのリストが含まれています。 ブロックチェーン技術は、すべてのネットワーク参加者が見ることができるトランザクションの分散型データベース、または「デジタル台帳」を提供します。 そのアーキテクチャは、すべてのトランザクションが一意であることを保証し、一度データベースに記録されると、変更することは不可能です。
Tezosは、そのようなブロックチェーンプラットフォームの1つです。 Tezosがビットコインやイーサリアムなどの他の多くのブロックチェーンプラットフォームと一線を画すのは、ハードフォークを必要とせずにプロトコルをアップグレードできる「自己修正」に重点を置いていることです。 これは、プロトコルの適応性と将来性を高めるため、大きなメリットです。
Tezosは、買い手と売り手の間の合意をコード行に直接書き込んだ自己実行型の契約であるスマートコントラクトのプラットフォームも提供しています。 デジタル契約を管理・検証するこの機能は、金融サービスからサプライチェーン、分散型アプリケーション(DApps)まで、幅広い潜在的なアプリケーションを提供します。 Tezosについてもっと読む: Tezosとは?XTZについて知っておくべきこと
Tezosでスマートコントラクトを作成するには、SmartPyという言語を使用します。 SmartPyは、Tezosブロックチェーン用のスマートコントラクトを開発するためのPythonライブラリです。 これは、コントラクトとそれに関連するテストシナリオを表現するための直感的で効果的な言語です。
SmartPy の最も注目すべき機能は、世界で最も人気があり、最も急速に成長しているプログラミング言語の 1 つである Python との統合です。 すでに Python に慣れ親しんでいる場合は、SmartPy を非常に簡単に習得できます。
SmartPy には、Web ブラウザーからアクセスできるフル機能の統合開発環境 (IDE) が含まれています。 SmartPy IDEに移動して、最初のスマートコントラクトの作成を開始します。
SmartPy IDEには、コントラクトコードを入力できる編集ウィンドウがあります。 まずは基本契約書の書き方から始めましょう。 次のコードをコピーして SmartPy エディターに貼り付けます。
ニシキヘビ
SmartPy を SP としてインポートする
# SmartPy モジュール
@sp.モジュール
デフmain():
# 契約のクラス
class MyContract(sp.契約):
デフ __init__(自己、myParameter1、myParameter2):
self.data.myParameter1 です。 = myパラメータ1
self.data.myParameter2 です。 = myパラメータ2
#エントリポイント、つまりメッセージ受信者
# (コントラクトはメッセージに反応する)
@sp.エントリポイント
デフmyEntryPoint(自己、パラメータ):
self.data.myParameter1をアサートします <= 123
self.data.myParameter1 です。 += パラメータ
この契約コードには、いくつかの重要な部分があります。
import smartpy as sp
- これにより、SmartPy ライブラリがインポートされ、それを使用してコントラクトを記述できるようになります。@sp.module
- このデコレータは、この関数に SmartPy コントラクトが含まれることを SmartPy インタプリタに伝えます。class MyContract(sp.Contract):
- ここでは、コントラクトの新しいクラス(新しいオブジェクトを作成するための設計図)を定義します。 これは、 sp.Contract
コントラクトの状態を処理し、その動作を定義するための多くの便利な機能を提供するスーパークラスを継承します。self.data.myParameter1 = myParameter1
と self.data.myParameter2 = myParameter2
- ここでは、コントラクトの初期状態を定義しています。 これら 2 つのパラメーターは、コントラクトがブロックチェーンにデプロイされるときにコントラクトに渡されます。@sp.entrypoint
- このデコレータは、次の関数 ()myEntryPoint
がコントラクトのエントリポイントであることをインタプリタに伝えます。 エントリポイントは、コントラクトがデプロイされた後にコントラクトとやり取りする方法です。self.data.myParameter1 += params
- このコード行は、 にmyEntryPoint
渡された量だけインクリメントされますmyParameter1
。契約書を書く上で重要なことは、契約書を徹底的にテストすることです。 SmartPy でのテストは、開発プロセスに統合されています。 コントラクトにテストを追加する方法は次のとおりです。
ニシキヘビ
# テスト
@sp.add_test(name="ようこそ")
def test()を使用します。
# テストシナリオを、いくつかの出力とチェックとともに定義します
#シナリオはモジュールをパラメータとして受け取ります
シナリオ = sp.test_scenario(main) scenario.h1("いらっしゃいませ") # まずコントラクトを定義し、シナリオに追加します
C1 = メイン。マイコントラクト(12, 123)
シナリオ += C1
#そして、そのエントリポイントのいくつかを呼び出します
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint(14)
c1.myEntryPoint(50)
c1.myEntryPoint(50)
c1.myEntryPoint(50).run(有効=False) #これは失敗すると予想されます
#最後に、最終的なストレージを確認します
scenario.verify(c1.data.myParameter1 == 151)
# c1 の現在の状態を使用して別のコントラクトを定義できます
C2 = メイン。MyContract(1、c1.data.myParameter1) シナリオ += C2
scenario.verify(c2.data.myParameter2 == 151)
これで、完全な契約は次のようになります。
ニシキヘビ
SmartPy を SP としてインポートする
# これは SmartPy エディタです。# テンプレートを読み込むことで、SmartPy を試すことができます。# (このエディタの上にある [コマンド] メニュー内)
#
# 典型的な SmartPy プログラムは、次の形式になります。
# SmartPy モジュール
@sp.モジュール
デフmain():
# 契約のクラス
class MyContract(sp.契約):
デフ __init__(自己、myParameter1、myParameter2):
self.data.myParameter1 です。 = myパラメータ1
self.data.myParameter2 です。 = myパラメータ2
#エントリポイント、つまりメッセージ受信者
# (コントラクトはメッセージに反応する)
@sp.エントリポイント
デフmyEntryPoint(自己、パラメータ):
self.data.myParameter1をアサートします <= 123
self.data.myParameter1 です。 += パラメータ
# テスト
@sp.add_test(name="ようこそ")
def test()を使用します。
# テストシナリオを、いくつかの出力とチェックとともに定義します
#シナリオはモジュールをパラメータとして受け取ります
シナリオ = sp.test_scenario(main) scenario.h1("いらっしゃいませ") # まずコントラクトを定義し、シナリオに追加します
C1 = メイン。マイコントラクト(12, 123)
シナリオ += C1
#そして、そのエントリポイントのいくつかを呼び出します
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint(14)
c1.myEntryPoint(50)
c1.myEntryPoint(50)
c1.myEntryPoint(50).run(有効=False) #これは失敗すると予想されます
#最後に、最終的なストレージを確認します
scenario.verify(c1.data.myParameter1 == 151)
# c1 の現在の状態を使用して別のコントラクトを定義できます
C2 = メイン。MyContract(1、c1.data.myParameter1) シナリオ += C2
scenario.verify(c2.data.myParameter2 == 151)
コントラクトとテストを作成したら、IDE で直接実行できます。 IDEの右上隅にある[実行]ボタンをクリックします。 IDE によってコントラクトがコンパイルされ、テストが実行され、各操作と状態変更の詳細な説明とともに出力が表示されます。
結論として、このレッスンでは、Tezosブロックチェーンと、Tezosのスマートコントラクト言語であるSmartPyを紹介しました。 また、最初の SmartPy コントラクトを作成し、理解し、テストしました。 これはほんの始まりに過ぎません - SmartPyとTezosで学ぶべきこと、やるべきことはまだまだたくさんあります。 今後のレッスンでも、この旅を続けていただければ幸いです。