1.solidity智能合约地址:https://github.com/rstormsf/multisender,只需在remix编译部署UpgradebleStormSender_flat.sol 合约即可。
2, remix中调用 initialize 初始化onwer、maxArraylimit、所需gas、fee、必须的
2.编写node js文件
const Tx = require('ethereumjs-tx').Transaction
const Web3 = require('web3');
loop();
async function loop() {
const url = new Web3.providers.HttpProvider(
'https://ropsten.infura.io/v3/6a838421ad6248efb63eb924d7debc05'//https://infura.io/申请
);
const web3 = new Web3(url);
let fromAddress = "0xa22fAF9Ad34c9B7b7dFc1520CBffc3fe4dEe1EE8";//用户地址
let private_key = "";//用户私钥
let abi = [{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"}],"name":"multisendToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"initialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newStep","type":"uint256"}],"name":"setDiscountStep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inpu