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

update

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