控制台搭建
在搭建完区块链后,则要部署控制台,首先在tools文件中解压console.tar.gz文件,
解压完后,配置控制台证书,代码如下
1
| cp -r nodes/127.0.0.1/sdk/* console/conf/
|
其实就是将节点文件中sdk证书配置文件全部复制到控制台文件的conf中,复制完后建议去文件中检查有没有复制成功,
当有ca.crt , sdk.crt ,sdk.key 三个文件时,说明上面配置证书已经成功,接下来拷贝控制台配置文件。
1
| cp -n console/conf/config-example.toml console/conf/config.toml
|
再去看conf文件中是否备份成功。
这样正常节点控制台就配置成功。接下来就可以启动了,cd到console文件下
如果用的是指定端口启动控制台,则需要自己去修改配置文件,直接vim备份后的配置文件
在network配置项下,更改自己的节点端口,在去启动就能成功了。
控制台的操作
操作有很多具体可以看官方文档
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,则显示区块签名列表。