Skip to content

Commit

Permalink
feat: 🎸 Add several generators to ddn command line tools
Browse files Browse the repository at this point in the history
  • Loading branch information
imfly committed Oct 14, 2020
1 parent b7ee6cf commit 0bde9e8
Show file tree
Hide file tree
Showing 20 changed files with 492 additions and 352 deletions.
14 changes: 1 addition & 13 deletions docs/api/js-sdk-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,7 @@ https://unpkg.com/browse/@ddn/[email protected]/index.browserify.min.js

放在您工程文件合适的位置

### **1.2 初始化**

`js-sdk`在使用前,首先进行初始化。

`init(nethash)`

- `nethash` 节点网络

```
DdnJS.init('0ab796cd')
```

### **1.3 说明**
### **1.2 说明**
很多函数都需要传入secret、secondSecret这2个参数,分表代表密码和二级密码,下面章节不再赘述。
自定如下全局变量,用于之后章节代码演示。

Expand Down
35 changes: 26 additions & 9 deletions docs/guide/ddn-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ order: 1

# 命令行工具

## 简介
## 1. 简介

从 DDN v3.0.0 以后,我们的命令行工具`ddn`名称正式更改为`ddn`,也就是说,通过命令行操作的命令与实际运行的程序将保持一致,都是`ddn`.

同时,DDN v3.6.0 版本之后,DDN 区块链命令行工具采取分级、分类管理的方法进行了彻底重构,您可以像使用 `git` 命令那样使用`ddn`了,体验上有了很大提升。

## 说明
## 2. 说明

### 分类
### 2.1 分类

整体上,命令包含了 6 个类别的子命令,它们是:`account``block` `dapp` `delegate` `dev` `transaction`,列表对比说明如下:
整体上,命令包含了 7 个类别的子命令,它们是:`account``block` `dapp` `delegate` `dev` `transaction``generate`,列表对比说明如下:

|序号 | 类别或子命令 | 简称 | 备注 |
|--------|---------|-----------|---------|
Expand All @@ -24,7 +24,8 @@ order: 1
| 3 | transaction | t, trs | 交易子命令,包括转账、检索交易等命令 |
| 4 | delegate | d | 节点相关子命令,受托人、节点、IP等 |
| 5 | dapp || Dapp子命令,包括资产转账等 |
| 6 | dev || 开发子命令,包括新建链、智能合约等命令 |
| 6 | dev || 辅助开发子命令,包括获取块ID等命令 |
| 7 | generate | g | 辅助开发子命令,包括新建链、新建智能合约等命令 |

简称的逻辑是:

Expand All @@ -43,6 +44,7 @@ ddn <命令>
ddn dapp [command] DDN dapp manage tools.
ddn delegate [command] DDN delegate manage tools. [aliases: d, peer]
ddn dev [command] DDN develop tools.
ddn generate [command] DDN generate tools. [aliases: g]
ddn transaction [command] DDN transaction manage tools. [aliases: t, trs]

选项:
Expand All @@ -55,7 +57,7 @@ ddn <命令>
copyright 2020
```

### 分级
### 2.2 分级

每个类别下面有多个子命令,您只要使用`ddn a -h`(等同于`ddn account -h`)的方式检索查看即可

Expand Down Expand Up @@ -90,8 +92,23 @@ DDN account manage tools.
-h, --help 显示帮助信息 [布尔]
```

### 2.3 便利性

## 公共选项
命令的使用充分考虑了开发的便利性,比如,我们要开启一个新的Dapp的定制,可以这样操作:

(1)使用Dapp子命令

```shell
$ ddn dapp g MyDapp // 这是最简单直观的思考逻辑
```

(2)使用generate子命令

```shell
$ ddn g dapp MyDapp // 与上述命令正好相反,但是效果一样
```

## 3. 公共选项

所有命令所默认请求的`host`,`port`,以及网络类型`main`等是它们的公共选项,以大写字母的形式提供。它们就是:

