Infura的基本用途和具体实例

news/2024/4/26 12:12:34/文章来源:https://blog.csdn.net/m0_70127749/article/details/130262290

文章目录

  • Infura 可以做什么?
    • 1. 向以太坊网络发送交易并获取交易的结果
    • 2. 获取以太坊地址的余额、交易历史记录等信息
    • 3. 通过 Web3.js 等以太坊库与智能合约进行交互
    • 3. 使用 Infura 发送以太币
    • 4. 其他服务

Infura 是一个由 ConsenSys 开发的以太坊基础设施服务提供商,它可以让开发人员轻松地与以太坊网络进行交互,而无需自己运行和维护一个以太坊节点。

Infura 可以做什么?

1. 向以太坊网络发送交易并获取交易的结果

const Web3 = require('web3');
const Tx = require('ethereumjs-tx').Transaction;const RPC_ENDPOINT = 'https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID';
const PRIVATE_KEY = 'YOUR_PRIVATE_KEY';const web3 = new Web3(new Web3.providers.HttpProvider(RPC_ENDPOINT));// 构建交易对象
const txObj = {nonce: web3.utils.toHex(await web3.eth.getTransactionCount(MY_ADDR)),to: TO_ADDR,value: web3.utils.toHex(web3.utils.toWei('0.01', 'ether')),gasLimit: web3.utils.toHex(21000),gasPrice: web3.utils.toHex(await web3.eth.getGasPrice())
};// 签名交易
const privateKey = Buffer.from(PRIVATE_KEY, 'hex');
const tx = new Tx(txObj, { 'chain': 'ropsten' });
tx.sign(privateKey);
const serializedTx = tx.serialize().toString('hex');// 发送交易
const receipt = await web3.eth.sendSignedTransaction('0x' + serializedTx);
console.log('Transaction hash:', receipt.transactionHash);
console.log('Transaction receipt:', receipt);

上述代码首先使用Web3和ethereumjs-tx库进行交易构建和签名,然后使用Infura发送已签名的交易并等待交易收据。交易收据包含有关交易状态和相关信息的重要信息,例如交易哈希值、交易费用和交易状态等。可以使用这些信息对自己的应用程序进行处理和存储。

2. 获取以太坊地址的余额、交易历史记录等信息

获取余额

const Web3 = require('web3');
const web3 = new Web3('https://mainnet.infura.io/v3/<YOUR PROJECT ID>');const address = '0x123456...'; // 替换为您要查询的地址
web3.eth.getBalance(address, (err, balance) => {if (err) {console.error(err);} else {console.log(`Address ${address} has a balance of ${web3.utils.fromWei(balance, 'ether')} ETH`);}
});

获取交易历史记录

const Web3 = require('web3');
const web3 = new Web3('https://mainnet.infura.io/v3/<YOUR PROJECT ID>');const address = '0x123456...'; // 替换为您要查询的地址
web3.eth.getTransactionsByAddress(address, (err, txs) => {if (err) {console.error(err);} else {console.log(`Address ${address} has ${txs.length} transactions:`);txs.forEach((tx) => console.log(`Transaction hash: ${tx.hash}`));}
});

注意:Infura需要您注册并获得项目ID才能使用。将代码中的替换为您自己的项目ID。

3. 通过 Web3.js 等以太坊库与智能合约进行交互

  1. 创建web3.js实例
   const Web3 = require('web3');const infuraKey = '<Infura API Key>';const infuraEndpoint = 'https://mainnet.infura.io/v3/' + infuraKey;const provider = new Web3.providers.HttpProvider(infuraEndpoint);const web3 = new Web3(provider);
  1. 获取智能合约实例
   const abi = <智能合约ABI>;const contractAddress = '<智能合约地址>';const contract = new web3.eth.Contract(abi, contractAddress);
  1. 调用智能合约方法
   const methodName = '<智能合约方法名>';const methodArgs = [<参数1>, <参数2>, ...];const txOptions = {from: '<发送方地址>',gas: '<Gas上限>',gasPrice: '<Gas价格>',};const result = await contract.methods[methodName](...methodArgs).send(txOptions);

完整代码

const Web3 = require('web3');
const infuraKey = '<Infura API Key>';
const infuraEndpoint = 'https://mainnet.infura.io/v3/' + infuraKey;
const provider = new Web3.providers.HttpProvider(infuraEndpoint);
const web3 = new Web3(provider);const abi = <智能合约ABI>;
const contractAddress = '<智能合约地址>';
const contract = new web3.eth.Contract(abi, contractAddress);const methodName = '<智能合约方法名>';
const methodArgs = [<参数1>, <参数2>, ...];
const txOptions = {from: '<发送方地址>',gas: '<Gas上限>',gasPrice: '<Gas价格>',
};
const result = await contract.methods[methodName](...methodArgs).send(txOptions);

