# 褰掓。涓績浣跨敤鏂囨。  

 鐐瑰嚮姝ら摼鎺ユ煡鐪媅褰掓。涓績璁捐鏂规](../tech/%E5%BD%92%E6%A1%A3%E4%B8%AD%E5%BF%83%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%AE%9E%E7%8E%B0.md)

## 鏈枃妗e唴瀹瑰涓�
0. 閮ㄧ讲鏂规
1. 鍚姩褰掓。涓績鏈嶅姟
2. 浣跨敤cmc褰掓。閾句笂鏁版嵁鍒板綊妗d腑蹇冩湇鍔�
3. 浣跨敤sdk鏌ヨ宸茬粡褰掓。鏁版嵁
4. FAQ

## `褰掓。涓績鏈嶅姟`閮ㄧ讲鏂规  
- `褰掓。涓績`鍗曞疄渚嬮儴缃�.鎵€鏈夎妭鐐瑰彲鍏辩敤涓€涓綊妗d腑蹇冩湇鍔°€備竴鏉¢摼鍙互浠呴儴缃蹭竴涓綊妗d腑蹇冦€傝繖鏍烽儴缃茬殑浼樼偣鍦ㄤ簬鑺傜渷瀛樺偍绌洪棿銆�
- `褰掓。涓績`澶氬疄渚嬮儴缃�.姣忎釜鑺傜偣閮藉彲鍗曠嫭閮ㄧ讲涓€涓綊妗d腑蹇冩湇鍔°€傝繖鏍烽儴缃茬殑浼樼偣鍦ㄤ簬锛屽悇鑺傜偣鏁版嵁鍒嗙锛屽彲浠ュ仛鍒版煡璇㈠凡缁忓綊妗f暟鎹殑楂樺彲鐢ㄣ€�
<div align=center>
<img src="../images/single-deploy-archivecenter.png"/>
<center>褰掓。涓績鍗曞疄渚嬮儴缃�</center>
</div>  


<div align=center>
<img src="../images/multi-deploy-archivecenter.png"/>
<center>褰掓。涓績澶氬疄渚嬮儴缃�</center>
</div>  

## `褰掓。涓績鏈嶅姟`鐨勫畨瑁�,閰嶇疆鍜岃繍琛�    

### 鐜渚濊禆   
- linux 绯荤粺,寮€鍚痬map  
- golang 1.16+    
- 7zip鍘嬬缉宸ュ叿   
    - centos涓嬪畨瑁�: sudo yum -y install p7zip p7zip-plugins    
    - ubuntu涓嬪畨瑁�: sudo apt install p7zip-full   

### 鐗堟湰瀵瑰簲鍏崇郴  

| 閾�<br>chainmaker-go | 褰掓。涓績鏈嶅姟<br/>chainmaker-archive-service | CMC宸ュ叿<br/>chainmaker-go | SDK-Go | SDK-Java |
|:------------------:| :-: |:-----------------------:|:------:| :-: |
|       v2.3.3       | v1.0.0 |         v2.3.3          | v2.3.4 |  v2.3.2 |


### [璁捐鏂规璇﹁](../tech/%E5%BD%92%E6%A1%A3%E4%B8%AD%E5%BF%83%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%AE%9E%E7%8E%B0.md)   

### 涓嬭浇chainmaker-archive-service婧愮爜   
```bash
git clone -b v1.0.0 https://git.chainmaker.org.cn/chainmaker/chainmaker-archive-service.git
```
### 閮ㄧ讲鏈嶅姟
涓嬭浇浠g爜鍚�,鍙互鏍规嵁浠g爜缂栬瘧docker闀滃儚浣跨敤docker杩愯褰掓。涓績锛涗篃鍙互鏍规嵁浠g爜缂栬瘧鎴愪簩杩涘埗鍙墽琛屾枃浠惰繍琛屽綊妗d腑蹇�
#### 缂栬瘧,浣跨敤docker闀滃儚
浣跨敤docker闀滃儚,鍙互鑷淇敼闀滃儚鎸傝浇鐨勭洰褰�(淇敼makefile涓殑MOUNT_PATH鍙橀噺鍗冲彲)
```bash
make docker-build # 缂栬瘧docker闀滃儚
make docker-start # 浣跨敤缂栬瘧濂界殑docker闀滃儚鍚姩鏈嶅姟
make docker-stop # 鍋滄docker闀滃儚鏈嶅姟
```
#### 缂栬瘧,浣跨敤浜岃繘鍒�: 
```bash
make build # 缂栬瘧褰掓。涓績鍙墽琛屼簩杩涘埗
make start # 鍚姩褰掓。涓績鏈嶅姟
make stop # 鍋滄褰掓。涓績鏈嶅姟 
 
```

