要将交易发送到以太坊网络,我们首先需要使用私钥对其进行签名,然后需要在网络上发送。客户端代码中的相同过程不同于在后端/节点项目中使用私钥。使用web3将交易发送到以太坊区块链需要三个主要步骤:创建、签名和广播。本文将由世链NFT(shiliannft.com)的小编,分享使用 WEB3 发送交易的指南。
创建一个帐户
如果我们想在区块链上汇款,我们需要一个以太坊账户。以太坊账户是以太坊区块链上的主要身份单位——账户地址是用户在网络上的识别方式。支撑账户系统的是一个基于 公钥密码学的去中心化身份协议。 本质上,区块链网络上的身份通过其公共地址对应方(由整个网络持有)的单个私钥(由单个用户秘密持有)的数字签名认证来确认。虽然它有很大的用户体验障碍,但它确实提供了一种快速的对等身份验证协议。
生成一个在以太坊网络上使用的帐户非常容易 web3.py.
配置
1.获取rpc url
我们的程序需要 RPC url 才能与区块链网络交互。您可以在此智能本中检查通过提供商连接的不同方法。
对于这个例子,我们将使用的提供商是Infura via http。我们所要做的就是创建一个帐户并生成一个项目,该项目将为我们提供创建项目的 api 密钥的 rpc url。
2. 获取测试代币
您可以从 ropsten faucet获取测试令牌。输入您的地址并点击提交。
3.初始化Nodejs
首先初始化 nodejs 项目并使用以下命令创建工作文件,
> npm init
> touch index.js
4.安装web3
需要依赖的是web3,安装命令如下:
> npm install web3
现在安装和配置过程已经完成,让我们看一下代码。
发送交易的步骤
1 . 在 Rinkeby 测试网上创建一个 Alchemy 应用程序
导航到您的Alchemy 仪表板并创建一个新应用程序,为您的网络选择 Rinkeby(或任何其他测试网)。
2 . 从Rinkeby水龙头请求 ETH
按照Alchemy Rinkeby水龙头上的说明接收 ETH。确保包括你的Rinkeby以太坊地址(来自 MetaMask)而不是其他网络。按照说明操作后,仔细检查您的钱包中是否收到了 ETH。
3 . 新建一个项目目录并cd放入其中
从命令行(macs 终端)创建一个新的项目目录并导航到它:
mkdir sendtx 示例
cd sendtx-例子
4 . 安装 Alchemy Web3(或任何 web3 库)
在您的项目目录中运行以下命令以安装Alchemy Web3:
npm 安装@alch/alchemy-web3
5 . 安装dotenv
我们将使用一个.env文件来安全地存储我们的 API 密钥和私钥。
npm 安装 dotenv --保存
6 . 创建.env文件
在您的项目目录中创建一个.env文件并添加以下内容(替换“ your-api-url”和“ your-private-key”)
要找到您的 Alchemy API URL,请导航到您刚刚在仪表板上创建的应用程序的应用程序详细信息页面,单击右上角的“查看密钥”,然后获取 HTTP URL。
要使用 MetaMask 查找您的私钥。
API_URL = "你的 api-url"
PRIVATE_KEY = "你的私钥"
7 . 创建sendTx.js文件
太好了,现在我们已将敏感数据保护在.env文件中,让我们开始编码吧。对于我们的发送交易示例,我们将把 ETH 发送回 Rinkeby 水龙头。
创建一个sendTx.js文件,我们将在其中配置和发送示例交易,
关于数据 的说明 可以在以太坊中发送两种主要类型的交易。
余额转账:将 ETH 从一个地址发送到另一个地址。不需要数据字段,但是,如果您想在交易的同时发送其他信息,您可以在此字段中以十六进制格式包含该信息。
例如,假设我们想将 IPFS 文档的哈希值写入以太坊链,以便为其提供不可变的时间戳。我们的数据字段应该看起来像 data: web3.utils.toHex(‘IPFS hash‘)。现在任何人都可以查询链并查看添加该文档的时间。
智能合约交易:在链上执行一些智能合约代码。在这种情况下,数据字段应包含您希望执行的智能功能以及任何参数。
8 . 使用运行代码node sendTx.js
导航回您的终端或命令行并运行:
节点sendTx.js
9 . 在 Mempool 中查看您的交易
在您的 Alchemy 仪表板中打开Mempool 页面,然后按您创建的应用程序进行过滤以查找您的交易。在这里我们可以看到我们的交易从挂起状态到挖掘状态(如果成功)或如果不成功则丢弃状态。确保将其保持在“全部”,以便您捕获“已开采”、“待处理”和“丢弃”的交易。您还可以通过查找发送至地址的交易来搜索您的交易0x31b98d14007bdee637298086988a0bbd31184523。
Web3 软件库
您可以使用以下库与 EVM 兼容的区块链进行交互。
Python: 用于与以太坊交互的 Web3.py Python 库。Web3.py 例子
Js: web3.js 以太坊 JavaScript API
Java: web3j Web3 Java Ethereum Ðapp API
PHP:web3.php 用于与以太坊区块链和生态系统交互的 php 接口。
web3.js 库
web3.js 库是一组模块,其中包含以太坊生态系统的特定功能。
web3-eth用于以太坊区块链和智能合约
web3-shh用于 whisper 协议通信 p2p 和广播
用于 swarm 协议,去中心web3-bzz化文件存储
包含对 Dapp 开发人员有用的web3-utils辅助函数。
添加 web3.js
首先,您需要将 web3.js 添加到您的项目中。这可以使用以下方法完成:
国家公园管理委员会:npm install web3
流星:meteor add ethereum:web3
纯js:链接dist/web3.min.js
之后你需要创建一个 web3 实例并设置一个提供者。
以太坊支持的浏览器如 Mist 或 MetaMask 将有一个ethereumProvider或web3.currentProvider可用。对于 web3.js,检查Web3.givenProvider.
如果此属性是null您应该连接到远程/本地节点。