提交 4d7484d7 authored 作者: 崔大师's avatar 崔大师

update

上级 8c8202d8
node_modules
.vscode
\ No newline at end of file
......@@ -8,9 +8,8 @@ const web3 = new Web3();
// const rpxUrl = "http://rpctest.chainopen.cn"
const rpxUrl = "http://rpcproxy.thinkium.org"
const init = () => {
const init = (mnemonic) => {
return new Promise(async (resolve, reject) => {
const {mnemonic} = require("./config.json");
const seed = await bip39.mnemonicToSeed(mnemonic.trim())
const hdwallet = HDWallet.fromSeed(seed)
const privateKey = hdwallet.derive('m/44\'/60\'/0\'/0/0').getPrivateKey()
......
{
"mnemonic": "oven bridge digital west better smile salon banana donor decrease tattoo project",
"contractAddress": "TH238X4LYFCDW2OZ48BQH9CK6DG5EU0HXPI"
"mnemonic": "alley absorb wait alpha teach path pizza people home cloud announce kiwi",
"contractAddress": "TH83SS304IEHHYPXZEQQAZS711AP2KS1CIM"
}
\ No newline at end of file
#!/usr/bin/env node
const { init, callContract, ether, getTxHash,toIban,toAddress,isIban } = require('./ThkContract.js');
const { init, callContract, ether, getTxHash, toIban, toAddress, isIban } = require('./ThkContract.js');
const Web3 = require('web3');
const fs = require('fs');
const path = require("path");
const inquirer = require('inquirer');
const colors = require('colors');
const config = JSON.parse(fs.readFileSync("./config.json"));
const configPath = path.join(process.cwd(), "config.json");
let isConfigExist = fs.existsSync(configPath);
let config = null
if (isConfigExist) {
config = JSON.parse(fs.readFileSync(configPath, "utf8"));
} else {
config = { "mnemonic": "", "contractAddress": "" }
}
let contractInstance;
let choiceList = [];
......@@ -34,16 +43,16 @@ module.exports = (contractAbi) => {
}
])
.then(answers => {
fs.writeFile('./config.json', JSON.stringify(answers, null, "\t"), function (err) {
fs.writeFile(configPath, JSON.stringify(answers, null, "\t"), function (err) {
if (err) { console.log(err) }
open(contractAbi, toAddress(answers.contractAddress));
open(answers.mnemonic, contractAbi, toAddress(answers.contractAddress));
})
});
}
const open = (contractAbi, contractAddress) => {
init().then(async () => {
const open = (mnemonic, contractAbi, contractAddress) => {
init(mnemonic).then(async () => {
contractInstance = await callContract(contractAbi, contractAddress);
choiceList = formatChoice(contractAbi);
choice();
......@@ -107,7 +116,7 @@ const answer = (answers) => {
}
const call = (functionName, inputs, outputs) => {
const call = async(functionName, inputs, outputs) => {
if (inputs.length > 0) {
let questions = [];
for (let i = 0; i < inputs.length; i++) {
......@@ -154,25 +163,25 @@ const call = (functionName, inputs, outputs) => {
}
}
inquirer.prompt(questions)
.then(answers => {
.then(async(answers) => {
let params = [];
for (let i = 0; i < inputs.length; i++) {
params.push(answers[inputs[i].name == "" ? inputs[i].desc : inputs[i].name].toLowerCase());
}
let result = contractInstance[functionName](...params);
txResult(result,outputs);
let result = await contractInstance[functionName](...params);
txResult(result, outputs);
});
} else {
let result = contractInstance[functionName]();
txResult(result,outputs);
let result = await contractInstance[functionName]();
txResult(result, outputs);
}
}
const txResult = (result,outputs) => {
const txResult = (result, outputs) => {
if (result.TXhash != undefined) {
console.log(JSON.stringify(result).gray);
getTxHash(result.TXhash).then((conresp) => {
if (conresp.status == 1) {
out = conresp.out != '0x' ? '输出结果:' + output(outputs,conresp.out) : 'TX Hash:' + result.TXhash
out = conresp.out != '0x' ? '输出结果:' + output(outputs, conresp.out) : 'TX Hash:' + result.TXhash
console.log('调用成功!'.green, out.yellow)
} else {
console.log('调用失败'.red, result.TXhash, conresp)
......@@ -180,33 +189,33 @@ const txResult = (result,outputs) => {
choice();
})
} else {
console.log('输出结果:'.green, output(outputs,result));
console.log('输出结果:'.green, output(outputs, result));
choice();
}
}
const output = (outputs,result) => {
const output = (outputs, result) => {
var output = [];
if(outputs.length == 1){
output = formatOut(outputs[0].type,result);
}else if(outputs.length > 1){
for(var i=0;i<outputs.length;i++){
output[i] = formatOut(outputs[i].type,result[i]);
if (outputs.length == 1) {
output = formatOut(outputs[0].type, result);
} else if (outputs.length > 1) {
for (var i = 0; i < outputs.length; i++) {
output[i] = formatOut(outputs[i].type, result[i]);
}
}
return output;
}
const formatOut = (type,result) =>{
const formatOut = (type, result) => {
var output = [];
switch (type){
switch (type) {
case "uint256":
output = result.toString().substring(0, 2) === '0x' ? parseInt(result,16).toString(10) : result;
output = result.toString().substring(0, 2) === '0x' ? parseInt(result, 16).toString(10) : result;
break;
case "address":
output = toIban(result);
break;
case "address[]":
var out = [];
for(var j=0;j<result.length;j++){
for (var j = 0; j < result.length; j++) {
out[j] = toIban(result[j]);
}
output = out;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -2,8 +2,8 @@
"name": "multi-sign-user",
"version": "1.0.0",
"description": "multiSign",
"main": "multiSign",
"bin": "multiSign",
"main": "multiSign.js",
"bin": "multiSign.js",
"dependencies": {
"bip39": "^3.0.2",
"colors": "^1.4.0",
......@@ -16,10 +16,10 @@
"web3": "^1.2.9"
},
"devDependencies": {
"pkg": "^4.4.9"
"nexe": "^3.3.7"
},
"scripts": {
"test": "test"
"pkg": "./node_modules/.bin/nexe multiSign.js"
},
"keywords": [],
"author": "",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论