当前位置:   article > 正文

web3.js 常用的操作方法_web3.js教程

web3.js教程

--需要先安装web3.js库,命令行执行

npm install web3

1. 账户

  1. import Web3 from "web3";
  2. import myContractJSON from "../contract/contract.json";//从solidity复制的合约json文件
  3. //创建web3示例,我这里使用goerli测试地址
  4. const web3 = new Web3(Web3.givenProvider || "wss://goerli.infura.io/ws/v3/c0b3b16253fb4528962978ae6b6ed58b");
  5. // 1. 链接metamask账户,返回结果是promise对象,对象里有账户信息,该方法会启动Chrome的metamask插件,并链接
  6. const linkCount = async() =>{
  7. const account = await web3.eth.requestAccounts()
  8. console.log(account);
  9. }
  10. /*
  11. 2. 创建账号web3.eth.accounts.create(), 参数是密码,不填参数默认生成密码
  12. */
  13. const account = web3.eth.accounts.create("123");
  14. /*
  15. 3. 获取余额web3.eth.getBalance(), 参数是账户的地址,返回的结果是promise
  16. */
  17. web3.eth.getBalance(account.address).then((money) => {
  18. console.log(money);
  19. });
  20. /*
  21. 4. 换算wei: Web3.utils.toWei(), 参数是字符串的数字,参数以以太为单位,返回结果换算成wei
  22. wei换算其他单位: Web3.utils.fromWei(), 参数有两个,第一个是字符串的wei单位,第二个是要换算成的单位
  23. */
  24. const num1 = web3.utils.toWei("0.3");
  25. const num2 = web3.utils.fromWei("3000000000000000000", "ether");
  26. console.log(num1);
  27. console.log(num2);

2. 转账 

--转账需要安装ethereumjs-tx,用来签名

npm install ethereumjs-tx
  1. const send = async () => {
  2. // 1.转账需要的参数
  3. let params = {
  4. from: '',//谁要转账
  5. to: '',//要转给谁
  6. nonce: '',//转账的次数,获得方式:await web3.eth.getTransactionCount(account.address)
  7. gasPrice: '',//燃料费的价格,获得方式:await web3.eth.getGasPrice()
  8. value: web3.utils.toWei(info.money.toString()),//转多少以太币
  9. data: "0x0000",//写固定
  10. };
  11. // 2.生成serializedTx,做交易签名
  12. // 转化私钥
  13. const privateKey = Buffer(privateKey.slice(2), "hex");//privateKey是私钥
  14. params.gas = await web3.eth.estimateGas(params);//得到消耗的燃料
  15. info.gas = params.gas
  16. const tx = new Tx(params);//new出签名实例
  17. tx.sign(privateKey);//签名
  18. const serializedTx = "0x" + tx.serialize().toString("hex"); //序列化
  19. // 3.开始转账
  20. const trans = web3.eth.sendSignedTransaction(serializedTx);//转账,返回结果是个对象
  21. /*
  22. 用on方法监听是否交易完毕
  23. "transactionHash",交易完毕触发
  24. "receipt",收到触发
  25. "confirmation"其他节点确认
  26. */
  27. trans.on("transactionHash", (txid) => {
  28. console.log('交易id:'+txid);
  29. // reGetEth();
  30. });
  31. };

3. 智能合约

  1. import myContractJSON from "../contract/contract.json";//从solidity复制的合约json文件
  2. /*
  3. 用new web3.eth.Contract()实例化abi,参数有两个,第一个是合约abi,第二个合约地址
  4. 返回结果是合约的实例对象,可以调用合约上的属性
  5. */
  6. const myContractAbi = new web3.eth.Contract(myContractJSON.abi,myContractJSON.address);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/445080
推荐阅读
相关标签
  

闽ICP备14008679号