赞
踩
node transfer_script.js
-> Result:0x000000
//转币自动化 transfer_script.js // 引入Web3.js库 var Web3 = require('web3'); // 创建一个Web3对象,连接到本地8545端口的以太坊节点 var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); // 设置发送者账户地址 var _from = web3.eth.accounts[0]; // 设置接收者账户地址 var _to = "0x0000"; // 转币地址,需要替换为实际的接收者地址 // 设置转账金额,单位为wei var _value = 50000; // 发送以太币交易 web3.eth.sendTransaction({ from: _from, to: _to, value: _value }, (err, res) => { if (err) console.log("Error:", err); // 如果出错,打印错误信息 else console.log("Result:", res); // 如果成功,打印交易结果 });
$ node transfer_script.js
Result: 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
1.转币合约
pragma solidity ^0.4.26; contract Coin{ address public minter; mapping(address=>uint) public balance; event Sent(address from,address to,uint account); constructor() public{ minter = msg.sender; } function mint(address receiver,uint account) public{ require(msg.sender == minter); balance[receiver] += account; } function send(address receiver,uint account) public{ require(balance[msg.sender] >= account); balance[msg.sender] -= account; balance[receiver] += account; emit Sent(msg.sender,receiver,account); } }
2.将合约转为AbI
这里可以用solc或者remix来执行
3.编写转账的js脚本,保存在sendCoin.js文件中
// 引入Web3.js库 var Web3 = require('web3'); // 创建一个Web3对象,连接到本地8545端口的以太坊节点 var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); // 设置发送者账户地址 var _from = web3.eth.accounts[0]; // 设置接收者账户地址 var _to = web3.eth.accounts[1]; // 设置转账金额 var amount = 50; // 50个以太币 // 合约ABI(Application Binary Interface),用于与智能合约进行交互 var abi = [{"constant":true,"inputs":[],...."}] // 创建一个合约对象 var CoinContract = web3.eth.contract(abi); // 合约地址 var contractAddr = "0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"; // 获取合约实例 var contractInstance = CoinContract.at(contractAddr); // 调用合约的send方法发送以太币 /* * _to: 接收者的以太坊地址。 * amount: 要发送的以太币数量。 * {from: _from}: 表示交易的发送者地址,即发起交易的账户地址。 * (err, res) => {...}: 是一个回调函数,用于处理交易的结果。如果交易成功,err 将为 null,而 res 将包含交易的相关信息;如果交易失败,err 将包含错误信息。 */ contractInstance.send(_to, amount, {from: _from}, (err, res) => { if (err) console.log("Error:", err); // 如果出错,打印错误信息 else console.log("Result", res); // 如果成功,打印交易结果 });
//SentEvent_listener.js // 引入web3库 var Web3 = require('web3'); // 创建一个web3实例,连接到本地8545端口的以太坊节点 var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); // 合约ABI,包含合约函数和事件的描述 var abi = [{"constant":true,"inputs":[],...."}"] // 合约地址 var contractAddr = "0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db"; // 使用合约ABI和地址创建一个合约实例 var CoinContract = web3.eth.contract(abi); var contractInstance = CoinContract.at(contractAddr); // 监听合约事件,这里监听的是名为"sent"的事件,参数是"latest" contractInstance.sent("latest", (err, res) => { if (err) console.log("Error:", err); // 如果发生错误,打印错误信息 else console.log("Sent Event occurs", res); // 如果事件触发,打印事件信息 });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。