### 鏈嶅姟閰嶇疆 
- 鏁翠綋閰嶇疆姒傝  

```bash
鈹溾攢鈹€ configs # 褰掓。涓績鏈嶅姟閰嶇疆鏂囦欢澶�
鈹�   鈹溾攢鈹€ config.yml # 褰掓。涓績鏈嶅姟閰嶇疆
鈹�   鈹溾攢鈹€ server_cert # 濡傛灉寮€鍚疓RPC鐨凾LS,涓嬮潰閰嶇疆鏈夋晥.涓哄綊妗d腑蹇冪殑璇佷功鍜岀閽�
鈹�   鈹�   鈹溾攢鈹€ archive-server.key # 褰掓。涓績鐨勭閽�
鈹�   鈹�   鈹斺攢鈹€ archive-server.pem # 褰掓。涓績鐨勮瘉涔�
鈹�   鈹斺攢鈹€ trust_list # 濡傛灉寮€鍚簡GRPC鐨凾LS,涓鸿繛鎺ュ綊妗d腑蹇冪殑CMC鎵€浣跨敤鐨勬牴璇佷功
鈹�       鈹斺攢鈹€ baec-client-root.pem # 绛惧彂CMC鐨勬牴璇佷功
```
- config.yml 鏈嶅姟閰嶇疆鏂囦欢璇存槑  

