書き込み(手数料の委任)
スマートコントラクトを実行したい場合、feepayerに支払い要求を含む**「トランザクション」**を行うことができる。
web3にkaiaの機能を追加するために、@kaiachain/viem-extパッケージをインポートする。
カイアブロックチェーンとの読み取り専用インタラクションのためのパブリッククライアントを初期化します。
Kairosチェーン**、HTTPトランスポート、および送信者の秘密鍵をアカウントに変換したcreateWalletClientを使用して、送信者と料金支払者のウォレットを設定します。
実行したい契約アドレスをtoフィールドにセットし、ABIをセットする。
関数名とパラメータをencodeFunctionData関数でエンコードする。
prepareTransactionRequestを使用して、スマートコントラクトを書き込むためのトラン ザクショ ンリクエストを作成し、送信者のアカウント、受信者のアドレス、転送する値(この例では0 KLAY)、およびトランザクションタイプ(TxType.SmartContractExecution)**を指定する。
ウォレットクライアントの signTransaction メソッドでトランザクションに署名する。
送信者は klay_sendRawTransaction
を使ってKaiaブロックチェーンにトランザクションを送信し、その結果(通常はトランザクションハッシュ)が記録される。 送金者は取引手数料を支払う。
契約に同じ setNumber
関数を呼び出すために、フィー委譲トランザクション (FeeDelegatedSmartContractExecution
) を準備する。 この設定は、手数料を支払わない取引と似ているが、手数料の支払者は、手数料をカバーするために取引に署名する。
まず送金者が取引に署名し、手数料の支払者が署名を加え、取引がカイア・ブロックチェーンに提出される。
パブリッククライアントを使用して number
関数(状態を変更しないビュー関数)を呼び出し、コントラクトから number 変数の値を読み取ります。