2019-01-10工作日志
时间:2019-01-10
本文章向大家介绍2019-01-10工作日志,主要包括2019-01-10工作日志使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
工作日志 2019-01-10
1. 工作计划
- 封装函数
- 修改bug
2. 遇到问题
- web3连接repson测试网络
- 思路错误
3. 编写代码
const Web3 = require("web3");
const solc = require('solc');
const fs = require("fs");
const Koa = require('koa');
const router = require('koa-router')();
const bodyParser = require('koa-bodyparser');
const render = require('koa-art-template');
const path = require('path');
const views = require('koa-views');
const HDWalletProvider = require('truffle-hdwallet-provider');
const walletConfig = require('./walletConfig.json');
const Tx = require('ethereumjs-tx');
//init
const app = new Koa();
var web3 = new Web3();
//
var Contract_Token;
/**Read me
* 1.简称(Token=>T,Drop=>D,TokenMgr=>M)
* 2.Actions_data=>参数初始化(各种初始化参数)
3.Actions_Koa=>Koa框架以及Koa插件初始化和启动配置(Koa相关)
* 4.Actions_Router=>router路由的get方法,post方法配置
* 5.Actions_initWeb3Provider=>web3js相关初始化参数(web3,合约实例等)
* 6.Actions_Web3jsCommonMethod=>webjs常用的方法(获取各种参数)
* 7.Actions_Web3jsUtils=>web3js相关的工具方法(转换,校验等)
* 8.Actions_Contrant_Token=>skt测试代币的相关方法的实现(Token)
* 9.Actions_Contrant_Drop=> 空投合约的相关方法的实现(Drop)
*10.Actions_Contrant_TokenMgr=>项目之前空投合约的相关方法的实现(TokenMgr)
*11.Actions_Configure=>项目相关配置信息()
*12.Json_list=>常量信息的相关管理(abi,合约地址,gas参数,等)
*13.Json_Bz=>其它备注信息(追加,扩展)
*/
var Actions_data = {
Type_init:()=>{
}
}
var Actions_Koa = {
render: () => {
render(app, {
root: path.join(__dirname, '../views'), // 视图的位置
extname: '.html', // 后缀名
debug: process.env.NODE_ENV !== 'production' //是否开启调试模式
})
},
user: () => {
app.use(views('../views', {
extension: 'ejs'
}));
app.use(bodyParser());
app.use(router.routes());
app.use(router.allowedMethods());
app.use(bodyParser());
app.listen(3003, () => {
console.log("start at port 3003");
});
}
}
var Actions_Router = {
router_get: () => {
router.get('/', (ctx, next) => {
// TODO:
ctx.body = "测试路由111";
});
//
router.get('/Token/T_transferFrom', (ctx, next) => {
// TODO:
ctx.body = "T_transferFrom";
console.log('ctx=>11112222');
// TODO:校验数据
// let data = ctx.params;
// let from = data.from;
// let to = data.to;
// let value= data.value;
let sFrom = Json_list.ADDRESS_TOKEN;
console.log("sFrom=>",sFrom);
let sTo = Json_list.USE_ADDRESS.User_2;
console.log("sTo=>",sTo);
let sValue =7;
console.log("sValue=>",sValue);
// if (qs.hash) {
// console.log('/withdraw info: ', qs.hash);
// qs = JSON.parse(qs.hash);
// }
// if (lastWid && qs.wid === lastWid) return;
// lastWid = qs.wid;
// T_transferFrom: (from, to, value)
// 查询方法
let result = Actions_Contrant_Token.T_transferFrom({
from: sFrom,
to: sTo,
value:sValue
});
//return
return result;
});
router.get('/Token/T_transfer', (ctx, next) => {
// TODO:
ctx.body = "T_transfer";
});
router.get('/Token/T_approve', (ctx, next) => {
// TODO:
ctx.body = "T_approve";
});
router.get('/Token/T_allowance', (ctx, next) => {
// TODO:
ctx.body = "T_allowance";
});
router.get('/Drop/D_setToken', (ctx, next) => {
// TODO:
ctx.body = "D_setToken";
});
router.get('/Drop/D_multiSendandself', (ctx, next) => {
// TODO:
ctx.body = "D_multiSendandself";
});
router.get('/Drop/D_multiSend', (ctx, next) => {
// TODO:
ctx.body = "D_multiSend";
});
router.get('/Drop/D_multiSend2', (ctx, next) => {
// TODO:
ctx.body = "D_multiSend2";
});
router.get('/Drop/D_multiself', (ctx, next) => {
// TODO:
ctx.body = "D_multiself";
});
router.get('/Drop/D_settrustOwner', (ctx, next) => {
// TODO:
ctx.body = "D_settrustOwner";
});
router.get('/Drop/D_seterctypeName', (ctx, next) => {
// TODO:
ctx.body = "D_seterctypeName";
});
router.get('/Drop/D_sethistoricalOwner', (ctx, next) => {
// TODO:
ctx.body = "D_sethistoricalOwner";
});
router.get('/Drop/D_transfer', (ctx, next) => {
// TODO:
ctx.body = "D_transfer";
});
router.get('/Drop/D_approve', (ctx, next) => {
// TODO:
ctx.body = "D_approve";
});
router.get('/Drop/D_transferFrom', (ctx, next) => {
// TODO:
ctx.body = "D_transferFrom";
});
router.get('/Drop/D_balanceOf', (ctx, next) => {
// TODO:
ctx.body = "D_balanceOf";
});
//
router.get('/Drop/M_prepare', (ctx, next) => {
// TODO:
ctx.body = "M_prepare";
});
router.get('/Drop/M_flyDrop', (ctx, next) => {
// TODO:
ctx.body = "M_flyDrop";
});
},
router_post: () => {
router.post('/', (ctx, next) => {
// TODO:
ctx.body = "测试路由111";
});
//
router.post('/Token/T_transferFrom', (ctx, next) => {
// TODO:
ctx.body = "T_transferFrom";
});
router.post('/Token/T_transfer', (ctx, next) => {
// TODO:
ctx.body = "T_transfer";
});
router.post('/Token/T_approve', (ctx, next) => {
// TODO:
ctx.body = "T_approve";
});
router.post('/Token/T_allowance', (ctx, next) => {
// TODO:
ctx.body = "T_allowance";
});
router.post('/Drop/D_setToken', (ctx, next) => {
// TODO:
ctx.body = "D_setToken";
});
router.post('/Drop/D_multiSendandself', (ctx, next) => {
// TODO:
ctx.body = "D_multiSendandself";
});
router.post('/Drop/D_multiSend', (ctx, next) => {
// TODO:
ctx.body = "D_multiSend";
});
router.post('/Drop/D_multiSend2', (ctx, next) => {
// TODO:
ctx.body = "D_multiSend2";
});
router.post('/Drop/D_multiself', (ctx, next) => {
// TODO:
ctx.body = "D_multiself";
});
router.post('/Drop/D_settrustOwner', (ctx, next) => {
// TODO:
ctx.body = "D_settrustOwner";
});
router.post('/Drop/D_seterctypeName', (ctx, next) => {
// TODO:
ctx.body = "D_seterctypeName";
});
router.post('/Drop/D_sethistoricalOwner', (ctx, next) => {
// TODO:
ctx.body = "D_sethistoricalOwner";
});
router.post('/Drop/D_transfer', (ctx, next) => {
// TODO:
ctx.body = "D_transfer";
});
router.post('/Drop/D_approve', (ctx, next) => {
// TODO:
ctx.body = "D_approve";
});
router.post('/Drop/D_transferFrom', (ctx, next) => {
// TODO:
ctx.body = "D_transferFrom";
});
router.post('/Drop/D_balanceOf', (ctx, next) => {
// TODO:
ctx.body = "D_balanceOf";
});
//
router.post('/Drop/M_prepare', (ctx, next) => {
// TODO:
ctx.body = "M_prepare";
});
router.post('/Drop/M_flyDrop', (ctx, next) => {
// TODO:
ctx.body = "M_flyDrop";
});
}
}
var Actions_initWeb3Provider = {
initWeb3: () => {
//创建一个web3实例,设置一个provider,成功引入后,就可以用web3的api
if (typeof web3 == 'undefined') {
web3 = new Web3(web3.currentProvider); //新建web3对象
console.log("web undefined");
} else {
// TODO:
web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/ee23e77aa14846d88eb5cad3d59e37f2"));
} //设置一个provider
// TODO:
console.log("web3实例化完成=>");
console.log("web3.currentProvider=>",web3.currentProvider);
console.log("web3是否连接成功=>",web3.isConnected());
console.log("默认账户",web3.eth.defaultAccount);
console.log("默认区块",web3.eth.defaultBlock);
// web3.eth.defaultAccount = "";
web3.eth.defaultAccount='0x38a8DC14edE1DEf9C437bB3647445eEec06fF105';
console.log("默认账户",web3.eth.defaultAccount);
},
initContract_Token: () => {
// TODO:
let Abi_Token = Json_list.ABI_TOKEN;
let Address_Token = Json_list.ADDRESS_TOKEN;
//Token 实例化
Contract_Token = web3.eth.contract(Abi_Token).at(Address_Token);
// TODO:
console.log("Token合约实例完成=>");
},
initContract_drop: () => {
// TODO:
let Abi_drop = "";
let Address_drop = "";
//drop 实例化
var Contract_drop = web_TokenMgr.eth.constant(Abi_drop).at(Address_drop);
},
initContract_TokenMgr: () => {
// TODO:
let Abi_TokenMgr = "";
let Address_TokenMgr = "";
//TokenMgr 实例化
var Contract_drop = web3.eth.constant(Abi_TokenMgr).at(Address_TokenMgr);
}
}
var Actions_Web3jsCommonMethod = {
web_api: () => {
// TODO:
},
web_node: () => {
// TODO:
},
web3_isConnected: () => {
// TODO:
},
web3_currentProvider: () => {
// TODO:
}
}
var Actions_Web3jsUtils = {
web_api: () => {
// TODO:
},
web_node: () => {
// TODO:
},
web3_isConnected: () => {
// TODO:
},
//工具函数@预估gas
web3_estimateGas: (address,data) => {
// TODO:
let estimateGas = web3.eth.estimateGas({
to: address,
data: data
});
estimateGas = this.web3.toHex(estimateGas);
return estimateGas;
},
// 工具函数@预估区块高度
web3_getNonce: (address) => {
// TODO:
let nonce = web3.eth.getTransactionCount(address);
return nonce;
},
//工具函数@序列化私钥
web3_bufferPrivateKey: (value) => {
// TODO:
const privateKey = new Buffer(value,'hex');
return privateKey;
},
web3_currentProvider: () => {
// TODO:
}
}
var Actions_Contrant_Token = {
T_transferFrom: (ctx,next) => {
// TODO:
let Tx_gasPrice =web3.toHex('0x3B9ACA00'*1000);// TODO:
// let Tx_value = "0x00";// TODO:
let Tx_address = ctx.from;// TODO:
- Hive 时间日期处理总结
- 孤立的SQL用户
- 如何卸载CDH(附一键卸载github源码)
- github & CSRF
- 如何使用Python读取大文件
- 介绍一种非常好用汇总数据的方式GROUPING SETS
- 史上最大的CPU Bug(幽灵和熔断的OS&SQLServer补丁)
- 数据库副本的自动种子设定(自增长)
- Git 项目推荐 | 基于go+protobuff 实现的分布式
- ReflectASM-invoke,高效率java反射机制原理
- Web应用渗透测试-本地文件包含
- shiro权限控制(二):分布式架构中shiro的实现
- Groovy实现原理分析——准备工作
- HBCTF第一场2个pwn题的简单分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 了解RefreshScope这篇短文就够了
- Educational Codeforces Round 83 (Rated for Div. 2) A~~E
- Codeforces Round #627 (Div. 3) 题解
- 牛客练习赛59 A~~D
- Codeforces Round #628 (Div. 2) A~~D
- AtCoder Beginner Contest 160 A ~ E
- SwiftUI:创建底部导航栏 tabBar
- AtCoder Beginner Contest 168 C
- 关于 Executor 和 ExecutorService
- 【队伍训练】Codeforces Round #660 (Div. 2)
- 【队伍训练2】 AtCoder Beginner Contest 165
- C# 的sql server like 的参数
- sql server 字符串替换函数REPLACE
- sql server 更新两个表的某个字段
- HTML 引用Css样式的四种方式