以太坊合约转账JS代码
本文将介绍如何使用JavaScript代码在以太坊上进行合约转账。
什么是以太坊合约转账?
以太坊是一种基于区块链技术的加密货币平台,它允许用户创建和执行智能合约。合约转账是指使用智能合约在以太坊网络上进行资金转移。
合约转账的JS代码示例
下面是一个简单的JavaScript代码示例,演示如何在以太坊上进行合约转账:
const Web3 = require('web3');
const contractABI = require('./contractABI.json');
// 连接到以太坊网络
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');
// 创建合约实例
const contractAddress = 'YOUR_CONTRACT_ADDRESS';
const contract = new web3.eth.Contract(contractABI, contractAddress);
// 设置发送者的私钥和接收者的地址
const senderPrivateKey = 'YOUR_SENDER_PRIVATE_KEY';
const receiverAddress = 'RECEIVER_ADDRESS';
// 构建合约转账交易
const transferAmount = web3.utils.toWei('1', 'ether');
const gasPrice = web3.utils.toWei('10', 'gwei');
const gasLimit = 21000;
const nonce = await web3.eth.getTransactionCount(senderAddress);
const data = contract.methods.transfer(receiverAddress, transferAmount).encodeABI();
const tx = {
from: senderAddress,
to: contractAddress,
value: 0,
gasPrice: gasPrice,
gasLimit: gasLimit,
nonce: nonce,
data: data
};
// 使用发送者的私钥对交易进行签名
const signedTx = await web3.eth.accounts.signTransaction(tx, senderPrivateKey);
// 发送已签名的交易
const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
console.log('Transaction receipt:', receipt);
代码解析
以上代码示例中,我们首先使用Web3库连接到以太坊网络。然后,我们创建了一个合约实例,指定了合约地址和合约ABI(Application Binary Interface)。
接下来,我们设置了发送者的私钥和接收者的地址。我们通过调用合约的transfer方法,并传入接收者地址和转账金额,构建了一个合约转账交易。
我们使用发送者的私钥对交易进行签名,并使用web3.eth.sendSignedTransaction方法发送已签名的交易。最后,我们可以通过receipt对象查看交易的状态和详细信息。
总结
通过以上代码示例,我们可以了解如何使用JavaScript代码在以太坊上进行合约转账。合约转账是以太坊智能合约的重要功能之一,可以实现安全、透明和可追溯的资金转移。