# 闀垮畨閾綾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: 鏁版嵁琛ㄨ璁¤鏄� - 琛ㄤ俊鎭�  - 琛ㄥ瓧娈�  - 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: 鏁版嵁琛ㄨ璁¤鏄� - 琛ㄤ俊鎭�  - 琛ㄥ瓧娈�  - 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" ```