Vyperチュートリアルの最初の契約
2366 ワード
文書ディレクトリは前の に書いてあります第1契約 契約ファイル を作成するバージョン番号 状態変数 関数 最後の に書いてあります
前に書く
前回のVyperチュートリアルの開発環境構築では、開発環境を構築しました.本稿では、私たちの最初のVyper契約について説明します.
最初の契約
契約は、契約にイーサ坊を格納し、契約からイーサ坊を取り出す機能(財布のようなスマート契約)を簡単に実現します.次に、この契約をVyperで実現し、vyperの基礎知識を理解します.
契約ファイルの作成
Vyperの契約はファイルに含まれており、各ファイルはスマート契約です.Vyperのファイルは、オブジェクト向け言語のクラスに似ています.ファイルwalletを作成vy
バージョン番号
pythonと同様に、#記号はコメントを表します
Vyperは、互換性のない変更を導入する可能性のある将来のコンパイラバージョンのコンパイルを拒否するためのバージョンコンパイル指示をサポートします.
じょうたいへんすう
ステータス変数は、契約ストレージに永続的に格納される値であり、任意の関数の外で宣言する必要があります.ここでは、契約内のエーテル坊の数を格納するための整数変数valueを宣言します.
変数にはいくつかのタイプがあります.詳細は、「タイプ」セクションを参照してください.一般的な数字はint 128タイプ、wei_valueは、Vyperに内蔵されているタイプ(uint 256ベース)で、エーテル坊の数を表します.
関数#カンスウ#
次に、契約から金額を取り出す最初の関数を作成します.
関数名はwithdrawで、整数(wei_value)名は_amountのパラメータは、引き出し金額の数として使用されます.
関数は@publicで装飾され、公有関数を表し、外部から呼び出されるだけで、他のほとんどの言語とは異なり、内部から呼び出されないことを意味します.プライベート関数は@privateで装飾され、その他の修飾子は公式ドキュメントの関数部分を参照します.
関数体では、まずassert関数を使用して、入金金額が格納されている金額を超えてはいけないと判断します.そうしないと、assert関数は契約の実行を停止し、失敗します.
その後、格納金額残高の変数valueから取り出した金額を減算します.amount.
最後に引き出したいアドレス(つまりこの引き出し申請の送信者:msg.sender)送信_amount数のwei、ここでは契約書で提供した内蔵変数msgを使用して、msgを通過することができます.senderは取引送信者のアドレスを取得し、msgを通過する.valueは取引で送信されたイーサー坊の数を取得します.
msg.senderとmsg.valueは共通関数からのみアクセスできます.プライベート関数でこれらの値が必要な場合は、それらをパラメータとして渡す必要がある.
次に、イーサー坊を受信する関数payを書きます.
@payable修飾により、関数はイーサ坊を受信し、関数は受信したイーサ坊の数をvalue変数に加算します.
契約には構造関数が必要です.
コンストラクション関数は、契約の導入時に実行されます.
最終的に私たちの契約書の作成はwallet.を完成しました.vy:
最後に書く
次に、この契約のコンパイルを試みます.次のVyperチュートリアルの導入契約のコンパイル
前に書く
前回のVyperチュートリアルの開発環境構築では、開発環境を構築しました.本稿では、私たちの最初のVyper契約について説明します.
最初の契約
契約は、契約にイーサ坊を格納し、契約からイーサ坊を取り出す機能(財布のようなスマート契約)を簡単に実現します.次に、この契約をVyperで実現し、vyperの基礎知識を理解します.
契約ファイルの作成
Vyperの契約はファイルに含まれており、各ファイルはスマート契約です.Vyperのファイルは、オブジェクト向け言語のクラスに似ています.ファイルwalletを作成vy
バージョン番号
pythonと同様に、#記号はコメントを表します
# @version 0.1.0b17
Vyperは、互換性のない変更を導入する可能性のある将来のコンパイラバージョンのコンパイルを拒否するためのバージョンコンパイル指示をサポートします.
じょうたいへんすう
ステータス変数は、契約ストレージに永続的に格納される値であり、任意の関数の外で宣言する必要があります.ここでは、契約内のエーテル坊の数を格納するための整数変数valueを宣言します.
value: wei_value
変数にはいくつかのタイプがあります.詳細は、「タイプ」セクションを参照してください.一般的な数字はint 128タイプ、wei_valueは、Vyperに内蔵されているタイプ(uint 256ベース)で、エーテル坊の数を表します.
関数#カンスウ#
次に、契約から金額を取り出す最初の関数を作成します.
@public
def withdraw(_amount: wei_value):
assert _amount <= self.value
self.value -= _amount
send(msg.sender, _amount)
関数名はwithdrawで、整数(wei_value)名は_amountのパラメータは、引き出し金額の数として使用されます.
関数は@publicで装飾され、公有関数を表し、外部から呼び出されるだけで、他のほとんどの言語とは異なり、内部から呼び出されないことを意味します.プライベート関数は@privateで装飾され、その他の修飾子は公式ドキュメントの関数部分を参照します.
関数体では、まずassert関数を使用して、入金金額が格納されている金額を超えてはいけないと判断します.そうしないと、assert関数は契約の実行を停止し、失敗します.
その後、格納金額残高の変数valueから取り出した金額を減算します.amount.
最後に引き出したいアドレス(つまりこの引き出し申請の送信者:msg.sender)送信_amount数のwei、ここでは契約書で提供した内蔵変数msgを使用して、msgを通過することができます.senderは取引送信者のアドレスを取得し、msgを通過する.valueは取引で送信されたイーサー坊の数を取得します.
msg.senderとmsg.valueは共通関数からのみアクセスできます.プライベート関数でこれらの値が必要な場合は、それらをパラメータとして渡す必要がある.
次に、イーサー坊を受信する関数payを書きます.
@public
@payable
def pay():
self.value += msg.value
@payable修飾により、関数はイーサ坊を受信し、関数は受信したイーサ坊の数をvalue変数に加算します.
契約には構造関数が必要です.
@public
@payable
def __init__():
self.value = msg.value
コンストラクション関数は、契約の導入時に実行されます.
最終的に私たちの契約書の作成はwallet.を完成しました.vy:
# @version 0.1.0b17
value: wei_value
@public
@payable
def __init__():
self.value = msg.value
@public
def withdraw(_amount: wei_value):
assert _amount <= self.value
self.value -= _amount
send(msg.sender, _amount)
@public
@payable
def pay():
self.value += msg.value
最後に書く
次に、この契約のコンパイルを試みます.次のVyperチュートリアルの導入契約のコンパイル