控制台搭建

在搭建完区块链后,则要部署控制台,首先在tools文件中解压console.tar.gz文件,

image-20241018144056980

解压完后,配置控制台证书,代码如下

1
cp -r nodes/127.0.0.1/sdk/* console/conf/

其实就是将节点文件中sdk证书配置文件全部复制到控制台文件的conf中,复制完后建议去文件中检查有没有复制成功,

image-20241018144409289

当有ca.crt , sdk.crt ,sdk.key 三个文件时,说明上面配置证书已经成功,接下来拷贝控制台配置文件。

1
cp -n console/conf/config-example.toml console/conf/config.toml

再去看conf文件中是否备份成功。

image-20241018144841375

这样正常节点控制台就配置成功。接下来就可以启动了,cd到console文件下

1
bash start.sh

image-20241018145912068

如果用的是指定端口启动控制台,则需要自己去修改配置文件,直接vim备份后的配置文件

1
vim console/config.toml

image-20241018145722284

在network配置项下,更改自己的节点端口,在去启动就能成功了。

image-20241018145912068

控制台的操作

操作有很多具体可以看官方文档

fisco-bcos控制台

下面演示几个具有代表性跟少见并且要注意的例子

为指定节点动态创造一个新群组

1
2
3
4
5
6
[group:1]> generateGroup  127.0.0.1:20200 2 1590586645000 b8acb51b9fe84f88d670646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a770f429300085f37e1131f36
GroupStatus{
code='0x1',
message='Group 2 generated successfully',
status='null'
}
  • endPoint: 接收创建新群组请求的区块链节点IP:Port信息,SDK连接的所有节点IP:Port信息可通过命令getAvailableConnections获取;
  • groupId: 新创建的群组ID;
  • timestamp: 新创建群组的创世块时间戳,可通过命令echo $(($(date '+%s')*1000))获取时间戳;
  • sealerList: 新创建群组的共识节点列表,多个共识节点ID之间用空格分割。可通过getsealerlist来获取共识节点列表。

需要注意的是时间戳如果时间忘了,可以乱填,大约13位数就行。

重点在于你成功之后你得启动群组,不然群组没有启动

1
2
3
4
5
6
[group:1]> startGroup 127.0.0.1:20200 3
GroupStatus{
code='0x0',
message='Group 3 started successfully',
status='null'
}

通过这样就启动了群组,然后利用addsealer来添加共识节点。这样就为指定节点动态创造了一个新群组。

采用CNS来部署合约

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 部署HelloWorld合约1.0版
[group:1]> deployByCNS HelloWorld 1.0
transaction hash: 0xb994d8e510f147815bdf9838fda542e553c2fe981177ee7a97a0686b9619cfbb
contract address: 0xf485b9ccfffa668f4d7fac37c81c0cd63408188c
{
"code":1,
"msg":"Success"
}

# 部署HelloWorld合约2.0版
[group:1]> deployByCNS HelloWorld 2.0
transaction hash: 0x3132f73e5af72fce44c2e07185a04f554ac06ddd94119dcf798980695b0890a0
contract address: 0xf68a1aabfad336847e109c33ca471b192c93c0a9
{
"code":1,
"msg":"Success"
}

# 部署TableTest合约
[group:1]> deployByCNS TableTest 1.0
transaction hash: 0x288ccc6e166e43f5cd3bd563e00af48988e641196aaea57a59f0ab256e23c84e
contract address: 0x0fe221339e50c39aaefddfc3a9a26b4aeff23c63
{
"code":1,
"msg":"Success"
}

使用deploybyCNS,后面要带版本号,需要注意的是部署完后,调用get跟set也需要用callbyCNS。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 调用HelloWorld合约1.0版,通过set接口设置name字符串
[group:1]> callByCNS HelloWorld:1.0 set "Hello,CNS"
transaction hash: 0x7ad2f34a13bbc2272d2d52fa46915e6f03136a6960d84a23478bee3c37e76ad6
---------------------------------------------------------------------------------------------
transaction status: 0x0
description: transaction executed successfully
---------------------------------------------------------------------------------------------
Output
Receipt message: Success
Return message: Success
---------------------------------------------------------------------------------------------
Event logs
Event: {}

# 调用HelloWorld合约2.0版,通过set接口设置name字符串
[group:1]> callByCNS HelloWorld:2.0 set "Hello,CNS2"
transaction hash: 0x41f8decbe137905824321da6c28a19d957e902cfad1e8078d797bc649c078d3e
---------------------------------------------------------------------------------------------
transaction status: 0x0
description: transaction executed successfully
---------------------------------------------------------------------------------------------
Output
Receipt message: Success
Return message: Success
---------------------------------------------------------------------------------------------
Event logs
Event: {}

# 调用HelloWorld合约1.0版,通过get接口获取name字符串
[group:1]> callByCNS HelloWorld:1.0 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return values:
[
"Hello,CNS"
]
---------------------------------------------------------------------------------------------

# 调用HelloWorld合约最新版(即2.0版),通过get接口获取name字符串
[group:1]> callByCNS HelloWorld get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return values:
[
"Hello,CNS2"
]
---------------------------------------------------------------------------------------------

使用callbyCNS后面也需要带版本号。

使用脚本创建用户并组成委员会,跟委员会中的细节

以下的所以细节都可以在官方文档中找到,使用大概会说些重点的,

委员会

首先创建账户,要在consloe目录下运行,

1
2
3
4
root@bcos_build console]# bash get_account.sh
[INFO] Account Address : 0xdc4345427b7e51287ddb9f241d57c83145f9c90d
[INFO] Private Key (pem) : accounts/0xdc4345427b7e51287ddb9f241d57c83145f9c90d.pem
[INFO] Public Key (pem) : accounts/0xdc4345427b7e51287ddb9f241d57c83145f9c90d.public.pem

这样就创建了账户,之后创建委员会,注意的是不能直接启动控制台给账户第一个账户赋值委员会成员,因为这样默认你初始的启动控制台账号也为委员会成员,所以等登录你创建的用户,来给自己赋值委员会成员。

1
bash ./start.sh 1  -pem accounts/0xdc4345427b7e51287ddb9f241d57c83145f9c90d.pem

登录之后给自己赋值委员会成员

1
2
3
4
5
6
7
[group:1]> grantCommitteeMember 0xb74862fa3bcc7fa76356aa0cad04c5c2da013620
TransactionHash: 0x6cfbd4a1aea96892c62135a7d7ea132b49f47e53691590e34cdd3a2822851cdc
{
"code":1,
"msg":"Success"
}

之后更改自己的权重,也很简单。

1
2
3
4
5
6
7
8
[group:1]> updateCommitteeMemberWeight 0xb74862fa3bcc7fa76356aa0cad04c5c2da013620 2
{
"code":0,
"msg":"success"
}

[group:1]> queryCommitteeMemberWeight 0xb74862fa3bcc7fa76356aa0cad04c5c2da013620
Account: 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a Weight: 2

之后如果有多人的委员会,如果要添加成员,或修改权重,默认的投票阙值为50%,只有所有账号统一的票数大于一半才能,添加成员或修改权重,更改阙值。

添加运维角色,就是启动控制台的账号。

1
2
3
4
5
6
7
8
9
10
11
[group:1]> grantOperator 0x283f5b859e34f7fd2cf136c07579dcc72423b1b2
{
"code":0,
"msg":"success"
}

[group:1]> listOperators
---------------------------------------------------------------------------------------------
| address | enable_num |
| 0x283f5b859e34f7fd2cf136c07579dcc72423b1b2 | 15 |
---------------------------------------------------------------------------------------------

只有运维账号才能部署合约,并且运维账号不能为委员会成员,委员会成员不能为运维账号。

区块头信息跟区块信息

根据哈希查询区块头跟区块信息,

区块头:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[group:1]> getBlockHeaderByHash 0x99576e7567d258bd6426ddaf953ec0c953778b2f09a078423103c6555aa4362d
{
"dbHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData":[

],
"gasLimit":"0x0",
"gasUsed":"0x0",
"hash":"0x99576e7567d258bd6426ddaf953ec0c953778b2f09a078423103c6555aa4362d",
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"number":1,
"parentHash":"0x4f6394763c33c1709e5a72b202ad4d7a3b8152de3dc698cef6f675ecdaf20a3b",
"receiptsRoot":"0x69a04fa6073e4fc0947bac7ee6990e788d1e2c5ec0fe6c2436d0892e7f3c09d2",
"sealer":"0x2",
"sealerList":[
"11e1be251ca08bb44f36fdeedfaeca40894ff80dfd80084607a75509edeaf2a9c6fee914f1e9efda571611cf4575a1577957edfd2baa9386bd63eb034868625f",
"78a313b426c3de3267d72b53c044fa9fe70c2a27a00af7fea4a549a7d65210ed90512fc92b6194c14766366d434235c794289d66deff0796f15228e0e14a9191",
"95b7ff064f91de76598f90bc059bec1834f0d9eeb0d05e1086d49af1f9c2f321062d011ee8b0df7644bd54c4f9ca3d8515a3129bbb9d0df8287c9fa69552887e",
"b8acb51b9fe84f88d670646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a770f429300085f37e1131f36"
],
"stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp":"0x173ad8703d6",
"transactionsRoot":"0xb563f70188512a085b5607cac0c35480336a566de736c83410a062c9acc785ad"
}

区块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[group:1]> getBlockByHash 0xf6afbcc3ec9eb4ac2c2829c2607e95ea0fa1be914ca1157436b2d3c5f1842855
{
"extraData":[

],
"gasLimit":"0x0",
"gasUsed":"0x0",
"hash":"0xf6afbcc3ec9eb4ac2c2829c2607e95ea0fa1be914ca1157436b2d3c5f1842855",
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"number":"0x1",
"parentHash":"0xeccad5274949b9d25996f7a96b89c0ac5c099eb9b72cc00d65bc6ef09f7bd10b",
"sealer":"0x0",
"sealerList":[
"0471101bcf033cd9e0cbd6eef76c144e6eff90a7a0b1847b5976f8ba32b2516c0528338060a4599fc5e3bafee188bca8ccc529fbd92a760ef57ec9a14e9e4278",
"2b08375e6f876241b2a1d495cd560bd8e43265f57dc9ed07254616ea88e371dfa6d40d9a702eadfd5e025180f9d966a67f861da214dd36237b58d72aaec2e108",
"cf93054cf524f51c9fe4e9a76a50218aaa7a2ca6e58f6f5634f9c2884d2e972486c7fe1d244d4b49c6148c1cb524bcc1c99ee838bb9dd77eb42f557687310ebd",
"ed1c85b815164b31e895d3f4fc0b6e3f0a0622561ec58a10cc8f3757a73621292d88072bf853ac52f0a9a9bbb10a54bdeef03c3a8a42885fe2467b9d13da9dec"
],
"stateRoot":"0x9711819153f7397ec66a78b02624f70a343b49c60bc2f21a77b977b0ed91cef9",
"timestamp":"0x1692f119c84",
"transactions":[
"0xa14638d47cc679cf6eeb7f36a6d2a30ea56cb8dcf0938719ff45023a7a8edb5d"
],
"transactionsRoot":"0x516787f85980a86fd04b0e9ce82a1a75950db866e8cdf543c2cae3e4a51d91b7"
}
[group:1]> getBlockByHash 0xf6afbcc3ec9eb4ac2c2829c2607e95ea0fa1be914ca1157436b2d3c5f1842855 true
{
"extraData":[

],
"gasLimit":"0x0",
"gasUsed":"0x0",
"hash":"0xf6afbcc3ec9eb4ac2c2829c2607e95ea0fa1be914ca1157436b2d3c5f1842855",
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"number":"0x1",
"parentHash":"0xeccad5274949b9d25996f7a96b89c0ac5c099eb9b72cc00d65bc6ef09f7bd10b",
"sealer":"0x0",
"sealerList":[
"0471101bcf033cd9e0cbd6eef76c144e6eff90a7a0b1847b5976f8ba32b2516c0528338060a4599fc5e3bafee188bca8ccc529fbd92a760ef57ec9a14e9e4278",
"2b08375e6f876241b2a1d495cd560bd8e43265f57dc9ed07254616ea88e371dfa6d40d9a702eadfd5e025180f9d966a67f861da214dd36237b58d72aaec2e108",
"cf93054cf524f51c9fe4e9a76a50218aaa7a2ca6e58f6f5634f9c2884d2e972486c7fe1d244d4b49c6148c1cb524bcc1c99ee838bb9dd77eb42f557687310ebd",
"ed1c85b815164b31e895d3f4fc0b6e3f0a0622561ec58a10cc8f3757a73621292d88072bf853ac52f0a9a9bbb10a54bdeef03c3a8a42885fe2467b9d13da9dec"
],
"stateRoot":"0x9711819153f7397ec66a78b02624f70a343b49c60bc2f21a77b977b0ed91cef9",
"timestamp":"0x1692f119c84",
"transactions":[
{
"blockHash":"0xf6afbcc3ec9eb4ac2c2829c2607e95ea0fa1be914ca1157436b2d3c5f1842855",
"blockNumber":"0x1",
"from":"0x7234c32327795e4e612164e3442cfae0d445b9ad",
"gas":"0x1c9c380",
"gasPrice":"0x1",
"hash":"0xa14638d47cc679cf6eeb7f36a6d2a30ea56cb8dcf0938719ff45023a7a8edb5d",
"input":"0x608060405234801561001057600080fd5b506040805190810160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b6102d7806101166000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634ed3885e146100515780636d4ce63c146100ba575b600080fd5b34801561005d57600080fd5b506100b8600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061014a565b005b3480156100c657600080fd5b506100cf610164565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010f5780820151818401526020810190506100f4565b50505050905090810190601f16801561013c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b8060009080519060200190610160929190610206565b5050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101fc5780601f106101d1576101008083540402835291602001916101fc565b820191906000526020600020905b8154815290600101906020018083116101df57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061024757805160ff1916838001178555610275565b82800160010185558215610275579182015b82811115610274578251825591602001919060010190610259565b5b5090506102829190610286565b5090565b6102a891905b808211156102a457600081600090555060010161028c565b5090565b905600a165627a7a72305820fd74886bedbe51a7f3d834162de4d9af7f276c70133e04fd6776b5fbdd3653000029",
"nonce":"0x3443a1391c9c29f751e8350304efb310850b8afbaa7738f5e89ddfce79b1d6",
"to":null,
"transactionIndex":"0x0",
"value":"0x0"
}
],
"transactionsRoot":"0x516787f85980a86fd04b0e9ce82a1a75950db866e8cdf543c2cae3e4a51d91b7"
}

这个哈希值就是部署合约成功后给的哈希值

根据区块高度查询区块头和区块信息

区块头:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[group:1]> getBlockHeaderByNumber 1 true
{
"dbHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData":[

],
"gasLimit":"0x0",
"gasUsed":"0x0",
"hash":"0x99576e7567d258bd6426ddaf953ec0c953778b2f09a078423103c6555aa4362d",
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"number":1,
"parentHash":"0x4f6394763c33c1709e5a72b202ad4d7a3b8152de3dc698cef6f675ecdaf20a3b",
"receiptsRoot":"0x69a04fa6073e4fc0947bac7ee6990e788d1e2c5ec0fe6c2436d0892e7f3c09d2",
"sealer":"0x2",
"sealerList":[
"11e1be251ca08bb44f36fdeedfaeca40894ff80dfd80084607a75509edeaf2a9c6fee914f1e9efda571611cf4575a1577957edfd2baa9386bd63eb034868625f",
"78a313b426c3de3267d72b53c044fa9fe70c2a27a00af7fea4a549a7d65210ed90512fc92b6194c14766366d434235c794289d66deff0796f15228e0e14a9191",
"95b7ff064f91de76598f90bc059bec1834f0d9eeb0d05e1086d49af1f9c2f321062d011ee8b0df7644bd54c4f9ca3d8515a3129bbb9d0df8287c9fa69552887e",
"b8acb51b9fe84f88d670646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a770f429300085f37e1131f36"
],
"signatureList":[
{
"index":"0x3",
"signature":"0xb5b41e49c0b2bf758322ecb5c86dc3a3a0f9b98891b5bbf50c8613a241f05f595ce40d0bb212b6faa32e98546754835b057b9be0b29b9d0c8ae8b38f7487b8d001"
},
{
"index":"0x0",
"signature":"0x411cb93f816549eba82c3bf8c03fa637036dcdee65667b541d0da06a6eaea80d16e6ca52bf1b08f77b59a834bffbc124c492ea7a1601d0c4fb257d97dc97cea600"
},
{
"index":"0x1",
"signature":"0xea3c27c2a1486c7942c41c4dc8f15fbf9a668aff2ca40f00701d73fa659a14317d45d74372d69d43ced8e81f789e48140e7fa0c61997fa7cde514c654ef9f26d00"
}
],
"stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp":"0x173ad8703d6",
"transactionsRoot":"0xb563f70188512a085b5607cac0c35480336a566de736c83410a062c9acc785ad"
}

区块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[group:1]> getBlockByNumber 1
{
"extraData":[

],
"gasLimit":"0x0",
"gasUsed":"0x0",
"hash":"0xf6afbcc3ec9eb4ac2c2829c2607e95ea0fa1be914ca1157436b2d3c5f1842855",
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"number":"0x1",
"parentHash":"0xeccad5274949b9d25996f7a96b89c0ac5c099eb9b72cc00d65bc6ef09f7bd10b",
"sealer":"0x0",
"sealerList":[
"0471101bcf033cd9e0cbd6eef76c144e6eff90a7a0b1847b5976f8ba32b2516c0528338060a4599fc5e3bafee188bca8ccc529fbd92a760ef57ec9a14e9e4278",
"2b08375e6f876241b2a1d495cd560bd8e43265f57dc9ed07254616ea88e371dfa6d40d9a702eadfd5e025180f9d966a67f861da214dd36237b58d72aaec2e108",
"cf93054cf524f51c9fe4e9a76a50218aaa7a2ca6e58f6f5634f9c2884d2e972486c7fe1d244d4b49c6148c1cb524bcc1c99ee838bb9dd77eb42f557687310ebd",
"ed1c85b815164b31e895d3f4fc0b6e3f0a0622561ec58a10cc8f3757a73621292d88072bf853ac52f0a9a9bbb10a54bdeef03c3a8a42885fe2467b9d13da9dec"
],
"stateRoot":"0x9711819153f7397ec66a78b02624f70a343b49c60bc2f21a77b977b0ed91cef9",
"timestamp":"0x1692f119c84",
"transactions":[
"0xa14638d47cc679cf6eeb7f36a6d2a30ea56cb8dcf0938719ff45023a7a8edb5d"
],
"transactionsRoot":"0x516787f85980a86fd04b0e9ce82a1a75950db866e8cdf543c2cae3e4a51d91b7"
}

当然在查询区块信息时,可以在后面加个布尔值,表示交易标志

  • 交易标志:默认false,区块中的交易只显示交易哈希,设置为true,显示交易具体信息。

在查询区块头信息时,也可以在后面加个布尔值,表示前面列表标志

  • 签名列表标志:默认为false,即:区块头信息中不显示区块签名列表信息,设置为true,则显示区块签名列表。