# 褰掓。涓績浣跨敤鏂囨。 鐐瑰嚮姝ら摼鎺ユ煡鐪媅褰掓。涓績璁捐鏂规](../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腑蹇�.