# 鍛戒护琛屽伐鍏�

<span id="section_cmc"></span>

## 绠€浠�

cmc`(ChainMaker Client)`鏄疌hainMaker鎻愪緵鐨勫懡浠よ宸ュ叿锛岀敤浜庡拰ChainMaker閾捐繘琛屼氦浜掍互鍙婄敓鎴愯瘉涔︽垨鑰呭瘑閽ョ瓑鍔熻兘銆俢mc鍩轰簬go璇█缂栧啓锛岄€氳繃浣跨敤ChainMaker鐨刧o璇█sdk锛堜娇鐢╣rpc鍗忚锛夎揪鍒板拰ChainMaker閾捐繘琛屼氦浜掔殑鐩殑銆�<br>
cmc鐨勮缁嗘棩蹇楄鏌ョ湅`./sdk.log`

## 韬唤妯″紡

闀垮畨閾惧湪2.1鐗堟湰浠ュ悗鏀寔涓嶅悓韬唤妯″紡锛岃鎯呰[韬唤鏉冮檺绠$悊](../tech/韬唤鏉冮檺绠$悊.md)鐨勮韩浠芥ā寮忛儴鍒嗐€傛湰绡囨枃绔犱腑涓昏鏄粙缁峆ermissionedWithCert妯″紡锛屽叾瀹冧袱绉嶆ā寮忕殑cmc浣跨敤鏂囨。濡備笅锛�

* PermissionedWithCert
* [PermissionedWithKey](./鍛戒护琛屽伐鍏穚wk.md)
* [Public](./鍛戒护琛屽伐鍏穚k.md)

## 缂栬瘧&閰嶇疆

cmc宸ュ叿鐨勭紪璇�&杩愯鏂瑰紡濡備笅锛�

