# 鎼缓IBC妯″紡璐︽埛浣撶郴

## 鎼缓闀垮畨閾剧綉缁�

鏈珷鑺傛垜浠皢璇︾粏浠嬬粛濡備綍鎼缓瀹屾暣鐨勯暱瀹夐摼PermissionWithIBC妯″紡鐨勮处鎴蜂綋绯伙紝浠ュ強濡備綍绠$悊璇ユā寮忎笅鐨勯摼璐︽埛锛屽寘鎷粍缁囪处鎴枫€佽妭鐐硅处鎴枫€佺敤鎴疯处鎴风殑澧炲垹绛夈€傚叧浜庨暱瀹夐摼 IBC 韬唤浣撶郴鐨勬妧鏈粏鑺傦紝璇峰弬闃匸IBC 鎶€鏈枃妗(../tech/IBC鎶€鏈枃妗�.md)

鏈枃绀轰緥璇存槑锛�

- 鍒涘缓鏂伴摼锛�4缁勭粐锛�1鍏辫瘑鑺傜偣/姣忕粍缁囷紝1绠$悊鍛�/姣忕粍缁�
- 閾剧鐞嗭細缁勭粐绠$悊銆佽妭鐐圭鐞嗐€佺敤鎴风鐞�

### 婧愮爜涓嬭浇

- 涓嬭浇ibc鐗堟湰鐨刞chainmaker-go`婧愮爜鍒版湰鍦�

```bash
$ git clone -b v2.3.0_ibc --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
```

- 涓嬭浇ibc鐗堟湰鐨刞璇佷功鐢熸垚宸ュ叿`婧愮爜鍒版湰鍦�

```bash
$ git clone -b v2.3.0_ibc  --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-cryptogen.git
```

### 婧愮爜缂栬瘧

- 缂栬瘧璇佷功鐢熸垚宸ュ叿

```bash
$ cd chainmaker-cryptogen
$ make
```

### 鐢熸垚閰嶇疆鏂囦欢

- 灏嗙紪璇戝ソ鐨刞chainmaker-cryptogen`锛岃蒋杩炴帴鍒癭chainmaker-go/tools`鐩綍

```bash
# 杩涘叆宸ュ叿鐩綍
$ cd chainmaker-go/tools

# 杞繛鎺hainmaker-cryptogen鍒皌ools鐩綍涓�
$ ln -s ../../chainmaker-cryptogen/ .
```

杩涘叆`chainmaker-go/scripts`鐩綍锛屾墽琛宍prepare_ibc.sh`鑴氭湰鐢熸垚鍗曢摼4鑺傜偣闆嗙兢閰嶇疆锛屽瓨浜庤矾寰刞chainmaker-go/build`涓�

```bash
# 杩涘叆鑴氭湰鐩綍
$ cd ../scripts

# 鐢熸垚鍗曢摼4鑺傜偣闆嗙兢鐨勮瘉涔﹀拰閰嶇疆
$ ./prepare_ibc.sh 4 1
begin check params...
begin generate certs, cnt: 4
input consensus type (1-TBFT(default),3-MAXBFT,4-RAFT):
input log level (DEBUG|INFO(default)|WARN|ERROR):
enable vm go (YES|NO(default))
config node total        4
begin generate node1 config...
begin node1 chain1 cert config...
begin node1 trust config...
begin generate node2 config...
begin node2 chain1 cert config...
begin node2 trust config...
begin generate node3 config...
begin node3 chain1 cert config...
begin node3 trust config...
begin generate node4 config...
begin node4 chain1 cert config...
begin node4 trust config...
```

### 缂栬瘧鍙婂畨瑁呭寘鍒朵綔

- 鐢熸垚璇佷功锛坧repare_ibc.sh鑴氭湰锛夊悗鎵ц`build_release.sh`鑴氭湰锛屽皢缂栬瘧`chainmaker-go`妯″潡锛屽苟鎵撳寘鐢熸垚瀹夎锛屽瓨浜庤矾寰刞chainmaker-go/build/release`涓�

```bash
$ ./build_release.sh
$ tree ../build/release/
../build/release/
鈹溾攢鈹€ chainmaker-v2.3.0-wx-org1.chainmaker.org-20221228155928-x86_64.tar.gz
鈹溾攢鈹€ chainmaker-v2.3.0-wx-org2.chainmaker.org-20221228155928-x86_64.tar.gz
鈹溾攢鈹€ chainmaker-v2.3.0-wx-org3.chainmaker.org-20221228155928-x86_64.tar.gz
鈹溾攢鈹€ chainmaker-v2.3.0-wx-org4.chainmaker.org-20221228155928-x86_64.tar.gz
鈹斺攢鈹€ crypto-config-20221228155928.tar.gz
```

### 鍚姩鑺傜偣闆嗙兢

- 鎵ц`cluster_quick_start.sh`鑴氭湰锛屼細瑙e帇鍚勪釜瀹夎鍖咃紝璋冪敤`bin`鐩綍涓殑`start.sh`鑴氭湰锛屽惎鍔╜chainmaker`鑺傜偣