```bash
# Logger settings
log: # 鏃ュ織閰嶇疆 
  # Logger configuration file path.
  log_path: ../log # 鏃ュ織杈撳嚭鐨勬牴璺緞  
  log_level: debug 
  log_in_console: false
  show_color: true
  max_size: 200 # MB
  max_backups: 3 
  max_age: 3 # day 
  compress: false
# api server setting 

http: # http鏈嶅姟閰嶇疆
  port: 13119  
  ratelimit:
    # Ratelimit switch. Default is false.
    enabled: false

    # Rate limit type
    # 0: limit globally, 1: limit by ip
    type: 0

    # Token number added to bucket per second.
    # -1: unlimited, by default is 10000.
    token_per_second: -1

    # Token bucket size.
    # -1: unlimited, by default is 10000.
    token_bucket_size: -1

  white_list: # 鐧藉悕鍗曢厤缃�
    enabled: false 
    address:
      - 127.0.0.1      

# RPC service setting
rpc: # grpc 鏈嶅姟閰嶇疆 
  # RPC port
  port: 13120 # grpc port    

  # Rate limit related settings
  # Here we use token bucket to limit rate.
  ratelimit:
    # Ratelimit switch. Default is false.
    enabled: false

    # Rate limit type
    # 0: limit globally, 1: limit by ip
    type: 0

    # Token number added to bucket per second.
    # -1: unlimited, by default is 10000.
    token_per_second: -1

    # Token bucket size.
    # -1: unlimited, by default is 10000.
    token_bucket_size: -1

  white_list: # rpc鎺ュ彛鐧藉悕鍗曢厤缃�
    enabled: false 
    address:
      - 127.0.0.1  
  tls_enable : false  # 鍙湁浣跨敤RPC鐨凾LS鐨勬椂鍊欐墠璁剧疆涓簍rue锛屽叾浣欎负false 
  # RPC TLS settings
  tls: # RPC鐨凾LS閰嶇疆 
    # RPC TLS private key file path
    priv_key_file:  ../configs/server_cert/archive-server.key # 绉侀挜
    # RPC TLS public key file path
    cert_file:      ../configs/server_cert/archive-server.pem # 璇佷功
    trust_ca_list: # 鍙皟鐢≧PC绔殑绛惧彂鏍硅瘉涔�  
     # - ../configs/trust_list/archive-client.pem
      - ../configs/trust_list/baec-client-root.pem
     # - "configs/trust_list/ca1.ca"
     # - "configs/trust_list/ca2.ca"

  # RPC server max send/receive message size in MB
  max_send_msg_size: 200
  max_recv_msg_size: 200  


# Monitor related settings
monitor: # prometheus 鐩戞帶閰嶇疆
  # Monitor service switch, default is false.
  enabled: false

  # Monitor service port
  port: 13122

# PProf Settings
pprof: # golang鐨刾prof閰嶇疆   
  # If pprof is enabled or not
  enabled: false

  # PProf port
  port: 13123

# Storage config settings
storage_template:
  # 瀛樺偍绯荤粺淇℃伅
  store_path: ../service_datas  
  # 瀛樺偍閾剧殑block淇℃伅
  bfdb_path: ../service_datas
  # 瀛樺偍閾剧殑绱㈠紩淇℃伅
  index_path: ../service_datas
  # 瀛樺偍閾剧殑鍘嬬缉淇℃伅
  compress_path: ../service_datas
  # 瀛樺偍閾剧殑瑙e帇缂╀俊鎭� 
  decompress_path: ../service_datas

  # async write block in file block db to disk, default: false, so default is sync write disk
  logdb_segment_async: false # 鏄惁寮傛鍐欏叆,false鐨勬椂鍊欎笉浼氫涪鏁版嵁锛�

  # file size of .fdb, MB, default: 20
  logdb_segment_size: 128 # 褰掓。涓績瀛樺偍鍖哄潡鏂囦欢鐨勫崟涓枃浠跺ぇ灏忛檺鍒�,鍙互涓庨摼閰嶇疆涓€鑷�  

  segment_cache_size: 10  # 绯荤粺璇绘枃浠舵椂鍚屾椂淇濈暀鐨勬渶澶ф枃浠跺彞鏌勬暟鐩�

  use_mmap: true  # 鎿嶄綔绯荤粺闇€瑕佹敮鎸乵map
  # 鎵弿宸茬粡瑙e帇鎴栧凡缁忓帇缂╃殑鏂囦欢鍒楄〃鐨勬椂闂撮棿闅�,鍗曚綅涓虹
  scan_interval_seconds: 300
  # 鏈€澶т繚鐣欏凡瑙e帇鎴栧凡鍘嬬缉鏂囦欢鐨勬椂闀�  ,鍗曚綅涓虹.绯荤粺鎸夌収 scan_interval_seconds棰戠巼鎵弿宸插帇缂╂垨瑙e帇缂╃殑鏂囦欢,鍙戠幇璇ユ枃浠朵笂娆¤鍙栨椂闂翠笌褰撳墠鏃堕棿闂撮殧澶т簬retain_seconds,鍒欏垹闄よ鏂囦欢(鑺傜渷纾佺洏绌洪棿)
  retain_seconds: 3600
  # compress_method: 7z # 7z or gzip
  compress_seconds: 2000 # 鍗曚綅涓虹,鍘�/瑙e帇缂╄秴鏃舵椂闂�,閰嶇疆涓巐ogdb_segment_size 鐨勫ぇ灏忔湁鍏崇郴,鏂囦欢澶у皬瓒婂ぇ,杩欎釜鍊艰缃殑瓒婂ぇ.
  leveldb_config: # leveldb鐨勯厤缃�,
    bloom_filter_bits: 10 

```


### 璁板綍`褰掓。涓績鏈嶅姟`鐨則oken  
璁板綍鏈嶅姟鐢熸垚鐨則oken鍒皊erver_token. token鐢ㄤ簬璋冪敤鍘嬬缉褰掓。涓績鏁版嵁鍜岀鐞嗚瘉涔︾殑鎺ュ彛浣跨敤   
```bash
cd [log-dir] # 杩涘叆閰嶇疆鏂囦欢涓寚瀹氱殑鏃ュ織鐩綍
grep token processor.log 
```


