Remix IDEはRSKを含むEthereumライクなブロックチェーンのためにSolidityで書かれたスマートコントラクトの実験やデプロイを行うための人気の高い環境です。この記事では、Remix IDEをローカルでRSKJノードと一緒に実行するための簡単なステップを紹介します。ローカルでのセットアップはオフラインでのテストに便利であり、Ethereum Foundationのサービスの代替としても機能します。
コンポーネント
- Remixユーザは以下のコンポーネントを使用して作業を行います。
ブロックチェーン:これはローカルのブロックチェーン(例:ganache, geth, rskj)、またはパブリックのブロックチェーンエンドポイント(例:https://public-node.testnet.rsk.co)です。 - ブロックチェーンのクレデンシャル(アカウント、秘密鍵、署名)を管理するウォレット。
これは多くの場合、NiftyやMetamaskなどのブラウザ拡張機能で、ハードウェアウォレットを使用することもできます。 - ウェブブラウザのRemix IDE(通常はChromeやFirefox経由でhttps://remix.ethereum.org)。
Remixを利用するためには、ユーザはブラウザウォレットを関連するブロックチェーンに接続します。これはスマートコントラクトのデプロイや管理を行いたい場合にのみ必要となります。Remix IDEをコントラクトのコンパイルのみに使用している場合(デプロイは行わない)は、ウォレットを使用したり、ブロックチェーンに接続する必要はありません。
1つはブロックチェーン(ローカルのRSKJノード)を実行するため、もう1つはRemixにサービスを提供するためです。そして、ホストマシン上のブラウザ(ウォレット付き)を介して、これまでと同様にこれらのサービスに接続します。私はNiftyウォレット拡張機能を有効にしたGoogle Chromeを使用しました。
Ubuntu 20.04 LTSマシンがホストシステムとして機能しました。両方のコンテナにはUbuntu 18.04 LTSをベースにしたdockerイメージを使用しました。プロセスは非常に簡単で、主にそれぞれのドキュメント(RSKJとRemix)の指示に従っています。
簡単な手順
- 以下の手順に従ってRSKJをインストールしてください。regtestモードでノードを起動します。
- 以下の手順に従って、Remix IDEをインストールしてください。サービスを開始します。
- ブラウザでウォレット拡張機能を有効にします。ウォレットをローカルのRSKブロックチェーンに接続します(カスタムRPCエンドポイント、CORSを有効にした状態)。
- [JSON RPC]を使用してウォレットのアカウントに資金を供給し、Remixからの契約を展開するためのガス代を支払うことができます。
1 2 3 4 5 6 7 8 9 10 |
#use eth_accounts() to #find out pre-funded accounts on the node (regtest) curl localhost:4444 -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_accounts","params": [],"id":1}' #use eth_sendTransaction() to fund the wallet account #change "to", "from", "value" as needed curl localhost:4444 -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826","to": "0xf87594Cb9036302G1081753D2d6D4Fb7e9127Ac5","gas":"0x76c0","gasPrice": "0x9184e72a000","value": "0xb6255df5f50080000","data": "0x"}],"id":1}' |
これで、独自のRemixサービスを利用して、独自のローカル(実験的な)ブロックチェーン上でコントラクトをコンパイルし、デプロイすることができるようになりました。
ステップの詳細
注意:ユーザーアカウントによっては、インストール時にsudoが必要な場合があります。
各サービス(ブロックチェーンノード、Remixサーバ)ごとにdockerコンテナを使用しており、sudoは必要ありませんでした。
RSKJのインストール
RSKJはRSKノードのJava実装です。ここで説明されている一般的な手順か、この再現可能なビルドを使用してください。いくつかの手順は便宜上、ここで再現しています。これらの手順はソースリンクからのものをお勧めします。バイナリはいくつかのシステムで利用可能です。少なくとも2コアと8GBのRAMを搭載したx64システムを推奨します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
apt-get update -y && \ apt-get install -y git curl gnupg openjdk-8-jdk && \ rm -rf /var/lib/apt/lists/* && \ apt-get autoremove -y && \ apt-get clean gpg --keyserver https://secchannel.rsk.co/release.asc --recv-keys 1A92D8942171AFA951A857365DECF4415E3B8FA4 gpg --finger 1A92D8942171AFA951A857365DECF4415E3B8FA4 # clone the project into a local directory git clone --single-branch --depth 1 --branch PAPYRUS-2.1.0 https://github.com/rsksmart/rskj.git /code/rskj # switch to the directory cd /code/rskj gpg --verify SHA256SUMS.asc sha256sum --check SHA256SUMS.asc #run the config script, changing persmission with chmod +x as needed ./configure.sh # build the project, automated tests can be run later if desired ./gradlew clean build -x test #The built JARS will be in the directory `rskj-core/build/libs/` # For a quick check of the installation, we can start the node in `regtest` mode. java -cp rskj-core/build/libs/rskj-core-2.1.0-SNAPSHOT-all.jar co.rsk.Start --regtest |
クロスオリジンのリソース共有:ブラウザベースのウォレットからノードに接続するには、CORSを有効にしてノードを実行する必要があります。詳細はノードの設定を参照してください。これを行う1つの方法は、以下のオプションを指定してノードを起動することです(上記のオプションの代わりに)。
1 |
java -cp rskj-core/build/libs/rskj-core-2.1.0-SNAPSHOT-all.jar -Drpc.providers.web.cors=* co.rsk.Start --regtest |
ノードが正常に起動していれば、メッセージはありません。これは最初は奇妙に見えるかもしれません。しかしノードは動いています! コンテナに接続された別のターミナルから http://localhost:4444 でアクセスできます。これはブラウザウォレットのカスタムRPCエンドポイントに使うURLでもあります。
curlを使用して、JSONリモートプロシージャコール(RPC)でノードをテストします。
1 |
curl localhost:4444/1.1.0/ -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' |
このような応答をする必要があります。
1 |
{"jsonrpc":"2.0","id":1,"result":"0x10b"} |
後で使用するために、docker コンテナからホストマシンにポートを転送します。Visual Studio Code のような環境 – docker 用の拡張機能 – を使用すると本当に簡単になります。
Remix IDEのインストール
Remix IDEはオープンソースで、インストール方法はこちらを参照してください。デスクトップ版もあります(テストはしていません)。
すでに curl, git, wget, yarn などがインストールされていると仮定します。必要に応じて sudo でコマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# Install a recent version of node from debsource .. curl -sL https://deb.nodesource.com/setup_15.x -o nodesource_setup.sh # make it executable and execute bash chmod +x node*.sh # Install the nx CLI npm install -g @nrwl/cli # to enable nx executable commands # Install Yarn package manager curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list apt-get update && sudo apt-get install yarn # Clone the Remix repo (needs wget) apt-get install wget git clone https://github.com/ethereum/remix-project.git cd remix-project # install and serve npm install nx build remix-ide --with-deps nx serve |
dockerを使用している場合は、ホストマシン上のブラウザからサービスにアクセスできるようにポートを転送してください。
原文:https://shreemoy.medium.com/offline-experiments-with-remix-and-local-rskj-node-713e2f724e59 By shreemoy.medium