0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Built-in Functions

Last updated at Posted at 2024-10-20

Previous << Run-time Types
Next >> Environment Information

panic

view fun panic(_ message: String): Never

プログラムを無条件に終了し、回復不能なエラーが発生した理由を説明するメッセージを出力します。

panic("something went wrong: ...")

assert

view fun assert(_ condition: Bool, message: String)

指定された条件が偽の場合にプログラムを終了し、その条件が偽である理由を説明するメッセージを出力します。この関数は内部の整合性チェックに使用します。

message引数はオプショナルです。

revertibleRandom

view fun revertibleRandom<T: FixedSizeUnsignedInteger>(modulo: T): T

疑似乱数の整数を返します。

Tには任意の固定サイズの符号無し整数型(FixedSizeUnsignedInteger、すなわちUInt8UInt16UInt32UInt64UInt128UInt256Word8Word16Word32Word64Word128Word256)のいずれかがあてはまります。

modulo引数はオプションです。指定された場合、返される整数は0からmodulo-1の間になります。指定されない場合、返される整数は0からTの最大値の間になります。moduloが0の場合は関数エラーが発生します。

返される乱数のシーケンスは、各ブロックの各トランザクションごとに独立しています。Cadenceは、各トランザクションごとに暗号的に安全な疑似乱数生成器(CSPRG)を個別にインスタンス化します。2つのトランザクションのシードは、ほぼ確実に異なります。

返される乱数は予測不可能であり(ブロック構築時のマイナーにとっては予測不可能であり、関数呼び出し時のCadenceロジックにとっても予測不可能)、検証可能であり、マイナーや以前に実行されたCadenceコードによる偏りが生じないようになっています。詳細は、Secure random number generator for Flow’s smart contractsおよびFLIP120を参照してください。

ただし、開発者はrevertibleRandom()を正しく使用する必要があります。

⚠WARNING
トランザクションは、そのすべてのアクションをアトミックに元に戻すことができます。信頼できない当事者によって送信されたトランザクションが、好ましい結果を事後選択し、好ましくない結果のトランザクションを元に戻してしまうことが可能なのです。

返された乱数に対して事後選択を行わない信頼できる当事者により呼ばれる限り、依然とこの関数の使用は安全です。

この制限は、トランザクションを一括してロールバックできるスマートコントラクトプラットフォームに内在するものであり、これは安全なランダム性のみでは解決できません。信頼できない当事者が、自身のトランザクションを通じて、乱数を生成するスマートコントラクトとやりとりできる場合、この暫定的な例(完全なチュートリアルはまもなく公開予定)で説明されているように、コミット・リベール方式を使用することが推奨されます。

RLP

Recursive Length Prefix (RLP)シリアライゼーションにより、任意のネストされたバイナリデータの配列のエンコードが可能です。

Cadenceでは、ビルトインのRLPスマートコントラクトにRLPデコード関数が用意されており、インポートする必要はありません。

decodeString

view fun decodeString(_ input: [UInt8]): [UInt8]

RLPでエンコードされたバイト配列をデコードします。RLPではこれを"String"と呼びます。バイト配列は、"String"の値にエンコードされた単体の値のみが含まれている必要があります。エンコードされた値の型が一致しない場合、または不要なバイトが末尾にある場合、プログラムは中断します。デコード中にエラーが発生した場合、プログラムは中断します。

decodeList

view fun decodeList(_ input: [UInt8]): [[UInt8]]

RLP-encoded listを、RLP-encoded itemsの配列にデコードします。

この関数は再帰的にデコードを行わないことに注意してください。そのため、結果の配列のそれぞれの要素はRLP-encoded dataとなります。バイト配列は、リストの値にエンコードされた単体の値のみが含まれている必要があります。エンコードされた値の型が一致しない場合、または不要なバイトが末尾にある場合、プログラムは中断します。デコード中にエラーが発生した場合、プログラムは中断します。

翻訳元


Previous << Run-time Types

Flow BlockchainのCadence version1.0ドキュメント (Built-in Functions)

Next >> Environment Information

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?