メモ:コントラクトを操作してみよう!ether.js を使ってみよう😀

どうも、Mejikaです!

 

唐突ですが、、、

 忍者DAO公認WEB3エンジニア育成プロジェクト、最高です😄😄

 

質問にめちゃ親切に答えてくださる方々ばかり!

ホント、いいコミュニティだなぁ~と日々感謝です!!

興味のある方は コチラ からどうぞ😌

Discord - A New Way to Chat with Friends & Communities
Discord is the easiest way to communicate over voice, video, and text. Chat, hang out, and stay close with your friends and communities.

 

今日は、ether.jsを使ってコントラクトの操作をやってみたので、

メモを残します😌

 

ether.js は、web3.js と同じような、ブロックチェーンとの接続を簡単にしてくれるライブラリです

 

まずは、install してみましょう!
 npm install –save ethers

 

今回は、web3 provider に、Infura ではなく Alchemy を使ってみます。

Infura のように、ブロックチェーン上にノードを持っていて、

APIを提供してくれます!

 

ちなみに、 SDK もあるので便利です!ついでに、以下でインストールしましょう!

  npm install alchemy-sdk

関数に呼び出しは、Node.js を使って、index.js を実行する、という形でやってみます。

以下、index.js のコードです。(コミュニティで頂いたアドバイス付きですw)

//index.js
//ethers.jsの読み込み。事前にnpm install ethersを実行してインストールしておく
const ethers = require("ethers")
//ABIファイルを読み込む。(RemixのCompileで生成されたabi コピペで行けました)
const abi = require("./abi.json")

const operation = async () => {
  //ブロックチェーンへの接続オブジェクトつくる
  const provider = await new ethers.providers.AlchemyProvider("rinkeby", "アルケミーのAPIキー");
  //サイナーオブジェクトつくる
  const signer = await new ethers.Wallet("プライベートキー", provider);
  //コントラクトオブジェクトつくる
  const contract = await new ethers.Contract("コントラクトアドレス", abi, signer);

  //前に作ったメッセージコントラクトで、最新のメッセージをgetMessage()で呼び出します↓
  const message = await contract.getMessage();

  console.log('Current engraved message is ', message);  //messageをコンソール出力

}

 //async関数全体の実行↓
operation();

 

ちなみに、abi は、以下のような感じで、.json ファイルを作成し、

index.js ファイルと同じ階層に入れておきます。

ここでは、使用したい関数だけあればよいですw

 

[
	{
		"constant": false,
		"inputs": [
			{
				"name": "newMessage",
				"type": "string"
			}
		],
		"name": "setMessage",
		"outputs": [],
		"payable": false,
		"stateMutability": "nonpayable",
		"type": "function"
	},
	{
		"constant": true,
		"inputs": [],
		"name": "getMessage",
		"outputs": [
			{
				"name": "",
				"type": "string"
			}
		],
		"payable": false,
		"stateMutability": "view",
		"type": "function"
	},
	{
		"constant": false,
		"inputs": [
			{
				"name": "initialMessage",
				"type": "string"
			}
		],
		"name": "Inbox",
		"outputs": [],
		"payable": false,
		"stateMutability": "nonpayable",
		"type": "function"
	},
	{
		"constant": true,
		"inputs": [],
		"name": "message",
		"outputs": [
			{
				"name": "",
				"type": "string"
			}
		],
		"payable": false,
		"stateMutability": "view",
		"type": "function"
	}
]

 

 

では、node index.js で実行してみましょう。

すると、、、

 

 

出来ました!!

これ、めちゃ便利なのでは???!

ちなみに、今回は読み込み関数(現状の文字列や数字の情報だけ入手。Read Contract)

のみで、書き込み関数(Write)を使っていないので、ガス代はかかりません😌 

 

いやはや、ether.js にしても、Alchemy にしても、

便利なプラットフォームやライブラリが増えて

ますます開発がしやすくなってきましたねーーー

 

 

それではまた!

ウホウホ🦍

コメント

タイトルとURLをコピーしました