## 浣跨敤`CMC`宸ュ叿褰掓。閾句笂鏁版嵁鍒癭褰掓。涓績鏈嶅姟`    

### 涓嬭浇鏀寔CMC褰掓。涓績鐨勬簮鐮�   
```bash
git clone -b v2.3.3  https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
```

### 缂栬瘧CMC宸ュ叿:   

```bash
cd tools/cmc
go build -o cmc  
```

### CMC鏀寔褰掓。涓績閰嶇疆姒傝: 
- 閰嶇疆姒傝: 濡傛灉GRPC寮€鍚簡TLS楠岃瘉,key鍜宲em鎵嶆湁鐢�,鍚﹀垯鏃犵敤  
```bash
鈹溾攢鈹€ testdata
鈹溾攢鈹€鈹€鈹€ archivecenter
鈹�   鈹溾攢鈹€鈹€鈹€ archive-client.key # Grpc璋冪敤瀹㈡埛绔殑绉侀挜   
鈹�   鈹溾攢鈹€鈹€鈹€ archive-client.pem # Grpc璋冪敤瀹㈡埛绔殑璇佷功  
鈹�   鈹溾攢鈹€鈹€鈹€ baec-root.pem # 濡傛灉褰掓。涓績鏈嶅姟GRPC寮€鍚簡TLS,杩欎釜鏄鍙戝綊妗d腑蹇冩湇鍔¤瘉涔︾殑鏍硅瘉涔�
鈹溾攢鈹€ cmc # CMC鍙墽琛屾枃浠�
鈹溾攢鈹€ main.go # CMC婧愮爜鍏ュ彛鏂囦欢

```
- config.yml鏂囦欢瑙f瀽:   

```bash

  archive:
    # 鏁版嵁褰掓。閾惧瀛樺偍鐩稿叧閰嶇疆
    # 濡傛灉浣跨敤浜嗘柊鐗堟湰鐨勫綊妗d腑蹇�,杩欎釜鍦版柟閰嶇疆涓篴rchivecenter
    type: "archivecenter"  # archivecenter 褰掓。涓績, mysql mysql鏁版嵁搴�    
    dest: "root:123456:localhost:3306"
    secret_key: xxx
  # # 濡傛灉鍚敤浜嗗綊妗d腑蹇�,鍙互鎵撳紑涓嬮潰鐨勫綊妗d腑蹇冮厤缃�  
  archive_center_query_first: false # 濡傛灉涓簍rue涓斿綊妗d腑蹇冮厤缃墦寮€,閭d箞鏌ヨ鏁版嵁浼樺厛浠庡綊妗d腑蹇冩煡璇�;
  archive_center_config:
    chain_genesis_hash: cc94caf0ad4540b28e6b5e0ee10dd6c6375d68d10e912c56875a7139af55f6d0  #褰掓。鐨勯摼鐨勫潡楂樹负0鐨勫尯鍧梙ash(hex缂栫爜)
    archive_center_http_url: http://127.0.0.1:13119 # 褰掓。涓績http鏈嶅姟鍦板潃,
    request_second_limit: 10 # 褰掓。涓績http璇锋眰瓒呮椂鏃堕棿,绉掑崟浣�
    rpc_address: 127.0.0.1:13120 #褰掓。涓績rpc鏈嶅姟鍦板潃
    tls_enable: false # 涓嶅紑鍚痝rpc鐨則ls鐨勬椂鍊�,濡備笅閰嶇疆鍙拷鐣�
    tls:
      server_name: archiveserver1.tls.wx-org.chainmaker.org # 褰掓。涓績tls鏈嶅姟娉ㄥ唽鐨勫悕绉�
      priv_key_file: ./testdata/archivecenter/archiveadmin1.tls.key  # cmc渚у仛tls鐨勭閽�
      cert_file: ./testdata/archivecenter/archiveadmin1.tls.crt  # cmc渚у仛tls鐨勮瘉涔�
      trust_ca_list:
        - ./testdata/archivecenter/ca.crt    # 褰掓。涓績鏈嶅姟鏍硅瘉涔�
    max_send_msg_size: 200  # grpc 鍙戦€佹渶澶ф秷鎭�(MB涓哄崟浣�)
    max_recv_msg_size: 200 # grpc 鎺ユ敹鏈€澶ф秷鎭�(MB涓哄崟浣�)


```
鍏朵腑鍒涗笘鍧梒hain_genesis_hash鐨勮幏鍙栧彲浠ラ噰鐢ㄥ涓嬫楠�:  
```bash
# 棣栧厛浣跨敤cmc浠庨摼涓婃煡璇㈠垱涓栧潡鐨刡lockhash
./cmc query block-by-height 0 \
--sdk-conf-path './testdata/sdk_config.yml' 
# 璋冪敤褰掓。涓績http鎺ュ彛,鑾峰彇hex缂栫爜鐨刧enesis_block_hash,鍏朵腑[blockhash]鍗充负涓婇潰cmc鏌ヨ鍑烘潵鐨刡ase64缂栫爜鐨刪ash
curl -X POST 'http://127.0.0.1:13119/get_hashhex_by_hashbyte' -d '{"block_hash": [blockhash]}'
```

