Infura的基本用途和具体实例

news/2024/11/14 14:20:03/

文章目录

  • 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.ppmy.cn/news/49448.html

相关文章

反向传播推导+numpy实现

很久没有看深度学习了&#xff0c;忘了好多东西。本来想着推导一下&#xff0c;后来发现自己不会了。 再看看以前写的代码&#xff0c;又避开了最终的东西&#xff0c;于是决定重新推导一下。 数据的说明 首先&#xff0c;我们要做一个回归的任务&#xff0c;我们使用numpy随…

《Java8实战》第12章 新的日期和时间 API

原来的Java的时间类Date、java.util.Calendar类都不太好&#xff0c;以语言无关方式格式化和解析日期或时间的 DateFormat 方法也有线程安全的问题 12.1 LocalDate、LocalTime、LocalDateTime、Instant、Duration 以及 Period 12.1.1 使用 LocalDate 和 LocalTime LocalDate…

c++学习之类与对象3

目录 成员变量和函数的存储 this指针 this指针的工作原理 this指针的应用 const修饰的成员函数 友元 友元的语法 1.普通全局函数成为类的友元 2.类的某个成员函数作为另一个类的友元 整个类作为另一个类的友元 运算符重载 1 运算符重载的基本概念 2 重载加号运算符…

Medical X-rays Dataset汇总(长期更新)

目录​​​​​​​ ChestX-ray8 ChestX-ray14 VinDr-CXR VinDr-PCXR ChestX-ray8 ChestX-ray8 is a medical imaging dataset which comprises 108,948 frontal-view X-ray images of 32,717 (collected from the year of 1992 to 2015) unique patients with the text-mi…

FPGA基于XDMA实现PCIE X8采集AD7606数据 提供工程源码和QT上位机程序和技术支持

1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PCI 以及更早期的计算机总线的共享并行架构&#xff0c;每个设备都有自己的专用连接&#xff0c;不需要向整个总线请求带宽&#xff0c;而且可以把数据传输率提高到一个很…

CSS浮动

CSS结构伪类选择器 结构伪类选择器用于选择文档结构中特定位置的元素&#xff0c;根据元素在其父元素中的相对位置或兄弟关系进行选择。这些选择器使得你能够更灵活地控制页面的样式。 :first-child&#xff08;常用&#xff09; 用途&#xff1a;选择元素的第一个子元素。 …

六:内存回收

内存回收&#xff1a; 应用程序通过 malloc 函数申请内存的时候&#xff0c;实际上申请的是虚拟内存&#xff0c;此时并不会分配物理内存。 当应用程序读写了这块虚拟内存&#xff0c;CPU 就会去访问这个虚拟内存&#xff0c; 这时会发现这个虚拟内存没有映射到物理内存&…

【PlumGPT】与PlumGPT开启智能对话之旅

文章目录 一、前言二、PlumGPT介绍篇三、PlumGPT登录篇四、PlumGPT体验篇1、与PlumGPT聊天2、让PlumGPT翻译3、让PlumGPT创作4、请PlumGPT写推荐信5、让PlumGPT展示图片6、让PlumGPT充当百科小助手 五、PlumGPT总结篇 PlumGPT入口体验链接&#xff1a;https://plumgpt.com 一、…