流動性のある契約内で疑似乱数を生成する方法はありますか?
-
-
もちろん、あなたはそれを行うことができます.たとえば、Michelson/Liquidityにいくつかの単純なPRNGを直接実装するか、ハッシュ命令(BLAKE2B/Crypto.blake2bなど)を使用できます.しかし、おそらくすべきではありません...なぜ疑似ランダム性が必要なのですか?Of course you can do it. You can for example directly implement some simple PRNG in Michelson/Liquidity, or use the hash instructions (BLAKE2B/Crypto.blake2b etc). But you probably shouldn't... Why do you want pseudorandomness?
- 1
- 2019-02-07
- Tom
-
セキュリティ目的で使用する予定はないので、おそらく独自の「ややPRNG」を作成します.私の主な必要性は、ID値として機能するランダムなサンプル空間から一意の文字列をサンプリングすることであり、そのための可能な解決策を探していました.「ランダムに見える」UIDを生成する別の方法はありますか?I am not planning to use it for security purposes so probably I will create my own "somewhat-PRNG". My main need was to sample unique strings from a random sample space to serve as ID values and I was looking for a possible solution for that. Is there another way to generate UIDs that are 'random looking'?
- 0
- 2019-02-07
- pathfinder
-
これらのIDが必要な理由と、それらを使用して何をしようとしているのかを説明できますか?より良い方法がある可能性があります.Can you explain why you need these IDs and what you are trying to do with them? There likely is a better way.
- 0
- 2019-02-07
- Arthur B
-
1 回答
- 投票
-
- 2019-02-07
あなたが意味することがランダム性の予測不可能な原因である場合、いいえ、ありません.そのために使用される可能性のある情報は、ユーザーが予測できるか、悪意のあるパン屋によって調整される可能性があります.
ここ.
その改善点は、コミットメントを使用することです.つまり、オラクルはゲームの前にコントラクトにハッシュをプッシュし、ゲームの後に乱数(およびナンス)を送信します.コントラクトはハッシュとランダムをチェックします.番号の一致(ナンスと).コミットメントは、オラクルがゲーム中に乱数を変更するのを防ぎます...
If what you mean is a non-predictable source of randomness, no, there is none. Any information that could be used for that could either be predictable by a user, or tempered by a malicious baker.
You should probably use an external source of randomness, as the oracle presented in here.
An improvement of that would be to use commitments, i.e. the oracle would push a hash in the contract before the game, and send the random number (and a nonce) after the game, the contract checking that the hash and the random number match (with the nonce). Commitments prevent oracles from changing the random number during the game...
流動性のある関数の内部動作で疑似乱数(PRN)が必要な場合、それを行う方法はありますか?マイケルソンにありますか? RPC呼び出しを介してPRNを送信する方法についてはすでに知っていますが、関数内で適用できるものを探しています.