### 浣跨敤CMC宸ュ叿褰掓。鏁版嵁
```bash
# 褰掓。閾句笂 鍖哄潡鍧楅珮鐨�1-100鐨勬暟鎹� 
./cmc archive dump 100 --sdk-conf-path ./testdata/sdk_config.yml --mode quick

```
### cmc鏌ヨ褰掓。涓績褰撳墠宸插綊妗f暟鎹姸鎬佸懡浠�
```bash
./cmc archive query archived-status --sdk-conf-path ./testdata/sdk_config.yml

```
### cmc鏌ヨ閾句笂褰撳墠宸插綊妗f暟鎹姸鎬佸懡浠�
```bash
./cmc archive query chain-archived-status --sdk-conf-path ./testdata/sdk_config.yml
```

### cmc鏌ヨ褰掓。涓績,鏍规嵁楂樺害鏌ュ尯鍧楀懡浠�
```powershell
./cmc archive query block-by-height 20  --sdk-conf-path ./testdata/sdk_config.yml
```

### cmc鏌ヨ褰掓。涓績,鏍规嵁txId鏌ヨ鍖哄潡鍛戒护
```powershell
./cmc archive query block-by-txid 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be --sdk-conf-path ./testdata/sdk_config.yml
```

### cmc鏌ヨ褰掓。涓績,鏍规嵁txId鏌ヨ浜ゆ槗鍛戒护
```powershell
./cmc archive query tx 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be  --sdk-conf-path ./testdata/sdk_config.yml
```

### cmc鏌ヨ褰掓。涓績,鏍规嵁block hash鏌ヨ鍖哄潡鍛戒护

```powershell
./cmc archive query block-by-hash 17221b132a25209aca52fdfc07218265e4377ef0099d46a49edfd032001fc2be --sdk-conf-path ./testdata/sdk_config.yml
```

### cmc娓呯悊閾句笂鍖哄潡鏁版嵁鍛戒护
```powershell
./cmc archive archive 10000 --timeout 20 --sdk-conf-path ./testdata/sdk_config.yml 
```

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




## 浣跨敤`SDK`閫忔槑鏌ヨ鍖哄潡鍜屼氦鏄撲俊鎭�

### 涓嬭浇sdk婧愮爜 
```bash
git clone -b v2.3.4 https://git.chainmaker.org.cn/chainmaker/sdk-go.git
```

