Я использовал уже сгенерированный адрес контракта: https://etherscan.io/address/0xb59fdff77a6175dfa4fe7af4281a52f61611eaa2#code
И используя это, я создал ниже код:
// Include the packages
const Web3 = require('web3')
//const abi = require('human-standard-token-abi')
var abi = [{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddr","type":"address"},{"name":"dests","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multisend","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"}];
// Set up Infura as your RPC connection
const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
// Define the contract addresses and the contract instance
const contractAddress = '0xb59fDfF77a6175DFA4fE7aF4281a52f61611eAa2'
//const contract = new web3.eth.contract(abi, contractAddress)
var contractAbi = web3.eth.contract(abi);
var contract = contractAbi.at(contractAddress);
// suppose you want to call a function named myFunction of myContract
fetch('http://localhost:8545', {
method: 'POST',
headers: {
'Accept': 'application/json', 'Content-Type': 'application/json' },
body: JSON.stringify({ 'method': 'personal_unlockAccount', 'params': ["0x2885f9904f3d1790ba53009bc9e0baae377d67df","kiranmalvi",null], 'id': 1, 'jsonrpc': '2.0' }) })
.then(function (res) {
contract.multisend.sendTransaction('0x627306090abaB3A6e1400e9345bC60c78a8BEf57',["0x2885f9904f3d1790ba53009bc9e0baae377d67df","0x7b7cd7d5cee9fb36b7995a3d81df0122a0b1af4a"],["100","200"],{
from:"0x2885f9904f3d1790ba53009bc9e0baae377d67df",
gas:4000000 },function (error, result){
if(!error){
console.log(result);
} else{
console.log(error);
}
})
});
Но транзакция не распределяет несколько адресов, которые я определил. Это только отправка всей суммы по адресу контракта. Можете ли вы помочь мне Что я должен сделать для этого?
Попробуйте заменить часть извлечения следующим образом.
web3local.personal.unlockAccount(addr, pass);
tokenlocal.multisend(tokenAddress,["0x2885f9904f3d1790ba53009bc9e0baae377d67df","0x7b7cd7d5cee9fb36b7995a3d81df0122a0b1af4a"],["100","200"], { from: addr }, function (err, txHash) {
if (err) {
console.error(err);
}
if (txHash) {
console.log(txHash)
}
})
Изменить Только что проверил ваш код. Несколько замечаний.
пользователь19510
пользователь19510
Киран Мальви
Лаури Пелтонен