# 鏁版嵁杩佺Щ宸ュ叿
## 杩佺Щ宸ュ叿璁捐鍘熺悊
### 杩佺Щ宸ュ叿鐨勭洰鐨�
杩佺Щ宸ュ叿鍙互瑙e喅鐨勪笟鍔¢渶姹傚満鏅細
1. 鐢变簬涓氬姟闇€姹傦紝鎯宠灏嗗綋鍓嶇殑鍖哄潡閾剧郴缁熸浛鎹负鏂扮殑鍖哄潡閾剧郴缁燂紝鍚屾椂淇濈暀褰撳墠鍖哄潡閾剧郴缁熺殑鍘熷鍖哄潡鏁版嵁锛屾瘮濡�
- Fabric --> Chainmaker
2. 褰撳墠鍖哄潡閾剧郴缁熸棤娉曟弧瓒充笟鍔¢渶姹傦紝鎯宠鍗囩骇褰撳墠鍖哄潡閾剧郴缁熺殑鐗堟湰锛屼絾鏄尯鍧楅摼绯荤粺鏂版棫鐗堟湰涔嬮棿鐨勫尯鍧椼€佽鍐欓泦绛夋暟鎹粨鏋勪笉鍏煎锛屾瘮濡�
- Chainmaker 1.x --> Chainmaker 2.x
### 杩佺Щ鏂规璁捐鎬濊矾
鍖哄潡閾捐縼绉荤殑鏈€鐩磋鐨勬兂娉曪紝灏辨槸灏嗕笉鍚屽尯鍧楅摼绯荤粺鐨勫尯鍧楃粨鏋勪綋涓嶅悓瀛楁鐩存帴杩涜璧嬪€硷紝姣斿chainmaker1.x杩佺Щ鍒癱hainmaker2.x锛屽皢chainmaker1.x鐨勫尯鍧楅噸瑕佸瓧娈电洿鎺ヨ祴鍊肩粰chainmaker2.x鐨勫尯鍧楋紝鏈変簡chainmaker2.x鐨勫尯鍧楋紝缁欏埌chainamker2.x鐨勫瓨鍌ㄦā鍧楋紝鐩存帴鍚姩chainmaker2.x鐨勯摼灏卞彲浠ヤ簡
1. 鑾峰彇婧愰摼鐨勫尯鍧楋細
- 閫氳繃瀛樺偍妯″潡鐨勬柟寮忚幏鍙栧尯鍧楋紝姣斿鎷夊彇chainamaker1.x鐨勫尯鍧楋紝transfer-tool閫氳繃1.x鐨勫瓨鍌ㄦā鍧楁媺鍙�1.x鐨勫尯鍧楋紝1.x閾剧殑data鐩綍鍜宼ransfer-tool閮ㄧ讲鍒板悓涓€涓幆澧�
- 閫氳繃sdk鏂瑰紡鑾峰彇鍖哄潡锛屾瘮濡傛媺鍙杅abric鐨勫尯鍧楋紝杩佺Щ宸ュ叿閫氳繃fabric-sdk鎷夊彇fabric鐨勫尯鍧�
2. 灏嗘簮閾惧尯鍧楄浆鎹负鐩爣閾惧尯鍧楋細姣斿灏哻hainmaker 1.x鐨勫尯鍧楄浆鎹负chainmaker 2.x鐨勫尯鍧楋紝鍖哄潡灏辨槸涓€涓粨鏋勪綋锛屽厛鑾峰緱chainmaker 1.x鐨勫尯鍧楃粨鏋勪綋锛岀劧鍚庤祴鍊肩粰chainmaker 2.x鐨勫尯鍧楃粨鏋勪綋
3. 鏍规嵁鐢熸垚鐨勭洰鏍囬摼鍖哄潡锛屽惎鍔ㄧ洰鏍囬摼锛屽皢chainmaker2.x鐨勫尯鍧楁斁鍒癱hainmaker 2.x鐨勯摼瀛樺偍鐩綍锛屽苟鍚姩chainamker2.x
4. 鐩爣閾綾hainmaker2.x 鍙惎鍔ㄤ竴涓叡璇嗚妭鐐癸紝濡傛灉鍚庣画鎯冲鍔犲叡璇嗚妭鐐癸紝绛夎縼绉诲畬鎴愬悗锛屽彲閫氳繃閰嶇疆浜ゆ槗鍔ㄦ€佸鍔犲叡璇嗚妭鐐�
### 杩佺Щ鏂规涓瓨鍦ㄧ殑闂鍙婅В鍐虫柟妗�
#### 闂1锛氳€冭檻鍒板悓姝ヨ妭鐐瑰悓姝ュ尯鍧楁椂锛屼細閬囧埌璇诲啓闆嗛獙璇佺殑闂
鍚屾鑺傜偣鍦ㄥ悓姝ュ叡璇嗚妭鐐瑰尯鍧楃殑鏃跺€欙紝浼氶獙璇佸尯鍧楋紝鍦ㄨ櫄鎷熸満涓墽琛屼氦鏄撶殑鍚堢害锛岀敓鎴愯鍐欓泦锛岃窡鍏辫瘑鑺傜偣鍖哄潡澶寸殑璇诲啓闆唄ash杩涜瀵规瘮鏉ラ獙璇佷氦鏄撴槸鍚﹁姝g‘鎵ц锛屽鏋渃hainmaker鍖哄潡涓殑姣忕瑪浜ゆ槗閮芥墽琛屾簮閾剧殑涓氬姟鍚堢害閫昏緫浼氬緢娴垂鏃堕棿锛屽悓鏃惰繕闇€瑕佽В鏋愭簮閾剧殑鍚堢害鍦╟hainmaker2.x涓婃墽琛岋紝鍙兘浼氫笉鍏煎锛屽洜姝よ繖绉嶆柟妗堝疄鐜伴毦搴﹀ぇ锛屼笉澶悎鐞�
- 瑙e喅鏂规锛氭崲涓€绉嶆€濊矾锛屼笉绠℃簮閾剧殑涓氬姟閫昏緫澶氬鏉傦紝鏈€缁堜笟鍔″悎绾︾殑鎵ц缁撴灉鍦ㄥ尯鍧楅摼涓殑琛ㄧ幇褰㈠紡閮芥槸kv褰㈠紡鐨勮鍐欓泦锛屽洜姝ゆ兂鍒癱hainmaker2.x鐨勫悎绾︿笉鎵ц婧愰摼鐨勪笟鍔¢€昏緫锛岃€屾槸灏嗘簮閾剧殑浜ゆ槗璇诲啓闆嗙洿鎺ヨ祴鍊肩粰chainmaker 2.x鍖哄潡涓氦鏄撶殑璇诲啓闆�
#### 闂2: 鑰冭檻浜ゆ槗涓瓨鍦ㄨ法鍚堢害璋冪敤鏃剁殑浼樺寲
- 鍒濆鏂规锛氭瘮濡備氦鏄搕x1鐨勫悎绾璺ㄥ悎绾﹁皟鐢ㄥ悎绾锛宎鍚堢害涓渶瑕佸垽鏂槸鍚﹀瓨鍦ㄨ法鍚堢害璋冪敤锛屽鏋滃瓨鍦紝璺ㄥ悎绾﹁皟鐢╞锛屽鏋渂鍚堢害涔熷瓨鍦ㄨ法鍚堢害璋冪敤c鍚堢害锛宐鍚堢害涔熼渶瑕佸垽鏂紝a銆乥鍚堢害鐨勯€昏緫鐩稿悓锛岄兘鏄痶ransfer鍚堢害锛屽垵濮嬫柟妗堢殑缂虹偣锛歵ransfer鍚堢害鍐呴渶瑕佸姞鍒ゆ柇锛岃В鍐冲灞傛璺ㄥ悎绾﹁皟鐢ㄧ殑闂锛宼ransfer鍚堢害閫昏緫璁捐澶嶆潅
- 浼樺寲鏂规锛氭墍鏈夎皟鐢ㄧ敤鎴峰悎绾︾殑浜ゆ槗锛岄兘璋冪敤assist鍚堢害锛岀敱assist鍚堢害閬嶅巻浜ゆ槗鐨勮鍐欓泦鐨勫悎绾﹀悕锛屾牴鎹笉鍚屽悎绾﹀悕锛屽垎鍒繘琛岃法鍚堢害璋冪敤涓嶅悓鐨勭敤鎴峰悎绾︼紝涓嶅悓鐨勭敤鎴峰悎绾﹂€昏緫閮界浉鍚岋紝閮芥槸transfer鍚堢害鐨勯€昏緫锛屼紭鍖栨柟妗堢殑浼樼偣: 1.鐢盿ssist鍚堢害缁熶竴璺ㄥ悎绾﹁皟鐢ㄦ墍鏈塼ransfer鍚堢害锛宼ransfer鍚堢害涓嶅啀杩涜璺ㄥ悎绾﹁皟鐢紝瑙e喅浜唗ransfer鍚堢害鍐呭灞傛璺ㄥ悎绾﹁皟鐢ㄧ殑闂; 2.鎵€鏈夎縼绉讳氦鏄撻兘缁熶竴璋冪敤assist鍚堢害锛屼氦鏄撲腑鍖呭惈assist鍚堢害锛屾柟渚跨敤鎴峰尯鍒嗕竴绗斾氦鏄撴槸鍚︽槸杩佺Щ浜ゆ槗
- 鏈縼绉诲伐鍏烽噰鐢ㄤ紭鍖栨柟妗堬紝瀵逛氦鏄撲腑瀛樺湪鐨勮法鍚堢害璋冪敤鍦烘櫙杩涜浜嗕紭鍖�
### 杩佺Щ鏂规鏁翠綋娴佺▼鍥�
<img loading="lazy" src="../images/TransferTool-process.png" style="zoom:100%;" />
### 杩佺Щ宸ュ叿鐨勬牳蹇冩ā鍧楋細鍖哄潡杞崲瀹炵幇閫昏緫
灏嗘簮閾�(fabric/chainmaker1.x)鐨勫尯鍧楄浆鎹负鐩爣閾綾hainmaker2.x鐨勫尯鍧楁祦绋嬶細
1. chainmaker 2.x鐨刡lock0
鏂伴摼鐨勫垱濮嬪潡蹇呴』鐢眀c.yml鑷姩鐢熸垚鐨勶紝鍥犱负鏂板鑺傜偣鐨勫垱涓栧潡涔熸槸鐢眀c.yml鐢熸垚鐨勶紝濡傛灉鍒涗笘鍧椾笉鐩稿悓锛屾柊鑺傜偣鏃犳硶鍚姩
2. chainmaker 2.x鐨刡lock1
1. tx1锛氬垱寤虹煭璇佷功浜ゆ槗(浣跨敤璇佷功鐨刪ash浠g瑪璇佷功锛岄檷浣庝氦鏄撳ぇ灏忥級
- txId锛氭簮閾炬病鏈夊搴旂殑txid锛屾牴鎹畊uid鐢熸垚
- 璇诲啓闆嗭細璋冪敤鐭瘉涔︾殑绯荤粺鍚堢害鐩稿叧閫昏緫锛岀敓鎴愬搴旇鍐欓泦
2. tx2锛氬垱寤鸿縼绉昏緟鍔╁悎绾︿氦鏄�
- txId锛氭簮閾炬病鏈夊搴旂殑txid锛屾牴鎹畊uid鐢熸垚
- 璇诲啓闆嗭細璋冪敤瀹夎鍚堢害鐨勭郴缁熷悎绾﹂€昏緫锛岀敓鎴愬搴旇鍐欓泦
3. tx3锛氭潵婧愪簬婧愰摼鐨刡lock1.txs
1. 婧愰摼鐨則x濡傛灉鏄敤鎴峰悎绾﹀畨瑁呯殑浜ゆ槗
- 杞崲鎴恈hainmaker2.x鐩稿搴旂殑鐢ㄦ埛鍚堢害瀹夎锛氬悎绾﹀悕婧愰摼鐨勫悎绾﹀悕锛屽悎绾︾殑鍐呭transfer鍚堢害鍐呭锛屽氨鏄啓浜嗕竴涓猼ransfer鍚堢害锛岀劧鍚庨噸鍛藉悕鎴愬悇绉嶇敤鎴峰悎绾︼紝琚畨瑁呬簡n浠�
2. 婧愰摼鐨則x濡傛灉鏄郴缁熷悎绾︾浉鍏充氦鏄擄紝姣斿鑺傜偣銆佺粍缁囨暟閲忋€佸垱寤虹煭璇佷功绛変氦鏄�
- 杞崲涓篶hainmaker2.x 鐗规畩鐨勪氦鏄擄細瀵规簮閾剧殑鍘熷浜ゆ槗鍐呭搴忓垪鍖栵紝浣滀负2.x浜ゆ槗鐨刱v瀛樿捣鏉�
3. 婧愰摼鐨則x濡傛灉鏄甯歌皟鐢ㄧ敤鎴峰悎绾︾殑浜ゆ槗
- 杞崲涓篶hainmaker 2.x鐩稿搴旂殑assist鍚堢害璋冪敤绫诲瀷鐨勪氦鏄擄細璋冪敤鐨勫悎绾﹀悕鏄縼绉昏緟鍔╁悎绾ssist锛�2.x浜ゆ槗鐨刱v淇濆瓨搴忓垪鍖栧悗鐨勬簮閾剧殑鍘熷鐨勪氦鏄撳拰鍘熷璇诲啓闆嗭紝assist鍚堢害灏�1.x鍘熷璇诲啓闆嗚浆鎹负map锛屽璇诲啓闆嗚繘琛屽垎绫伙紝map鐨刱ey锛�1.x鐢ㄦ埛鍚堢害鍚島sercontract锛寁alue锛�1.x涓氬姟璇诲啓闆唊v锛岀劧鍚庢牴鎹敤鎴峰悎绾﹀悕usercontract锛岃法鍚堢害璋冪敤璇ョ敤鎴峰悎绾︼紙鍚堢害鍐呭涓簍ransfer鍚堢害锛宼ransfer鍚堢害鐨勯€昏緫锛屽皢1.x浜ゆ槗鐨勪笟鍔¤鍐欓泦锛屾洿鏂板埌瀵瑰簲鐨�2.x浜ゆ槗鐨勪笟鍔¤鍐欓泦锛�
4. tx4锛氬簭鍒楀寲婧愰摼鐨刧enesisblock.tx1浣滀负chainamker2.x鐨則x4鐨刱v
3. chainmaker 2.x鐨刡lock2銆乥lock3銆乥lock4 ...鐨勫鐞嗛€昏緫锛屼笌block1 tx3鐨勫鐞嗛€昏緫鐩稿悓
### 杩佺Щ宸ュ叿璁捐鍘熺悊鍥�
<img loading="lazy" src="../images/TransferTool-architecture.png" style="zoom:100%;" />
## 浜у搧宸ュ叿杩佺Щ
### 鏀寔绫诲瀷
1. fabric鍒癱hainmaker
* 婧愰摼锛歠abric锛�1.4.x
* 鐩爣閾撅細chainmaker锛歷2.2.1
### 杩佺Щ宸ュ叿婧愰摼: Fabric
1. 婧愰摼Fabric鐨勭増鏈�1.4
2. 婧愰摼绀轰緥锛氭瘮濡備娇鐢ㄨ剼鏈惎鍔ㄤ竴鏉℃簮閾綟abric 1.4.3
* 浣跨敤鑴氭湰byfn.sh 蹇€熷惎鍔ㄤ竴涓狥abric缃戠粶
* channel name鏄痬ychannel
* 婧愰摼鐨勮瘉涔﹁矾寰�
```
fabric/scripts/fabric-samples/first-network/crypto-config
```
### 杩佺Щ宸ュ叿鐩爣閾綜hainmaker 2.x
1. 鐩爣閾綜hainmaker鐨勭増鏈細2.2.1
2. 鍚姩鐩爣閾綜hainmaker
* 浣跨敤鑴氭湰prepare.sh 鍚姩涓€涓叡璇嗚妭鐐�
3. 鐩爣閾綜hainmaker璇佷功鏂囦欢璺緞
```
chainmaker-go/build/release/chainmaker-v2.2.0-wx-org.chainmaker.org/config/wx-org.chainmaker.org
```
### 杩佺Щ宸ュ叿浜у搧瀹夎閮ㄧ讲
#### 杩佺Щ宸ュ叿浜у搧鍓嶇閮ㄧ讲
1. 婧愮爜鍦板潃
```
https://git.chainmaker.org.cn/chainmaker/transfer-front
```
2. 杩涘叆鍒版湇鍔″櫒浠绘剰鏂囦欢閲岄潰 鎵ц
```
git clone --depth=1 https://git.chainmaker.org.cn/chainmaker/transfer-front
```
3. 杩涘叆migration-web/public/config.js閲岄潰锛屽皢 http://192.168.0.173:12091 鏀规垚鑷繁鏈嶅姟鍣╥p
4. 閫€鍥炲埌migration-web 鐩綍涓嬫墽琛�
```
docker build -t chainmaker/migration-web:v2.2.0 -f ./Dockerfile .
```
5. 鎵ц鎴愬姛
6. 鎵句釜绔彛鍙凤紝姣斿锛�8000锛屾煡鐪嬫槸鍚﹁鍗犵敤
```
lsof -i:8000
```
7. 鍚姩鍓嶇docker瀹瑰櫒
```
docker run --rm --name migration-web -p 8000:80 -d chainmaker/migration-web:v2.2.0
```
8. 娴忚鍣ㄦ墦寮€鍗冲彲
#### 杩佺Щ宸ュ叿浜у搧鍚庣閮ㄧ讲
1. 涓嬭浇杩佺Щ宸ュ叿浜у搧transfer-web-server鐨勬簮浠g爜
```
#椤圭洰缃戝潃
https://git.chainmaker.org.cn/chainmaker/transfer-web-server
#浠g爜鍒嗘敮
master
#鎷夊彇浠g爜
git clone git@git.chainmaker.org.cn:chainmaker/transfer-web-server.git
```
2. 缂栬瘧婧愪唬鐮侊紝鐢熸垚杩佺Щ宸ュ叿浜у搧鍙墽琛屾枃浠秚ransfer-web-server
```
go build
```
3. 杩愯杩佺Щ宸ュ叿浜у搧
```
nohup ./transfer-web-server &
```
4. 鏌ョ湅鏃ュ織
```
vim nohup.out
vim default.log
```
5. swagger鎺ュ彛鏂囨。
http://鏈嶅姟鍣╥p:12091/swagger/index.html#/
### 杩佺Щ宸ュ叿浜у搧浣跨敤鏂囨。
#### 鍓嶇缃戦〉鍦板潃
http://鏈嶅姟鍣╥p:8000/#/home
#### 鏂板浠诲姟
1. 浠诲姟鍚嶇О锛氳嚜瀹氫箟浠诲姟鍚嶇О
2. 浠诲姟绫诲瀷锛�
* Fabric1.4 to chainmaker 2.2.1
* chainmaker1.x to chainmaker 2.2.1(鏆備笉鏀寔)
3. 杩佺Щ楂樺害锛氭牴鎹簮閾剧殑鍖哄潡楂樺害鑷畾涔夎縼绉婚珮搴�
#### 杩佺Щ閾句俊鎭缃�
1. 杩佺Щ閾句负Fabric
* 閾綢D: Fabric鐨刢hannel鍚�
* 鐢ㄦ埛鍚嶇О锛氬彲浠ヨ闂簮閾綟abric鐨勭敤鎴峰悕
* 鐢ㄦ埛璇佷功锛氬彲浠ヨ闂簮閾綟abric鐨勭敤鎴疯瘉涔︼紝瑕佹眰蹇呴』鏄痾ip鍘嬬缉鏍煎紡锛屽苟涓斿繀椤诲湪linux鐜杩涜鏂囦欢鍘嬬缉锛宭inux鐜涓媧ip鏂囦欢鐨勫帇缂�/瑙e帇鍛戒护濡備笅锛�
```
//鍘嬬缉
zip -r crypto-config.zip crypto-config
//瑙e帇
unzip crypto-config.zip
```
* config鏂囦欢锛氭簮閾綟abric鐨剆dk閰嶇疆鏂囦欢锛岃姹傚繀椤绘槸yml鏍煎紡
* fabric_sdk_config.yml鏂囦欢閫傞厤锛岄渶瑕佹洿鏀瑰叾涓墍鏈夌殑璇佷功璺緞涓烘爣鍑嗙殑璇佷功璺緞
```
./config_path/杩佺Щ浠诲姟task_id/origin/鐢ㄦ埛璇佷功鐩綍
```
* 涓轰簡鏂逛究璧疯锛岀涓€娆℃洿鏀逛负鏍囧噯璇佷功璺緞鍚庯紝瀵逛簬涓嶅悓鐨勮縼绉讳换鍔★紝鍙渶瑕佹浛鎹ask_id灏卞彲浠�
#### 鐩爣閾句俊鎭缃�
1. 璇佷功绫诲瀷锛氭牴鎹洰鏍囬摼chainmaker鐨勮瘉涔︾被鍨嬭缃�
2. 缁勭粐ID锛氭牴鎹洰鏍囬摼chainmaker鐨勭粍缁嘔D璁剧疆
3. 鏂囦欢涓婁紶锛氫笂浼犵洰鏍囬摼chainmaker鐨勮瘉涔︽枃浠讹紝瑕佹眰蹇呴』涓簔ip鏍煎紡
4. wx-org.chainmaker.org.zip鏂囦欢涓紝鏇存敼chainmaker.yml銆乥c1.yml鏂囦欢涓殑璇佷功璺緞涓烘爣鍑嗚矾寰勬牸寮忥紝鏂逛究杩佺Щ宸ュ叿鍚庣鏍规嵁task_id绠$悊鐩爣閾剧殑璇佷功
* chainmaker.yml閰嶇疆鏂囦欢锛屽瓨鍌ㄦā鍧楄矾寰勪慨鏀癸紝涓轰簡鏂逛究璧疯锛岀涓€娆℃洿鏀逛负鏍囧噯璇佷功璺緞鍚庯紝瀵逛簬涓嶅悓鐨勮縼绉讳换鍔★紝鍙渶瑕佹浛鎹ask_id灏卞彲浠�
```
./config_path/杩佺Щ浠诲姟task_id/target/鐩爣閾綾hainmaker璇佷功鐩綍
```
* bc1.yml閰嶇疆鏂囦欢锛岃瘉涔﹁矾寰勪慨鏀�,涓轰簡鏂逛究璧疯锛岀涓€娆℃洿鏀逛负鏍囧噯璇佷功璺緞鍚庯紝瀵逛簬涓嶅悓鐨勮縼绉讳换鍔★紝鍙渶瑕佹浛鎹ask_id灏卞彲浠�
```
./config_path/杩佺Щ浠诲姟task_id/target/鐩爣閾綾hainmaker璇佷功鐩綍
```
#### 鎵ц杩佺Щ
1. 鐐瑰嚮寮€濮嬭縼绉诲嵆鍙墽琛岃縼绉讳换鍔★紝杩佺Щ瀹屾垚鍚庯紝浼氳嚜鍔ㄦ洿鏀硅縼绉荤姸鎬佷负杩佺Щ瀹屾垚
2. 杩佺Щ鎴愬姛鍚庯紝寰楀埌鐨勭洰鏍囬摼鍖哄潡鏁版嵁data鐩綍
```
./config_path/杩佺Щ浠诲姟task_id/data
```
### 鍚姩鐩爣閾惧苟楠岃瘉鏄惁杩佺Щ鎴愬姛
1. 灏嗙洰鏍囬摼鍘熸湁鐨刣ata銆乴og鐩綍鍒犻櫎
```
cd chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org
rm -rf data
```
2. 灏嗚縼绉诲畬鎴愬悗寰楀埌鐨勭洰鏍囬摼鍖哄潡鏁版嵁data鐩綍锛屾嫹璐濆埌chainmaker2.2.1鐨勮妭鐐圭殑涓荤洰褰曚笅
3. 鍚姩鐩爣閾綾hainmaker鐨勮妭鐐�
```
cd chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org/bin
sh start.sh
```
4. 楠岃瘉杩佺Щ宸ュ叿鏄惁杩佺Щ鎴愬姛
5. 閫氳繃cmc鏌ョ湅鐩爣閾剧殑鍖哄潡淇℃伅
6. 缁欑洰鏍囬摼娣诲姞涓€涓悓姝ヨ妭鐐癸紝閫氳繃鏃ュ織鎴朿mc宸ュ叿鏌ョ湅鍚屾鑺傜偣鏄惁鎴愬姛鍚屾鐩爣閾剧殑鍖哄潡
* 鏌ヨ鏌愰珮搴︾殑鍖哄潡銆佽鍐欓泦淇℃伅
* 鏌ュ嚭鏉ョ殑璇诲啓闆嗙殑kv锛岄渶瑕佺敤base64瑙g爜
```
./cmc query block-by-height 4 \
--chain-id=chain1 \
--sdk-conf-path=./testdata/sdk_config.yml
```
7. 鍗囩骇鐩爣閾句笂杩佺Щ杩囨潵鐨勫悎绾︼紝鏌ョ湅鏄惁鑳藉鍗囩骇鎴愬姛锛屽苟閫氳繃鐩爣閾句笂鐨勫崌绾у悎绾︽搷浣滆鍐欓泦锛屾煡鐪嬫槸鍚︿笌鍘熼摼璇诲啓闆嗙浉鍖归厤
## 鍛戒护琛屽伐鍏疯縼绉�
### 鏀寔绫诲瀷
1. fabric鍒癱hainmaker
* 婧愰摼锛歠abric锛�1.4.x
* 鐩爣閾撅細chainmaker锛歷2.2.1
2. chainmaker1.x鍒癱hainmaker2.x
* 婧愰摼锛歝hainmaker锛� v1.1.0銆乿1.2.x
* 鐩爣閾撅細chainmaker锛歷2.2.1
### fabric鍒癱hainmaker
杩佺Щ宸ュ叿浣跨敤娴佺▼濡備笅锛�
1. 閰嶇疆杩佺Щ宸ュ叿婧愰摼淇℃伅
2. 鍒涘缓杩佺Щ宸ュ叿鐩爣閾�
3. 閰嶇疆杩佺Щ宸ュ叿鐩爣閾�
4. 閰嶇疆杩佺Щ宸ュ叿鍚堢害鏂囦欢
5. 鍚姩杩佺Щ宸ュ叿
6. 鍚姩鐩爣閾�
#### 閰嶇疆杩佺Щ宸ュ叿婧愰摼淇℃伅
1. 婧愰摼锛欶abric
2. fabric鐨勮縼绉婚珮搴︼紝0浠h〃杩佺Щ鍒版簮閾剧殑鏈€鏂伴珮搴�
3. fabric杩佺Щ鍒癱hainamker锛岃幏鍙杅abric鐨勫尯鍧楀彧鏀寔閫氳繃fabric-sdk鏉ヨ幏鍙�
4. config.yml閰嶇疆鏂囦欢
```
# 杩佺Щ婧愰摼淇℃伅
origin_chain:
transfer_height: 100
fabric:
chain_name: "ltzxinchain" #杩佺Щchannel
user_name: "Admin" #"User1"
config_path: "./config_path/dev/chainmaker.yml" #"./config_path/dev/config_test_endpoints.yaml" # fabric sdk config file path
peers:
- peer0
- peer1
```
#### 鍒涘缓杩佺Щ宸ュ叿鐩爣閾�
1. 鐩爣閾惧垵娆″惎鍔ㄦ椂锛宑hainmaker2.x 鐩爣閾剧殑鏃剁殑瑕佹眰濡備笅锛屾敞鎰忥細鐩爣閾惧垵娆″惎鍔ㄦ椂锛屽繀椤讳负1涓妭鐐癸紝鎵€鏈夎縼绉诲尯鍧楀彧闇€瑕佷竴涓叡璇嗚妭鐐规潵澶勭悊锛岃繖鏍峰彲浠ラ檷浣庤縼绉诲伐鍏峰叡璇嗛儴鍒嗗鐞嗛€昏緫锛屽悗缁縼绉绘垚鍔熷悗锛岀洰鏍囬摼鍙互閫氳繃鍙戜氦鏄撶殑鏂瑰紡鏂板鍏辫瘑鑺傜偣
- 鐗堟湰锛�: v2.2.1
- 鑺傜偣鏁帮細1
- 鍏辫瘑绫诲瀷锛歍BFT
- vm 绫诲瀷锛氶渶瑕佹敮鎸乨ocker-go
2. 鍒涘缓涓€涓ず渚媍hainmaker2.x鐩爣閾撅紝鎿嶄綔姝ラ濡備笅
```
# 1.浣跨敤chainmaker鑴氭湰閮ㄧ讲銆佺紪璇戙€佸惎鍔ㄤ竴鏉hainmaker2.x鐨勭洰鏍囬摼
cd chainmaker-go/scripts
sh prepare.sh 1 1
sh build_release.sh
sh cluster_quick_start.sh
# 2.鍋滄鐩爣閾�
sh cluster_quick_stop.sh
# 3.鍒犻櫎鐩爣閾剧殑data鐩綍锛屽悗缁浛鎹负杩佺Щ宸ュ叿鐢熸垚鐨勮縼绉绘暟鎹紝鍐嶅惎鍔ㄧ洰鏍囬摼锛屽嵆鍙緱鍒颁竴鏉℃嫢鏈夋簮閾惧尯鍧楁暟鎹殑鐩爣閾�
cd chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org
rm -rf data log
```
#### 閰嶇疆杩佺Щ宸ュ叿鐩爣閾�
1. fabric杩佺Щ鍒癱hainamker鍙敮鎸佽瘉涔︽ā寮忥紝鐩爣閾綾hainmaker2.x 浣跨敤鏂扮敓鎴愮殑璇佷功
2. 鍦ㄨ縼绉诲伐鍏穋onfig.yml涓紝閰嶇疆鐩爣閾剧殑鍒涗笘鍧楅厤缃�
```
genesis: "./config_path/dev/bc1.yml"
```
#### 閰嶇疆杩佺Щ宸ュ叿鍚堢害鏂囦欢
1. 鐩綍锛歝hainmaker-transfer-tool/config_path/contract
2. 闇€瑕侀厤缃殑涓や釜鍚堢害鏂囦欢
- assist.7z
- transfer
3. 婧愰摼涓篺abric锛屽悎绾︽枃浠剁洰褰�
```
chainmaker-transfer-tool/config_path/contract-fabric
```
#### 鍚姩杩佺Щ宸ュ叿
1. 鍚姩杩佺Щ宸ュ叿鐨勬祦绋�
```
#杩涘叆鍛戒护琛岃縼绉诲伐鍏�
cd chainmaker-transfer-tool
#缂栬瘧
go build
#鍚姩
./transfer-tool
```
#### 鍚姩鐩爣閾�
1. 灏嗚縼绉诲伐鍏风敓鎴愮殑鍖哄潡閾炬暟鎹甦atav2锛岄噸鍛藉悕涓篸ata锛屽鍒跺埌鐩爣閾剧殑宸ヤ綔鐩綍
```
# 杩涘叆鍛戒护琛岃縼绉诲伐鍏蜂富鐩綍
cd chainmaker-transfer-tool
#閲嶅懡鍚�
mv datav2 data
#鐩爣閾惧瓨鏀綿ata鐨勭洰褰�
chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org
```
2. 鍚姩鐩爣閾�
```
#鐩爣閾惧瓨鏀綿ata鐨勭洰褰�
cd chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org/bin
#鍚姩鐩爣閾�
./start.sh
```
3. 楠岃瘉杩佺Щ鏄惁鎴愬姛锛屽彲浠ョ粰鍏辫瘑鑺傜偣娣诲姞涓€涓悓姝ヨ妭鐐癸紝濡傛灉鍚屾鑺傜偣鑳芥甯稿悓姝ュ尯鍧楋紝璇佹槑杩佺Щ鎴愬姛
4. 濡傛灉鎯虫柊澧炲叡璇嗚妭鐐癸紝鍙互閫氳繃鍙戜氦鏄撶殑鏂瑰紡鏂板鍏辫瘑鑺傜偣鐨勬暟閲�
### chainmaker1.x鍒癱hainmaker2.x
杩佺Щ宸ュ叿浣跨敤娴佺▼濡備笅锛�
1. 閰嶇疆杩佺Щ宸ュ叿婧愰摼淇℃伅
2. 鍒涘缓杩佺Щ宸ュ叿鐩爣閾�
3. 閰嶇疆杩佺Щ宸ュ叿鐩爣閾�
4. 閰嶇疆杩佺Щ宸ュ叿鍚堢害鏂囦欢
5. 鍚姩杩佺Щ宸ュ叿
6. 鍚姩鐩爣閾�
#### 閰嶇疆杩佺Щ宸ュ叿婧愰摼淇℃伅
1. 婧愰摼锛欳hainmaker 1.x锛屽鏋滄簮閾剧増鏈负v1.1.0锛岄渶瑕佸崟鐙瑅ersion閰嶇疆椤癸細v1.1.0
2. 杩佺Щ楂樺害锛�0浠h〃杩佺Щ鍒版簮閾剧殑鏈€鏂伴珮搴�
3. 杩佺Щ宸ュ叿鏀寔涓ょ鏂瑰紡
* chainmaker-sdk锛岄厤缃ソchainmaker-sdk鐨勯厤缃枃浠讹細sdk_config.yml
* 婧愰摼鐨勫瓨鍌ㄦā鍧楋紙v1.2.6鐗堟湰锛夛紝鏀寔鎷夊彇chainmaker1.x鎵€鏈夌増鏈殑閾撅紝闇€瑕佸皢chainmaker1.x婧愰摼鐨刣ata鐩綍澶嶅埗鍒皌ransfer宸ュ叿鐨勫悓绾х洰褰�
4. config.yml閰嶇疆鏂囦欢
```
# 杩佺Щ婧愰摼淇℃伅
origin_chain:
transfer_height: 0
chain_type: "chainmaker"
chain_version: "v1.1.0"
```
#### 鍒涘缓杩佺Щ宸ュ叿鐩爣閾�
1. 鐩爣閾惧垵娆″惎鍔ㄦ椂锛宑hainmaker2.x 鐩爣閾剧殑鏃剁殑瑕佹眰濡備笅锛屾敞鎰忥細鐩爣閾惧垵娆″惎鍔ㄦ椂锛屽繀椤讳负1涓妭鐐癸紝鎵€鏈夎縼绉诲尯鍧楀彧闇€瑕佷竴涓叡璇嗚妭鐐规潵澶勭悊锛岃繖鏍峰彲浠ラ檷浣庤縼绉诲伐鍏峰叡璇嗛儴鍒嗗鐞嗛€昏緫锛屽悗缁縼绉绘垚鍔熷悗锛岀洰鏍囬摼鍙互閫氳繃鍙戜氦鏄撶殑鏂瑰紡鏂板鍏辫瘑鑺傜偣
- 鐗堟湰锛�: v2.2.1
- 鑺傜偣鏁帮細1
- 鍏辫瘑绫诲瀷锛歍BFT
- vm 绫诲瀷锛氶渶瑕佹敮鎸乨ocker-go
2. 鍒涘缓涓€涓ず渚媍hainmaker2.x鐩爣閾撅紝鎿嶄綔姝ラ濡備笅
```
# 1.浣跨敤chainmaker鑴氭湰閮ㄧ讲銆佺紪璇戙€佸惎鍔ㄤ竴鏉hainmaker2.x鐨勭洰鏍囬摼
cd chainmaker-go/scripts
sh prepare.sh 1 1
sh build_release.sh
sh cluster_quick_start.sh
# 2.鍋滄鐩爣閾�
sh cluster_quick_stop.sh
# 3.鍒犻櫎鐩爣閾剧殑data鐩綍锛屽悗缁浛鎹负杩佺Щ宸ュ叿鐢熸垚鐨勮縼绉绘暟鎹紝鍐嶅惎鍔ㄧ洰鏍囬摼锛屽嵆鍙緱鍒颁竴鏉℃嫢鏈夋簮閾惧尯鍧楁暟鎹殑鐩爣閾�
cd chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org
rm -rf data log
```
#### 閰嶇疆杩佺Щ宸ュ叿鐩爣閾�
1. 纭畾鐩爣閾炬槸璇佷功妯″紡杩樻槸鍏挜妯″紡
2. 濡傛灉鏄瘉涔︽ā寮忥紝闇€瑕佸垽鏂細
- 鐩爣閾句娇鐢ㄦ簮閾剧殑璇佷功
- 鐩爣閾句娇鐢ㄦ柊鐢熸垚鐨勮瘉涔�
3. 濡傛灉鐩爣閾句娇鐢ㄦ簮閾剧殑璇佷功锛屽鍒跺垱寤虹殑鐩爣閾剧殑閰嶇疆鏂囦欢锛岀粰鍒拌縼绉诲伐鍏�
- 鐩爣閾捐瘉涔﹁矾寰勶細chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org/config/wx-org.chainmaker.org
- 杩佺Щ宸ュ叿瀛樻斁鐩爣閾捐瘉涔︾殑璺緞锛歝hainmaker-transfer-tool/config_path
-
4. 婧愰摼璇佷功瀹氫箟浜嗗叡璇嗚妭鐐圭殑id鍜岀粍缁囧悕锛屽洜姝ょ洰鏍囬摼鐨勯厤缃枃浠禼hainmaker.yml鍜宐c1.yml锛屼篃瑕佷娇鐢ㄦ簮閾剧殑閰嶇疆鏂囦欢涓浉鍚岀殑鍏辫瘑鑺傜偣id鍜岀粍缁囷紝鐩爣閾剧殑閰嶇疆鏂囦欢鏇存敼锛�
- 杩佺Щ宸ュ叿涓紝鐩爣閾剧殑bc1.yml闇€瑕佹洿鏀规牴璇佷功鐨勪綅缃�
```
# Trust roots is used to specify the organizations' root certificates in permessionedWithCert mode.
# When in permessionedWithKey mode or public mode, it represents the admin users.
trust_roots:
# org id and root file path list.
- org_id: "wx-org1.chainmaker.org"
root:
- "./config_path/wx-org1.chainmaker.org/certs/ca/wx-org1.chainmaker.org/ca.crt"
```
5. 鍦ㄨ縼绉诲伐鍏穋onfig.yml涓紝閰嶇疆鐩爣閾剧殑鍒涗笘鍧楅厤缃�
```
genesis: "./config_path/dev/bc1.yml"
```
#### 閰嶇疆杩佺Щ宸ュ叿鍚堢害鏂囦欢
1. 鐩綍锛歝hainmaker-transfer-tool/config_path/contract
2. 闇€瑕侀厤缃殑涓や釜鍚堢害鏂囦欢
- assist.7z
- transfer
3. 婧愰摼涓篶hainmaker1.x锛屽悎绾︽枃浠剁洰褰�
```
chainmaker-transfer-tool/config_path/contract-cm
```
#### 鍚姩杩佺Щ宸ュ叿
1. 缂栬瘧銆佸惎鍔ㄨ縼绉诲伐鍏风殑娴佺▼
```
# 杩涘叆鍛戒护琛岃縼绉诲伐鍏蜂富鐩綍
cd chainmaker-transfer-tool
#缂栬瘧
go build
#鍚姩
./transfer-tool
```
2. 杩佺Щ瀹屾垚鍚庯紝鐢熸垚鐨勭洰鏍囬摼鍖哄潡鏁版嵁浣嶄簬杩佺Щ宸ュ叿涓荤洰褰曪細chainmaker-transfer-tool/datav2
#### 鍚姩鐩爣閾�
1. 灏嗚縼绉诲伐鍏风敓鎴愮殑鍖哄潡閾炬暟鎹甦atav2锛岄噸鍛藉悕涓篸ata锛屽鍒跺埌鐩爣閾剧殑宸ヤ綔鐩綍
```
# 杩涘叆鍛戒护琛岃縼绉诲伐鍏蜂富鐩綍
cd chainmaker-transfer-tool
#閲嶅懡鍚�
mv datav2 data
#鐩爣閾惧瓨鏀綿ata鐨勭洰褰�
chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org
```
2. 鍚姩鐩爣閾�
```
#鐩爣閾惧瓨鏀綿ata鐨勭洰褰�
cd chainmaker-go/build/release/chainmaker-v2.2.1-wx-org.chainmaker.org/bin
#鍚姩鐩爣閾�
./start.sh
```
3. 楠岃瘉杩佺Щ鏄惁鎴愬姛锛屽彲浠ョ粰鍏辫瘑鑺傜偣娣诲姞涓€涓悓姝ヨ妭鐐癸紝濡傛灉鍚屾鑺傜偣鑳芥甯稿悓姝ュ尯鍧楋紝璇佹槑杩佺Щ鎴愬姛
4. 濡傛灉鎯虫柊澧炲叡璇嗚妭鐐癸紝鍙互閫氳繃鍙戜氦鏄撶殑鏂瑰紡鏂板鍏辫瘑鑺傜偣鐨勬暟閲