Wavesplatform
基礎データ
waves
wavesは2016年4月に始まった。最近3周年を祝っていた。
https://www.youtube.com/watch?v=N_u41wwKCIU
ブロックチェーンはNXTという、POSの走りみたいなチェーンを分岐して作られている。
NXTにはDEXもあったが、残念ながら2017年8月で更新が止まった。ありがとうございました!
時価総額は29位と意外と上の方にあるが、知名度はまったくない。
ロシア系のプロジェクトなので、ウェブサイトでもちょっと脇道にそれるとすぐにキリル文字が見られる。
コンセンサスアルゴリズムはLPOSという、リースしてリターンを得るという方式。
ブロック生成の間隔は1分に1回。
なので、トークンを送っても一瞬で着く。
DEXがすごい!!あと、なんでも簡単に使えるというのを目標にしているようで、トークン発行とかなんでも簡単!!(あとから見ます)
この辺はデベロッパーには受けないが、一般に広まるとしたらこれやろ!って感じはある。
地味に良いなと思っているのが、発行されたトークンがすぐにDEXで取引できるということ。これは面白い。
一方で、ブロックチェーンを使うにはwavesを持っている必要があるので、日本で取引されていない現在、ちょっと使うのが難しくはある。
最近、スマコン言語RIDEが使えるようになった(2018年9月?)。
F#っぽいらしい。聞いたことしかない・・・
ループはできないのでチューリング完全な言語ではないが、スマートアカウント、スマートトークン、ブロックチェーン、外部データ(オラクル)を活用して、チューリング完全にするといっている。
あとループがないからプログラミング経験のない人も簡単に扱えるといっている。
イーサリアムのスマコンなんかは安全性で問題あるから、まずは安全を考えるとこうでしょう!という感じのスマコンのようです。
多言語対応
Python, Java, C#, TypeScript, JavaScript, C, GOのライブラリがあります。
ライブラリはREST APIの更新より遅いので、最新のものを使いたい場合は直接APIを触りましょうとのこと。
外部データ入力問題に対して、データオラクルを作る ==> ユーザーが立てる
https://gyazo.com/027eac4622a20ed375239929cb047397
Docs
かなり詳しい資料となっており、全て読めるかなぁ・・・って感じ(読んでません!)
注意としては内部のリンクが有効でない場合が多く、ドキュメントのトップページに飛ばされることが多い!!
あげられている特徴
DEX探訪
アカウントを作るのは簡単。無料。
アドレスは古風な文字列。
Cryptokitchenトークンを作ったので、皆さん作ってみましょう。
スマホのアプリもあってかなり良いようにできている。
トークン発行も簡単にGUIからできる。でも1wavesいるよ!
cryptokitchenトークンも上場されています。でも取引するのに0.003wavesいるよ!
スマホアプリもあるよ!
取扱暗号通貨 BTC / ETH / LTC / ZCash / BCH / Dash / Monero
ドル、ユーロも取り扱われている。現金を扱う場合は本人確認が必要(waves-fiat-gateway)。
DEX内でのクリプトの取引は現物バックがあるが、実際には現物の取引ではない。BTCの場合、waves Bitcoinになっている。そして外部に送金したい場合は、送金したい旨を伝えると、現物のBTCが送られる。
そのトランザクションには中央集権的なCoinomatというゲートウェイが使われる。
wBTC ==> waves network ==> Coinomat gateway ==> BTC
トランザクションには120分位かかると書かれている。
wavesのスマートコントラクト
以下は色々と長く書いていますが、ちょっと他と違うということで概念が重要なようです。
以降は英語翻訳が間違っているといけないので、併記していきます。
Smart Contracts in Waves ecosystem allow to change the default behaviour of accounts and assets. Smart contract is not a separate entity, it can't be called and it can't call another smart contract.
wavesのエコシステムのスマートコントラクトはアカウントと資産の基本的な行動を変えることを許す。
===> 他のとは違う
スマートコントラクトは分かれたエンティティーではなく、呼び出せないし、他のスマートコントラクトからもコールできない。
Smart contracts are:
1. Scripts written using RIDE programming language.
2. Predicates over account or asset transactions, which always should return true or false.
3. Always passive and not callable.
RIDEというプログラミング言語を使って書く。
アカウントやアセットのトランザクションを断定する。常にBool型で返事が返ってくる。
常に受け身で呼び出し不能。
Smart Contract Script has access to:
1. Blockchain height. There is height() function in the global scope of a script which returns the blockchain height at the execution time.
2. Current transaction fields. There is tx variable in the global scope of a script which contains all fields of current outgoing transaction, including proofs array.
3. Proofs. Any transaction can contain an array of proofs up to 8 elements. By default proofs array used for signatures, but you can put any data in the array (each element is up to 64 bytes).
4. Key-value storage of any account.
スマートコントラクトのスクリプトがアクセスできるのは、ブロック高、現在のトランザクションの領域、プルーフ、全てのアカウントのストレージ。
TIP
The best intuition about smart contracts in Waves model are locks. There is a default lock for accounts and assets, which checks signatures of transactions. Smart Contracts allow to change that lock to custom, i.e. open lock (every user can send transaction from smart account), multisignature (account can send transactions only if multiple people sign a transaction), time lock (transactions can be send only after specified blockchain height).
wavesのスマコンの分かりやすい例が鍵です。
基本、アカウントと資産は鍵がかかっているが、スマートコントラクトはその状態を変えられる。
Smart Account
How to work with state
Waves smart contract does not have its' own state. There is a smart account state managed by data transactions
スマートコントラクト自体のステイトはなく、アカウントのトランザクションによるステイトがある。
Gas and Fees
without “gas”, which means that costs are always known upfront. Transactions from smart account or with smart asset require additional 0.004 WAVES fee .
スマコンのトランザクションには、追加手数料が必要となる。
Smart Asset
If we plan to apply constraints on all operations for a specific asset, we cannot use a smart account. In our paradigm, we have smart assets for this purpose: the script will be attached to the asset and will work in a similar way. Transactions for such assets are valid only if the script returns True.
The script for the token is invoked upon the following operations with an asset:
・Transfer Transaction
・MassTransfer Transaction
・Reissue Transaction
・Burn Transaction
・ExchangeTransaction
・SetAssetScriptTransaction
アセットにスクリプトが添付され、同じように働く。もしスクリプトがTrueを返すと、そのアセットに対するトランザクションは有効になる。
アセットに対するスクリプトには以下のような操作があります。
transfer transaction
MassTransfer Transaction
Reissue Transaction
Burn Transaction
Exchange Transaction
SetAssetScript Transaction
スマコン言語RIDE
RIDE — is a programming language that's used for writing decentralised applications (dApps) in Waves blockchain.
オレオレ言語な理由
1. RIDE has to be blockchain-friendly. Scripts, written in RIDE, have to execute fast, and there should be no overload on the blockchain network that would degrade its performance.
2. RIDE has to be developer-friendly. That's why RIDE is a strongly typed language with the static typing.
RIDE is not an object-oriented language. By paradigm, RIDE is rather a functional programming language.
オブジェクト指向でなく、関数型です。
wavesはScalaを使っているようです。
IDEがあります。何と便利な! => と思ったけど、なんか色々ありすぎて、全然わからない・・
基本的な言語使用
Standard Library
Example
Video Tutorials
IDE
+NEWからサンプルが見られる
youtubeメモ
テストネットで、JavaScriptを使って色々できる環境。 ==> RIDEいるの???