Expand All @@ -104,6 +121,6 @@ DDN account manage tools.
-h, --help 显示帮助信息
```

## 参考
## 4. 参考

更多应用案例,请参考 《DDN-UBL 高校实验教程》
更多应用案例,请参考 《DDN-UBL 高校实验教程》
33 changes: 25 additions & 8 deletions docs/guide/ddn-cli.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ order: 1

# 命令行工具

## 简介
## 1. 简介

从 DDN v3.0.0 以后,我们的命令行工具`ddn`名称正式更改为`ddn`,也就是说,通过命令行操作的命令与实际运行的程序将保持一致,都是`ddn`.

同时,DDN v3.6.0 版本之后,DDN 区块链命令行工具采取分级、分类管理的方法进行了彻底重构,您可以像使用 `git` 命令那样使用`ddn`了,体验上有了很大提升。

## 说明
## 2. 说明

### 分类
### 2.1 分类

整体上,命令包含了 6 个类别的子命令,它们是:`account``block` `dapp` `delegate` `dev` `transaction`,列表对比说明如下:
整体上,命令包含了 7 个类别的子命令,它们是:`account``block` `dapp` `delegate` `dev` `transaction``generate`,列表对比说明如下:

|序号 | 类别或子命令 | 简称 | 备注 |
|--------|---------|-----------|---------|
Expand All @@ -24,7 +24,8 @@ order: 1
| 3 | transaction | t, trs | 交易子命令,包括转账、检索交易等命令 |
| 4 | delegate | d | 节点相关子命令,受托人、节点、IP等 |
| 5 | dapp || Dapp子命令,包括资产转账等 |
| 6 | dev || 开发子命令,包括新建链、智能合约等命令 |
| 6 | dev || 辅助开发子命令,包括获取块ID等命令 |
| 7 | generate | g | 辅助开发子命令,包括新建链、新建智能合约等命令 |

简称的逻辑是:

Expand All @@ -43,6 +44,7 @@ ddn <命令>
ddn dapp [command] DDN dapp manage tools.
ddn delegate [command] DDN delegate manage tools. [aliases: d, peer]
ddn dev [command] DDN develop tools.
ddn generate [command] DDN generate tools. [aliases: g]
ddn transaction [command] DDN transaction manage tools. [aliases: t, trs]

选项:
Expand All @@ -55,7 +57,7 @@ ddn <命令>
copyright 2020
```

### 分级
### 2.2 分级

每个类别下面有多个子命令,您只要使用`ddn a -h`(等同于`ddn account -h`)的方式检索查看即可

Expand Down Expand Up @@ -90,8 +92,23 @@ DDN account manage tools.
-h, --help 显示帮助信息 [布尔]
```

### 2.3 便利性

## 公共选项
命令的使用充分考虑了开发的便利性,比如,我们要开启一个新的Dapp的定制,可以这样操作:

(1)使用Dapp子命令

```shell
$ ddn dapp g MyDapp // 这是最简单直观的思考逻辑
```

(2)使用generate子命令

```shell
$ ddn g dapp MyDapp // 与上述命令正好相反,但是效果一样
```

## 3. 公共选项

所有命令所默认请求的`host`,`port`,以及网络类型`main`等是它们的公共选项,以大写字母的形式提供。它们就是:

Expand All @@ -104,6 +121,6 @@ DDN account manage tools.
-h, --help 显示帮助信息
```

## 参考
## 4. 参考

更多应用案例,请参考 《DDN-UBL 高校实验教程》
12 changes: 12 additions & 0 deletions packages/ddn/src/cmds/dapp/generate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { generateDapp } from '../../plugins/generator'

module.exports = {
command: 'generate <name>',
aliases: 'g',
desc: 'Create an empty dapp from template',
builder: {},

handler: function (argv) {
generateDapp(argv.name)
}
}
4 changes: 2 additions & 2 deletions packages/ddn/src/cmds/dapp/genesis.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { createGenesisBlock } from '../../plugins/dapp'