```bash
$ ./cluster_quick_start.sh normal
```

> 鑻ラ渶瑕佸叧闂泦缇わ紝浣跨敤鑴氭湰锛�
>
> ```bash
> $ ./cluster_quick_stop.sh
> ```

### 鏌ョ湅鑺傜偣鍚姩鏄惁姝e父

- 鏌ョ湅杩涚▼鏄惁瀛樺湪

```bash
$ ps -ef|grep chainmaker | grep -v grep
25261  2146  4 19:55 pts/20   00:00:01 ./chainmaker start -c ../config/wx-org1.chainmaker.org/chainmaker.yml
25286  2146  4 19:55 pts/20   00:00:01 ./chainmaker start -c ../config/wx-org2.chainmaker.org/chainmaker.yml
25309  2146  4 19:55 pts/20   00:00:01 ./chainmaker start -c ../config/wx-org3.chainmaker.org/chainmaker.yml
25335  2146  4 19:55 pts/20   00:00:01 ./chainmaker start -c ../config/wx-org4.chainmaker.org/chainmaker.yml
```

- 鏌ョ湅绔彛鏄惁鐩戝惉

```bash
$ netstat -lptn | grep 1230
tcp6       0      0 :::12301                :::*                    LISTEN      25261/./chainmaker  
tcp6       0      0 :::12302                :::*                    LISTEN      25286/./chainmaker  
tcp6       0      0 :::12303                :::*                    LISTEN      25309/./chainmaker  
tcp6       0      0 :::12304                :::*                    LISTEN      25335/./chainmaker 
```

- 妫€鏌ヨ妭鐐规槸鍚︽湁`ERROR`鏃ュ織

```bash
$ cat ../build/release/*/bin/panic.log
$ cat ../build/release/*/log/system.log
$ cat ../build/release/*/log/system.log |grep "ERROR\|put block\|all necessary"
//鑻ョ湅鍒癮ll necessary peers connected鍒欒〃绀鸿妭鐐瑰凡缁忓噯澶囧氨缁€�
```

### 閮ㄧ讲/璋冪敤鏅鸿兘鍚堢害

閾鹃儴缃插悗锛屽湪杩涜閮ㄧ讲/璋冪敤鍚堢害娴嬭瘯锛屼互楠岃瘉閾炬槸鍚︽甯歌繍琛屻€�


### 缂栬瘧

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

> 鍒涘缓宸ヤ綔鐩綍 $WORKDIR 姣斿 ~/chainmaker<br>
> 鍚姩娴嬭瘯閾� [鍦ㄥ伐浣滅洰褰曚笅 浣跨敤鑴氭湰鎼缓](../quickstart/閫氳繃鍛戒护琛屼綋楠岄摼.md)<br>

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

#### 閮ㄧ讲绀轰緥鍚堢害

- 鍒涘缓wasm鍚堢害

```bash
$ ./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_ibc.yml \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--sync-result=true \
--params="{}"
```

- 璋冪敤wasm鍚堢害

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

- 鏌ヨ鍚堢害

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

## 閾剧鐞�

鍦ㄩ暱瀹夐摼涓紝涓嶅悓鐨勮处鎴蜂竴鑸粦瀹氫笉鍚岀殑瑙掕壊锛屽叿鏈変笉鍚岀殑鏉冮檺銆� 涓轰簡鎻愰珮瀹夊叏鎬э紝闀垮畨閾鹃粯璁よ缃簡璁稿鏉冮檺锛岄儴鍒嗘搷浣滈渶瑕佸涓鐞嗗憳澶氱鎵嶈兘瀹屾垚銆�

### 缁勭粐绠$悊

#### 鍏辫瘑鑺傜偣Org绠$悊

- 娣诲姞鍏辫瘑鑺傜偣Org

```
./cmc client chainconfig consensusnodeorg add \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--node-ids=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4,QmaWrR72CbT51nFVpNDS8NaqUZjVuD4Ezf8xcHcFW9SJWF \
--node-org-id=wx-org4.chainmaker.org
```

- 鍒犻櫎鍏辫瘑鑺傜偣Org

```
./cmc client chainconfig consensusnodeorg remove \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--node-org-id=wx-org4.chainmaker.org
```

- 鏇存柊鍏辫瘑鑺傜偣Org

```
./cmc client chainconfig consensusnodeorg update \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--node-ids=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
--node-org-id=wx-org4.chainmaker.org
```

#### 缁勭粐涓诲叕閽ョ鐞�

- 澧炲姞缁勭粐涓诲叕閽�

鍙互鐢� common 鍖呭伐鍏风敓鎴愭柊鐨勪富鍏挜銆傛垜浠亣璁剧敓鎴愬ソ鐨勪富鍏挜璺緞涓篶hainmaker-go/tools/cmc/master_public.key

