web3.jsの共通操作方法

-- 最初に web3.js ライブラリをインストールし、コマンド ラインで実行する必要があります。

npm install web3

1.アカウント

import Web3 from "web3";
import myContractJSON from "../contract/contract.json";//从solidity复制的合约json文件

//创建web3示例,我这里使用goerli测试地址
const web3 = new Web3(Web3.givenProvider || "wss://goerli.infura.io/ws/v3/c0b3b16253fb4528962978ae6b6ed58b");

//   1. 链接metamask账户,返回结果是promise对象,对象里有账户信息,该方法会启动Chrome的metamask插件,并链接
const linkCount = async() =>{
    const account = await web3.eth.requestAccounts()
    console.log(account);
}

/*
     2. 创建账号web3.eth.accounts.create(), 参数是密码,不填参数默认生成密码
*/
 const account = web3.eth.accounts.create("123");


/* 
    3. 获取余额web3.eth.getBalance(), 参数是账户的地址,返回的结果是promise
*/
  web3.eth.getBalance(account.address).then((money) => {
    console.log(money);
  });

/*
    4.  换算wei: Web3.utils.toWei(), 参数是字符串的数字,参数以以太为单位,返回结果换算成wei
        wei换算其他单位: Web3.utils.fromWei(), 参数有两个,第一个是字符串的wei单位,第二个是要换算成的单位
*/
 const num1 = web3.utils.toWei("0.3");
 const num2 = web3.utils.fromWei("3000000000000000000", "ether");
 console.log(num1);
 console.log(num2);


2. 転送 

--転送には署名のために ethereumjs-tx をインストールする必要があります

npm install ethereumjs-tx
const send = async () => {
  // 1.转账需要的参数
  let params = {
    from: '',//谁要转账
    to: '',//要转给谁
    nonce: '',//转账的次数,获得方式:await web3.eth.getTransactionCount(account.address)
    gasPrice: '',//燃料费的价格,获得方式:await web3.eth.getGasPrice()
    value: web3.utils.toWei(info.money.toString()),//转多少以太币
    data: "0x0000",//写固定
  };
  // 2.生成serializedTx,做交易签名
  // 转化私钥
  const privateKey = Buffer(privateKey.slice(2), "hex");//privateKey是私钥
  params.gas = await web3.eth.estimateGas(params);//得到消耗的燃料
  info.gas = params.gas
  const tx = new Tx(params);//new出签名实例
  tx.sign(privateKey);//签名
  const serializedTx = "0x" + tx.serialize().toString("hex"); //序列化

  // 3.开始转账
  const trans = web3.eth.sendSignedTransaction(serializedTx);//转账,返回结果是个对象
  /*
  用on方法监听是否交易完毕
  "transactionHash",交易完毕触发
  "receipt",收到触发
  "confirmation"其他节点确认
  */
  trans.on("transactionHash", (txid) => {
    console.log('交易id:'+txid);
    // reGetEth();
  });
};

3. スマートコントラクト

import myContractJSON from "../contract/contract.json";//从solidity复制的合约json文件

/*
     用new web3.eth.Contract()实例化abi,参数有两个,第一个是合约abi,第二个合约地址
     返回结果是合约的实例对象,可以调用合约上的属性
*/
const myContractAbi = new web3.eth.Contract(myContractJSON.abi,myContractJSON.address);

おすすめ

転載: blog.csdn.net/qq_68155756/article/details/131080754