UNPKG

12.3 kBJavaScriptView Raw
1var fs = require('fs');
2var Api = require('../helpers/api.js');
3var aschJS = require('asch-js');
4
5var globalOptions;
6
7function getApi() {
8 return new Api({host: globalOptions.host, port: globalOptions.port, mainnet: !!globalOptions.main});
9}
10
11function pretty(obj) {
12 return JSON.stringify(obj, null, 2);
13}
14
15function openAccount(secret) {
16 getApi().post('/api/accounts/open', {secret: secret}, function (err, result) {
17 console.log(err || pretty(result.account));
18 });
19}
20
21function openAccountByPublicKey(publicKey) {
22 getApi().post('/api/accounts/open2', {publicKey: publicKey}, function (err, result) {
23 console.log(err || pretty(result.account));
24 });
25}
26
27function getHeight() {
28 getApi().get('/api/blocks/getHeight', function (err, result) {
29 console.log(err || result.height);
30 });
31}
32
33function getBlockStatus() {
34 getApi().get('/api/blocks/getStatus', function (err, result) {
35 console.log(err || pretty(result));
36 });
37}
38
39function getBalance(address) {
40 var params = {address: address};
41 getApi().get('/api/accounts/getBalance', params, function (err, result) {
42 console.log(err || result.balance);
43 });
44}
45
46function getAccount(address) {
47 var params = {address: address};
48 getApi().get('/api/accounts/', params, function (err, result) {
49 console.log(err || pretty(result.account));
50 });
51}
52
53function getVotedDelegates(address, options) {
54 var params = {
55 address: address,
56 limit: options.limit,
57 offset: options.offset
58 };
59 getApi().get('/api/accounts/delegates', params, function (err, result) {
60 console.log(err || result);
61 });
62}
63
64function getDelegates(options) {
65 var params = {
66 limit: options.limit,
67 offset: options.offset,
68 orderBy: options.sort || "rate:asc"
69 };
70 getApi().get('/api/delegates/', params, function (err, result) {
71 console.log(err || pretty(result.delegates));
72 });
73}
74
75function getDelegatesCount() {
76 getApi().get('/api/delegates/count', function (err, result) {
77 console.log(err || result.count);
78 });
79}
80
81function getVoters(publicKey) {
82 var params = {publicKey: publicKey};
83 getApi().get('/api/delegates/voters', params, function (err, result) {
84 console.log(err || pretty(result.accounts));
85 });
86}
87
88function getDelegateByPublicKey(publicKey) {
89 var params = {publicKey: publicKey};
90 getApi().get('/api/delegates/get', params, function (err, result) {
91 console.log(err || pretty(result.delegate));
92 });
93}
94
95function getDelegateByUsername(username) {
96 var params = {username: username};
97 getApi().get('/api/delegates/get', params, function (err, result) {
98 console.log(err || pretty(result.delegate));
99 });
100}
101
102function getBlocks(options) {
103 var params = {
104 limit: options.limit,
105 orderBy: options.sort,
106 offset: options.offset,
107 totalAmount: options.totalAmount,
108 totalFee: options.totalFee,
109 reward: options.reward,
110 generatorPublicKey: options.generatorPublicKey
111 };
112 getApi().get('/api/blocks/', params, function (err, result) {
113 console.log(err || pretty(result));
114 });
115}
116
117function getBlockById(id) {
118 var params = {id: id};
119 getApi().get('/api/blocks/get', params, function (err, result) {
120 console.log(err || pretty(result.block));
121 });
122}
123
124function getBlockByHeight(height) {
125 var params = {height: height};
126 getApi().get('/api/blocks/get', params, function (err, result) {
127 console.log(err || pretty(result.block));
128 });
129}
130
131function getPeers(options) {
132 var params = {
133 limit: options.limit,
134 orderBy: options.sort,
135 offset: options.offset,
136 state: options.state,
137 os: options.os,
138 port: options.port,
139 version: options.version
140 };
141 // var liskOptions = {host:'login.lisk.io', port:80};
142 getApi().get('/api/peers/', params, function (err, result) {
143 console.log(err || pretty(result.peers));
144 });
145}
146
147function getUnconfirmedTransactions(options) {
148 var params = {
149 senderPublicKey: options.key,
150 address: options.address
151 };
152 getApi().get('/api/transactions/unconfirmed', params, function (err, result) {
153 console.log(err || pretty(result.transactions));
154 });
155}
156
157function getTransactions(options) {
158 var params = {
159 blockId: options.blockId,
160 limit: options.limit,
161 orderBy: options.sort,
162 offset: options.offset,
163 type: options.type,
164 senderPublicKey: options.senderPublicKey,
165 senderId: options.senderId,
166 recipientId: options.recipientId,
167 amount: options.amount,
168 fee: options.fee
169 };
170 getApi().get('/api/transactions/', params, function (err, result) {
171 console.log(err || pretty(result.transactions));
172 });
173}
174
175function getTransaction(id) {
176 var params = {id: id};
177 getApi().get('/api/transactions/get', params, function (err, result) {
178 console.log(err || pretty(result.transaction));
179 });
180}
181
182function sendMoney(options) {
183 // var params = {
184 // secret: options.secret,
185 // secondSecret: options.secondSecret,
186 // recipientId: options.to,
187 // amount: Number(options.amount)
188 // };
189 // getApi().put('/api/transactions/', params, function (err, result) {
190 // console.log(err || result);
191 // });
192 var trs = aschJS.transaction.createTransaction(
193 options.to,
194 options.amount * 100000000,
195 options.secret,
196 options.secondSecret
197 );
198 getApi().broadcastTransaction(trs, function (err, result) {
199 console.log(err || result.success);
200 });
201}
202
203function registerDelegate(options) {
204 // var params = {
205 // secret: options.secret,
206 // username: options.username,
207 // secondSecret: options.secondSecret,
208 // };
209 // getApi().put('/api/delegates/', params, function (err, result) {
210 // console.log(err || result);
211 // });
212 var trs = aschJS.delegate.createDelegate(
213 options.secret,
214 options.username,
215 options.secondSecret
216 );
217 getApi().broadcastTransaction(trs, function (err, result) {
218 console.log(err || result.success);
219 });
220}
221
222function vote(secret, publicKeys, op, secondSecret) {
223 var votes = publicKeys.split(',').map(function (el) {
224 return op + el;
225 });
226 var trs = aschJS.vote.createVote(
227 secret,
228 votes,
229 secondSecret
230 );
231 getApi().broadcastTransaction(trs, function (err, result) {
232 console.log(err || result.success);
233 });
234}
235
236function upvote(options) {
237 vote(options.secret, options.publicKeys, '+', options.secondSecret);
238}
239
240function downvote(options) {
241 vote(options.secret, options.publicKeys, '-', options.secondSecret);
242}
243
244function setSecondSecret(options) {
245 var trs = aschJS.signature.createSignature(options.secret, options.secondSecret);
246 getApi().broadcastTransaction(trs, function (err, result) {
247 console.log(err || result.success);
248 });
249}
250
251function registerDapp(options) {
252 if (!options.metafile || !fs.existsSync(options.metafile)) {
253 console.error("Error: invalid params, dapp meta file must exists");
254 return;
255 }
256 var dapp = JSON.parse(fs.readFileSync(options.metafile, 'utf8'));
257 var trs = aschJS.dapp.createDapp(options.secret, options.secondSecret, dapp);
258 getApi().broadcastTransaction(trs, function (err, result) {
259 console.log(err || result.success);
260 console.log('DappId:', trs.id);
261 });
262}
263
264module.exports = function(program) {
265 globalOptions = program;
266
267 program
268 .command("getheight")
269 .description("get block height")
270 .action(getHeight);
271
272 program
273 .command("getblockstatus")
274 .description("get block status")
275 .action(getBlockStatus);
276
277 program
278 .command("openaccount [secret]")
279 .description("open your account and get the infomation by secret")
280 .action(openAccount);
281
282 program
283 .command("openaccountbypublickey [publickey]")
284 .description("open your account and get the infomation by publickey")
285 .action(openAccountByPublicKey);
286
287 program
288 .command("getbalance [address]")
289 .description("get balance by address")
290 .action(getBalance);
291
292 program
293 .command("getaccount [address]")
294 .description("get account by address")
295 .action(getAccount);
296
297 program
298 .command("getvoteddelegates [address]")
299 .description("get delegates voted by address")
300 .option("-o, --offset <n>", "")
301 .option("-l, --limit <n>", "")
302 .action(getVotedDelegates);
303
304 program
305 .command("getdelegatescount")
306 .description("get delegates count")
307 .action(getDelegatesCount);
308
309 program
310 .command("getdelegates")
311 .description("get delegates")
312 .option("-o, --offset <n>", "")
313 .option("-l, --limit <n>", "")
314 .option("-s, --sort <field:mode>", "rate:asc, vote:desc, ...")
315 .action(getDelegates);
316
317 program
318 .command("getvoters [publicKey]")
319 .description("get voters of a delegate by public key")
320 .action(getVoters);
321
322 program
323 .command("getdelegatebypublickey [publicKey]")
324 .description("get delegate by public key")
325 .action(getDelegateByPublicKey);
326
327 program
328 .command("getdelegatebyusername [username]")
329 .description("get delegate by username")
330 .action(getDelegateByUsername);
331
332 program
333 .command("getblocks")
334 .description("get blocks")
335 .option("-o, --offset <n>", "")
336 .option("-l, --limit <n>", "")
337 .option("-r, --reward <n>", "")
338 .option("-f, --totalFee <n>", "")
339 .option("-a, --totalAmount <n>", "")
340 .option("-g, --generatorPublicKey <publicKey>", "")
341 .option("-s, --sort <field:mode>", "height:asc, totalAmount:asc, totalFee:asc")
342 .action(getBlocks);
343
344 program
345 .command("getblockbyid [id]")
346 .description("get block by id")
347 .action(getBlockById);
348
349 program
350 .command("getblockbyheight [height]")
351 .description("get block by height")
352 .action(getBlockByHeight);
353
354 program
355 .command("getpeers")
356 .description("get peers")
357 .option("-o, --offset <n>", "")
358 .option("-l, --limit <n>", "")
359 .option("-t, --state <n>", " 0 ~ 3")
360 .option("-s, --sort <field:mode>", "")
361 .option("-v, --version <version>", "")
362 .option("-p, --port <n>", "")
363 .option("--os <os>", "")
364 .action(getPeers);
365
366 program
367 .command("getunconfirmedtransactions")
368 .description("get unconfirmed transactions")
369 .option("-k, --key <sender public key>", "")
370 .option("-a, --address <address>", "")
371 .action(getUnconfirmedTransactions);
372
373 program
374 .command("gettransactions")
375 .description("get transactions")
376 .option("-b, --blockId <id>", "")
377 .option("-o, --offset <n>", "")
378 .option("-l, --limit <n>", "")
379 .option("-t, --type <n>", "transaction type")
380 .option("-s, --sort <field:mode>", "")
381 .option("-a, --amount <n>", "")
382 .option("-f, --fee <n>", "")
383 .option("--senderPublicKey <key>", "")
384 .option("--senderId <id>", "")
385 .option("--recipientId <id>", "")
386 .action(getTransactions);
387
388 program
389 .command("gettransaction [id]")
390 .description("get transactions")
391 .action(getTransaction);
392
393 program
394 .command("sendmoney")
395 .description("send money to some address")
396 .option("-e, --secret <secret>", "")
397 .option("-s, --secondSecret <secret>", "")
398 .option("-a, --amount <n>", "")
399 .option("-t, --to <address>", "")
400 .action(sendMoney);
401
402 program
403 .command("registerdelegate")
404 .description("register delegate")
405 .option("-e, --secret <secret>", "")
406 .option("-s, --secondSecret <secret>", "")
407 .option("-u, --username <username>", "")
408 .action(registerDelegate);
409
410 program
411 .command("upvote")
412 .description("vote for delegates")
413 .option("-e, --secret <secret>", "")
414 .option("-s, --secondSecret <secret>", "")
415 .option("-p, --publicKeys <public key list>", "")
416 .action(upvote);
417
418 program
419 .command("downvote")
420 .description("cancel vote for delegates")
421 .option("-e, --secret <secret>", "")
422 .option("-s, --secondSecret <secret>", "")
423 .option("-p, --publicKeys <public key list>", "")
424 .action(downvote);
425
426 program
427 .command("setsecondsecret")
428 .description("set second secret")
429 .option("-e, --secret <secret>", "")
430 .option("-s, --secondSecret <secret>", "")
431 .action(setSecondSecret);
432
433 program
434 .command("registerdapp")
435 .description("register a dapp")
436 .option("-e, --secret <secret>", "")
437 .option("-s, --secondSecret <secret>", "")
438 .option("-f, --metafile <metafile>", "dapp meta file")
439 .action(registerDapp);
440}
\No newline at end of file