```
./cmc client chainconfig masterkey add \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--master-key-org-id=wx-org5.chainmaker.org \
--master-key-path=./master_public.key
```

- 鍒犻櫎缁勭粐涓诲叕閽�

```
./cmc client chainconfig masterkey remove \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--master-key-org-id=wx-org5.chainmaker.org
```

- 鏇存柊缁勭粐涓诲叕閽�

```
./cmc client chainconfig masterkey update \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org4.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org4.chainmaker.org/user/admin1/admin1.sign.key \
--master-key-org-id=wx-org4.chainmaker.org \
--master-key-path=./master_public.key
```

#### 缁勭粐淇℃伅鏌ヨ

缁勭粐淇℃伅鍙互閫氳繃閾鹃厤缃煡璇紝鍦╜master_keys`瀛楁涓嬩細杩斿洖褰撳墠鍖哄潡閾剧綉缁滀腑鐨勭粍缁囧垪琛ㄤ互鍙婂悇涓粍缁囦笅鐨勭粍缁囦富瀵嗛挜锛屽悓鏃� 鍦╜consensus`涓嬶紝浼氳繑鍥炲悇涓粍缁囦笅鐨勫叡璇嗚妭鐐瑰垪琛紝鍛戒护濡備笅锛�

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

### 鑺傜偣绠$悊

- 澧炲姞鍏辫瘑鑺傜偣

```
./cmc client chainconfig consensusnodeid add \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--node-id=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
--node-org-id=wx-org4.chainmaker.org
```

- 鏇存柊鍏辫瘑鑺傜偣Id

```
./cmc client chainconfig consensusnodeid update \
--sdk-conf-path=./testdata/sdk_config_ibc.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.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--node-id=QmXxeLkNTcvySPKMkv3FUqQgpVZ3t85KMo5E4cmcmrexrC \
--node-id-old=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
--node-org-id=wx-org5.chainmaker.org
```

- 鍒犻櫎鍏辫瘑鑺傜偣

```
./cmc client chainconfig consensusnodeid remove \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--node-id=QmZJuj1SyGKyU5FffzVHBwoz1QN8StjaBhpAEYFwK1wYEu \
--node-org-id=wx-org4.chainmaker.org
```

- 鏌ヨ鍏辫瘑鑺傜偣
  鍏辫瘑鑺傜偣鍙互閫氳繃閾鹃厤缃煡璇紝鍦╜consensus`瀛楁涓嬩細杩斿洖褰撳墠鍖哄潡閾剧綉缁滀腑鐨勫叡璇嗚妭鐐瑰垪琛紝鍛戒护濡備笅锛�

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

### 鏉冮檺绠$悊

闀垮畨閾剧洰鍓嶆敮鎸佽祫婧愮骇鍒殑鏉冮檺绠$悊锛屽彲浠ラ€氳繃cmc鍛戒护琛屽伐鍏锋垨鑰卻dk鏉ユ煡璇€€佹柊澧炪€佷慨鏀逛互鍙婂垹闄よ祫婧愭潈闄愩€�

- 鏉冮檺鍒楄〃鏌ヨ

```
./cmc client chainconfig permission list \
--sdk-conf-path=./testdata/sdk_config_ibc.yml
```

- 璁剧疆璐︽埛鏉冮檺
  鏉冮檺淇敼鐩稿叧鐨勬搷浣滀竴鑸渶瑕�**澶氭暟绠$悊鍛樺绛�**鎺堟潈锛屽亣濡傛垜浠湁涓祫婧愬悕鍙細TEST_SUM, 闇€瑕佽缃负鈥濅换涓€鐢ㄦ埛鍙互璁块棶鈥濓紝 浣跨敤cmc鍛戒护璁剧疆鏉冮檺鏉冮檺濡備笅锛�

```
./cmc client chainconfig permission add \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--sync-result=true \
--permission-resource-name="TEST_SUM" \
--permission-resource-policy-rule=ANY \
--permission-resource-policy-roleList=CLIENT
```

- 淇敼璐︽埛鏉冮檺
  浣跨敤cmc鍛戒护淇敼TEST_SUM璧勬簮鏉冮檺涓哄鏁扮鐞嗗憳澶氱鎿嶄綔

```
./cmc client chainconfig permission update \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--sync-result=true \
--permission-resource-name="TEST_SUM" \
--permission-resource-policy-rule=MAJORITY \
--permission-resource-policy-roleList=ADMIN
```

- 鍒犻櫎璐︽埛鏉冮檺
  浣跨敤cmc鍛戒护鍒犻櫎TEST_SUM璧勬簮鐨勬潈闄愰檺鍒讹紝鍒犻櫎鍚庤妭鐐规潈闄愭牎楠屾ā鍧椾笉浼氬璇ヨ祫婧愯繘琛屾潈闄愭鏌�

```
./cmc client chainconfig permission delete \
--sdk-conf-path=./testdata/sdk_config_ibc.yml \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--sync-result=true \
--permission-resource-name="TEST_SUM"
```