> 鍒涘缓宸ヤ綔鐩綍 $WORKDIR 姣斿 ~/chainmaker<br>
> 鍚姩娴嬭瘯閾� [鍦ㄥ伐浣滅洰褰曚笅 浣跨敤鑴氭湰鎼缓](../tutorial/閫氳繃鍛戒护琛屽伐鍏峰惎鍔ㄩ摼.html#runUseScripts)<br>

```sh
# 缂栬瘧cmc
$ cd $WORKDIR/chainmaker-go/tools/cmc
$ go build
# 閰嶇疆娴嬭瘯鏁版嵁
$ cp -rf $WORKDIR/chainmaker-go/build/crypto-config $WORKDIR/chainmaker-go/tools/cmc/testdata/ # 浣跨敤chainmaker-cryptogen鐢熸垚鐨勬祴璇曢摼鐨勮瘉涔�
# 鏌ョ湅help
$ cd $WORKDIR/chainmaker-go/tools/cmc
$ ./cmc --help
```

<span id="sdkConfig"></span>

## 鑷畾涔夐厤缃�

cmc 渚濊禆 sdk-go 閰嶇疆鏂囦欢銆�<br>
缂栬瘧&閰嶇疆 姝ラ浣跨敤鐨勬槸 [SDK閰嶇疆妯$増](https://git.chainmaker.org.cn/chainmaker/sdk-go/-/blob/master/testdata/sdk_config.yml) <br>
鍙€氳繃淇敼 ~/chainmaker/chainmaker-go/tools/cmc/testdata/sdk_config.yml 瀹炵幇鑷畾涔夐厤缃€�<br>
姣斿 `user_key_file_path`,`user_crt_file_path`,`user_sign_key_file_path`,`user_sign_crt_file_path`<br>
杩欏洓涓弬鏁板彲璁剧疆涓烘櫘閫氱敤鎴锋垨admin鐢ㄦ埛鐨勮瘉涔�/绉侀挜璺緞銆傝缃悗cmc灏嗕細浠ュ搴旂敤鎴疯韩浠戒笌閾惧缓绔嬭繛鎺ャ€�<br>
鍏朵粬璇︾粏閰嶇疆椤硅鍙傜湅 ~/chainmaker/chainmaker-go/tools/cmc/testdata/sdk_config.yml 涓殑娉ㄨВ銆�<br>

## 鍔熻兘

cmc鎻愪緵鍔熻兘濡備笅:

- [绉侀挜绠$悊](#keyManage)锛氱閽ョ敓鎴愬姛鑳�
- [璇佷功绠$悊](#certManage)锛氬寘鎷敓鎴恈a璇佷功銆佺敓鎴恈rl鍒楄〃銆佺敓鎴恈sr銆侀鍙戣瘉涔︺€佹牴鎹瘉涔﹁幏鍙栬妭鐐笽d绛夊姛鑳�
- [浜ゆ槗鍔熻兘](#sendRequest)锛氫富瑕佸寘鎷摼绠$悊銆佺敤鎴峰悎绾﹀彂甯冦€佸崌绾с€佸悐閿€銆佸喕缁撱€佽皟鐢ㄣ€佹煡璇㈢瓑鍔熻兘
- [鏌ヨ閾句笂鏁版嵁](#queryOnChainData)锛氭煡璇㈤摼涓奲lock鍜宼ransaction
- [閾鹃厤缃甝(#chainConfig)锛氭煡璇㈠強鏇存柊閾鹃厤缃�
- [褰掓。&鎭㈠鍔熻兘](#archive)锛氬皢閾句笂鏁版嵁杞Щ鍒扮嫭绔嬪瓨鍌ㄤ笂锛屽綊妗e悗鐨勬暟鎹叿澶囧彲鏌ヨ銆佸彲鎭㈠鍒伴摼涓婄殑鐗规€�
- [绾夸笂澶氱](#multiSign)锛氶€氳繃绯荤粺鍚堢害瀹炵幇绾夸笂澶氱鐨勮姹傚彂璧枫€佹姇绁ㄥ拰鏌ヨ绛夊姛鑳�
- [绯荤粺鍚堢害寮€鏀剧鐞哴(#manage)锛氱鐞嗙郴缁熷悎绾︾殑寮€鏀炬潈闄愩€佹煡璇㈠純鐢ㄧ郴缁熷悎绾﹀垪琛�
- [璇佷功鍒悕](#alias)锛氳瘉涔﹀埆鍚嶇鐞嗐€�

### 绀轰緥

<span id="keyManage"></span>

#### 绉侀挜绠$悊

  鐢熸垚绉侀挜, 鐩墠鏀寔鐨勭畻娉曟湁 SM2 ECC_P256 鏈潵灏嗘敮鎸佹洿澶氱畻娉曘€�

  **鍙傛暟璇存槑**锛�

  ```sh
  $ ./cmc key gen -h 
  Private key generate
  Usage:
    cmc key gen [flags]
  
  Flags:
    -a, --algo string   specify key generate algorithm
    -h, --help          help for gen
    -n, --name string   specify storage name
    -p, --path string   specify storage path
  ```

  **绀轰緥锛�**

  ```sh
  $ ./cmc key gen -a ECC_P256 -n ca.key -p ./
  ```

<span id="certManage"></span>

#### 璇佷功绠$悊

  - 鐢熸垚crl(Certificate Revocation List)鍒楄〃

    crl鍒楄〃鐢ㄤ簬鎾ゆ秷璇佷功璇锋眰锛岄鍏堝皢瑕佹挙娑堢殑璇佷功鐢熸垚涓€涓猚rl鍒楄〃锛岀劧鍚庡啀鍙戦€佽姹傚埌閾句笂

    **鍙傛暟璇存槑**

    ```sh
    $ ./cmc cert crl -h  
    create cert crl
    
    Usage:
      cmc cert crl [flags]
    
    Flags:
      -C, --ca-cert-path string   specify certificate authority certificate path
      -K, --ca-key-path string    specify certificate authority key path
          --crl-path string       specify crl file path
          --crt-path string       specify crt file path
      -h, --help                  help for crl
    ```

    **绀轰緥**

    ```sh
    $ ./cmc cert crl -C ./ca.crt -K ca.key --crl-path=./client1.crl --crt-path=../sdk/testdata/crypto-config/wx-org2.chainmaker.org/user/client1/client1.tls.crt
    ```

  - 鍚婇攢璇佷功

    灏哻rl鍙戦€佸埌閾句笂锛屽悐閿€璇佷功

    **鍙傛暟璇存槑**

    ```sh
    $ ./cmc client certmanage revoke -h
    ```

    **绀轰緥**

    ```sh
    $ ./cmc client certmanage revoke \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --cert-crl-path=./client1.crl \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key
    ```

<span id="sendRequest"></span>

#### 浜ゆ槗鍔熻兘

##### 鐢ㄦ埛鍚堢害

  cmc鐨勪氦鏄撳姛鑳界敤鏉ュ彂閫佷氦鏄撳拰閾捐繘琛屼氦浜掞紝涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
    sdk閰嶇疆鏂囦欢flag
    --sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�

    admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin
    --admin-crt-file-paths: admin绛惧悕鑰呯殑tls crt鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
        姣斿 ./wx-org1.chainmaker.org/admin1.tls.crt,./wx-org2.chainmaker.org/admin1.tls.crt
    --admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
        姣斿 ./wx-org1.chainmaker.org/admin1.tls.key,./wx-org2.chainmaker.org/admin1.tls.key

    濡傛灉鎯宠鐩杝dk閰嶇疆鏂囦欢涓殑閰嶇疆锛屽垯浣跨敤浠ヤ笅鍏釜flag涓旈兘蹇呭~锛涘涓嶄紶锛屽垯榛樿浣跨敤sdk閰嶇疆鏂囦欢涓殑閰嶇疆鍙傛暟
    --org-id: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛鎵€灞炵殑缁勭粐Id, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --chain-id: 鎸囧畾閾綢d, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-tlscrt-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛tls璇佷功鏂囦欢璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-tlskey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛tls绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-signcrt-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign璇佷功鏂囦欢璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-signkey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�

    鍏朵粬flags
    --byte-code-path锛氭寚瀹氬悎绾︾殑wasm鏂囦欢璺緞
    --contract-name锛氭寚瀹氬悎绾﹀悕绉�
    --method锛氭寚瀹氳皟鐢ㄧ殑鍚堢害鏂规硶鍚嶇О
    --runtime-type锛氭寚瀹氬悎绾︽墽琛岃櫄鎷熸満鐜锛屽寘鍚細GASM銆丒VM銆乄ASMER銆乄XVM銆丯ATIVE銆丏OCKER VM
    --version锛氭寚瀹氬悎绾︾殑鐗堟湰鍙凤紝鍦ㄥ彂甯冨拰鍗囩骇鍚堢害鏃朵娇鐢�
    --sync-result锛氭寚瀹氭槸鍚﹀悓姝ョ瓑寰呬氦鏄撴墽琛岀粨鏋滐紝榛樿涓篺alse锛屽鏋滆缃负true锛屽湪鍙戦€佸畬浜ゆ槗鍚庝細涓诲姩鏌ヨ浜ゆ槗鎵ц缁撴灉
    --params锛氭寚瀹氬彂甯冨悎绾︽垨璋冪敤鍚堢害鏃剁殑鍙傛暟淇℃伅
    --concurrency锛氭寚瀹氳皟鐢ㄥ悎绾﹀苟鍙戠殑go routine锛岀敤浜庡帇鍔涙祴璇�
    --total-count-per-goroutine锛氭寚瀹氬崟涓猤o routine鍙戦€佺殑浜ゆ槗鏁伴噺锛岀敤浜庡帇鍔涙祴璇曪紝鍜�--concurrency閰嶅悎浣跨敤
    --block-height锛氭寚瀹氬尯鍧楅珮搴�
    --tx-id锛氭寚瀹氫氦鏄揑d
    --with-rw-set锛氭寚瀹氳幏鍙栧尯鍧楁椂鏄惁闄勫甫璇诲啓闆嗭紝榛樿鏄痜alse
    --abi-file-path锛氳皟鐢╡vm鍚堢害鏃堕渶瑕佹寚瀹氳璋冪敤鍚堢害鐨刟bi鏂囦欢璺緞锛屽锛�--abi-file-path=./testdata/balance-evm-demo/ledger_balance.abi
  ```

  - 鍒涘缓wasm鍚堢害

    ```sh
    $ ./cmc client contract user create \
    --contract-name=fact \
    --runtime-type=WASMER \
    --byte-code-path=./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \
    --version=1.0 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --sync-result=true \
    --params="{}"
    ```

      > 濡備笅杩斿洖琛ㄧず鎴愬姛锛�
      >
      > response: message:"OK" contract_result:<result:"\n\004fact\022\0031.0\030\002*<\n\026wx-org1.chainmaker.org\020\001\032 F]\334,\005O\200\272\353\213\274\375nT\026%K\r\314\362\361\253X\356*2\377\216\250kh\031" message:"OK" > tx_id:"991a1c00369e4b76853dadf410182bcdfc86062f8cf1478f93482ba9000191d7"



      娉細鏅鸿兘鍚堢害缂栧啓鍙傝锛歔鏅鸿兘鍚堢害寮€鍙慮(./鏅鸿兘鍚堢害.md)

  - 鍒涘缓evm鍚堢害

    ```sh
    $ ./cmc client contract user create \
    --contract-name=balance001 \
    --runtime-type=EVM \
    --byte-code-path=./testdata/balance-evm-demo/ledger_balance.bin \
    --version=1.0 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --sync-result=true
    ```

      > 濡備笅杩斿洖琛ㄧず鎴愬姛锛�
      >
      > EVM contract name in hex: 532c238cec7071ce8655aba07e50f9fb16f72ca1 
      > response: message:"OK" contract_result:<result:"\n(532c238cec7071ce8655aba07e50f9fb16f72ca1\022\0031.0\030\005*<\n\026wx-org1.chainmaker.org\020\001\032 F]\334,\005O\200\272\353\213\274\375nT\026%K\r\314\362\361\253X\356*2\377\216\250kh\031" message:"OK" > tx_id:"e2af1241ff464d47b869a69ce8a615df50da57d3faff4754ad6e45b9f914b938"


      娉細鏅鸿兘鍚堢害缂栧啓鍙傝锛歔鏅鸿兘鍚堢害寮€鍙慮(./鏅鸿兘鍚堢害.md)

  - 璋冪敤wasm鍚堢害

    ```sh
    $ ./cmc client contract user invoke \
    --contract-name=fact \
    --method=save \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --params="{\"file_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"6543234\"}" \
    --sync-result=true
    ```

      > 濡備笅杩斿洖琛ㄧず鎴愬姛锛�
      >
      > INVOKE contract resp, [code:0]/[msg:OK]/[contractResult:gas_used:12964572 contract_event:<topic:"topic_vx" tx_id:"7c9e98befbb64cec916765d760d4def5aa26f8bac78d419c9018b8d220e7f041" contract_name:"fact" contract_version:"1.0" event_data:"ab3456df5799b87c77e7f88" event_data:"" event_data:"6543234" > ]/[txId:7c9e98befbb64cec916765d760d4def5aa26f8bac78d419c9018b8d220e7f041]

  - 璋冪敤evm鍚堢害

    evm鐨� --params 鏄竴涓暟缁刯son鏍煎紡銆傚涓媢pdateBalance鏈変袱涓舰鍙傦紝绗竴涓槸uint256绫诲瀷锛岀浜屼釜鏄痑ddress绫诲瀷銆�<br>
    10000瀵瑰簲绗竴涓舰鍙倁int256鐨勫叿浣撳€硷紝0xa166c92f4c8118905ad984919dc683a7bdb295c1瀵瑰簲绗簩涓舰鍙俛ddress鐨勫叿浣撳€笺€�

    ```sh
    $ ./cmc client contract user invoke \
    --contract-name=balance001 \
    --method=updateBalance \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --params="[{\"uint256\": \"10000\"},{\"address\": \"0xa166c92f4c8118905ad984919dc683a7bdb295c1\"}]" \
    --sync-result=true \
    --abi-file-path=./testdata/balance-evm-demo/ledger_balance.abi
    ```

      > 濡備笅杩斿洖琛ㄧず鎴愬姛锛�
      >
      > EVM contract name in hex: 532c238cec7071ce8655aba07e50f9fb16f72ca1
      > INVOKE contract resp, [code:0]/[msg:OK]/[contractResult:result:"[]" gas_used:5888 ]/[txId:4f25f47518b14e6b92ce184dc6ed84f594341567050b4023ae1686a47e2e22ec]


  - 鏌ヨ鍚堢害

    ```sh
    $ ./cmc client contract user get \
    --contract-name=fact \
    --method=find_by_file_hash \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --params="{\"file_hash\":\"ab3456df5799b87c77e7f88\"}"
    ```

      > 濡備笅杩斿洖琛ㄧず鎴愬姛锛�
      >
      > QUERY contract resp: message:"SUCCESS" contract_result:<result:"{\"file_hash\":\"ab3456df5799b87c77e7f88\",\"file_name\":\"\",\"time\":\"6543234\"}" gas_used:24354672 > tx_id:"25716b955ebd4a258c4bd6b6f682f1341dfe97e4bd18495c864992f1618a2003"

  - 鍗囩骇鍚堢害

    ```sh
    $ ./cmc client contract user upgrade \
    --contract-name=fact \
    --runtime-type=WASMER \
    --byte-code-path=./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \
    --version=2.0 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --org-id=wx-org1.chainmaker.org \
    --sync-result=true \
    --params="{}"
    ```

      > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氬叾涓璻esult缁撴灉涓虹敤鎴疯嚜瀹氫箟锛屾瘡涓悎绾﹀彲鑳戒笉涓€鏍凤紝涔熷彲鑳芥病鏈夈€�
      >
      > upgrade user contract params:[]
      > upgrade contract resp: message:"OK" contract_result:<result:"\n\004fact\022\0032.0\030\002*<\n\026wx-org1.chainmaker.org\020\001\032 F]\334,\005O\200\272\353\213\274\375nT\026%K\r\314\362\361\253X\356*2\377\216\250kh\031" message:"OK" > tx_id:"d89df9fcd87f4071972fdabdf3003a349250a94893fb43899eac4d68e7855d52" 

  - 鍐荤粨鍚堢害

    ```sh
    $ ./cmc client contract user freeze \
    --contract-name=fact \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --org-id=wx-org1.chainmaker.org \
    --sync-result=true
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氬喕缁撳悗鐨勫悎绾﹀啀鍘绘墽琛屾煡璇€€佽皟鐢ㄥ悎绾﹀垯浼氬け璐�
    >
    > freeze contract resp: message:"OK" contract_result:<result:"{\"name\":\"fact\",\"version\":\"3.0\",\"runtime_type\":2,\"status\":1,\"creator\":{\"org_id\":\"wx-org1.chainmaker.org\",\"member_type\":1,\"member_info\":\"Rl3cLAVPgLrri7z9blQWJUsNzPLxq1juKjL/jqhraBk=\"}}" message:"OK" > tx_id:"09841775173548ad9a8a39e2987a4f5115d59d50dd3448e8b09a83624dee5367"

  - 瑙e喕鍚堢害

    ```sh
    $ ./cmc client contract user unfreeze \
    --contract-name=fact \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --org-id=wx-org1.chainmaker.org \
    --sync-result=true
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氳В鍐诲悗鐨勫悎绾﹀彲姝e父浣跨敤
    >
    > unfreeze contract resp: message:"OK" contract_result:<result:"{\"name\":\"fact\",\"version\":\"3.0\",\"runtime_type\":2,\"creator\":{\"org_id\":\"wx-org1.chainmaker.org\",\"member_type\":1,\"member_info\":\"Rl3cLAVPgLrri7z9blQWJUsNzPLxq1juKjL/jqhraBk=\"}}" message:"OK" > tx_id:"fccf024450c140dea999cc46ad24d381a679ce2142bd48b2a829abcd4f099866"

  - 鍚婇攢鍚堢害

    ```sh
    $ ./cmc client contract user revoke \
    --contract-name=fact \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --org-id=wx-org1.chainmaker.org \
    --sync-result=true
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氬悐閿€鍚堢害鍚庯紝涓嶅彲鎭㈠锛屼笖涓嶈兘瀵硅鍚堢害鎵ц浠讳綍鎿嶄綔锛屽寘鎷煡璇€€�
    >
    > revoke contract resp: message:"OK" contract_result:<result:"{\"name\":\"fact\",\"version\":\"3.0\",\"runtime_type\":2,\"status\":2,\"creator\":{\"org_id\":\"wx-org1.chainmaker.org\",\"member_type\":1,\"member_info\":\"Rl3cLAVPgLrri7z9blQWJUsNzPLxq1juKjL/jqhraBk=\"}}" message:"OK" > tx_id:"d971b57cf12c46ff8fe0d4f5897634c644fb802998f44360bb130f27ff54a10a"

<span id="queryOnChainData"></span>

#### 鏌ヨ閾句笂鏁版嵁

  鏌ヨ閾句笂block鍜宼ransaction 涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
    --sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
    --chain-id锛氭寚瀹氶摼Id
  ```

  - 鏍规嵁鍖哄潡楂樺害鏌ヨ閾句笂鏈綊妗e尯鍧�

    ```sh
    ./cmc query block-by-height [blockheight] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml
    ```

  - 鏍规嵁鍖哄潡hash鏌ヨ閾句笂鏈綊妗e尯鍧�

    ```sh
    ./cmc query block-by-hash [blockhash] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml
    ```

  - 鏍规嵁txid鏌ヨ閾句笂鏈綊妗e尯鍧�

    ```sh
    ./cmc query block-by-txid [txid] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml
    ```

  - 鏍规嵁txid鏌ヨ閾句笂鏈綊妗x

    ```sh
    ./cmc query tx [txid] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml
    ```

<span id="chainConfig"></span>

#### 閾鹃厤缃�

  鏌ヨ鍙婃洿鏂伴摼閰嶇疆 涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
    sdk閰嶇疆鏂囦欢flag
    --sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�

    admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin
    --admin-crt-file-paths: admin绛惧悕鑰呯殑tls crt鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
        姣斿 ./wx-org1.chainmaker.org/admin1.tls.crt,./wx-org2.chainmaker.org/admin1.tls.crt
    --admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
        姣斿 ./wx-org1.chainmaker.org/admin1.tls.key,./wx-org2.chainmaker.org/admin1.tls.key

    濡傛灉鎯宠鐩杝dk閰嶇疆鏂囦欢涓殑閰嶇疆锛屽垯浣跨敤浠ヤ笅鍏釜flag涓旈兘蹇呭~锛涘涓嶄紶锛屽垯榛樿浣跨敤sdk閰嶇疆鏂囦欢涓殑閰嶇疆鍙傛暟
    --org-id: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛鎵€灞炵殑缁勭粐Id, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --chain-id: 鎸囧畾閾綢d, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-tlscrt-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛tls璇佷功鏂囦欢璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-tlskey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛tls绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-signcrt-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign璇佷功鏂囦欢璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-signkey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�

    --block-interval: 鍑哄潡鏃堕棿 鍗曚綅ms
    --tx-parameter-size: 浜ゆ槗鍙傛暟鏈€澶ч檺鍒� 鍗曚綅:MB
    --trust-root-org-id: 澧炲姞/鍒犻櫎/鏇存柊缁勭粐璇佷功鏃舵寚瀹氱殑缁勭粐Id
    --trust-root-path: 澧炲姞/鍒犻櫎/鏇存柊缁勭粐璇佷功鏃舵寚瀹氱殑缁勭粐CA鏍硅瘉涔︽枃浠剁洰褰�
    --trust-member-path: 澧炲姞/鍒犻櫎澶栭儴璇佷功鏃舵寚瀹氱殑璇佷功璺緞
    --trust-member-org-id: 澧炲姞澶栭儴璇佷功鏃舵寚瀹氱殑缁勭粐Id
    --trust-member-role: 澧炲姞澶栭儴璇佷功鏃舵寚瀹氱殑瑙掕壊
    --trust-member-node-id: 澧炲姞澶栭儴璇佷功鏃舵寚瀹氱殑nodeId
    --node-id: 澧炲姞/鍒犻櫎/鏇存柊鍏辫瘑鑺傜偣Id鏃舵寚瀹氱殑鑺傜偣Id
    --node-ids: 澧炲姞/鏇存柊鍏辫瘑鑺傜偣Org鏃舵寚瀹氱殑鑺傜偣Id鍒楄〃
    --node-org-id: 澧炲姞/鍒犻櫎/鏇存柊鍏辫瘑鑺傜偣Id,Org鏃舵寚瀹氳妭鐐圭殑缁勭粐Id 
    --address-type: 鍦板潃绫诲瀷 ChainMaker:0, 鑷充俊閾�:1
  ```

<span id="chainConfig.query"></span>

  - 鏌ヨ閾鹃厤缃�

    ```sh
    ./cmc client chainconfig query \
    --sdk-conf-path=./testdata/sdk_config.yml
    ```

<span id="chainConfig.updateBlockInterval"></span>

  - 鏇存柊鍑哄潡鏃堕棿

    ```sh
    ./cmc client chainconfig block updateblockinterval \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --block-interval 1000
    ```

- 鏇存柊浜ゆ槗鍙傛暟鏈€澶у€奸檺鍒�

  ```sh
  ./cmc client chainconfig block updatetxparametersize \
  --sdk-conf-path=./testdata/sdk_config.yml \
  --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
  --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
  --tx-parameter-size 10 
  ```

<!--
- 鏇存柊閾剧殑璐︽埛鍦板潃绫诲瀷

  ```sh
  ./cmc client chainconfig alter-addr-type \
  --sdk-conf-path=./testdata/sdk_config.yml \
  --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
  --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
  --address-type=1 \
  --sync-result=true
  ```
-->

<span id="chainConfig.addOrgRootCA"></span>

  - 澧炲姞缁勭粐鏍硅瘉涔�

    ```sh
    ./cmc client chainconfig trustroot add \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-root-org-id=wx-org5.chainmaker.org \
    --trust-root-path=./testdata/crypto-config/wx-org5.chainmaker.org/ca/ca.crt
    ```

<span id="chainConfig.delOrgRootCA"></span>

  - 鍒犻櫎缁勭粐鏍硅瘉涔�

    ```sh
    ./cmc client chainconfig trustroot remove \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-root-org-id=wx-org5.chainmaker.org \
    --trust-root-path=./testdata/crypto-config/wx-org5.chainmaker.org/ca/ca.crt
    ```

<span id="chainConfig.updateOrgRootCA"></span>

  - 鏇存柊缁勭粐鏍硅瘉涔�

    ```sh
    ./cmc client chainconfig trustroot update \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org5.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org5.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-root-org-id=wx-org5.chainmaker.org \
    --trust-root-path=./testdata/crypto-config/wx-org5.chainmaker.org/ca/ca.crt
    ```

<span id="chainConfig.addTrustMember"></span>

  - 澧炲姞绗笁鏂硅瘉涔︿俊鎭�

    ```sh
    ./cmc client chainconfig trustmember add \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org5.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org5.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-member-org-id=wx-org2.chainmaker.org \
    --trust-member-path=./testdata/trust-member-demo/node1-sign.pem \
    --trust-member-role=admin \
    --trust-member-node-id=QmYcfSHGiXjHKkHo65YfxWLT6G7B81Zct7F7ep8GWFtuUK
    ```

<span id="chainConfig.removeTrustMember"></span>

  - 鍒犻櫎绗笁鏂硅瘉涔︿俊鎭�

    ```sh
    ./cmc client chainconfig trustmember remove \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-member-path=./testdata/trust-member-demo/node1-sign.pem
    ```

<span id="chainConfig.addTrustMember"></span>

  - 澧炲姞绗笁鏂硅瘉涔︿俊鎭�

    ```sh
    ./cmc client chainconfig trustmember add \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-member-org-id=wx-org2.chainmaker.org \
    --trust-member-path=./testdata/trust-member-demo/node1-sign.pem \
    --trust-member-role=admin \
    --trust-member-node-id=QmYcfSHGiXjHKkHo65YfxWLT6G7B81Zct7F7ep8GWFtuUK
    ```

<span id="chainConfig.removeTrustMember"></span>

  - 鍒犻櫎绗笁鏂硅瘉涔︿俊鎭�

    ```sh
    ./cmc client chainconfig trustmember remove \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --trust-member-path=./testdata/trust-member-demo/node1-sign.pem
    ```

<span id="chainConfig.addConsensusNodeOrg"></span>

  - 娣诲姞鍏辫瘑鑺傜偣Org

    ```sh
    ./cmc client chainconfig consensusnodeorg add \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --node-ids=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4,QmaWrR72CbT51nFVpNDS8NaqUZjVuD4Ezf8xcHcFW9SJWF \
    --node-org-id=wx-org5.chainmaker.org
    ```

<span id="chainConfig.delConsensusNodeOrg"></span>

  - 鍒犻櫎鍏辫瘑鑺傜偣Org

    ```sh
    ./cmc client chainconfig consensusnodeorg remove \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --node-org-id=wx-org5.chainmaker.org
    ```

<span id="chainConfig.updateConsensusNodeOrg"></span>

  - 鏇存柊鍏辫瘑鑺傜偣Org

    ```sh
    ./cmc client chainconfig consensusnodeorg update \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --node-ids=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4,QmaWrR72CbT51nFVpNDS8NaqUZjVuD4Ezf8xcHcFW9SJWF \
    --node-org-id=wx-org5.chainmaker.org
    ```

<span id="chainConfig.addConsensusNodeId"></span>

  - 娣诲姞鍏辫瘑鑺傜偣Id

    ```sh
    ./cmc client chainconfig consensusnodeid add \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --node-id=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
    --node-org-id=wx-org5.chainmaker.org
    ```

<span id="chainConfig.delConsensusNodeId"></span>

  - 鍒犻櫎鍏辫瘑鑺傜偣Id

    ```sh
    ./cmc client chainconfig consensusnodeid remove \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --node-id=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
    --node-org-id=wx-org1.chainmaker.org
    ```

<span id="chainConfig.updateConsensusNodeId"></span>

  - 鏇存柊鍏辫瘑鑺傜偣Id

    ```sh
    ./cmc client chainconfig consensusnodeid update \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --org-id=wx-org1.chainmaker.org \
    --user-tlscrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
    --user-tlskey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
    --user-signcrt-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
    --user-signkey-file-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --node-id=QmXxeLkNTcvySPKMkv3FUqQgpVZ3t85KMo5E4cmcmrexrC \
    --node-id-old=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
    --node-org-id=wx-org1.chainmaker.org
    ```

<span id="addChain"></span>

  - 娣诲姞涓€鏉℃柊閾�

淇敼chainmaker閰嶇疆鏂囦欢

鍦╟hainmaker.yml鐨勫ご閮ㄥ皢鏂伴摼鐨処d鍜屽垱涓栧潡閰嶇疆娣诲姞杩涘幓锛屽涓嬶細

```yaml
blockchain:
  - chainId: chain1
    genesis: ../config/wx-org1/chainconfig/bc1.yml
  - chainId: chain2
    genesis: ../config/wx-org1/chainconfig/bc2.yml
```

浣跨敤cmc宸ュ叿瑙﹀彂chainmaker鍒濆鍖栨柊閾撅紝鍛戒护濡備笅锛�

```sh
./cmc client blockchains checknew --sdk-conf-path=./testdata/sdk_config.yml
```



<span id="archive"></span>

#### 褰掓。&鎭㈠鍔熻兘

  cmc鐨勫綊妗e姛鑳芥槸鎸囧皢閾句笂鏁版嵁杞Щ鍒扮嫭绔嬪瓨鍌ㄤ笂锛屽綊妗e悗鐨勬暟鎹叿澶囧彲鏌ヨ銆佸彲鎭㈠鍒伴摼涓婄殑鐗规€с€�<br>
  涓轰簡淇濇寔鏁版嵁涓€鑷存€у拰闃叉璇搷浣滐紝cmc瀹炵幇浜嗗垎甯冨紡閿侊紝鍚屼竴鏃跺埢鍙厑璁镐竴涓猚mc杩涚▼杩涜杞偍銆�<br>
  cmc鏀寔澧為噺杞偍鍜屾仮澶嶃€佹柇鐐逛腑缁ц浆鍌ㄥ拰鎭㈠锛屼腑閫旈€€鍑轰笉褰卞搷鏁版嵁涓€鑷存€с€�<br>

  > 娉ㄦ剰锛歮ysql闇€瑕佽缃ソ sql_mode 浠oot鐢ㄦ埛鎵ц set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

  涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
    --sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
    --chain-id锛氭寚瀹氶摼Id
    --type锛氭寚瀹氶摼涓嬬嫭绔嬪瓨鍌ㄧ被鍨嬶紝濡� --type=mysql 榛樿mysql锛岀洰鍓嶅彧鏀寔mysql
    --dest锛氭寚瀹氶摼涓嬬嫭绔嬪瓨鍌ㄧ洰鏍囧湴鍧€锛宮ysql绫诲瀷鐨勬牸寮忓 --dest=user:password:localhost:port
    --target锛氭寚瀹氳浆鍌ㄧ洰鏍囧尯鍧楅珮搴︼紝鍦ㄨ揪鍒拌繖涓珮搴﹀悗鍋滄杞偍(鍖呮嫭杩欎釜鍧�) --target=100
        涔熷彲鎸囧畾杞瓨鐩爣鏃ユ湡锛岃浆鍌ㄥ湪姝ゆ棩鏈熶箣鍓嶇殑鎵€鏈夊尯鍧� --target="2021-06-01 15:01:41"
    --blocks锛氭寚瀹氭湰娆¤杞偍鐨勫潡鏁伴噺锛屾敞鎰忥細瀵逛簬target鍜宐locks杩欎袱涓弬鏁帮紝cmc浼氬氨杩戝師鍒欓噰鐢ㄥ厛绗﹀悎鏉′欢鐨勫弬鏁�
    --start-block-height锛氭寚瀹氶摼鏁版嵁鎭㈠鏃剁殑璧峰鍖哄潡楂樺害锛屽璁剧疆涓�100锛屽垯浠庡凡杞偍骞朵笖鏈仮澶嶇殑鏈€澶у尯鍧楀紑濮嬮檷搴忔仮澶嶉摼鏁版嵁鑷崇100鍖哄潡
    --secret-key锛氭寚瀹氬瘑鐮侊紝鐢ㄤ簬閾炬暟鎹浆鍌ㄥ拰閾炬暟鎹仮澶嶆椂鏁版嵁涓€鑷存€ф牎楠岋紝杞偍鍜屾仮澶嶆椂瀵嗙爜闇€瑕佷竴鑷�
  ```

  - 鏍规嵁鏃堕棿杞偍锛屽皢閾句笂鏁版嵁杞Щ鍒扮嫭绔嬪瓨鍌ㄤ笂锛岄渶瑕佹潈闄愶細sdk閰嶇疆鏂囦欢涓缃笌褰掓。鑺傜偣鍚岀粍缁囩殑[admin鐢ㄦ埛](#sdkConfig)

    ```sh
    ./cmc archive dump --type=mysql \
    --dest=root:password:localhost:3306 \
    --target="2021-06-01 15:01:41" \
    --blocks=10000 \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --secret-key=mypassword
    ```

  - 鏍规嵁鍖哄潡楂樺害杞偍锛屽皢閾句笂鏁版嵁杞Щ鍒扮嫭绔嬪瓨鍌ㄤ笂锛岄渶瑕佹潈闄愶細sdk閰嶇疆鏂囦欢涓缃笌褰掓。鑺傜偣鍚岀粍缁囩殑[admin鐢ㄦ埛](#sdkConfig)

    ```sh
    ./cmc archive dump --type=mysql \
    --dest=root:password:localhost:3306 \
    --target=100 \
    --blocks=10000 \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --secret-key=mypassword
    ```

  - 鎭㈠锛屽皢閾句笅鐨勯摼鏁版嵁鎭㈠鍒伴摼涓婏紝闇€瑕佹潈闄愶細sdk閰嶇疆鏂囦欢涓缃笌褰掓。鑺傜偣鍚岀粍缁囩殑[admin鐢ㄦ埛](#sdkConfig)

    ```sh
    ./cmc archive restore --type=mysql \
    --dest=root:password:localhost:3306 \
    --start-block-height=0 \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --secret-key=mypassword
    ```

  - 鏍规嵁鍖哄潡楂樺害鏌ヨ閾句笅宸插綊妗e尯鍧�

    ```sh
    ./cmc archive query block-by-height [blockheight] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --type=mysql \
    --dest=root:password:localhost:3306
    ```

  - 鏍规嵁鍖哄潡hash鏌ヨ閾句笅宸插綊妗e尯鍧�

    ```sh
    ./cmc archive query block-by-hash [blockhash] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --type=mysql \
    --dest=root:password:localhost:3306
    ```

  - 鏍规嵁txid鏌ヨ閾句笅宸插綊妗e尯鍧�

    ```sh
    ./cmc archive query block-by-txid [txid] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --type=mysql \
    --dest=root:password:localhost:3306
    ```

  - 鏍规嵁txid鏌ヨ閾句笅宸插綊妗x

    ```sh
    ./cmc archive query tx [txid] \
    --chain-id=chain1 \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --type=mysql \
    --dest=root:password:localhost:3306
    ```


  <span id="multiSign"></span>

#### 绾夸笂澶氱

褰撳悎绾﹁皟鐢紙鐩墠浠呴€傜敤鍚堢害绠$悊鍦烘櫙锛夐渶瑕佸涓敤鎴峰悓鏃剁鍚嶆墠鑳界敓鏁堟椂锛屽彲浣跨敤绾夸笂澶氱鍔熻兘銆�<br>

  涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
  --sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
  --tx-id锛氭寚瀹氫氦鏄揑d
  --params锛氭寚瀹氬彂甯冨悎绾︽垨璋冪敤鍚堢害鏃剁殑鍙傛暟淇℃伅
  --is-agree锛� 澶氱鎶曠エ鏃舵槸鍚﹀悓鎰忥紝true涓哄悓鎰忥紙榛樿璁句负true锛夛紝false涓哄弽瀵�

 admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin
 --admin-crt-file-paths: admin绛惧悕鑰呯殑tls crt鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
       姣斿 ./wx-org1.chainmaker.org/admin1.tls.crt,./wx-org2.chainmaker.org/admin1.tls.crt
 --admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
       姣斿 ./wx-org1.chainmaker.org/admin1.tls.key,./wx-org2.chainmaker.org/admin1.tls.key
  ```

  - 鍙戣捣绾夸笂澶氱璇锋眰(浠ュ垱寤轰竴涓櫘閫氱殑鐢ㄦ埛鍚堢害涓轰緥锛屽綋鍙傛暟闇€瑕佷粠鏂囦欢涓鍙栨椂璁剧疆IsFile鐨勫€间负true)

    ```sh
    ./cmc client contract system multi-sign req \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --params="[{\"key\":\"SYS_CONTRACT_NAME\",\"value\":\"CONTRACT_MANAGE\",\"IsFile\":false},{\"key\":\"SYS_METHOD\",\"value\":\"INIT_CONTRACT\",\"IsFile\":false},{\"key\":\"CONTRACT_NAME\",\"value\":\"contract107\",\"IsFile\":false},{\"key\":\"CONTRACT_VERSION\",\"value\":\"1.0\",\"IsFile\":false},{\"key\":\"CONTRACT_BYTECODE\",\"value\":\"./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm\",\"IsFile\":true},{\"key\":\"CONTRACT_RUNTIME_TYPE\",\"value\":\"WASMER\",\"IsFile\":false}]"
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氳繑鍥炵殑浜ゆ槗id闇€浣滀负鎶曠エ鍜屾煡璇㈢殑鍙傛暟
    >
    >   >   > multi sign req resp: message:"OK" tx_id:"05a0e329c4c94e909575214b41ca516716bd8c83dea94c4c9616dea0910bf719"  


 - 鍙戣捣绾夸笂澶氱鎶曠エ

   ```sh
   ./cmc client contract system multi-sign vote \
   --sdk-conf-path=./testdata/sdk_config.yml \
   --is-agree=true \
   --admin-key-file-paths=./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
   --admin-crt-file-paths=./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
   --tx-id=05a0e329c4c94e909575214b41ca516716bd8c83dea94c4c9616dea0910bf719
   ```

   > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氳繑鍥炵殑浜ゆ槗id闇€浣滀负鎶曠エ鍜屾煡璇㈢殑鍙傛暟
   >       >
   >          > multi sign vote resp: message:"OK" tx_id:"edd8d1227abf481cb2361f79381e1dfcb43ad313bb0c4e7ab9f79b0bfe063a3c" 

 - 鏍规嵁浜ゆ槗Id鏌ヨ绾夸笂澶氱浜ゆ槗淇℃伅

   ```sh
   ./cmc client contract system multi-sign query \
   --sdk-conf-path=./testdata/sdk_config.yml \
   --tx-id=05a0e329c4c94e909575214b41ca516716bd8c83dea94c4c9616dea0910bf719
   ```

   > 鏌ヨ缁撴灉濡備笅锛�
   >          >
   >             > multi sign query resp: {
   >                 "contract_name": "CONTRACT_MANAGE",
   >                 "message": "contract exist",
   >                 "method": "INIT_CONTRACT",
   >                 "payload": {
   >                   "chain_id": "chain1",
   >                   "contract_name": "MULTI_SIGN",
   >                   "method": "REQ",
   >                   "parameters": [
   >                     {
   >                       "key": "SYS_CONTRACT_NAME",
   >                       "value": "Q09OVFJBQ1RfTUFOQUdF"
   >                     },
   >                     {
   >                       "key": "SYS_METHOD",
   >                       "value": "SU5JVF9DT05UUkFDVA=="
   >                     },
   >                     {
   >                       "key": "CONTRACT_NAME",
   >                       "value": "Y29udHJhY3QxMDc="
   >                     },
   >                     {
   >                       "key": "CONTRACT_VERSION",
   >                       "value": "MS4w"
   >                     },
   >                     {
   >                       "key": "CONTRACT_BYTECODE",
   >                       "value": "xxx"
   >                     },
   >                     {
   >                       "key": "CONTRACT_RUNTIME_TYPE",
   >                       "value": "V0FTTUVS"
   >                     }
   >                   ],
   >                   "timestamp": 1640680677,
   >                   "tx_id": "06ae7aa4835e4ee4b6be7e94640ad7312e71971217504f5aaf7277cf20e43679"
   >                 },
   >                 "status": 3,
   >                 "vote_infos": [
   >                   {
   >                     "endorsement": {
   >                       "signature": "xxx",
   >                       "signer": {
   >                         "member_info": "xxx",
   >                         "member_type": 2
   >                       }
   >                     }
   >                   }
   >                 ]
   >               } 



 <span id="manage"></span>

#### 绯荤粺鍚堢害寮€鏀剧鐞�

瀵圭郴缁熷悎绾︾殑寮€鏀炬潈闄愯繘琛岀鐞嗗姛鑳�<br>

  涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
--sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
--grant-contract-list锛氭寚瀹氶渶瑕佸紑鏀剧殑绯荤粺鍚堢害鍒楄〃,浠ラ€楀彿鍒嗗壊鍚堢害鍚嶇О
--revoke-contract-list锛氭寚瀹氶渶瑕佸純鐢ㄧ殑绯荤粺鍚堢害鍒楄〃,浠ラ€楀彿鍒嗗壊鍚堢害鍚嶇О

admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin
--admin-crt-file-paths: admin绛惧悕鑰呯殑tls crt鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
      姣斿 ./wx-org1.chainmaker.org/admin1.tls.crt,./wx-org2.chainmaker.org/admin1.tls.crt
--admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
      姣斿 ./wx-org1.chainmaker.org/admin1.tls.key,./wx-org2.chainmaker.org/admin1.tls.key
  ```

  - 寮€鏀剧郴缁熷悎绾�

    ```sh
    ./cmc client contract system manage access-grant \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --grant-contract-list=DPOS_ERC20,DPOS_STAKE
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氬紑鏀惧悗鐨勫悎绾﹀彲姝e父浣跨敤
    >
    >   >   > access revoke contract grant: message:"OK" tx_id:"edd8d1227abf481cb2361f79381e1dfcb43ad313bb0c4e7ab9f79b0bfe063a3c" 


 - 寮冪敤绯荤粺鍚堢害

   ```sh
   ./cmc client contract system manage access-revoke \
   --sdk-conf-path=./testdata/sdk_config.yml \
   --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
   --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
   --revoke-contract-list=DPOS_ERC20,DPOS_STAKE
   ```

   > 濡備笅杩斿洖琛ㄧず鎴愬姛锛氬純鐢ㄥ悗鐨勫悎绾︿笉鍙甯镐娇鐢�
   >
   > access revoke contract resp: message:"OK" tx_id:"6137defb7f294079b88a99c37acc9c1377c4d952941c45a3a9468bf00c3c9674" 

 - 鏌ヨ寮冪敤鐨勭郴缁熷悎绾﹀垪琛�

   ```sh
   ./cmc client contract system manage access-query \
   --sdk-conf-path=./testdata/sdk_config.yml
   ```

   > 鏌ヨ缁撴灉濡備笅鎵€绀�
   >
   >   >   > query contract access resp: message:"SUCCESS" contract_result:<result:"[\"DPOS_ERC20\",\"DPOS_STAKE\"]" message:"OK" > tx_id:"f6f66b0f18684405a52b377a7a5397aa51cce94359544ac380bb2010a7e73027" 

  <br><br>

<span id="alias"></span>

#### 璇佷功鍒悕

  璇佷功鍒悕绠$悊銆傚寘鎷坊鍔犲埆鍚嶏紝鏇存柊鍒悕鐨勮瘉涔︼紝鏌ヨ鍒悕璇︾粏淇℃伅锛屽垹闄ゅ埆鍚嶃€�<br>

  > 1.璇佷功鍒悕鍙敮鎸丳ermissionedWithCert妯″紡鐨勭綉缁�

  > 2.闇€瑕佹彁鍓嶈缃畇dk閰嶇疆鏂囦欢涓璦lias锛屾瘮濡傝缃负 tools/testdata/sdk_config.yml 涓� alias: my_cert_alias

  涓昏鍙傛暟璇存槑濡備笅锛�

  ```sh
    --sdk-conf-path锛氭寚瀹歝mc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
    --cert-alias锛氭煡璇�/鏇存柊/鍒犻櫎 鏃� 鎸囧畾鐨勫埆鍚�
    --new-cert-path锛氭洿鏂� 鏃� 鎸囧畾鐨勬柊璇佷功璺緞
    --sync-result锛氭寚瀹氭槸鍚﹀悓姝ョ瓑寰呬氦鏄撴墽琛岀粨鏋滐紝榛樿涓篺alse锛屽鏋滆缃负true锛屽湪鍙戦€佸畬浜ゆ槗鍚庝細涓诲姩鏌ヨ浜ゆ槗鎵ц缁撴灉

    admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin
    --admin-crt-file-paths: admin绛惧悕鑰呯殑tls crt鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
        姣斿 ./wx-org1.chainmaker.org/admin1.tls.crt,./wx-org2.chainmaker.org/admin1.tls.crt
    --admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
        姣斿 ./wx-org1.chainmaker.org/admin1.tls.key,./wx-org2.chainmaker.org/admin1.tls.key
  ```

  - 娣诲姞鍒悕
    
    > sdk閰嶇疆鏂囦欢sdk_config.yml涓璦lias瀛楁閰嶇疆濂藉悗锛宑mc姣忔璇锋眰閾捐妭鐐规椂锛屽皢鑷姩妫€鏌ラ摼涓婃槸鍚﹀凡娣诲姞姝ゅ埆鍚嶏紝濡傛灉娌℃湁鍒欒嚜鍔ㄤ笂閾炬璇佷功鍒悕銆�
    
  - 鏌ヨ鍒悕

    ```sh
    ./cmc client certalias query --cert-alias=my_cert_alias --sdk-conf-path=./testdata/sdk_config.yml
    ```

  - 鏇存柊鎸囧畾鍒悕鎵€鍏宠仈鐨勮瘉涔�

    ```sh
    ./cmc client certalias update --cert-alias=my_cert_alias \
    --new-cert-path=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --sync-result=true
    ```

  - 鍒犻櫎鍒悕

    ```sh
    ./cmc client certalias delete --cert-alias=my_cert_alias \
    --sdk-conf-path=./testdata/sdk_config.yml \
    --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.key \
    --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.tls.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.tls.crt \
    --sync-result=true
    ```