🔀CPI - Cross Program Invocation
CPIは、あるプログラムから別のプログラムへの直接呼び出しのことです。クライアントがJSON RPCを使用して任意のプログラムを呼び出すことができるのと同様に、任意のプログラムが他のプログラムを直接呼び出すことができます。
CPI は基本的に、Solanaエコシステム全体を開発者が自由に使える1つの巨大なAPIに変えます。
🤔 How to make a CPI
CPIは、solana_program
クレートのinvoke
またはinvoke_signed
関数を使用して作成されます。
CPI は、呼び出し元の署名者特権を呼び出し先に拡張します。
-
invoke
は、元のトランザクション署名を呼び出しているプログラムに渡します。(https://docs.rs/solana-program/1.10.19/solana_program/program/fn.invoke.html?utm_source=buildspace.so&utm_medium=buildspace_project) -
invoke_signed
はPDAを使用して、プログラムに命令を「署名」させます。(https://docs.rs/solana-program/1.10.19/solana_program/program/fn.invoke_signed.html?utm_source=buildspace.so&utm_medium=buildspace_project)
instruction
タイプは以下の定義がされています。
-
program_id
呼び出すプログラムのパブリックキー -
account
呼び出させたプログラムが読み書きする全てのアカウント -
data
ベクトルとして呼び出し先プログラムに渡されるデータを表すバイトバッファー
Instruction
構造体のaccounts
フィールドはAccountMeta
タイプのベクターです。
例えば
-
AccountMeta::new
書き込み可能 -
AccountMeta::read_only
書き込み不可能 -
(account1_pubkey, true)
アカウントは署名者 -
(account2_pubkey, false)
アカウントは署名者でない
最後に
Verooは、Blockchain技術を活用した「想いの巡るグルメSNSアプリ」です。食に対する熱量、例えばラーメンがめちゃくちゃ好きで年間400杯食べているとか、変態的に具材にこだわった中華料理を作っているなどのような、今まで直接お金にはならなかった食に対する情熱や熱量、その裏側にある想いがトークンを使うことで巡る世界。自分のラーメンに費やす熱量がコミュニティに承認される。自分がほんとにいいと思って作った食べ物がコミュニティで広まる。Verooは単なるSNSアプリではなく、クリエイターたちの想いが紡がれるソーシャルグルメアプリです。