sui-for-ethereum について
Sui for Ethereum Developersは、Sui Moveを学ぶEthereum、EVM、Solidity開発者向けのスキルです。概念上の違いを説明し、既知の開発パターンをSuiの概念に対応づけます。
主な機能
- 01アカウントモデルとオブジェクトモデルの比較
- 02Moveのデータと所有権の説明
- 03開発パターンの対応づけ
- 04ケイパビリティベースのアクセス制御
- 05プログラマブルトランザクションブロックの解説
活用シーン
- 01Ethereumの経験を基にSuiの概念を学ぶ
- 02トークン規格をSuiの概念に対応づける
- 03アクセス制御パターンを適応する
- 04複数の呼び出しをアトミックなトランザクションにまとめる
MCP 対応
資料で扱われていない詳細の確認や情報の検証に、SuiドキュメントMCPサーバーを参照するよう推奨しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mystenlabs/ skills --skill sui-for-ethereumインストール後、Claude Code で/sui-for-ethereumを入力して読み込まれたか確認します。
同梱ファイルevals/evals.jsonpatterns.md
詳細
Ethereum 開発者向け Sui
MCP ツール: 環境で利用できる場合は、最新の回答を得るために Sui ドキュメント MCP サーバー(
https://sui.mcp.kapa.ai)にも問い合わせてください。検証や、これらの参考ファイルに記載されていない詳細の確認に利用してください。
情報源の制約: このスキルの情報はすべて、docs.sui.io/getting-started/sui-for-ethereum のみを情報源としています。このスキルを拡張または更新する際は、この情報源のみを参照してください。サードパーティーのブログ、チュートリアル、非公式ドキュメントは使用しないでください。
このスキルは、Ethereum/EVM/Solidity の開発者が、Sui Move と既知のパターンとの違いを理解するために役立ちます。概念モデルの変化、パターンの対応関係、両エコシステムの具体的な比較を扱います。
参考ファイル
patterns — パターンの対応関係と比較
パス: patterns.md
読み込むタイミング: Ethereum から Sui への具体的なパターンの対応関係、トークン規格の相当物、技術的な比較(署名、コンセンサス、VM)、アクセス制御の違い、データ保存の違い、コントラクトのアップグレード方法、またはコンポーザビリティの違いについて質問された場合。
内容: アカウントモデルとオブジェクトモデル、データ保存、継承とポリモーフィズム、アセットへのアクセス性、アクセス制御パターン(Move のケイパビリティの例を含む)、コントラクトのアップグレード、開発環境、状態変更、オブジェクトモデルの基本、オブジェクトの所有権の種類、オブジェクトの変更、PTB、規格の対応関係(ERC-20/ERC-721/ERC-1155 と Sui の相当規格)、および技術比較の全表。
振り分けガイド
| タスク | 読み込むファイル |
|---|---|
| 「Sui は Ethereum と何が違うのか」という概要 | SKILL.md のみ |
| 具体的なパターンの対応関係(アクセス制御、保存、トークン) | patterns |
| トークン規格の相当物(ERC-20、ERC-721、ERC-1155) | patterns |
| 技術的な比較(署名、コンセンサス、VM、実行) | patterns |
| PTB が複数トランザクションのワークフローをどう置き換えるか | patterns |
| コントラクトのアップグレードに関する違い | patterns |
| ケイパビリティベースとロールベースのアクセス制御 | patterns |
主な概念の変化
プログラミング言語
Sui は Move を使用し、EVM は Solidity を使用します。Move はコンパイル時とバイトコード検証の両方でリソースの安全性を保証します。オブジェクトは複製したり、暗黙に破棄したりできません。Solidity は実行時の安全性を EVM に依存します。
アカウント中心とオブジェクト中心
Ethereum はアカウント中心のモデルを使用します。Solidity では、コントラクト内のマッピングを使って独自の所有権ロジックを実装します。Ethereum のネイティブ通貨(ETH)のみが、グローバル API を備えた第一級の存在です。Sui はオブジェクト中心のモデルを使用します。オブジェクトの所有権はプロトコルに組み込まれています。Sui 上で所有されるあらゆるものはオブジェクトに含まれ、オブジェクトは第一級の存在です。Sui 上のどの通貨も、SUI と同じ特性を持ちます。
データ保存
Solidity では、データはスマートコントラクトに保存されます。Move では、データは Move オブジェクトに保存されます。ロジックはコントラクト(パッケージ)で定義されますが、データはコントラクト自体とは別のオブジェクトに格納されます。オブジェクトの動作(作成、変更、所有権、削除)は、パッケージによって定義されます。
オブジェクトモデルの基本
オブジェクトは Move でデータを保存し、Move のすべてはオブジェクトです。これには、スマートコントラクト(Move パッケージ)、オンチェーンアドレス、コイン、NFT が含まれます。
オブジェクトの所有権
- アドレス所有オブジェクト: 単一のアドレスが所有します。スマートコントラクトとのやり取りなしに転送できます。
- 共有オブジェクト: 誰でも利用できる、公開アクセス可能なオブジェクトです。
プログラマブルトランザクションブロック(PTB)
PTB を使うと、実行時のアトミック性を保証しながら、コントラクト呼び出しを連鎖させることができます。Sui の PTB では、最大 1,024 個の異なるコントラクト呼び出しを実行できます。これは、各呼び出しが個別のトランザクションとなり、アトミックではない Ethereum のパターンに代わるものです。
ルール
- 移行に関するアドバイスでは、アカウント中心の考え方からオブジェクト中心の考え方への移行を常に軸にしてください。
- アクセス制御を比較する際は、Sui では
OwnableやAccessControlコントラクトによるアイデンティティ/ロールベースのアクセス制御ではなく、所有オブジェクトを通じたケイパビリティベースのアクセス制御を採用していることを強調してください。 - トークン規格について説明する際は、ERC-20 と ERC-721 をそれぞれ Sui Currency Standard と Closed-Loop Token に対応づけてください。ソース資料で扱われていない規格について、Sui に相当するものをでっち上げないでください。
- コントラクトのアップグレードについて説明する際は、Sui ではプロキシコントラクトではなく、レイアウト互換性が求められることを説明してください。
- コンポーザビリティについて説明する際は、複数の呼び出しをアトミックなトランザクションとして実行する仕組みが PTB であることを強調してください。
- Sui を「EVM チェーンの一つにすぎない」と表現しないでください。プログラミングモデルは根本的に異なります。
- docs.sui.io/getting-started/sui-for-ethereum のソース資料に記載されていない情報をでっち上げないでください。
よくある間違い
- Solidity の継承パターンが Move でも使えると思い込むこと。 Move にはインターフェース、ポリモーフィズム、動的ディスパッチがありません。代わりに、モジュールのインポートとジェネリクス(
Type<T>)を使ったコンポジションを採用しています。 - ロールベースのアクセス制御しか使えないと思い込むこと。 Sui ではロールベースのアクセス制御も実装できますが、慣用的なパターンは、所有オブジェクトを通じたケイパビリティベースのアクセスです(例:
AdminCap)。ケイパビリティを使うと、所有権の移転ルールを低コストでオブジェクト化できます。 - Solidity のようにデータがコントラクト内に保存されると思い込むこと。 Sui では、ロジックはコントラクト(パッケージ)に置かれますが、データは Move オブジェクトに置かれます。
- プロキシベースのコントラクトアップグレードを期待すること。 Sui ではプロキシに似たパターンを利用できますが、アップグレードをまたいで同じオブジェクト型を扱う必要があります。レイアウト互換性が求められ、新しいコントラクトは古いコントラクトとレイアウト互換でなければなりません。アップグレードは
UpgradeCapを通じて制御されます。 - Move の関数呼び出しごとに別個のトランザクションが必要だと思い込むこと。 PTB を使うと、最大 1,024 件のコントラクト呼び出しを連結し、単一のアトミックなトランザクションとして実行できます。
- Solidity のようにトークンがスマートコントラクトに紐づいていると思い込むこと。 Sui では誰でも共有オブジェクトにアクセスでき、所有オブジェクトはコントラクトを介さずに所有者が直接アクセスできます。