# 闀垮畨閾綾mc宸ュ叿锛坧k锛�

## 绠€浠�

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

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

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

  ## 缂栬瘧&閰嶇疆

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

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

  ## 鑷畾涔夐厤缃�

  cmc 渚濊禆 sdk-go 閰嶇疆鏂囦欢銆�
  缂栬瘧&閰嶇疆 姝ラ浣跨敤鐨勬槸 [SDK閰嶇疆妯$増](https://git.chainmaker.org.cn/chainmaker/sdk-go/-/blob/master/testdata/sdk_config_pk.yml)
  鍙€氳繃淇敼 ~/chainmaker/chainmaker-go/tools/cmc/testdata/sdk_config_pk.yml 瀹炵幇鑷畾涔夐厤缃€�
  姣斿 `user-signkey-file-path` 鍙傛暟鍙缃负鏅€氱敤鎴锋垨admin鐢ㄦ埛鐨勭閽ヨ矾寰勩€傝缃悗cmc灏嗕細浠ュ搴旂敤鎴疯韩浠戒笌閾惧缓绔嬭繛鎺ャ€�
  鍏朵粬璇︾粏閰嶇疆椤硅鍙傜湅 ~/chainmaker/chainmaker-go/tools/cmc/testdata/sdk_config_pk.yml 涓殑娉ㄨВ銆�

  ## 鍔熻兘

  TBFT鍏辫瘑鍦烘櫙涓嬬殑cmc鎻愪緵鍔熻兘濡備笅: 

  - [绉侀挜绠$悊](#keyManage): 绉侀挜鐢熸垚鍔熻兘
  - [浜ゆ槗鍔熻兘](#sendRequest): 涓昏鍖呮嫭閾剧鐞嗐€佺敤鎴峰悎绾﹀彂甯冦€佸崌绾с€佸悐閿€銆佸喕缁撱€佽皟鐢ㄣ€佹煡璇㈢瓑鍔熻兘
  - [鏌ヨ閾句笂鏁版嵁](#queryOnChainData): 鏌ヨ閾句笂block鍜宼ransaction
  - [閾鹃厤缃甝(#chainConfig): 鏌ヨ鍙婃洿鏂伴摼閰嶇疆
  - [褰掓。&鎭㈠鍔熻兘](#archive): 灏嗛摼涓婃暟鎹浆绉诲埌鐙珛瀛樺偍涓婏紝褰掓。鍚庣殑鏁版嵁鍏峰鍙煡璇€€佸彲鎭㈠鍒伴摼涓婄殑鐗规€�
  - [鍦板潃杞崲](#address): 杞崲鎴愭寚瀹氱被鍨嬬殑鍦板潃銆傛敮鎸佽浆鎹㈡垚鑷充俊閾剧瓑绫诲瀷鐨勫湴鍧€
  - [浜ゆ槗姹燷(#txpool): 浜ゆ槗姹犵浉鍏虫煡璇㈠懡
  - [gas绠$悊](#gasManagement): gas绠$悊绫诲懡浠わ紝鍖呮嫭璁剧疆 gas admin銆佸厖鍊� gas 绛夊姛鑳姐€傚懡浠鍙傝€僣ert妯″紡](./鍛戒护琛屽伐鍏�.html#gasManagement)
  - [浜ゆ槗ID榛戝悕鍗曠鐞哴(#txBlackListManage):寮€鍚€佸叧闂€佹坊鍔犮€佸垹闄ゃ€佹煡璇㈢瓑鍔熻兘銆傚懡浠鍙傝€僣ert妯″紡](./鍛戒护琛屽伐鍏�.html#txBlackListManage)
  - [鍏辫瘑鎵╁睍鏁版嵁绠$悊](#consensusExtManage):閾句笂鍏辫瘑鎵╁睍鏁版嵁鐨勬柊澧炪€佷慨鏀圭瓑鍔熻兘

  [DPOS鍏辫瘑鍦烘櫙涓嬬殑cmc鍛戒护](#dpos)

  ### 绀轰緥锛圱BFT鍏辫瘑锛�

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

  #### 绉侀挜绠$悊

  鐢熸垚绉侀挜锛� 鐩墠鏀寔鐨勭畻娉曟湁SM2銆丒CC_P256锛屾湭鏉ュ皢鏀寔鏇村绠楁硶銆�
  **鍙傛暟璇存槑**: 

  ```sh
  ./cmc key gen -h 
  ```
  ```sh
  # 杩斿洖
  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="sendRequest"></span>

  #### 浜ゆ槗鍔熻兘

  ##### 鐢ㄦ埛鍚堢害

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

  ```sh
    sdk閰嶇疆鏂囦欢flag
    --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�

    濡傛灉鎯宠鐩杝dk閰嶇疆鏂囦欢涓殑閰嶇疆锛屽垯浣跨敤浠ヤ笅涓や釜flag涓旈兘蹇呭~锛涘涓嶄紶锛屽垯榛樿浣跨敤sdk閰嶇疆鏂囦欢涓殑閰嶇疆鍙傛暟
    --chain-id: 鎸囧畾閾綢d, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-signkey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
      
    鍏朵粬flags
    --byte-code-path: 鎸囧畾鍚堢害鐨剋asm鏂囦欢璺緞
    --contract-name: 鎸囧畾鍚堢害鍚嶇О
    --method: 鎸囧畾璋冪敤鐨勫悎绾︽柟娉曞悕绉�
    --runtime-type: 鎸囧畾鍚堢害鎵ц铏氭嫙鏈虹幆澧冿紝濡� WASMER | EVM | DOCKER_GO 绛�
    --version: 鎸囧畾鍚堢害鐨勭増鏈彿锛屽湪鍙戝竷鍜屽崌绾у悎绾︽椂浣跨敤
    --sync-result: 鎸囧畾鏄惁鍚屾绛夊緟浜ゆ槗鎵ц缁撴灉锛岄粯璁や负false锛屽鏋滆缃负true锛屽湪鍙戦€佸畬浜ゆ槗鍚庝細涓诲姩鏌ヨ浜ゆ槗鎵ц缁撴灉
    --params: 鎸囧畾鍙戝竷鍚堢害鎴栬皟鐢ㄥ悎绾︽椂鐨勫弬鏁颁俊鎭�
    --concurrency: 鎸囧畾璋冪敤鍚堢害骞跺彂鐨刧o routine锛岀敤浜庡帇鍔涙祴璇�
    --total-count-per-goroutine: 鎸囧畾鍗曚釜go routine鍙戦€佺殑浜ゆ槗鏁伴噺锛岀敤浜庡帇鍔涙祴璇曪紝鍜�--concurrency閰嶅悎浣跨敤
    --block-height: 鎸囧畾鍖哄潡楂樺害
    --tx-id: 鎸囧畾浜ゆ槗Id
    --with-rw-set: 鎸囧畾鑾峰彇鍖哄潡鏃舵槸鍚﹂檮甯﹁鍐欓泦锛岄粯璁ゆ槸false
    --abi-file-path: 璋冪敤evm鍚堢害鏃堕渶瑕佹寚瀹氳璋冪敤鍚堢害鐨刟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_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --sync-result=true \
    --params="{}"
    ```

  - 鍒涘缓evm鍚堢害

    ```sh
    ./cmc client contract user create \
    --contract-name=balance001 \
    --runtime-type=EVM \
    --byte-code-path=./testdata/balance-evm-demo/ledger_balance.bin \
    --abi-file-path=./testdata/balance-evm-demo/ledger_balance.abi \
    --version=1.0 \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --sync-result=true
    ```

  - 璋冪敤wasm鍚堢害

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

  - 璋冪敤evm鍚堢害

    evm鐨� 鈥損arams 鏄竴涓暟缁刯son鏍煎紡銆傚涓媢pdateBalance鏈変袱涓舰鍙傜涓€涓槸uint256绫诲瀷锛岀浜屼釜鏄痑ddress绫诲瀷銆�

    10000瀵瑰簲绗竴涓舰鍙倁int256鐨勫叿浣撳€硷紝0xa166c92f4c8118905ad984919dc683a7bdb295c1瀵瑰簲绗簩涓舰鍙俛ddress鐨勫叿浣撳€笺€�

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

  - 鏌ヨ鍚堢害

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

  - 鍗囩骇鍚堢害

    ```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_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --sync-result=true \
    --params="{}"
    ```

  - 鍐荤粨鍚堢害

    ```sh
    ./cmc client contract user freeze \
    --contract-name=fact \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --sync-result=true
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛: 鍐荤粨鍚庣殑鍚堢害鍐嶅幓鎵ц鏌ヨ銆佽皟鐢ㄥ悎绾﹀垯浼氬け璐�
    > 
    > freeze contract resp: message:鈥漁K鈥� contract_result:<result:鈥漿鈥渘ame鈥�:鈥漟act鈥�,鈥漹ersion鈥�:鈥�3.0鈥�,鈥漴untime_type鈥�:2,鈥漵tatus鈥�:1,鈥漜reator鈥�:{鈥渙rg_id鈥�:鈥漺x-org1.chainmaker.org鈥�,鈥漨ember_type鈥�:1,鈥漨ember_info鈥�:鈥漅l3cLAVPgLrri7z9blQWJUsNzPLxq1juKjL/jqhraBk=鈥潁}鈥� message:鈥漁K鈥� > tx_id:鈥�09841775173548ad9a8a39e2987a4f5115d59d50dd3448e8b09a83624dee5367鈥�

  - 瑙e喕鍚堢害

    ```sh
    ./cmc client contract user unfreeze \
    --contract-name=fact \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --sync-result=true
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛: 瑙e喕鍚庣殑鍚堢害鍙甯镐娇鐢�
    > 
    > unfreeze contract resp: message:鈥漁K鈥� contract_result:<result:鈥漿鈥渘ame鈥�:鈥漟act鈥�,鈥漹ersion鈥�:鈥�3.0鈥�,鈥漴untime_type鈥�:2,鈥漜reator鈥�:{鈥渙rg_id鈥�:鈥漺x-org1.chainmaker.org鈥�,鈥漨ember_type鈥�:1,鈥漨ember_info鈥�:鈥漅l3cLAVPgLrri7z9blQWJUsNzPLxq1juKjL/jqhraBk=鈥潁}鈥� message:鈥漁K鈥� > tx_id:鈥漟ccf024450c140dea999cc46ad24d381a679ce2142bd48b2a829abcd4f099866鈥�

  - 鍚婇攢鍚堢害

    ```sh
    ./cmc client contract user revoke \
    --contract-name=fact \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --sync-result=true
    ```

    > 濡備笅杩斿洖琛ㄧず鎴愬姛: 鍚婇攢鍚堢害鍚庯紝涓嶅彲鎭㈠锛屼笖涓嶈兘瀵硅鍚堢害鎵ц浠讳綍鎿嶄綔锛屽寘鎷煡璇€€�
    > 
    > revoke contract resp: message:鈥漁K鈥� contract_result:<result:鈥漿鈥渘ame鈥�:鈥漟act鈥�,鈥漹ersion鈥�:鈥�3.0鈥�,鈥漴untime_type鈥�:2,鈥漵tatus鈥�:2,鈥漜reator鈥�:{鈥渙rg_id鈥�:鈥漺x-org1.chainmaker.org鈥�,鈥漨ember_type鈥�:1,鈥漨ember_info鈥�:鈥漅l3cLAVPgLrri7z9blQWJUsNzPLxq1juKjL/jqhraBk=鈥潁}鈥� message:鈥漁K鈥� > tx_id:鈥漝971b57cf12c46ff8fe0d4f5897634c644fb802998f44360bb130f27ff54a10a鈥�

  - 鍚堢害鍚嶈浆鎹㈡垚鍚堢害鍦板潃
    > --address-type=0 鏄暱瀹夐摼鍦板潃绫诲瀷锛�--address-type=1 鏄嚦淇¢摼鍦板潃绫诲瀷

    ```sh
    ./cmc client contract name-to-addr fact --address-type=0 
    ```

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

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

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

  ```sh
    --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
    --chain-id: 鎸囧畾閾綢d
  ```

   

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

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

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

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

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

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

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

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

   

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

  #### 閾鹃厤缃�

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

  ```sh
    sdk閰嶇疆鏂囦欢flag
    --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�

    admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin锛堝綋鍓嶅彧鏈夌鐞嗗憳鐨勬坊鍔犲垹闄ら渶瑕佺敤鍒扮鐞嗗憳澶氱锛�
    --admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊
      
    濡傛灉鎯宠鐩杝dk閰嶇疆鏂囦欢涓殑閰嶇疆锛屽垯浣跨敤浠ヤ笅涓や釜flag涓旈兘蹇呭~锛涘涓嶄紶锛屽垯榛樿浣跨敤sdk閰嶇疆鏂囦欢涓殑閰嶇疆鍙傛暟
    --chain-id: 鎸囧畾閾綢d, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
    --user-signkey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
      
    --block-interval: 鍑哄潡鏃堕棿 鍗曚綅ms
    --tx-parameter-size: 浜ゆ槗鍙傛暟鏈€澶ч檺鍒� 鍗曚綅:MB
    --trust-root-org-id: 澧炲姞/鍒犻櫎/鏇存柊缁勭粐绠$悊鍛樺叕閽ユ椂鎸囧畾鐨勭粍缁嘔d
    --trust-root-path: 绠$悊鍛樺叕閽ョ洰褰�
    --node-id: 澧炲姞/鍒犻櫎/鏇存柊鍏辫瘑鑺傜偣Id鏃舵寚瀹氱殑鑺傜偣Id
    --node-ids: 澧炲姞/鏇存柊鍏辫瘑鑺傜偣Org鏃舵寚瀹氱殑鑺傜偣Id鍒楄〃
    --node-org-id: 澧炲姞/鍒犻櫎/鏇存柊鍏辫瘑鑺傜偣Id,Org鏃舵寚瀹氳妭鐐圭殑缁勭粐Id 
    --address-type: 鍦板潃绫诲瀷 ChainMaker:0, 鑷充俊閾�:1
    --block-timestamp-verify:  鏄惁寮€鍚尯鍧楁椂闂存埑鏍¢獙锛坱rue涓烘牎楠岋紝false涓轰笉鏍¢獙锛�
    --block-timeout: 鍖哄潡鏃堕棿鎴虫牎楠岃寖鍥达紙鍙湪寮€鍚尯鍧楁椂闂存埑鏍¢獙鍔熻兘鍚庣敓鏁堬紝瑙勫垯: 锝滃綋鍓嶆椂闂�-鍖哄潡鏃堕棿鎴充腑鏃堕棿锝� <= blockTimeOut锛�
  ```

   

  - 鏌ヨ閾鹃厤缃�

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

   

  - 鏇存柊鍑哄潡鏃堕棿

    ```sh
    ./cmc client chainconfig block updateblockinterval \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --block-interval 1000
    ```

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

    ```sh
    ./cmc client chainconfig block updatetxparametersize \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --tx-parameter-size 10 
    ```

  - 寮€鍚尯鍧楁椂闂存埑鏍¢獙

    ```sh
    ./cmc client chainconfig block updateblocktimestamp \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --block-timestamp-verify=true \
    --block-timeout=10
    ```

  - 娣诲姞鍏辫瘑鑺傜偣

    ```sh
    ./cmc client chainconfig consensusnodeid add \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --node-id=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
    --node-org-id=public
    ```

  - 鍒犻櫎鍏辫瘑鑺傜偣

    ```sh
    ./cmc client chainconfig consensusnodeid remove \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --node-id=QmXxeLkNTcvySPKMkv3FUqQgpVZ3t85KMo5E4cmcmrexrC \
    --node-org-id=public
    ```

  - 鏇存柊鍏辫瘑鑺傜偣锛堝崟涓級

    ```sh
    ./cmc client chainconfig consensusnodeid update \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --node-id=QmXxeLkNTcvySPKMkv3FUqQgpVZ3t85KMo5E4cmcmrexrC \
    --node-id-old=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
    --node-org-id=public
    ```

  - 鏇存柊鍏辫瘑鑺傜偣锛堝涓級

    ```sh
    ./cmc client chainconfig consensusnodeorg update \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --node-ids=QmbUjZPooufuTbRBxzVx546xyLpwibwsQXRPD6SwWfZMgx,QmP2GcRYFh2xQ2rh4CXsCN1d9CMxk9SktygXiwFKG487mo,QmSJGZxUSq5xXGZ68myuHcAqHsExioS8Bt87WZ3LsqRauC,QmcVEe4uVS2b6zNVKMzL57CdDhJtXey4wcktPdDv3JgyDg \
    --node-org-id=public
    ```

  - 鏇存柊绠$悊鍛樺叕閽�

    ```sh
    ./cmc client chainconfig trustroot update \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --trust-root-org-id=public \
    --trust-root-path=./testdata/crypto-config/node1/admin/admin1/admin1.pem,./testdata/crypto-config/node1/admin/admin2/admin2.pem,./testdata/crypto-config/node1/admin/admin3/admin3.pem
    ```

  - 寮€鍚�/鍏抽棴閾剧殑 gas 鍔熻兘

    ```sh
    ./cmc client gas \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --gas-enable=true
    ```


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

  - 寮€鍚彧鍏佽鍒涘缓鑰呭崌绾у悎绾﹀姛鑳�

    ```sh
    ./cmc client contract user invoke \
     --contract-name=CHAIN_CONFIG \
     --method=ENABLE_ONLY_CREATOR_UPGRADE \
     --sdk-conf-path=./testdata/sdk_config_pk.yml \
     --params="{}" \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
     --sync-result=true \
     --result-to-string=true
    ```
  - 鍏抽棴鍙厑璁稿垱寤鸿€呭崌绾у悎绾﹀姛鑳�
    ```sh
    ./cmc client contract user invoke \
     --contract-name=CHAIN_CONFIG \
     --method=DISABLE_ONLY_CREATOR_UPGRADE \
     --sdk-conf-path=./testdata/sdk_config_pk.yml \
     --params="{}" \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
     --sync-result=true \
     --result-to-string=true
    ```


<span id="archive"></span>
#### 褰掓。&鎭㈠鍔熻兘

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

  


##### Dump(鍦ㄥ綊妗d腑蹇冨拰閾惧mysql涓€夋嫨涓€绉嶄娇鐢�)  
  dump鎸囦护浠庨摼鑺傜偣涓婃煡璇㈡暟鎹�,灏嗘暟鎹啓鍏ュ埌閾惧瀛樺偍(褰撳墠鏀寔MySQL鍜屽綊妗d腑蹇�)  
- Dump 鍒伴摼澶栨暟鎹粨搴� 
> 娉ㄦ剰: mysql闇€瑕佽缃ソ sql_mode 浠oot鐢ㄦ埛鎵ц set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';  
- 閾惧mysql: sdk_config_pk.yaml
  ```yml
  archive:
      type: "mysql"  
      dest: "root:123456:localhost:3306"
  ```
- 閾惧mysql: 鏁版嵁琛ㄨ璁¤鏄�
  - 琛ㄤ俊鎭�
       ![DataStructure-ARCHIVE-mysql_table.jpeg](../images/DataStructure-ARCHIVE-mysql_table.jpeg)   
       
  - 琛ㄥ瓧娈�        
      ![DataStructure-ARCHIVE-mysql_table_fields.jpeg](../images/DataStructure-ARCHIVE-mysql_table_fields.jpeg)
- Dump褰掓。涓績: sdk_config_pk.yml锛堟帹鑽愪娇鐢級
  ```yml
  archive:
      type: "archivecenter"  # archivecenter 褰掓。涓績, mysql mysql鏁版嵁搴�
  ```
    - 娉ㄥ唽閾惧埌褰掓。涓績
  ```shell
  # 鑾峰彇鍒涗笘鍖哄潡
  ./cmc query block-by-height 0 --chain-id=chain1 --sdk-conf-path=./testdata/sdk_config_pk.yml
  ```
  ```sh
  # 鏍规嵁涓婇潰鑾峰彇鐨勫垱涓栧尯鍧楁嬁鍒癰lock_hash(濡�: PnipOpT7Et8m5sqdHuanYIwibSBZmZaXafhublJowVE=)
  ./cmc util base64tohex  PnipOpT7Et8m5sqdHuanYIwibSBZmZaXafhublJowVE= 
   ```
  ```sh
  # 杩斿洖 
  (鑾峰彇杩斿洖鐨勫垱涓栧尯鍧梙ash鐨刪ex鏍煎紡鏁版嵁: 3e78a93a94fb12df26e6ca9d1ee6a7608c226d205999969769f86e6e5268c151)
  ```
    - 灏嗕笂闈㈣幏寰楃殑鍒涗笘鍖哄潡hash鐨刪ex鏍煎紡鏁版嵁鏀惧埌sdk_config_pk.yml涓�
  ```yml
  archive_center_config:
     chain_genesis_hash: 3e78a93a94fb12df26e6ca9d1ee6a7608c226d205999969769f86e6e5268c151
  ```
    - dump鏁版嵁
  ```shell
  # 杞瓨鍖哄潡鍒伴摼澶栧瓨鍌�
  ./cmc archive dump 100 --sdk-conf-path ./testdata/sdk_config_pk.yml --mode quick
    ```
  ```sh
  # 鏌ヨ褰掓。涓績褰撳墠宸插綊妗f暟鎹姸鎬�
  ./cmc archive query archived-status --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```


##### 鑺傜偣褰掓。  
  archive鎸囦护鍚戦摼鑺傜偣鍙戦€佹竻鐞嗗尯鍧楁暟鎹懡浠�  

```shell
# 鏌ヨ閾句笂褰撳墠宸插綊妗f暟鎹姸鎬佸懡浠�
./cmc archive query chain-archived-status --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```
  ```sh
# 娓呯悊閾句笂鍖哄潡鏁版嵁鍛戒护
./cmc archive archive 10000 --timeout 20  --sdk-conf-path ./testdata/sdk_config_pk.yml
```

##### 鑺傜偣鏁版嵁鎭㈠  
  restore鎸囦护浠庨摼澶栧瓨鍌�(MySQL/褰掓。涓績)涓煡璇㈠嚭鍖哄潡鏁版嵁,灏嗗尯鍧楁暟鎹仮澶嶅埌閾捐妭鐐逛笂

```shell
# 鎭㈠閾句笂鍖哄潡鏁版嵁鍛戒护,鎭㈠鍒版寚瀹氶珮搴�,鎭㈠杩囩▼鎸夌収鍖哄潡鍧楅珮鍊掑簭鎭㈠
./cmc archive restore 3000  --sdk-conf-path ./testdata/sdk_config_pk.yml
```

##### 鏁版嵁浠撳簱鏁版嵁鏌ヨ

```shell
# 鏌ヨ褰掓。涓績褰撳墠宸插綊妗f暟鎹姸鎬佸懡浠�
./cmc archive query archived-status --sdk-conf-path ./testdata/sdk_config_pk.yml
```
```sh
# 鏌ヨ褰掓。涓績,鏍规嵁楂樺害鏌ュ尯鍧楀懡浠�
./cmc archive query block-by-height 20  --sdk-conf-path ./testdata/sdk_config_pk.yml
```
```sh
# 鏌ヨ褰掓。涓績,鏍规嵁txId鏌ヨ鍖哄潡鍛戒护
./cmc archive query block-by-txid 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be --sdk-conf-path ./testdata/sdk_config_pk.yml
```
```sh
# 鏌ヨ褰掓。涓績,鏍规嵁txId鏌ヨ浜ゆ槗鍛戒护
./cmc archive query tx 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be  --sdk-conf-path ./testdata/sdk_config_pk.yml
```
```sh
# 鏌ヨ褰掓。涓績,鏍规嵁block hash鏌ヨ鍖哄潡鍛戒护
./cmc archive query block-by-hash 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be --sdk-conf-path ./testdata/sdk_config_pk.yml
```

<span id="gasManagement"></span>

  #### gas绠$悊

  gas绠$悊绫诲懡浠わ紝鍖呮嫭璁剧疆 gas admin銆佸厖鍊� gas 绛夊姛鑳�

  ```sh
    --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
    --admin-key-file-paths: 澶氱鏃讹紝鍏朵粬admin鐨勭閽ヨ矾寰勶紝澶氫釜鏃剁敤閫楀彿鍒嗗紑銆�
  ```

  - 鍚敤 gas 鍔熻兘

    ```sh
    ./cmc client gas --gas-enable=true \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node2/admin/admin2/admin2.key,./testdata/crypto-config/node3/admin/admin3/admin3.key,./testdata/crypto-config/node4/admin/admin4/admin4.key
    ```

  - 璁剧疆 gas admin

    ```sh
    ./cmc gas set-admin [gas璐﹀彿鍦板潃銆傚鏋滀笉浼犲垯榛樿璁剧疆sender涓� gas admin] \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key
    ```

  - 鏌ヨ gas admin

    ```sh
    ./cmc gas get-admin --sdk-conf-path=./testdata/sdk_config_pk.yml
    ```

  - 鍏呭€� gas

    ```sh
    ./cmc gas recharge \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --address=璐︽埛鍦板潃 \
    --amount=1000000
    ```

  - 鏌ヨ gas 浣欓

    ```sh
    ./cmc gas get-balance \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --address=璐︽埛鍦板潃
    ```

  - 閫€杩� gas

    ```sh
    ./cmc gas refund \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --address=璐︽埛鍦板潃 \
    --amount=1
    ```

  - 鍐荤粨 gas 璐︽埛

    ```sh
    ./cmc gas frozen \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --address=璐︽埛鍦板潃
    ```

  - 瑙e喕 gas 璐︽埛

    ```sh
    ./cmc gas unfrozen \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --address=璐︽埛鍦板潃
    ```

  - 鏌ヨ gas 璐︽埛鐨勭姸鎬侊紝true: 璐︽埛鍙敤锛宖alse: 璐︽埛琚喕缁�

    ```sh
    ./cmc gas account-status \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --address=璐︽埛鍦板潃
    ```

    <span id="gas-val-config-pk"></span>
  - 璁剧疆鍚堢害璋冪敤鏃朵娇鐢ㄧ殑鍩虹 gas 鍊�
    ```sh
    ./cmc gas set-default-gas \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --amount=2 \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --sync-result=true
    ```

  - 璁剧疆鍚堢害璋冪敤鏃剁敤浜庤绠楃殑 gas 浠锋牸
    ```sh
    ./cmc gas set-default-gas-price \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --price=0.2 \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --sync-result=true
    ```
  - 璁剧疆鍚堢害瀹夎鏃朵娇鐢ㄧ殑鍩虹 gas 鍊�
    ```sh
    ./cmc gas set-install-base-gas \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --amount=200000 \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --sync-result=true
    ```

  - 璁剧疆鍚堢害瀹夎鏃剁敤浜庤绠楃殑 gas 浠锋牸
    ```sh
    ./cmc gas set-install-gas-price \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --price=0.1 \
    --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
    --sync-result=true
    ```

    <span id="gas-payer-pk"></span>
  - gas 浠f墸鍔熻兘

    cmc 鍛戒护鏀寔鐢ㄦ埛鑷富璁剧疆鎵h垂璐﹀彿锛屾敮浠樹氦鏄撹垂鐢紝鍛戒护濡備笅: 

    ```sh
    ./cmc client contract user invoke \
    --contract-name=fact \
    --method=save \
    --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --params="{\"file_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"6543234\"}" \
    --payer-key-file-path=./testdata/crypto-config/node1/user/client1/client1.key \
    --gas-limit=600000 \
    --sync-result=true
    ```
    鍏朵腑锛�--payer-key-file-path 鍙傛暟鎸囧畾鐨勬槸鏀粯璇ョ瑪浜ゆ槗璐圭敤鐨勮处鍙峰搴旂殑绉侀挜鏂囦欢

<span id="address"></span>

  #### 鍦板潃杞崲

  杞崲鎴愰暱瀹夐摼绛夌被鍨嬬殑鍦板潃

  ```sh
  --hash-type: 鎸囧畾鏍规嵁鍏挜璁$畻鍦板潃鏃朵娇鐢ㄧ殑 Hash 绠楁硶绫诲瀷, 榛樿涓� 0 锛屽嵆SAH256銆傛墍鏀寔鐨� Hash 绫诲瀷濡備笅: 
  0: SHA256
  1: SHA3_256
  2: SM3
  ```

  - 鍏挜pem杞崲鎴愬湴鍧€

    ```shell
    ./cmc address pk-to-addr ./testdata/crypto-config/node1/admin/admin1/admin1.pem \
    --hash-type=0
    ```

  - public key DER hex杞崲鎴愬湴鍧€

    ```shell
    ./cmc address hex-to-addr 3059301306072a8648ce3d020106082a811ccf5501822d034200044a4c24cf037b0c7a027e634b994a5fdbcd0faa718ce9053e3f75fcb9a865523a605aff92b5f99e728f51a924d4f18d5819c42f9b626bdf6eea911946efe7442d \
     --hash-type=0
    ```

  - 鍚堢害鍚嶈浆鎹㈡垚鍦板潃

    ```shell
    ./cmc address name-to-addr my_cool_contract_name
    ```

<span id="consensusExtManage"></span>
#### 鍏辫瘑鎵╁睍鏁版嵁绠$悊
- 鏂板鍏辫瘑鎵╁睍鏁版嵁

  ```sh
  ./cmc client chainconfig consensusextra add \
  --extra-config-key=test_key \
  --extra-config-value=test_value \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key
  ```

- 鏇存柊鍏辫瘑鎵╁睍鏁版嵁

  ```sh
  ./cmc client chainconfig consensusextra update \
  --extra-config-key=test_key \
  --extra-config-value=new_test_value \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key
  ```

- 鍒犻櫎鍏辫瘑鎵╁睍鏁版嵁

  ```sh
  ./cmc client chainconfig consensusextra delete \
  --extra-config-key=test_key \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key
  ```


<span id="dpos"></span>

### 绀轰緥锛圖POS鍏辫瘑锛�

#### 绉侀挜绠$悊

鐢熸垚绉侀挜锛� 鐩墠鏀寔鐨勭畻娉曟湁SM2銆丒CC_P256锛屾湭鏉ュ皢鏀寔鏇村绠楁硶銆� **鍙傛暟璇存槑**: 

```
$ ./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 ./
  ```

#### 浜ゆ槗鍔熻兘

##### 鐢ㄦ埛鍚堢害

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

```
  sdk閰嶇疆鏂囦欢flag
  --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�

  瑕嗙洊sdk閰嶇疆flags锛屼笉浼犲垯浣跨敤sdk閰嶇疆锛屽鏋滄兂瑕嗙洊sdk鐨勯厤缃紝鍒欎互涓嬩袱涓猣lag閮藉繀濉�
  --chain-id: 鎸囧畾閾綢d, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
  --user-signkey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�

  鍏朵粬flags
  --byte-code-path: 鎸囧畾鍚堢害鐨剋asm鏂囦欢璺緞
  --contract-name: 鎸囧畾鍚堢害鍚嶇О
  --method: 鎸囧畾璋冪敤鐨勫悎绾︽柟娉曞悕绉�
  --runtime-type: 鎸囧畾鍚堢害鎵ц铏氭嫙鏈虹幆澧冿紝濡� WASMER | EVM | DOCKER_GO 绛�
  --version: 鎸囧畾鍚堢害鐨勭増鏈彿锛屽湪鍙戝竷鍜屽崌绾у悎绾︽椂浣跨敤
  --sync-result: 鎸囧畾鏄惁鍚屾绛夊緟浜ゆ槗鎵ц缁撴灉锛岄粯璁や负false锛屽鏋滆缃负true锛屽湪鍙戦€佸畬浜ゆ槗鍚庝細涓诲姩鏌ヨ浜ゆ槗鎵ц缁撴灉
  --params: 鎸囧畾鍙戝竷鍚堢害鎴栬皟鐢ㄥ悎绾︽椂鐨勫弬鏁颁俊鎭�
  --concurrency: 鎸囧畾璋冪敤鍚堢害骞跺彂鐨刧o routine锛岀敤浜庡帇鍔涙祴璇�
  --total-count-per-goroutine: 鎸囧畾鍗曚釜go routine鍙戦€佺殑浜ゆ槗鏁伴噺锛岀敤浜庡帇鍔涙祴璇曪紝鍜�--concurrency閰嶅悎浣跨敤
  --block-height: 鎸囧畾鍖哄潡楂樺害
  --tx-id: 鎸囧畾浜ゆ槗Id
  --with-rw-set: 鎸囧畾鑾峰彇鍖哄潡鏃舵槸鍚﹂檮甯﹁鍐欓泦锛岄粯璁ゆ槸false
  --abi-file-path: 璋冪敤evm鍚堢害鏃堕渶瑕佹寚瀹氳璋冪敤鍚堢害鐨刟bi鏂囦欢璺緞锛屽: --abi-file-path=./testdata/balance-evm-demo/ledger_balance.abi
```

- 鍒涘缓wasm鍚堢害

  ```
  ./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_pk.yml \
  --sync-result=true \
  --params="{}"
  ```

- 鍒涘缓evm鍚堢害

  ```
  ./cmc client contract user create \
  --contract-name=balance001 \
  --runtime-type=EVM \
  --byte-code-path=./testdata/balance-evm-demo/ledger_balance.bin \
  --abi-file-path=./testdata/balance-evm-demo/ledger_balance.abi \
  --version=1.0 \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --sync-result=true
  ```

- 璋冪敤wasm鍚堢害

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

- 璋冪敤evm鍚堢害

  evm鐨� 鈥損arams 鏄竴涓暟缁刯son鏍煎紡銆傚涓媢pdateBalance鏈変袱涓舰鍙傦紝绗竴涓槸uint256绫诲瀷锛岀浜屼釜鏄痑ddress绫诲瀷銆�

  10000瀵瑰簲绗竴涓舰鍙倁int256鐨勫叿浣撳€硷紝0xa166c92f4c8118905ad984919dc683a7bdb295c1瀵瑰簲绗簩涓舰鍙俛ddress鐨勫叿浣撳€笺€�

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

- 鏌ヨ鍚堢害

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

- 鍗囩骇鍚堢害

  ```
  ./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_pk.yml \
  --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
  --sync-result=true \
  --params="{}"
  ```

- 鍐荤粨鍚堢害

  ```
  ./cmc client contract user freeze \
  --contract-name=fact \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
  --sync-result=true
  ```

- 瑙e喕鍚堢害

  ```
  ./cmc client contract user unfreeze \
  --contract-name=fact \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
  --sync-result=true
  ```

- 鍚婇攢鍚堢害

  ```
  ./cmc client contract user revoke \
  --contract-name=fact \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
  --sync-result=true
  ```

##### 绯荤粺鍚堢害

###### DPoS 璁$畻鍦板潃

- 鐢ㄦ埛鍏挜璁$畻鍑虹敤鎴风殑鍦板潃

  ```
  ./cmc cert userAddr --pubkey-cert-path=./testdata/crypto-config/node1/user/client1/client1.pem --sdk-conf-path=./testdata/sdk_config_pk.yml
  ```

- 鍏辫瘑鑺傜偣node-id璁$畻

  ```
  ./cmc cert nid --node-pk-path=./testdata/crypto-config/node1/node1.pem
  ```

###### DPoS-ERC20 绯荤粺鍚堢害

- 澧炲彂Token

  ```
  ./cmc client contract system mint \
  --amount=100000000 \
  --address=6CeSsjU5M62Ee3Gx9umUX6nXJoaBkWYufQdTZqEJM5di \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key \
  --sync-result=true
  ```

- 杞处

  ```
  ./cmc client contract system transfer \
  --amount=100000000 \
  --address=6CeSsjU5M62Ee3Gx9umUX6nXJoaBkWYufQdTZqEJM5di \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ浣欓

  ```
  ./cmc client contract system balance-of \
  --address=6CeSsjU5M62Ee3Gx9umUX6nXJoaBkWYufQdTZqEJM5di \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ鍚堢害绠$悊鍦板潃

  ```
  ./cmc client contract system owner \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨERC20鍚堢害鐨勭簿搴�

  ```
  ./cmc client contract system decimals \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ Token 鎬讳緵搴旈噺

  ```
  ./cmc client contract system total \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

###### DPoS-Stake 绯荤粺鍚堢害

- 鏌ヨ鎵€鏈夌殑鍊欓€変汉

  ```
  ./cmc client contract system all-candidates \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ鎸囧畾楠岃瘉浜虹殑淇℃伅

  ```
  ./cmc client contract system get-validator \
  --address=2W5SWDgx3kVSDmpRvHw351K4KaBx8QiUNBaTtGsFCWWH \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鎶垫娂鏉冪泭鍒伴獙璇佷汉

  ```
  ./cmc client contract system delegate \
  --address=2W5SWDgx3kVSDmpRvHw351K4KaBx8QiUNBaTtGsFCWWH \
  --amount=2500000 \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key \
  --sync-result=true
  ```

- 鏌ヨ鎸囧畾鍦板潃鐨勬姷鎶间俊鎭�

  ```
  ./cmc client contract system get-delegations-by-address \
  --address=2W5SWDgx3kVSDmpRvHw351K4KaBx8QiUNBaTtGsFCWWH \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ鎸囧畾楠岃瘉浜虹殑鎶垫娂淇℃伅

  ```
  ./cmc client contract system get-user-delegation-by-validator \
  --delegator=ADZTrzVF9SuvQqmn9YTAJiwnLCnXonMTj6Bq1HRiwVnR \
  --validator=ADZTrzVF9SuvQqmn9YTAJiwnLCnXonMTj6Bq1HRiwVnR \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 浠庨獙璇佷汉瑙i櫎鎶垫娂鐨勬潈鐩�

  ```
  ./cmc client contract system undelegate \
  --address=ADZTrzVF9SuvQqmn9YTAJiwnLCnXonMTj6Bq1HRiwVnR \
  --amount=100000000 \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key \
  --sync-result=true
  ```

- 鏌ヨ鎸囧畾涓栦唬淇℃伅

  ```
  ./cmc client contract system read-epoch-by-id \
  --epoch-id=1 \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ褰撳墠涓栦唬淇℃伅

  ```
  ./cmc client contract system read-latest-epoch \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- Stake鍚堢害涓缃獙璇佷汉鐨凬odeID

  ```
  ./cmc client contract system set-node-id \
  --node-id="QmWwNupMzs2GWyPXaUK3BvgvuZN74qxyz3rHaGioWDLX3D" \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key \
  --sync-result=true
  ```

- Stake鍚堢害涓煡璇㈤獙璇佷汉鐨凬odeID

  ```
  ./cmc client contract system get-node-id \
  --address=7E9czQBNz99iBfy4EDb7SUB9HxV4rQZjiXcnwBb3UFYk \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ楠岃瘉浜鸿妭鐐圭殑鏈€灏戣嚜鎴戞姷鎶兼暟閲�

  ```
  ./cmc client contract system min-self-delegation \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ涓栦唬涓殑楠岃瘉浜烘暟

  ```
  ./cmc client contract system validator-number \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ涓栦唬涓殑鍖哄潡鏁伴噺

  ```
  ./cmc client contract system epoch-block-number \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨStake鍚堢害鐨勭郴缁熷湴鍧€

  ```
  ./cmc client contract system system-address \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

- 鏌ヨ鏀跺埌瑙h川鎶奸€€娆鹃棿闅旂殑涓栦唬鏁�

  ```
  ./cmc client contract system unbonding-epoch-number \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --chain-id=chain1 \
  --user-signkey-file-path=./testdata/crypto-config/node1/user/client1/client1.key
  ```

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

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

```
  --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
  --chain-id: 鎸囧畾閾綢d
```

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

  ```
  #濡傛灉涓嶄紶 blockheight 琛ㄧず鏌ヨ鏈€楂樺尯鍧�
  ./cmc query block-by-height [blockheight] \
  --chain-id=chain1 \
  --sdk-conf-path=./testdata/sdk_config_pk.yml
  ```

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

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

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

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

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

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

#### 閾鹃厤缃�

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

```
  sdk閰嶇疆鏂囦欢flag
  --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�

  admin绛惧悕鑰協lags锛屾绫籪lag鐨勯『搴忓強涓暟蹇呴』淇濇寔涓€鑷达紝涓旇嚦灏戜紶鍏ヤ竴涓猘dmin锛堝綋鍓嶅彧鏈夌鐞嗗憳鐨勬坊鍔犲垹闄ら渶瑕佺敤鍒扮鐞嗗憳澶氱锛�
  --admin-key-file-paths: admin绛惧悕鑰呯殑tls key鏂囦欢鐨勮矾寰勫垪琛�. 鍗曠妯″紡涓嬪彧闇€瑕佸~鍐欎竴涓嵆鍙�, 绂荤嚎澶氱妯″紡涓嬪涓渶瑕佺敤閫楀彿鍒嗗壊

  瑕嗙洊sdk閰嶇疆flags锛屼笉浼犲垯浣跨敤sdk閰嶇疆锛屽鏋滄兂瑕嗙洊sdk鐨勯厤缃紝鍒欎互涓嬩袱涓猣lag閮藉繀濉�
  --chain-id: 鎸囧畾閾綢d, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�
  --user-signkey-file-path: 鎸囧畾鍙戦€佷氦鏄撶殑鐢ㄦ埛sign绉侀挜璺緞, 浼氳鐩杝dk閰嶇疆鏂囦欢璇诲彇鐨勯厤缃�

  --block-interval: 鍑哄潡鏃堕棿 鍗曚綅ms
  --tx-parameter-size: 浜ゆ槗鍙傛暟鏈€澶ч檺鍒� 鍗曚綅:MB
  --trust-root-org-id: 澧炲姞/鍒犻櫎/鏇存柊缁勭粐绠$悊鍛樺叕閽ユ椂鎸囧畾鐨勭粍缁嘔d
  --trust-root-path: 绠$悊鍛樺叕閽ョ洰褰�
  --node-id: 澧炲姞/鍒犻櫎/鏇存柊鍏辫瘑鑺傜偣Id鏃舵寚瀹氱殑鑺傜偣Id
  --node-ids: 澧炲姞/鏇存柊鍏辫瘑鑺傜偣Org鏃舵寚瀹氱殑鑺傜偣Id鍒楄〃
  --node-org-id: 澧炲姞/鍒犻櫎/鏇存柊鍏辫瘑鑺傜偣Id,Org鏃舵寚瀹氳妭鐐圭殑缁勭粐Id 
```

- 鏌ヨ閾鹃厤缃�

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

- 鏇存柊鍑哄潡鏃堕棿

  ```
  ./cmc client chainconfig block updateblockinterval \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
  --block-interval 1000
  ```

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

  ```
  ./cmc client chainconfig block updatetxparametersize \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
  --tx-parameter-size 10 
  ```
  
- 鏇存柊绠$悊鍛樺叕閽�(org-id=public)

  ```
  ./cmc client chainconfig trustroot update \
  --sdk-conf-path=./testdata/sdk_config_pk.yml \
  --user-signkey-file-path=./testdata/crypto-config/node1/admin/admin1/admin1.key \
  --admin-key-file-paths=./testdata/crypto-config/node1/admin/admin1/admin1.key,./testdata/crypto-config/node1/admin/admin2/admin2.key,./testdata/crypto-config/node1/admin/admin3/admin3.key \
  --trust-root-org-id=public \
  --trust-root-path=./testdata/crypto-config/node1/admin/admin1/admin1.pem,./testdata/crypto-config/node1/admin/admin2/admin2.pem,./testdata/crypto-config/node1/admin/admin3/admin3.pem
  ```

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

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

  


##### Dump(鍦ㄥ綊妗d腑蹇冨拰閾惧mysql涓€夋嫨涓€绉嶄娇鐢�)  
  dump鎸囦护浠庨摼鑺傜偣涓婃煡璇㈡暟鎹�,灏嗘暟鎹啓鍏ュ埌閾惧瀛樺偍(褰撳墠鏀寔MySQL鍜屽綊妗d腑蹇�)  
- Dump 鍒伴摼澶栨暟鎹粨搴� 
> 娉ㄦ剰: mysql闇€瑕佽缃ソ sql_mode 浠oot鐢ㄦ埛鎵ц set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';  
- 閾惧mysql: sdk_config_pk.yaml
  ```yml
  archive:
      type: "mysql"  
      dest: "root:123456:localhost:3306"
  ```
- 閾惧mysql: 鏁版嵁琛ㄨ璁¤鏄�
  - 琛ㄤ俊鎭�
       ![DataStructure-ARCHIVE-mysql_table.jpeg](../images/DataStructure-ARCHIVE-mysql_table.jpeg)   
       
  - 琛ㄥ瓧娈�        
      ![DataStructure-ARCHIVE-mysql_table_fields.jpeg](../images/DataStructure-ARCHIVE-mysql_table_fields.jpeg)
- Dump褰掓。涓績: sdk_config_pk.yml锛堟帹鑽愪娇鐢級
  ```yml
  archive:
      type: "archivecenter"  # archivecenter 褰掓。涓績, mysql mysql鏁版嵁搴�
  ```
    - 娉ㄥ唽閾惧埌褰掓。涓績
  ```shell
  # 鑾峰彇鍒涗笘鍖哄潡
  ./cmc query block-by-height 0 --chain-id=chain1 --sdk-conf-path=./testdata/sdk_config_pk.yml
  # 鏍规嵁涓婇潰鑾峰彇鐨勫垱涓栧尯鍧楁嬁鍒癰lock_hash(濡�: PnipOpT7Et8m5sqdHuanYIwibSBZmZaXafhublJowVE=)
  ./cmc util base64tohex  PnipOpT7Et8m5sqdHuanYIwibSBZmZaXafhublJowVE= 
  (鑾峰彇杩斿洖鐨勫垱涓栧尯鍧梙ash鐨刪ex鏍煎紡鏁版嵁: 3e78a93a94fb12df26e6ca9d1ee6a7608c226d205999969769f86e6e5268c151)
  ```
    - 灏嗕笂闈㈣幏寰楃殑鍒涗笘鍖哄潡hash鐨刪ex鏍煎紡鏁版嵁鏀惧埌sdk_config_pk.yml涓�
  ```yml
  archive_center_config:
     chain_genesis_hash: 3e78a93a94fb12df26e6ca9d1ee6a7608c226d205999969769f86e6e5268c151
  ```
    - dump鏁版嵁
  ```shell
  # 杞瓨鍖哄潡鍒伴摼澶栧瓨鍌�
  ./cmc archive dump 100 --sdk-conf-path ./testdata/sdk_config_pk.yml --mode quick
  ```  
  ```shell
  # 鏌ヨ褰掓。涓績褰撳墠宸插綊妗f暟鎹姸鎬�
  ./cmc archive query archived-status --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```


##### 鑺傜偣褰掓。  
  archive鎸囦护鍚戦摼鑺傜偣鍙戦€佹竻鐞嗗尯鍧楁暟鎹懡浠�  

```shell
# 鏌ヨ閾句笂褰撳墠宸插綊妗f暟鎹姸鎬佸懡浠�
./cmc archive query chain-archived-status --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```  
  ```shell
# 娓呯悊閾句笂鍖哄潡鏁版嵁鍛戒护
./cmc archive archive 10000 --timeout 20  --sdk-conf-path ./testdata/sdk_config_pk.yml
```

##### 鑺傜偣鏁版嵁鎭㈠  
  restore鎸囦护浠庨摼澶栧瓨鍌�(MySQL/褰掓。涓績)涓煡璇㈠嚭鍖哄潡鏁版嵁,灏嗗尯鍧楁暟鎹仮澶嶅埌閾捐妭鐐逛笂

```shell
# 鎭㈠閾句笂鍖哄潡鏁版嵁鍛戒护,鎭㈠鍒版寚瀹氶珮搴�,鎭㈠杩囩▼鎸夌収鍖哄潡鍧楅珮鍊掑簭鎭㈠
./cmc archive restore 3000 --sdk-conf-path ./testdata/sdk_config_pk.yml
```

##### 鏁版嵁浠撳簱鏁版嵁鏌ヨ

```shell
# 鏌ヨ褰掓。涓績褰撳墠宸插綊妗f暟鎹姸鎬佸懡浠�
./cmc archive query archived-status --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```  
  ```shell
# 鏌ヨ褰掓。涓績,鏍规嵁楂樺害鏌ュ尯鍧楀懡浠�
./cmc archive query block-by-height 20  --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```  
  ```shell
# 鏌ヨ褰掓。涓績,鏍规嵁txId鏌ヨ鍖哄潡鍛戒护
./cmc archive query block-by-txid 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```  
  ```shell
# 鏌ヨ褰掓。涓績,鏍规嵁txId鏌ヨ浜ゆ槗鍛戒护
./cmc archive query tx 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be  --sdk-conf-path ./testdata/sdk_config_pk.yml
  ```  
  ```shell
# 鏌ヨ褰掓。涓績,鏍规嵁block hash鏌ヨ鍖哄潡鍛戒护
./cmc archive query block-by-hash 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be --sdk-conf-path ./testdata/sdk_config_pk.yml
```


<span id="txpool"></span>

  #### 浜ゆ槗姹�

  浜ゆ槗姹犵浉鍏虫煡璇㈠懡浠�

  ```sh
  --sdk-conf-path: 鎸囧畾cmc浣跨敤sdk鐨勯厤缃枃浠惰矾寰�
  --type: 鎸囧畾鏌ヨ鐨勪氦鏄撶被鍨�, 榛樿鍊� 3 銆傛墍鏀寔鐨勭被鍨嬪涓�: 
  閰嶇疆浜ゆ槗绫诲瀷: 1
  鏅€氫氦鏄撶被鍨�: 2
  鎵€鏈変氦鏄撶被鍨�: 3
  
  --stage: 鎸囧畾鏌ヨ鐨勪氦鏄撻樁娈�, 榛樿鍊� 3 銆傛墍鏀寔鐨勯樁娈靛涓�: 
  in queue闃舵: 1
  in pending闃舵: 2
  鎵€鏈夐樁娈�: 3
  
  --tx-ids: 鎸囧畾鏍规嵁tx ids鑾峰彇浜ゆ槗姹犱腑瀛樺湪鐨則xs, 鍙寚瀹氬涓猼xid鐢ㄩ€楀彿鍒嗗紑
  ```

  - 鏌ヨ浜ゆ槗姹犵姸鎬�

    ```sh
    ./cmc txpool status --sdk-conf-path=./testdata/sdk_config_pk.yml
    ```

  - 鏌ヨ涓嶅悓浜ゆ槗绫诲瀷鍜岄樁娈典腑鐨勪氦鏄揑d鍒楄〃銆�

    ```sh
    ./cmc txpool txids --sdk-conf-path=./testdata/sdk_config_pk.yml --type=3 --stage=3
    ```

  - 鏍规嵁txIds鑾峰彇浜ゆ槗姹犱腑瀛樺湪鐨則xs锛屽苟杩斿洖浜ゆ槗姹犵己澶辩殑tx鐨則xIds

    ```sh
    ./cmc txpool txs --sdk-conf-path=./testdata/sdk_config_pk.yml \
    --tx-ids="00722edd0da0465fbadaadddcd31be20d24575c42e5246e697a0629b649d20e8,ec366ae0b7024d15a74668846007107284e99f9f2f6544d0bf1a3aee11a50712"
    ```