ブロックチェーン開発: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.エラー: 合体できませんでしたエラー

「結合できませんでしたエラー」エラーは、通常、トランザクションの処理中に結合できなかったエラーが発生したことを示しますが、スマート コントラクトがデプロイされたことが判明しました。

おすすめ

転載: blog.csdn.net/qq_51553982/article/details/131494820