Filecoin Study
今度6/2- ETHGlobal Onlineでのハッカソン(HackFS2023)に参加予定です。その予習としてFilecoinについてStudyしておこうとおもいます。(明記されていないですが、HackFSのFSはFile&Storageのことなんじゃないかと想像してそれのweb3 storageのデファクトになりつつあると思われるfilecoinは抑えておかないとなということころです)
Overall
以下は、Filecoinの概要ポイントのまとめです。
- Filecoinは、IPFSのコンテンツアドレスデータの利点と、ブロックチェーンによるストレージの保証を組み合わせたものです。このネットワークは、現在の中央集権化された代替手段と比較して、頑健で強靭な分散型ストレージを非常に低コストで提供します。
- Filecoinは、中央集権化されたサーバーや権限なしに世界最大の分散型ストレージネットワークを提供しています。データを検証および認証するためのオンチェーンのプルーフを提供し、IPFSおよびコンテンツアドレッシングと高い互換性を持っています。また、ペタバイト規模の容量を持つ唯一の分散型ストレージネットワークです。
- FilecoinとIPFSは、分散ウェブ上でデータを格納および共有するための補完的なプロトコルです。両システムはオープンソースであり、CIDs(コンテンツアドレッシング)やネットワークプロトコル(libp2p)など、多くの構成要素を共有しています。
- IPFSには、他の人のデータのストレージを奨励するための組み込みの仕組みはありません。IPFSデータを持続させるには、独自のIPFSノードを実行するか、プロバイダーに支払う必要があります。ここでFilecoinが登場します。Filecoinは、コンテンツアドレスデータにインセンティブレイヤーを追加します。ストレージ契約はオンチェーンで記録され、プロバイダーは時間の経過に伴いネットワークに対してストレージの証明を提出する必要があります。支払い、ペナルティ、ブロック報酬はすべて分散型プロトコルによって強制されます。
- FilecoinとIPFSは、開発者に選択肢とモジュール性を提供するために別々のレイヤーとして設計されていますが、それらの利点を組み合わせるための多くのツールが利用可能です。
- Filecoinを使用することで、スマートコントラクトのデータをストレージすることで速度を向上させ、ガス料金を削減することができます。Filecoinでは、データ自体はオフチェーンに保存されますが、検証可能なCIDsとストレージの証明が生成され、Filecoinチェーンに記録され、スマートコントラクトに含めることができます。この設計は、Ethereum、Polygon、Avalanche、Solanaなどの複数のスマートコントラクトネットワークとの互換性があります。スマートコントラクトには、コンパクトなコンテンツIDのみが含まれれば十分です。
以下は、いくつかのAPIの例です。これらはすべてストレージヘルパーであり、Filecoinの堅牢な契約プロセスをシンプルで効率的なAPI呼び出しに抽象化するツールやサービスです。
- Chainsafe Storage API:S3互換性が必要なプロジェクト向け
- Estuary:大規模なアプリケーションやパブリックデータ向け
- NFT.storage:NFTデータ向け
- Web3.storage:一般的なアプリケーションデータ向け
Storage Model
Filecoinのストレージモデルは、プロバイダ、ディール、セクターの3つのコンポーネントから構成されています。
-
プロバイダは、ネットワークのユーザーにサービスを提供する役割を担います。ストレージプロバイダとリトリーバルプロバイダの2つのタイプがあります。
-
ストレージプロバイダは、クライアントのファイルとデータをネットワーク上で保存し、ストレージの検証のための暗号的な証明を提供する責任を持ちます。
-
リトリーバルプロバイダは、ユーザーがデータに迅速にアクセスできるようにする役割を担います。彼らは長期のストレージよりもデータへの迅速なアクセスに焦点を当てています。
-
-
Filecoinネットワークでは、SPとRPはデータクライアントに対してストレージまたはリトリーバルサービスを提供し、ディールを通じて取引が行われます。ディールは2つの当事者間で交渉され、データのサイズ、価格、ディールの期間、担保などの条件が含まれます。
-
セクターは、ストレージプロバイダがクライアントのデータを保存し、FilecoinネットワークのためにPoStを生成する証明可能なストレージの基本単位です。セクターには標準サイズと寿命があり、ストレージプロバイダは寿命の終わりに達する前に延長することができます。32 GiBと64 GiBのセクターサイズがサポートされています。
Storage Market
ストレージマーケットは、ストレージプロバイダとクライアントがネットワーク上でストレージディールを交渉し、オンチェーンで公開するデータの入り口です。
ディールの進行
ストレージマーケット内のディールのライフサイクルには、次の4つの異なるフェーズがあります。
- 探索:クライアントは潜在的なストレージプロバイダ(SP)を特定し、彼らの価格を尋ねます。
- 交渉:クライアントがSPを選択したら、両当事者はディールの条件に合意します。
- 公開:ディールがオンチェーンで公開されます。
- ハンドオフ:ディールはセクターに追加され、データのストレージがSPによって証明されます。
Retrieval Market
リトリーバルマーケットは、プロバイダがクライアントに対して格納されたデータを提供するためのリトリーバルディールの交渉を指します。この契約では、クライアントは一定のデータに対してリトリーバルプロバイダに一定量のFILを支払うことに同意します。
基本的なリトリーバル
現在、Filecoinノードはデータを最初に格納したストレージマイナーからの直接的なリトリーバルをサポートしています。クライアントはFILを支払うことで、ストレージプロバイダに直接リトリーバルリクエストを送信してデータを取得することができます。
クライアントは、データのリトリーバルリクエストに対してストレージプロバイダに十分な情報を提供する必要があります。具体的には以下の情報が必要です:
- ストレージプロバイダID:データが格納されているストレージプロバイダのID。
- ペイロードCID(データCID)。
- アドレス:ストレージディールの作成時に使用されたアドレス。
Programming
Filecoinのプログラミングには、データの格納後にデータを取り出さずに計算や処理を行うことができます。Filecoinでのプログラミングの基本について説明します。
項目 | 説明 |
---|---|
コンピュートオーバーデータ | データ上で計算や変換を行うためのプロトコル。Bacalhauなどの取り組みが進行中。 |
FVM:Filecoin仮想マシン | Filecoinネットワーク上でスマートコントラクトを実行するためのランタイム環境。FVMが提供されている。 |
FEVM: Filecoin EVM | Ethereum仮想マシン(EVM)をFilecoin仮想マシン(FVM)のランタイムとして動作させるための機能。既存のEVMスマートコントラクトをサポート。 |
Filecoin-Solidity API | SolidityスマートコントラクトがFilecoinのビルトインアクターと対話できるようにするためのAPIライブラリ。 |
データを処理する上で、単なる格納や取り出し以上にデータ変換が必要な場合があります。データ上の計算を行うプロトコルでは、一般的にはIPLD(Filecoinなどのコンテンツアドレスシステムで使用されるデータレイヤー)上での計算を実行することが目標です。
例えば、Bacalhauは、パブリックで透明な分散型計算プラットフォームです。ユーザーは、InterPlanetary File System(IPFS)に格納されたデータに対して、任意のDockerコンテナやWebAssembly(wasm)イメージをタスクとして実行することができます。
Filecoinは、ストレージプロバイダがデータと共にGPUやCPUなどの計算リソースを提供するため、大規模なオフチェーン計算をサポートすることができます。Filecoinネットワーク上でのコンピュートオーバーデータをサポートすることで、データが存在する場所で計算を行う新しいパラダイムを実現します。
FVM
Filecoin仮想マシン(FVM)は、Filecoinネットワーク上のスマートコントラクトの実行環境です。スマートコントラクトは、ネットワーク上のデータの格納とアクセスに関するルールを作成し適用するなど、任意の境界付き計算を実行することができます。FVMはこれらのスマートコントラクトを実行し、正確かつ安全に実行されるようにします。
FVMは、WASMにコンパイルされる言語で書かれたネイティブのFilecoinアクターと、Solidityコントラクト(Ethereum Virtual Machine(EVM)向け)、Secure EcmaScript(SES)、eBPFなど、外部ランタイム向けのスマートコントラクトをサポートするように設計されています。FVMのリファレンスとSDKはRustで書かれています。
FVM で可能になること
FVMは、Filecoinネットワーク上でのステートオーバーコンピュートを可能にし、開発者がFilecoinの上に無限の新しいユースケースを構築できるようにします。いくつかの例としては、以下のようなものがあります:
-
Data DAOとトークン化されたデータセット: FVMを使用して、データベース型の分散自治組織であるData DAOを作成し管理することができます。Data DAOはデータの収集を管理し、データアクセスを統治し、その収益を共有の財源に集約してコレクションの保護と長期的な成長を資金提供することができます。
-
永続的なストレージ: FVMを使用すると、一度ストレージを行い、修復と複製のボットが繰り返しストレージディールの作成を管理することで、データを永続的にストレージすることができます。スマートコントラクトを使用して、ユーザーはFILでウォレットを設定し、それを使用してストレージプロバイダはデータを永続的にストレージできます。必要に応じて、修復ボットは他のストレージプロバイダとデータを複製することができます。
-
マイナー向けの金融サービス: FVMは、ストレージプロバイダ向けのさまざまな金融サービスを提供することができます。これらのプロバイダのニーズはFilecoinエコシステムに特有のものです。
-
レンディングとステーキングプロトコル: ユーザーはFilecoinをストレージプロバイダに貸し出し、その対価として利子を受け取ることができます。これらの貸付は、過去のストレージプロバイダのパフォーマンスに基づいてオンチェーンのストレージ履歴に基づいて過少担保化されることがあります。コミュニティメンバーは、この履歴を使用して評判スコアを生成し、良好な借り手を特定できます。さらに、ローンはマルチシグを使用して投資家に自動返済されることがあります。これには、貸し手と第三者を含むマルチシグを使用して、自動的に投資家に返済されることができます。FVM対応の新しいスマートコントラクトにより、FILトークン保有者は保有資産に対して新たな収益機会にアクセスすることができます。同時に、ストレージ提供を提供するためのエントリーランプを提供することで、全体のFilecoinエコノミーに利益をもたらします。
-
保険: ストレージプロバイダは、アクティブな故障やトークン価格の下落の金融的な影響から保護するための保険商品が必要です。支払い履歴、運営期間の長さ、可用性などの特性を使用して、保険ポリシーを作成することができます。
-
コアチェーンインフラストラクチャ: FVMは、他のチェーンと同等の機能を備えることが期待されています。これはEVMチェーンの動作に必要ですが、ストレージの基本プリミティブに必ずしも結び付いているわけではありません。
-
分散型取引所: FVM上のユーザーは、FILを他のチェーン上で発行されたトークンと交換することができます。これはUniswapやSushiのフォークのような分散型取引所である場合もありますし、Solana上のSerumのような分散型オーダーブックの構築にも関与するかもしれません。
-
トークンブリッジ: 直ちにロードマップに含まれているわけではありませんが、EVMチェーン、Moveチェーン、Cosmosチェーンからのブリッジが必要です。現在のローンチでは、Filecoinの価値提案は他のチェーンからのTVL(Total Value Locked)を起動する必要がないため、主に内部に焦点を当てています。しかし、長期的には、FVMがより広範なブロックチェーンのファミリーの一部になることを期待しています。
FEVM
FEVM(Filecoin EVM)は、Filecoin仮想マシン(FVM)の上で動作するEthereum Virtual Machine(EVM)ランタイムです。これにより、既存のEVMベースのスマートコントラクトを直接FVM上に移植して動作させることができます。FEVMは、低レベルでEVMバイトコードをエミュレートし、Solidity、Vyper、Yulで書かれたコントラクトをサポートします。EVMフォアンランタイムは、SputnikVMやrevmなどの既存のOSSライブラリをベースにしています。
FilecoinノードはEthereum JSON-RPC APIのサポートを提供しているため、FEVMはHardhatやBrownie、MetamaskなどのEVM開発ツールと完全に互換性があります。Filecoinネットワークにポートされたほとんどのスマートコントラクトは変更や監査を必要としません。たとえば、新しいERC-20トークンをFilecoinネットワーク上に発行したり、他のチェーンのトークンプールに直接ブリッジしたりすることができます。
開発者はFEVMまたはネイティブのFVMのいずれかでアクターを展開することができます。どちらを選ぶべきかの決定は、以下のように要約することができます:パフォーマンスを向上させたい場合は、WASMにコンパイルされたアクターを展開してネイティブのFVMに展開します。Solidityに精通しており、EVMエコシステムのツールやソフトウェアパッケージ、言語にアクセスしたい場合は、FEVMに展開します。それぞれの利点と欠点については、以下の表をご覧ください。
FEVMとEVMコントラクトの違いは、FEVM上に展開されたコントラクトがFilecoin固有のアクターと対話することができる点です。これにより、上記で説明したFilecoinネイティブの分散型アプリケーションを構築することができます。一方、Ethereumブロックチェーンに展開されたスマートコントラクトは、FilecoinネットワークやFilecoin固有のアクターへの直接のアクセスはありません。
開発者は、性能を重視する場合はネイティブのFVMを使用し、SolidityとEVMエコシステムのツールにアクセスしたい場合はFEVMを使用するかどうかを検討する必要があります。
要約すると、FEVMは既存のEVM開発者がFilecoin上でスマートコントラクトを開発するための環境を提供し、Filecoinネットワークとの統合を容易にします。
Actor
Filecoinのアクター(Actors)には、ビルトインアクターとユーザーアクターの2つの種類があります。ビルトインアクターはネットワークエンジニアによって事前に作成されたプログラムであり、Filecoinネットワーク内の重要なサブプロセスやサブシステムを管理します。一方、ユーザーアクターは開発者が実装したコードであり、Filecoin仮想マシン(FVM)と対話してカスタムルールを作成し、データの格納やアクセスを制御することができます。
ビルトインアクターには、CronActor、InitActor、AccountActor、RewardActor、StorageMarketActor、StorageMinerActor、MultisigActor、PaymentChannelActor、StoragePowerActor、VerifiedRegistryActor、SystemActorの11種類があります。これらのアクターは、ネットワークの状態を管理し、重要な機能を担当しています。
ユーザーアクターは、スマートコントラクトとも呼ばれ、開発者がFVM上で実装することができます。ユーザーアクターは、データの格納やアクセスに関する独自のルールを定義し、ネットワーク上でカスタムな機能を実現することができます。
Filecoin仮想マシン(FVM)は、これらのアクターの実行を管理し、正確で安全な実行を保証します。FVMは、アクターの処理やネットワークの状態管理などを担当し、Filecoinの機能の実現に重要な役割を果たしています。
以上がFilecoinのアクターに関する概要です。ビルトインアクターとユーザーアクターの組み合わせにより、Filecoinネットワークは柔軟性と拡張性のある機能を提供しています。
Foundryで動作確認
- git clone https://github.com/filecoin-project/fevm-foundry-kit
- cd fevm-foundry-kit
- yarn install
- edit .env.example to .env
RIVATE_KEY= HYPERSPACE_RPC_URL=https://api.hyperspace.node.glif.io/rpc/v1
- deploy
forge build
forge create --rpc-url https://api.hyperspace.node.glif.io/rpc/v1 --private-key $PRIVATE_KEY --contracts /src/SimpleCoin.sol SimpleCoin
[⠃] Compiling...
[⠰] Compiling 41 files with 0.8.17
[⠔] Solc 0.8.17 finished in 3.57s
Deployed to: 0xc7F85FAdA6CB083F2292191cD88A3197EAe2e718
Transaction hash: 0x1e55e43b74d9472aced99fa4864c6c39eda49a3bb4ff740d9ea0b835248f4bc2
Build時に以下のようなWarningが出ますが一旦そのまま進めても概要把握では問題ないです
Compiler run successful with warnings:
Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
--> src/basic-deal-client/DealClient.sol:330:27:
|
330 | function receiveDataCap(bytes memory params) internal {
| ^^^^^^^^^^^^^^^^^^^
Warning (2018): Function state mutability can be restricted to view
--> script/Address.s.sol:7:5:
|
7 | function run() external {
| ^ (Relevant source part starts here and spans across multiple lines).
上記のdeployしたコントラクトをFilecoin用のtestnet:Hyperspaceで確認できます。
ここで ETHアドレス以外に2種類のアドレスがあることに気が付きます。
- Address t410fy74f7lngzmed6iusdeonrcrrs7vofzyy2olxeca
- Robust Address t23mwt2cdfaedcoq4myhwvk5ycllqxguryt3oogqq
詳しくは 下記のAddressTypeをみて理解しますが、アドレスを複数もつことができるようです。
先頭 t:testnet f:filecoin本番
次 2:actor address 4: ユーザー定義アドレス
詳細参考
Actor Type
Actorタイプ | 説明 |
---|---|
CronActor | エポックの終わりにStoragePowerActorとStorageMarketActorにメッセージを送信します。 |
InitActor | Filecoinネットワーク上で新しいアクターを初期化できます。 |
AccountActor | ユーザーアカウントを管理します。 |
RewardActor | 未鋳造のFilecoinトークンを管理し、マイナーアクターに報酬を直接配布します。 |
StorageMarketActor | オンチェーンの取引を処理・管理します。ストレージディールとデータのエントリーポイントです。 |
StorageMinerActor | ストレージマイニング操作とマイニングプルーフの収集を担当します。 |
MultisigActor | Filecoinウォレットに関連する操作を処理します。 |
PaymentChannelActor | 支払いチャネルを作成・管理します。オフチェーンのマイクロトランザクションをサポートします。 |
StoragePowerActor | 各ストレージマイナーに割り当てられたストレージパワーを追跡し、StorageMinerActorを作成できます。 |
VerifiedRegistryActor | Fil+クライアントの管理を担当します。 |
SystemActor | システムアクターについてはソースコードを参照してください。 |
AddressType
Filecoinネットワークでは、アドレスはFilecoinの状態内のアクターを参照する一意の識別子です。Filecoinのすべてのアクターは、異なる用途に応じて異なるアドレスを持ちます。
Filecoinには5つのアドレスクラスがあり、アクターは通常、複数のアドレスを持ちます。さらに、各アドレスクラスにはバイナリとテキスト間の変換のための独自のルールがあります。
- 0 IDアドレス
- 1 SECP256K1公開鍵アドレス
- 2 アクターアドレス
- 3 BLS公開鍵アドレス
- 4 拡張可能なユーザー定義アクターアドレス
異なるタイプのアドレスを使用することで、スケーラブルで使いやすく信頼性のある堅牢なアドレス形式を提供することが目的です。これらのアドレスには以下の情報がエンコードされます:
- ネットワークプレフィックス:アクターが所属するネットワークを示します。
- プロトコルインジケータ:アドレスのタイプとバージョンを識別します。
- ペイロード:プロトコルに基づいてアクターを識別します。
- チェックサム:アドレスの整合性を検証します。
Filecoinアドレスは、生のバイトまたは文字列で表すことができます。生のバイト形式は常にチェーン上で使用されます。アドレスは文字列にエンコードすることもでき、チェックサムとネットワークプレフィックスを含めることができます。文字列形式はチェーン上に表示されることはなく、人間が読みやすい目的でのみ使用されます。
Filecoinアドレスは次のように分解できます:
ネットワークプレフィックス | プロトコルインジケータ | ペイロード | チェックサム |
---|---|---|---|
f / t | 1バイト:0 / 1 / 2 / 3 / 4 | nバイト | 4バイト |
ネットワークプレフィックスは、アドレスを文字列にエンコードする際にアドレスの先頭に付加されます。ネットワークプレフィックスはアドレスが所属するネットワークを示します。ネットワークプレフィックスはチェーン上に表示されず、アドレスを人間が読みやすい形式にエンコードする際にのみ使用されます。
f - Filecoinの本番ネットワーク上のアドレス。
t - Filecoinのいずれかのテストネット上で使用されるアドレス。
各アドレスタイプについて説明します。
IDアドレス:
すべてのアドレスは、InitActorによって順次割り当てられる短い整数(アクターのID)を持っています。IDアドレスは、ネットワーク識別子とプロトコルインジケータの前にアクターのIDを付けたものです。したがって、Filecoinネットワークのすべてのアドレスには、ユニークなIDアドレスが割り当てられています。
メインネットのburnアカウントIDアドレスはf099であり、次のような構造を持ちます:
プロトコルインジケータ
|
f 0 9 9
| |
| アクターID
|
ネットワーク識別子
アクターアドレス:
Filecoinネットワークのinitアクターによって展開されるアクターを表すアドレスです。公開鍵と関連付けられていないアクターに堅牢なアドレスを提供します。アカウント作成の出力のsha256ハッシュを取得することで生成されます。
アクターアドレスはしばしば略記形式で「2」と呼ばれます。
ウォレットアドレス:
ユーザーによって直接管理されるアドレス(アカウントなど)は、公開-秘密キーペアから派生します。プライベートキーにアクセスできれば、そのウォレットアドレスから送信されるメッセージに署名できます。公開キーは、アクターのアドレスを派生するために使用されます。公開キーアドレスは、Filecoinチェーンの状態に依存しない堅牢なアドレスとして知られています。
公開キーアドレスを使用することで、ハードウェアウォレットなどのデバイスは、公開キーだけを使用してアカウントの有効なFilecoinアドレスを派生させることができます。デバイスはリモートノードに対してIDアドレスを問い合わせる必要はありません。公開キーアドレスは、チェーンの状態が最終的になる前に、アクターを簡潔で安全な人間が読みやすい方法で参照するためのものです。IDアドレスは、バイトごとに重要なFilecoinチェーンの状態でアクターを識識するためにスペース効率の良い方法です。
Filecoinは2種類の公開キーアドレスをサポートしています:
- プロトコルインジケータが1となるsecp256k1アドレス。
- プロトコルインジケータが3となるBLSアドレス。
t1iandfn6d...ddboqxbhoeva - secp256k1を使用して生成されたテストネットのウォレットアドレス。
t3vxj34sbdr3...road7cbygq - BLSを使用して生成されたテストネットのウォレットアドレス。
委任アドレス:
Filecoinは、fip-0048で導入された4アドレスクラスを通じて、拡張可能なユーザー定義のアクターアドレスをサポートしています。4アドレスクラスは、ネットワーク上での外部アドレスシステムの実装、チェーン上にまだ存在しないアドレスとの対話をサポートするための予測可能なアドレス付けスキーム、広範な変更やネットワークのアップグレードなしでのユーザー定義のプログラマブルなアドレスシステムを提供します。
たとえば、Ethereumアドレッシングシステムを使用したテストネットの委任アドレスは、次のような構造を持ちます:
アドレスマネージャーアクターID
|
t 410 iandfn6d...
| |
| 新しいアクターID
|
ネットワーク識別子
アドレスマネージャーアクターIDは、アドレスマネージャーアクターのアクターIDであり、新しいアクターを作成し、新しいアクターに4アドレスを割り当てます。これは、f4アドレスクラスの拡張機能を利用しています。
新しいアクターIDは、そのアクターが任意に選んだ任意のアクターIDです。
制限:
現在、fip-0048により、f4アドレスは特定の組み込みアクターであるアドレスマネージャーによってのみ割り当てられます。この制限は、ユーザーがカスタムのWebAssemblyアクターを展開できるようになると緩和される可能性があります。
このアドレスタイプは、EVM互換のFVMをサポートする上で重要な役割を果たしています。
FVM と EVMの違い
項目 | Filecoin EVMランタイム | Ethereum |
---|---|---|
ガスコスト | Filecoinガスのみを課金。EVMの各オペコードの実行に対してEVMガスではなくFilecoinガスが課金される。 | Ethereumガスを課金。EVMの各オペコードの実行に対してEthereumガスが課金される。 |
ガススティペンド | Solidityのaddress.transferとaddress.sendの呼び出しで、ガススティペンドとして固定の2300 Ethereumガスが与えられる。Filecoin EVMランタイムでは、呼び出しを検出し、ガスリミットを10百万Filecoinガスに設定する。 | Ethereumでは固定の2300ガススティペンドが与えられる。 |
セルフデストラクト | セルフデストラクトに対するガスリファンドはなく、コントラクトは空の状態としてマークされる。自己削除されたコントラクトに送金が行われた場合、送金はコントラクト内に残る。 | セルフデストラクトにより、ガスリファンドが行われ、コントラクトが削除される。送金はトランザクション終了後に消える。 |
CALLCODE | CALLCODEオペコードは実装されていないため、DELEGATECALLを使用する必要がある。 | CALLCODEオペコードが使用可能。 |
ベアバリュー送信 | Filecoinでは、任意のアクターがメソッド0を使用して、対象のアクターのコードを実行せずに送金できる。 | Ethereumでは、SELFDESTRUCTが唯一のコード実行なしでの送金方法となる。 |
プリコンパイル | Filecoin EVMランタイムでは通常、プリコンパイル呼び出し時にガスリミットを適用しない。ただし、call actorとcall actor idプリコンパイルは例外であり、渡されたガスリミットはアクターの呼び出しに適用される。 | Ethereumでは、プリコンパイル呼び出し時にガスリミットが適用され、プリコンパイルが残りのガスを消費することはできない。 |
複数のアドレス | Filecoinでは、コントラクトは通常、複数のアドレスを持つ。f0とf410fの2つのアドレスタイプは、0xスタイル(Ethereum)アドレスに変換可能であり、CALLオペコードで使用できる。 | Ethereumでは、1つのコントラクトに対して1つのアドレスが使用される。 |
延期実行モデル | Ethereumの最新ブロックを要求するメソッドの呼び出し時、Filecoinはchain head - 1ブロックを返す。これは、Filecoinの延期実行モードとの互換性のために実装されている。 | Ethereumでは、最新ブロックの情報を直接取得できる。 |
Actor ごとのサポートAPI
Filecoinのビルトインアクターは、プロトコルAPIまたはZondaxのfilecoin.solifityライブラリを使用してスマートコントラクトから呼び出すことができます。プロトコルAPIを使用する場合は、JSON-RPCを介して呼び出しを行います。filecoin.solifityライブラリを使用する場合は、Solidityのライブラリをインポートして呼び出しを行います。
【アクタータイプとメソッドの詳細な表】
Discussion
めっちゃ参考になりました!