2022-06-26

コントラクトの開発と単体テスト自体は、Remix IDEでオンライン上で一応一通りできる。
アクセスすると、デフォルトのサンプルsolファイルがいくつか用意されている。
1_Storage.solを見てみる。
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; /** * @title Storage * @dev Store & retrieve value in a variable * @custom:dev-run-script ./scripts/deploy_with_ethers.ts */ contract Storage { uint256 number; /** * @dev Store value in variable * @param num value to store */ function store(uint256 num) public { number = num; } /** * @dev Return value * @return value of 'number' */ function retrieve() public view returns (uint256){ return number; } }
メンバ変数numberを、store関数を使って書き換え、retrieve関数を使って取得するという、非常にシンプルなコントラクトの例である。
では、これをそのままコンパイルしてみる。虫めがねアイコンの下のアイコンをクリックしSOLIDITY COMPILERタブを開く。
Compile 1_Storage.sol というボタンが出ているはずなので、コンパイラのバージョンもデフォルトのまま、クリックしてコンパイルする。
コンパイルが成功すると、下のほうにABIとBytecodeを取得できるボタンができるので、コピーして保存しておく。これらは後で自分でJavaScriptコードを書いてコントラクトをロードする時に必要な情報になる。特にABIは、1_Storage_ABI.jsonなどとJSONファイル名で保存しておく。
コンパイルしたコントラクトは、さらにその下のタブ=DEPLOY & RUN TRANSACTIONSにて、デプロイ&任意の関数実行テストができる。
ENVIRONMENTにJavaScript VM (London)を選べば、Remix上の仮想マシンにデプロイしてテストできる。Storageコントラクトが選ばれていることを確認して「Deploy」すると、そこに登録される。そのトランザクションの様子がデバッグウインドウで確認できる。
デプロイが成功すれば、そのコントラクトアドレスがDeployed Contractsに現れ、各種関数が任意の引数でテストでき、そのIN/OUTがデバッグウインドウで確認できる。Storageコントラクトでは、numberセット関数storeボタンを押してを任意数値でセットし、retrieveボタンで現在のnumber数値を取得できる。
なお、コントラクトを自分サイトのHTMLからJavaScriptで呼びたい場合は、JavaScript VMでなく、どこかのネットワークにデプロイしなくてはならない。ほとんどの場合は、ENVIRONMENTにて「Injected Web3」を選択し、組み込みのMetaMaskと連携して、そこで選んでいるテストネットワーク(RinkeByなど)へデプロイする。


※本記事内容の無断転載を禁じます。

明日花キララの美しいバストの秘密は夜に仕込んでいる【ふわっとマシュマロブラ】

北欧テイストのインテリア雑貨 12時までのオーダー即日出荷対応(土日祝日除く)

【ネットショップ仕入れ】

自社醸造クラフトビール リオブルーイング コーのオンラインショップ【クラフトビールオンライン】

左右対称にできた地図のようなシミが気になるあなたへ!【プラファスト】

髪を傷めず、白髪をかくす キレイがつづく式部染め【式部染めヘアマスカラ】

CMS搭載のペット検索システム「サーチプラスforペット」

【カナガンドッグフード チキン】愛犬の健康を第一に考えたドッグフード

耳なり・肩こりに【ナリピット】

bitcoinjs-lib、bip32、bip39を使ってビットコインアドレスを生成する
Cannot read property makeRandom of undefinedと言われた場合
web3.jsとwindow.ethereumでコントラクト関数を引数つきでコールしプロパティを取得する
JavaScriptで外部URLのファイルをダウンロードしてデータを取得する
【MetaMask】window.ethereumのeth_callで任意のコントラクト関数を呼ぶ
window.ethereum.requestに渡すdataフィールドをABIエンコードで作成する
【Solidity】Remix IDEを使用してサーバー不要のコントラクト開発&デバッグ【Ethereum】
【Windows】Googleフォトからダウンロードした動画が音声のみで映像が再生されない場合
PostgreSQLをソースコードからインストールしてsystemdのサービスとして動かす
5chブラウザJane Styleの板一覧にゲーム板等が表示されない場合
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
Ubuntuで固定IPアドレスを使う設定をする
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Hackintosh】組立PCにWindowsとmacOSを同居させる場合の注意点
Google ColaboratoryのTensorFlowバージョンを変更する(1.X←→2.X)