# 鍛戒护琛屽伐鍏� <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 ```