ブロックチェーン開発:JS/TSローカル | プロジェクト環境構築
ローカル環境を構築する
VSCode Solidity 拡張機能
次の 2 つの拡張機能を VSCode に追加します。
Solc、corepack をグローバルにインストールする
Solc はスマート コントラクト (.sol) をコンパイルするために使用されます
npm install -g solc
npm install -g corepack
solcjs --version
corepack --version
VSCode はローカル Solc を構成します
設定を開いてSolidityを検索し、コンパイルされたバージョンを設定して
C:\Users\用户目录\.vscode\extensions\juanblanco.solidity-0.0.165\node_modules\solc\soljson.js
、デフォルトのコンパイルを次のように変更します。localFile
Ganache をインストールして JS 仮想環境を構築する
アドレス:https://trufflesuite.com/ganache/
公式 Web サイトのダウンロード速度が非常に遅いため、vpn をハングするか、Github にアクセスして
Github をダウンロードすることをお勧めします: https://github.com/trufflesuite/ganache-ui
start
プロジェクトのテスト
依存関係をインストールする
solc、ethersをインストールする
npm i solc -S
npm i ethers@5.7.2 -S
npm i --save-dev @types/fs-extra
npm i typescript -S
npm i ts-node -S
npm i fs-extra -S
コードを書く
RPC アドレスはガナッシュからのものです
デプロイ契約test_blockchain.ts
import {
ethers } from "ethers";
import {
readFileSync } from "fs-extra";
// main fn
const main = async () => {
// http://127.0.0.1:7545
// init rpc provider
const provider = new ethers.providers.JsonRpcProvider(
"http://127.0.0.1:7545"
);
// your wallet
// Get from Ganache
// PrimaryKey : ...
// Address : ...
// Not recommended you use primary key here
// But this just a test
const primary_key: string =
"0x290042e98e1afdbe0f88d2e1146bf7116a1793aa9fa1f315264e5319247bc6ae";
const wallet = new ethers.Wallet(primary_key, provider);
const abi = readFileSync(
"src/binary/src_smart_contract_SimpleStorage_sol_SimpleStorage.abi",
"utf8"
);
const binary = readFileSync(
"src/binary/src_smart_contract_SimpleStorage_sol_SimpleStorage.bin",
"utf8"
);
const contractFactory = new ethers.ContractFactory(abi, binary, wallet);
//deploy
const contract = await contractFactory.deploy({
gasLimit: 3000000 });
};
const methods = {
main,
};
const linearRunner = () => {
methods
.main()
.then(() => {
// exit program
process.exit(0);
})
.catch((e) => {
console.error(e);
process.exit(1);
});
};
linearRunner();
スクリプトを設定する
ここでのcompileはsolidityで書かれたスマートコントラクトをコンパイルするために使用され、deployはコントラクトをデプロイするために使用されます。
{
"dependencies": {
"ethers": "^5.7.2",
"fs-extra": "^11.1.1",
"solc": "^0.8.20",
"ts-node": "^10.9.1",
"typescript": "^5.1.6"
},
"scripts": {
"compile": "solcjs --bin --abi --include-path node_modules/ --base-path . -o ./src/binary src/smart_contract/SimpleStorage.sol",
"deploy": "ts-node src/test_blockchain.ts"
},
"devDependencies": {
"@types/fs-extra": "^11.0.1"
}
}
デプロイメントビュー
エラーの説明
1. エラー:復帰データがありません
最初は、このエラーはバージョン 6 以降でのみ発生すると思いましたが、Github に行って確認しても無駄でした。他の人もこの問題に遭遇しました。バージョン 5.7.2 に変更した後、解決策は最終的に解決されましたが、これは解決されていません正しい解決策ですが、デプロイ中にガス制限を追加してガスが十分であることを確認すると、6 以降のバージョンまたは 5.7.2 のどちらであっても問題は解決します。
const contract = await contractFactory.deploy({
gasLimit: 3000000 });
2.エラー: 合体できませんでしたエラー
「結合できませんでしたエラー」エラーは、通常、トランザクションの処理中に結合できなかったエラーが発生したことを示しますが、スマート コントラクトがデプロイされたことが判明しました。