module.exports = {
command: 'newGenesis',
aliases: 'g',
command: 'genesisBlock',
aliases: 'gb',
desc: 'Create dapp genesis block',
builder: {},

Expand Down
16 changes: 0 additions & 16 deletions packages/ddn/src/cmds/dapp/new.js

This file was deleted.

12 changes: 12 additions & 0 deletions packages/ddn/src/cmds/generator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = {
command: 'generate [command]',
aliases: 'g',
desc: 'DDN generate tools.',
builder: function (yargs) {
return yargs.commandDir('generator')
},

handler: function (argv) {
console.log('Hi, please select a command, e.g: ddn g blockchain, --help')
}
}
14 changes: 14 additions & 0 deletions packages/ddn/src/cmds/generator/blockchain.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { generateBlockchain } from '../../plugins/generator'

module.exports = {
command: 'blockchain <name>',
aliases: 'b',
desc: 'Generate new blockchain.',
builder: {

},

handler: function (argv) {
generateBlockchain(argv.name)
}
}
14 changes: 14 additions & 0 deletions packages/ddn/src/cmds/generator/contract.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { generateContract } from '../../plugins/generator'

module.exports = {
command: 'contract <name>',
aliases: 'c',
desc: 'Generate new contract.',
builder: {

},

handler: function (argv) {
generateContract(argv.name)
}
}
12 changes: 12 additions & 0 deletions packages/ddn/src/cmds/generator/dapp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { generateDapp } from '../../plugins/generator'

module.exports = {
command: 'dapp <name>',
aliases: 'd',
desc: 'Create an empty dapp from template.',
builder: {},

handler: function (argv) {
generateDapp(argv.name)
}
}
44 changes: 44 additions & 0 deletions packages/ddn/src/cmds/generator/genesis.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { genGenesisBlock } from '../../plugins/generator'

module.exports = {
command: 'genesisBlock',
aliases: 'gb',
desc: 'Generate new genesis block.',
builder: {
file: {
alias: 'f',
describe: 'genesis accounts balance file'
},
secret: {
alias: 's',
describe: 'genesisAccount`s secret, default is the DDN`s testnet secret'
},
nethash: {
alias: 'n',
describe: 'Default to generate a new nethash'
},
tokenPrefix: {
alias: 'p',
describe: 'Prefix of token.',
default: 'D'
},
tokenName: {
alias: 't',
describe: 'Name of token.',
default: 'DDN'
},
genesisBlockName: {
alias: 'g',
describe: 'Genesis block file name',
default: 'genesisBlock'
},
message: {
alias: 'm',
describe: 'message'
}
},

handler: function (argv) {
genGenesisBlock(argv)
}
}
12 changes: 12 additions & 0 deletions packages/ddn/src/cmds/generator/users.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { genUsers } from '../../plugins/users'

module.exports = {
command: 'users',
aliases: 'u',
desc: 'Create some accounts to a file.',
builder: {},

handler: function (argv) {
genUsers(argv.name)
}
}
9 changes: 5 additions & 4 deletions packages/ddn/src/helpers/dapp.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import nacl from 'tweetnacl'
import DdnCrypto from '@ddn/crypto'
import DdnCrypto from '../utils/crypto'
import ByteBuffer from 'bytebuffer'
import dappTransactionsLib from '../utils/dapptransactions'
import accounts from './account'
Expand Down Expand Up @@ -66,6 +66,7 @@ export default {
const sender = accounts.account(DdnCrypto.generateSecret())
let payloadBytes = ''

// TODO: 2020.10.14 请修正完善
const block = {
delegate: keypair.publicKey,
height: '1',
Expand All @@ -79,17 +80,17 @@ export default {

if (assetInfo) {
const assetTrs = {
type: 3,
fee: '0',
timestamp: 0,
senderPublicKey: sender.keypair.publicKey,
type: 3,
args: JSON.stringify([
assetInfo.name,
String(Number(assetInfo.amount) * (10 ** assetInfo.precision)),
address
])
}
const bytes = dappTransactionsLib.getTransactionBytes()
const bytes = dappTransactionsLib.getTransactionBytes(assetTrs, true)
assetTrs.signature = await DdnCrypto.sign(assetTrs, sender.keypair)
block.payloadLength += bytes.length
payloadBytes += bytes
Expand All @@ -101,7 +102,7 @@ export default {

block.payloadHash = DdnCrypto.createHash(Buffer.from(payloadBytes))

block.signature = sign(block, keypair) // fixme 应该是 block 的
block.signature = sign(block, keypair)
block.id = getId(block)

return block
Expand Down
2 changes: 1 addition & 1 deletion packages/ddn/src/plugins/dapp.js
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ async function createGenesisBlock () {
var wantInbuiltAsset = await inquirer.prompt({
type: 'confirm',
name: 'wantInbuiltAsset',
message: 'Do you want publish a inbuilt asset in this dapp?',
message: 'Do you want to publish a inbuilt asset in this dapp?',
default: false
})

Expand Down
Loading

0 comments on commit 0bde9e8

Please sign in to comment.