3. 使用 Infura 发送以太币

首先,您需要在 Infura 上注册一个账号并获取一个 API 密钥。然后使用 Web3.js 库与 Infura 进行交互。

const Web3 = require('web3');// 连接到以太坊网络
const web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/v3/your-project-id'));// 发送以太币
const sendTransaction = async () => {const account = '0xYourAccountAddress';const privateKey = '0xYourPrivateKey';const toAddress = '0xRecipientAddress';const value = '1000000000000000000'; // 1 ETHconst gasPrice = await web3.eth.getGasPrice();const gasLimit = '21000';const nonce = await web3.eth.getTransactionCount(account);const transaction = {from: account,to: toAddress,value: value,gasPrice: gasPrice,gas: gasLimit,nonce: nonce};const signedTransaction = await web3.eth.accounts.signTransaction(transaction, privateKey);const transactionReceipt = await web3.eth.sendSignedTransaction(signedTransaction.rawTransaction);console.log(transactionReceipt);
};sendTransaction();

4. 其他服务

  1. 提供以太坊节点服务。
    Infura提供了可靠和高性能的以太坊节点服务,可以让应用程序开发者在不部署自己的节点的情况下,访问以太坊网络。

  2. 支持多个以太坊网络。
    Infura支持多个以太坊网络,包括主网、测试网络和私有网络等,可满足不同开发者的需求。

  3. 提供Web3.js API。
    Infura提供了Web3.js API,使得应用程序可以通过API与以太坊网络进行交互。

  4. 提供IPFS节点服务。
    Infura提供了IPFS节点服务,以便应用程序可以访问分布式存储网络IPFS。

  5. 提供其他区块链协议支持。
    Infura支持其他区块链协议,例如IPFS和Filecoin等,以满足不同开发者的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102276.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3中其他的变化

1.全局API的转移 Vue 2.x 有许多全局 API 和配置。 - 例如&#xff1a;注册全局组件、注册全局指令等。 //注册全局组件 Vue.component(MyButton, {data: () > ({count: 0}),template: <button click"count">Clicked {{ count }} times.</button> …

[读书笔记] 从问题和公式角度理解 Diffusion Model

[小全读书笔记] 从问题和公式角度理解 Diffusion Model 1. Diffusion Model的结构1.1 定义与限制1.2 定义与限制的数学体现 2. Diffusion Model的模型训练2.1 似然函数转换成ELBO2.2 拆解ELBO2.3 求解关键&#xff1a; q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1…

CompletableFuture的基本使用和原理

CompletableFuture CompletableFuture是对Future的扩展和增强。CompletableFuture实现了Future接口&#xff0c;并在此基础上进行了丰富的扩展&#xff0c;完美弥补了Future的局限性&#xff0c;同时CompletableFuture实现了对任务编排的能力。借助这项能力&#xff0c;可以轻…

web事件循环

事件循环的应用&#xff1a;计时器 promise ajax node 单线程是异步产生的原因&#xff0c;事件循环时异步的实现方式 1.浏览器进程模型 进程&#xff1a;程序运行需要自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少又一个进程&#xff…

模板方法设计模式解读

目录 豆浆制作问题 模板方法模式基本介绍 基本介绍 模板方法模式的原理类图 模板方法模式解决豆浆制作问题 应用实例要求 思路分析和图解(类图) 模板方法模式的钩子方法 模板方法模式的注意事项和细节 豆浆制作问题 编写制作豆浆的程序&#xff0c;说明如下: 1) 制作豆…

【LeetCode】剑指 Offer 67. 把字符串转换成整数 p318 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/ 1. 题目介绍&#xff08;67. 把字符串转换成整数&#xff09; 写一个函数 StrToInt&#xff0c;实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 …

研究生考试 之 计算机网络第七版(谢希仁) 第一章 课后答案

研究生考试 之 计算机网络第七版(谢希仁) 第一章 课后答案 目录 研究生考试 之 计算机网络第七版(谢希仁) 第一章 课后答案 一、简单介绍 二、计算机网络第七版(谢希仁) 第一章 课后答案 1、 计算机网络向用户可以提供哪些服务&#xff1f; 2、 试简述分组交换的要点。 3…

Kali下部署-Nessus漏扫工具

Nessus 是全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件。 特点&#xff1a; 1、提供完整的电脑漏洞扫描服务&#xff0c;并随时更新漏洞库。 2、可以在本机或者是远端上进行遥控&#xff0c;进行系统的漏洞扫…