### 濡傛灉鍚敤浜嗗綊妗d腑蹇冨湪sdk鐨勯厤缃枃浠朵腑澧炲姞濡備笅閰嶇疆: 
```bash
  archive:
    # 鏁版嵁褰掓。閾惧瀛樺偍鐩稿叧閰嶇疆
    # 濡傛灉浣跨敤浜嗘柊鐗堟湰鐨勫綊妗d腑蹇�,杩欎釜鍦版柟閰嶇疆涓篴rchivecenter
    type: "archivecenter"  # archivecenter 褰掓。涓績, mysql mysql鏁版嵁搴�    
    dest: "root:123456:localhost:3306"
    secret_key: xxx
  # # 濡傛灉鍚敤浜嗗綊妗d腑蹇�,鍙互鎵撳紑涓嬮潰鐨勫綊妗d腑蹇冮厤缃�  
  archive_center_query_first: true # 濡傛灉涓簍rue涓斿綊妗d腑蹇冮厤缃墦寮€,閭d箞鏌ヨ鏁版嵁浼樺厛浠庡綊妗d腑蹇冩煡璇� 
  archive_center_config:
    chain_genesis_hash: cc94caf0ad4540b28e6b5e0ee10dd6c6375d68d10e912c56875a7139af55f6d0  #褰掓。鐨勯摼鐨勫潡楂樹负0鐨勫尯鍧梙ash(hex缂栫爜)
    archive_center_http_url: http://127.0.0.1:13119 # 褰掓。涓績http鏈嶅姟鍦板潃,
    request_second_limit: 10 # 褰掓。涓績http璇锋眰瓒呮椂鏃堕棿,绉掑崟浣�
    rpc_address: 127.0.0.1:13120 #褰掓。涓績rpc鏈嶅姟鍦板潃
    tls_enable: false # 涓嶅紑鍚痝rpc鐨則ls鐨勬椂鍊�,濡備笅閰嶇疆鍙拷鐣�
    tls:
      server_name: archiveserver1.tls.wx-org.chainmaker.org # 褰掓。涓績tls鏈嶅姟娉ㄥ唽鐨勫悕绉�
      priv_key_file: ./testdata/archivecenter/archiveadmin1.tls.key  # cmc渚у仛tls鐨勭閽�
      cert_file: ./testdata/archivecenter/archiveadmin1.tls.crt  # cmc渚у仛tls鐨勮瘉涔�
      trust_ca_list:
        - ./testdata/archivecenter/ca.crt    # 褰掓。涓績鏈嶅姟鏍硅瘉涔�
    max_send_msg_size: 200  # grpc 鍙戦€佹渶澶ф秷鎭�(MB涓哄崟浣�)
    max_recv_msg_size: 200 # grpc 鎺ユ敹鏈€澶ф秷鎭�(MB涓哄崟浣�)
```

### sdk淇敼鐨勬柟娉曞垪涓惧涓�:
- GetChainConfigByBlockHeight(blockHeight uint64) (*config.ChainConfig, error)
- GetTxByTxId(txId string) (*common.TransactionInfo, error)
- GetTxWithRWSetByTxId(txId string) (*common.TransactionInfoWithRWSet, error)
- GetBlockByHeight(blockHeight uint64, withRWSet bool) (*common.BlockInfo, error)
- GetBlockByHash(blockHash string, withRWSet bool) (*common.BlockInfo, error) 
- GetBlockByTxId(txId string, withRWSet bool) (*common.BlockInfo, error)
- GetFullBlockByHeight(blockHeight uint64) (*store.BlockWithRWSet, error)
- GetBlockHeaderByHeight(blockHeight uint64) (*common.BlockHeader, error)
- GetMerklePathByTxId(txId string) ([]byte, error)
- GetBlockByHeightTruncate(blockHeight uint64, withRWSet bool, truncateLength int,truncateModel string)(*common.BlockInfo, error)
- GetTxByTxIdTruncate(txId string, withRWSet bool, truncateLength int,truncateModel string) (*common.TransactionInfoWithRWSet, error)

## 浣跨敤`HTTP`璇锋眰鐩存帴璋冪敤`褰掓。涓績鏈嶅姟`鐨勬帴鍙�
- 鎺ュ彛鍒嗕负涓ょ被:
    - 绠$悊绫绘帴鍙�: 鍘嬬缉宸插綊妗f暟鎹帴鍙�(/admin/compress_under_height)锛涜嫢寮€鍚簡GRPC鐨凾LS鍔熻兘,澧炲姞CA璇佷功鎺ュ彛(/admin/add_ca)锛涜繖涓や釜鎺ュ彛浣跨敤鐗瑰埆鐨則oken涔熷氨鏄儴缃叉湇鍔℃椂鍊欏啓鍏ュ埌server_token鏂囦欢鐨勫€�
    - 鏅€氭煡璇㈢被鎺ュ彛
