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);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue3中使用web3.js可以按照以下步骤进行: 1. 首先,在需要使用web3.js的页面中引入web3.js库。可以使用import语句将web3.js库导入到你的代码中。例如,可以使用以下代码导入web3.js库: ```javascript import Web3 from 'web3'; ``` 2. 接下来,你需要初始化web3实例。可以使用以下代码初始化web3实例: ```javascript const web3 = new Web3(window.ethereum); ``` 这里使用了window.ethereum作为web3的提供者,它是浏览器中的以太坊钱包提供的全局变量。 3. 然后,你可以使用web3实例来调用智能合约的方法。例如,可以使用以下代码调用智能合约的某个方法: ```javascript const contract = new web3.eth.Contract(abi, contractAddress); contract.methods.methodName().call((error, result) => { if (error) { console.error(error); } else { console.log(result); } }); ``` 这里的abi是智能合约的ABI(Application Binary Interface),contractAddress是智能合约的地址,methodName是智能合约中的某个方法名。 需要注意的是,由于web3.js的一些方法是异步的,你可能需要使用async/await或者Promise来处理异步操作。 希望以上信息对你有所帮助! #### 引用[.reference_title] - *1* *3* [在vue中使用web3.js开发以太坊dapp](https://blog.csdn.net/qingshui_zhuo/article/details/112978150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [记录分享vue3通过web3.js连接MetaMask的流程及签名、验签方法](https://blog.csdn.net/q1354790820/article/details/129820494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值