Blockchain code Metaverse VR

Crypto×VR×SmartContract(415)

スポンサーリンク

//tips

//smart contract

truffle/ganache周りの設定を行う。

まずはtruffle developの実行。

Nodeバージョンが高く実行できない。

truffle version
Truffle v5.1.31 (core: 5.1.31)
Solidity - 0.8.4 (solc-js)
Node v16.2.0
Web3.js v1.2.1

以前はnodeをダウングレードして実行したかと思う。

ただ、先の流れをみていくとtruffleのインストールが不十分なのが問題の可能性もあったのでnpm install -g truffleを実行。

Nodeをダウングレードする必要がなく、こちらできちんと対応できた。

truffle(develop)>
let balance =await web3.eth.getBalance(accounts[0]);
'100000000000000000000'

にてtruffleによりローカル環境に作られたアカウントの情報を取得できることを確認した。

早速deployするための2_migrates.jsを作成。

//2ではdeploy手順を記載する
//コンパイルしたjsonファイルを活用
//artifacts.requireはコンパイルしたコントラクトをインポートするもの
const ERC20=artifacts.require("ERC20");
const Dex=artifacts.require("Dex");

//これは簡略化できないか考える
const toWei=(number)=>web3.utils.toWei(web3.utils.toBN(number),'ether');

module.exports=async function(deployer){

//tokenのdeploy
//deploy時のconstructorの情報を渡す
//stirng or bignumber表記する必要があるのでweb3.utils.toBN
await deployer.deploy(ERC20,"Dai","DAI",toWei(10**10));
const dai =await ERC20.deployed();//dexでアドレスを取得するためにインスタンス化
await deployer.deploy(ERC20,"ChainLink","LINK",toWei(10**6));
const link =await ERC20.deployed();
await deployer.deploy(ERC20,"Compound","COMP",toWei(10**4));
const comp =await ERC20.deployed();

//dexのdeploy
//各トークンのアドレスを渡す
await deployer.deploy(Dex,[dai.address,link.address,comp.address]);
const dex=await Dex.deployed();

//dexインスタンスに対して各トークンを供給する
await dai.transfer(dex.address,toWei(10**10));
await link.transfer(dex.address,toWei(10**6));
await comp.transfer(dex.address,toWei(10**4));

}

きちんとtruffle develop実行下でのmigrateは完了した。

このtruffle developの状態はターミナルを消すと初期化されてしまうので、ganacheにdexのtruffle-config.jsを読み込ませることでdexのアカウント状態、ローカルブロックチェーン情報を保存する。

この内容はローカルのものだが、lotteryやkickstartのcompile、deployのものと見比べてみると、migrationではconst ERC20=artifacts.require("ERC20”);でコンパイルデータへのアクセスができていたが、lotteryやkickstartでは、buildPathを設定してあげるためにcompile.jsスクリプトを作成する必要があった。

この部分はtruffle内容となる下記スクリプトを確認すればわかるがすでにtruffleで

var Mocha = require("mocha");
var chai = require("chai");
var path = require("path");
var fs = require("fs");
var Web3 = require("web3");

などが行われ設定されていることがわかる。

また、artifacts.requireはテスト用のコードに類するとあるが、これは実際に使えるのかは確認する必要あり。

また、実際のrinkbyなどのテストネットワーク環境にdeployするためにはinfuraなどのHDWalletProviderを用いてweb3接続で、コンパイルしたコントラクトのjsonデータをもとにdeployとsendを実施する点で異なっている。

const HDWalletProvider = require('@truffle/hdwallet-provider');
const Web3 = require('web3');
const { interface, bytecode } = require('./compile');

const provider = new HDWalletProvider(

Truffleで上記のinfura接続までないう方されていたらテストネットワークでも使えそうだがどうなのか。これは試す必要あり。これができるならかなりシンプルにコードを記述できることになる。オライリー見直すか。

ターミナルでtruffle migrate --network ropstenとすることでデプロイできるよう。

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2022 All Rights Reserved Powered by AFFINGER5.