- [褰掓。鏈嶅姟鐨刪ttp鎺ュ彛鏂囨。](./%E5%BD%92%E6%A1%A3%E4%B8%AD%E5%BF%83HTTP%E6%8E%A5%E5%8F%A3.md)  

## FAQ
- Q:褰掓。涓績鍜岄摼鑺傜偣蹇呴』涓€涓€瀵瑰簲鍚�?  
- A: 褰掓。涓績涓嶅繀鍜岃妭鐐逛竴涓€瀵瑰簲.褰掓。涓績鍙互褰掓。(涔熷嵆瀛樺偍)浠绘剰鑺傜偣鐨勬暟鎹�,骞舵彁渚涙煡璇㈠姛鑳�. 鎵€浠ュ鏋滄煡璇㈠凡缁忓綊妗f暟鎹殑闇€姹傛瘮杈冮珮鐨勬儏鍐典笅,鍙互閮ㄧ讲澶氫釜褰掓。涓績鎻愪緵鏌ヨ
- Q:宸茬粡鍦ㄩ摼涓婂仛浜唕estore,浣嗘槸鍐嶅仛archive鎴栬€卹estore澶辫触浜�
- A: 搴曢摼鐨剅estore鍜宎rchive閮芥槸寮傛浠诲姟,鐩稿綋鑰楁椂.搴曢摼浼氳褰曚竴涓綋鍓嶆槸鍚︽鍦╮estore/archive鐨勭姸鎬�,鏉ョ‘淇濅笉浼氬嚭鐜板涓猘rchive/restore浠诲姟骞跺彂鎵ц
- Q: 鎵цarchive鎸囦护,澶辫触浜�
- A: 鍙兘鏈夊涓嬪師鍥�: 1. 閾句笂鍖哄潡鏁扮洰姣旇緝灏�,杩樹笉瓒充互瑙﹀彂娓呯悊鐨勬搷浣�,鍙互璋冩暣搴曢摼鐨勯厤缃」鐩� unarchive_block_height(鍦╟hainmaker.yml鐨剆torage妯″潡涓�)灏忎竴鐐�.閲嶅惎搴曢摼鍐嶈瘯涓€涓嬶紱2. archive鎵€鍦ㄩ珮搴﹀強浠ヤ笅娌℃湁鍙互娓呯悊鐨勬枃浠�,鍙互缁х画杩愯鍖哄潡閾剧敓浜ф洿澶氬尯鍧椾互鍚庡啀鍋氭竻鐞嗗懡浠�
- Q: 鎵цarchive鎸囦护,娌℃湁鏉冮檺
- A: archive鎸囦护鍜宺estore鎸囦护閮芥槸楂樻潈闄愭搷浣�,闇€瑕乤dmin韬唤
- Q: 鎵цarchive鎸囦护,娓呯悊鐨勬槸鎵€鏈夎妭鐐圭殑鏁版嵁鍚�?
- A: archive鎸囦护閽堝鐨勬槸鍗曡妭鐐�,鑰屼笉鏄墍鏈夎妭鐐圭敓鏁堬紱鎵цarchive鎸囦护鐨勬槸sdk鐨剏aml鏂囦欢涓寚瀹氱殑鑺傜偣(鍦╪odes涓寚瀹氫竴涓妭鐐�) 
- Q: sdk/cmc涓殑閰嶇疆archive_center_query_first鎬庝箞璁剧疆?
- A: archive_center_query_first,杩欎釜寮€鍏冲鏋滄墦寮€.閭d箞浣跨敤sdk鎴栬€卌mc鐨勬椂鍊欎細浼樺厛浠庡綊妗d腑蹇冧笂鏌ユ暟鎹�,濡傛灉鏌ヤ笉鍒版墠浼氬埌閾句笂鍘绘煡璇紱鎵€浠ュ湪dump鏁版嵁鐨勬椂鍊�,杩欎釜鍊煎簲璇ヨ缃负false,鍥犱负cmc鎴栬€卻dk闇€瑕佷粠閾句笂鏌ユ暟鎹�,鍐嶅皢鏁版嵁杞Щ鍒板綊妗d腑蹇�.