常见的四种排名函数的用法(sql)

四个排名函数&#xff1a; 1.row_number 2.rank 3.dense_rank 4.ntile 1. ROW_NUMBER&#xff08;排名场景推荐&#xff09; 1.1 介绍 在 SQL 中&#xff0c;ROW_NUMBER() 是一个窗口函数&#xff0c;它为结果集中的每一行分配一个唯一的序号。该函数的语法如下&#xff1a; …

JavaSE-part1

文章目录 Day01 面向对象特性1.java继承注意点2.多态2.1多态概述2.2多态中成员的特点:star::star:2.3多态的转型:star::star: 3.Super4.方法重写:star::star:5.Object类:star::star: Day02 面向对象特性1.代码块:star:(主要是初始化变量&#xff0c;先于构造器)2.单例设计模式:…

【移动端网页布局】移动端网页布局基础概念 ⑦ ( 在 PhotoShop 中使用 Cutterman 切二倍图 | 使用二倍图作为背景图像 )

文章目录 一、在 PhotoShop 中使用 Cutterman 切二倍图二、使用二倍图作为背景图像 一、在 PhotoShop 中使用 Cutterman 切二倍图 参考 【CSS】PhotoShop 切图 ③ ( PhotoShop 切图插件 - Cutterman | 下载、安装、启动、注册、登录 Cutterman - 切图神奇 插件 | 使用插件进行切…

3自由度并联绘图机器人实现写字功能(一)

1. 功能说明 本文示例将实现R305样机3自由度并联绘图机器人写字的功能。 2. 电子硬件 在这个示例中&#xff0c;采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09; 扩展板Bigfish2.1扩展板电池7.4V锂电池 3. 功能…

远程访问及控制ssh

SSH远程管理 OpenSSH服务器 SSH(Secure Shell) 协议 是一种安全通道协议。主要用来实现字符界面的远程登录、远程复制等功能。对通信数据进行了加密处理&#xff0c;用于远程管理其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性------------&#xff08;同样…

d2l Transformer

终于到变形金刚了&#xff0c;他的主要特征在于多头自注意力的使用&#xff0c;以及摒弃了rnn的操作。 目录 1.原理 2.多头注意力 3.逐位前馈网络FFN 4.层归一化 5.残差连接 6.Encoder 7.Decoder 8.训练 9.预测 1.原理 主要贡献&#xff1a;1.纯使用attention的Enco…

Android程序员向音视频进阶,有前景吗

随着移动互联网的普及和发展&#xff0c;Android开发成为了很多人的就业选择&#xff0c;希望在这个行业能获得自己的一席之地。然而&#xff0c;随着时间的推移&#xff0c;越来越多的人进入到了Android开发行业&#xff0c;就导致目前Android开发的工作越来越难找&#xff0c…

EFI Driver Model(下)-USB 驱动设计

1、USB简介 通用串行总线&#xff08;英语&#xff1a;Universal Serial Bus&#xff0c;缩写&#xff1a;USB&#xff09;是一种串口总线标准&#xff0c;也是一种输入输出接口的技术规范&#xff0c;被广泛地应用于个人电脑和移动设备等信息通讯产品&#xff0c;并扩展至摄影…

我看谁没看过

vue在新窗口打开页面方法 const { href } this.$router.resolve({path: "/officePlatform/addPrompt"});window.open(href, "_blank"); 添加圆形标志 h3::before {content: "";display: inline-block;width: 13px;height: 13px;background: va…

NFT介绍及监管规则

什么是NFT NFT是Non-Fungible Token&#xff08;非同质化代币&#xff09;的缩写。 NFT是“Non-Fungible Token”的缩写&#xff0c;即非同质化代币。不同于FT&#xff08;Fungible Token&#xff0c;同质化代币&#xff09;&#xff0c;每一个NFT都是独一无二且不可相互替代的…

第二章 Maven 核心程序解压和配置

第一节 Maven核心程序解压与配置 1、Maven 官网地址 首页&#xff1a; Maven – Welcome to Apache Maven(opens new window) 下载页面&#xff1a; Maven – Download Apache Maven(opens new window) 下载链接&#xff1a; 具体下载地址&#xff1a;https://dlcdn.apac…

【云原生】Java 应用程序在 Kubernetes 上棘手的内存管理

文章目录 引言JVM 内存模型简介非 Heap 内存Heap 堆内存Kubernetes 内存管理JVM 和 Kubernetes场景 1 — Java Out Of Memory 错误场景 2 — Pod 超出内存 limit 限制场景 3 — Pod 超出节点的可用内存场景 4 — 参数配置良好&#xff0c;应用程序运行良好 结语 引言 如何结合…