版权声明:忠于祖国,忠于人民 https://blog.csdn.net/boss2967/article/details/86530004
1.工作计划
- 多笔交易发送交易失败测试 (已完成)
- 测试tranfer方法转账 (已完成)
- gas的等级处理机制 (未开始)
- 闪电空投(基于代码行进行代码的空投)(开发中)
2.工作记录
const fs = require("fs");
const xlsx = require('node-xlsx');
const Web3 = require("web3");
const log4js = require('log4js')
const ajax = require('ajax');
const logger = log4js.getLogger();
var web3 = new Web3();
// <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
// ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF
logger.level = 'info';
logger.info("Some debug messages");
logger.info("Some debug messages");
logger.info("Some debug messages");
console.log("---",ajax.post);
//
let a = {ab:"ss"}
let url = 'http://127.0.0.1:3003/Bolt/flyDrop';
//01. 读取xlsx文件
let Filesdata = fs.readFileSync('testdemo1.xlsx');
logger.info("读取文件成功");
//02. 序列化数据
let Workdata = xlsx.parse(Filesdata);
logger.info("序列化数据成功");
//03. 校验数据
logger.info("数据校验中......................");
console.log("------------------",Workdata[0]);
let data = Workdata[0].data;
let lengths =data.length;
// console.log("数据对象是:",data);
//结果集
let result = {
State: 0, //0 1 3
Tote: lengths,
Valid: 0,
UnValid: 0,
ValidData: [],
UnValidData: [],
Bz: [],
sData:{
address:[],
value:[],
state:[]
}
}
// 01. 首先判断数据长度
if (data.length <= 0) {
//对象长度小于0
logger.error("数据长度小于0");
result.State = 3; //
return result;
}
//02. 判断地址和内容是否为空
for (let i = 0; i < lengths; i++) {
//01.首先判断2个参数都为空
if ((data[i][0] == null ||data[i][0] == undefined ||data[i][0] == '') && (data[i][1] == null || data[i][1] == undefined || data[i][1] == '')) {
//01.如果两位数据都是空
result.UnValid += 1;
//对象保存 序号:数据
let rows = {
no: i,
address:data[i][0],
value: data[i][1],
state: 0
}
// let cData = {i:param[i].no,data[i][0],data[i][1],Json_list.STATES_PAR.CheckPass}};
result.UnValidData.push(rows);
//
continue;
} else {
console.log("411");
//02. 判断地址为空的情况
if (data[i][0] == null ||data[i][0] == undefined ||data[i][0] == '') {
//
console.log("6");
result.UnValid += 1;
//对象保存 序号:数据
let rows = {
no: i,
address:data[i][0],
value: data[i][1],
state: 0
}
result.UnValidData.push(rows);
continue;
} else if (data[i][1] == null || data[i][1] == undefined || data[i][1] == '') {
//值
console.log("5");
result.UnValidData += 1;
//对象保存 序号:数据
let rows = {
no: i,
address:data[i][0],
value: data[i][1],
state: 4
}
result.UnValidData.push(rows);
continue;
}
}
//02. 判断地址是否合法
if (!web3.isAddress(data[i][0])) {
console.log("423");
//如果不是有效地址
result.UnValid += 1;
//对象保存 序号:数据
let rows = {
no: i,
address:data[i][0],
value: data[i][1],
state: 4
}
result.UnValidData.push(rows);
continue;
} else {
console.log("地址校验通过");
//如果是有效地址
result.Valid += 1;
//对象保存 序号:数据
let rows = {
no: i,
address:data[i][0],
value: data[i][1],
state: 5
}
result.ValidData.push(rows);
//分开追加数据
result.sData.address.push(data[i][0]);
result.sData.value.push( parseInt(data[i][1]+'00000000'));
}
//数据处理完成后,返回参数
//处理完标志
result.State = 3;
}
console.log("--------数据处理完成",result.sData);
//发送交易
ajax.post(url," ",(err,data)=>{
if(!err){
console.log("发送交易成功");
}else{
console.log("发送错误");
}
});
3.存在问题
- 闪电空投数据序列化,ajax调用对应路由
- 空投代币合约的代币实例化代币以及合约初始化代币
- gas的处理机制
4.明日计划
- gas处理机制
- 闪电空投完善
- 发送函数的后续监听
5.备注
今天主要在思考 gas处理机制的问题,和发送失败的返回集处理,已经处理了多批交易发送,但是gas消耗机制还没有猜透,所以数据分片的机制也在构思,正在处理闪电空投问题