Suiのオブジェクトベースモデルを理解する
はじめに
以前に、Xでこんな感じでSuiの技術解説をしたのですが、後で見直せるように残した方がいいなということで、ここを有効活用していこうと思います。
https://twitter.com/crypt0crypt0___/status/1754447968009408732?s=46
だいたいはXの内容と同じですが、多少手直ししてる部分もあるので、一度読んだ人ももしよければ読み直していただけると嬉しいです。
1.Suiは資産を単なる数字ではなくリソースとして扱うことができる
1-1.資産をリソースとして扱うとはどういうことか?
Suiが他のブロックチェーンと大きく異なるのがこれです。Suiはトークンなどのデジタル資産を数値じゃなくリソース=資源として扱うことができます。
どういうことかと言うと、10000円という資産があるとします。この10000円は銀行口座にある時はただの数字として表されるだけですが、1万円札なら物体として扱うことができます。
この1万円札は、元々僕が持っていたとしたら、僕が誰かにあげたらこの1万円札という物の所有権が別の誰かに渡ります。
Suiではこのようにデジタル資産を取り扱うことができます。
2.アカウントベースとオブジェクトベース
2-1.アカウントベースモデルとは
ご存知の通りブロックチェーンでは「トークン」と言われるデジタルアセットを扱うことができます。
例えば、このトークンを誰かに送るときにブロックチェーンでどのような処理がされてるのでしょうか。一般的なブロックチェーンではトークンはアカウント(アドレス)に紐付けられています。実際にトークンがどこかに移動しているわけではなく、アドレス上の数字が加算されたり減算されてるだけにすぎません。
これを「アカウントベースモデル」と言います。
例として、AさんからBさんにトークンを送る場合を説明します。
Aさんは200USDTを持っています。
今回は、そのうち100USDTを、Bさんに送るとします。
この時、Ethereumなどの一般的なブロックチェーンで何が起きてるかと言うと、
①AさんとBさんのアドレスを同期して数字の減算に矛盾がないようにします。
②Aさんのアドレスで200-100=100の計算をして、残高を100USDTにします。
③Bさんのアドレスで0+100=100の計算をして残高を100USDTにします。
これをスマートコントラストと対話して行います。
これの何が問題なのか?
決められた手順通り順番に処理するので、その処理が終わらないと送金されません。(処理完了までに何段階がある)
スマートコントラストが動く分ガス代がかかります。
あくまでアドレスの数字を書き換えたり状態変化してるなので、その数字を削除したりコピーすることは可能です。バグや不正操作が起こった場合簡単に数字を書き換えられてしまいます。
2-2.オブジェクトベースモデルとは
次にSuiのケースを見てみましょう。
先ほどと同じようにAさんからBさんに100USDTを送ったとします。
この時Suiではトークンを「オブジェクト」という一つのまとまった型として扱います。これを「資産をリソースとして扱ってる」という表現がされたりします。このオブジェクトには個別のIDが割り当てらます。
今回のケースで言うと、AさんがBさんに100USDTを送りたい場合、Aさんが保有する200USDTのオブジェクトを分割して100USDTのオブジェクトを新たに作り、Bさんのアドレスに100USDTのオブジェクトが移動されます。
これは単なる数字の状態変化ではなく、実際に所有権を移動させています。
ちなみにSuiではこの単純な送信だけならスマートコントラストは動きません。
このSuiの「オブジェクトベースモデル」により、資産はより厳密に制御されます。
例えば、特定のオブジェクトに対するアクセス権を持つユーザーのみがそのオブジェクトにアクセスし操作できます。これにより資産の所有権がブロックチェーンの中で明確に定義づけられセキュリティが向上します。
また、トランザクションもシンプルなので処理も速く、送金するだけの簡単な処理であればスマートコントラストを必要としないのでガス代も安く抑えられます。
3.まとめ
Suiは資産を数字ではなく、リソース(資源)として扱うことができる
具体的には資産をオブジェクトというまとまった型にする
オブジェクトの所有権が移動し、所有権がある人以外がアクセスしたり操作することはできない
これによりセキュリティの高い資産管理ができる。また、処理のシンプルさから速い&安いも実現