본문 바로가기
Cryptocurrency/Akash Network

Akashnet-2 업그레이드 절차

by balhaeofsoul 2021. 3. 8.

업그레이드 시간 전에 검증인이 해야 할 일은 무엇입니까?

1. 현재 올바른 버전의 Akash를 실행하고 있는지 확인하십시오.

$ akashd version --long

name: akash

server_name: akashd

client_name: akashctl

version: 0.8.3

commit: 11a6e4dfba545073f79732088735f93a5408995c

build_tags: netgo,ledger,mainnet

go: go version go1.15.5 linux/amd64

2. 중지 시간을 설정하여 유효성 검사기 노드가 올바른 시간과 날짜 (2021 년 3 월 8 일 1500 UTC)에 중지되도록합니다.

$ perl -i -pe 's/^halt-time =.*/halt-time = 1615195800/' ~/.akashd/config/app.toml

또는 nano 또는 vm을 사용하여 app.toml을 수동으로 업데이트 할 수 있습니다.

3. akashd 바이너리 또는 시스템 프로세스 중지

4. akashd 바이너리 또는 systemd 프로세스를 다시 시작하십시오.

업그레이드 지침, 노드 중지 후 (예 : 2021 년 3 월 8 일 15:00UTC 이후)

1. akashd 바이너리 또는 시스템 프로세스 중지

2. 서명 된 마지막 블록 높이 확인

검증인이 서명 한 마지막 블록 높이를 확인하십시오.

$ cat ~ / .akashd / data / priv_validator_state.json | jq '.height'

이 높이에서 상태 내보내기를 가져옵니다 (최종 높이에 대한 결정은 메인 넷 유효성 검사기 불일치 채널에서 조정 됨).

3. akashnet-1 상태 내보내기

akashd export --for-zero-height --height <height>> old_genesis_export.json

4. 다음 명령을 실행하여 마이그레이션 문제를 수정합니다 (cosmos-sdk에서 아직 수정되지 않음 : https://github.com/cosmos/cosmos-sdk/issues/8776).

cat old_genesis_export.json | jq '.app_state.auth.accounts= [.app_state.auth.accounts[] | if (.value.public_key!=null and .value.public_key!="") then (.value.public_key.value= (.value.public_key.value | if type=="string" then . else (.threshold = (.threshold| tonumber)) end)) else . end ]' > old_genesis_updated.json

5. (정렬 된) 내 보낸 제네시스 파일의 SHA256을 확인합니다.

$ jq -S -c -M '' old_genesis_updated.json | shasum -a 256

이 값을 discord 서버의 # validators-mainnet을 통해 네트워크의 다른 유효성 검사기와 비교하십시오. 모든 사람이 동일한 제네시스 파일 내보내기를 만들 수있는 것이 중요합니다.

HASH: [TBD]

6. Akash v0.10.0 설치

참고 : 새 바이너리를 빌드하려면 Go 1.15 이상이 필요합니다.

git clone https://github.com/ovrclk/akash

cd akash

git checkout v0.10.0

MAINNET=true make install

7. 올바른 버전인지 확인하십시오.

$ akash version --long

name: akash

server_name: akash

version: 0.10.0

commit: af43b89e47e50bfeedcc35c7ee77229bd258ed0d

build_tags: netgo,ledger,mainnet

go: go version go1.15.5 linux/amd64

build_deps:

- github.com/99designs/keyring@v1.1.6

- github.com/ChainSafe/go-schnorrkel@v0.0.0-20200405005733-88cbf1b4c40d

- github.com/Workiva/go-datastructures@v1.0.52

....

참고 : akashdakashctl은 이제 akash라는 단일 바이너리로 병합됩니다.

8. 내 보낸 상태를 현재 v0.8.3 버전에서 새 v0.10.0 버전으로 마이그레이션합니다.

$ akash migrate v0.40 old_genesis_updated.json --chain-id=akashnet-2 > 040_migrated_genesis.json

9. Migrate 명령은 다음 단계에서 수정할 증거 모듈의 max_bytes에 대한 경고를 내 보낸 파일에 추가합니다. 경고를 제거하십시오.

$ sed -i '/Warning/d' 040_migrated_genesis.json

10. 아래와 같이 증거 매개 변수를 업데이트합니다.

$ sed -i 's/{"max_age_duration":"172800000000000","max_age_num_blocks":"100000"}/{"max_age_duration":"172800000000000","max_age_num_blocks":"100000","max_bytes":"1048576"}/g' 040_migrated_genesis.json

11. Genesis 파일에 IBC 및 Akash 매개 변수를 추가합니다.

$ cat 040_migrated_genesis.json | jq '.app_state |= . + {"ibc":{"client_genesis":{"clients":[],"clients_consensus":[],"create_localhost":false},"connection_genesis":{"connections":[],"client_connection_paths":[]},"channel_genesis":{"channels":[],"acknowledgements":[],"commitments":[],"receipts":[],"send_sequences":[],"recv_sequences":[],"ack_sequences":[]}},"transfer":{"port_id":"transfer","denom_traces":[],"params":{"send_enabled":false,"receive_enabled":false}},"capability":{"index":"1","owners":[]}} + {"deployment":{"deployments":[],"params":{"deployment_min_deposit":{"denom":"uakt","amount":"5000000"}}},"market":{"orders":[],"leases":[],"params":{"bid_min_deposit":{"denom":"uakt","amount":"50000000"},"order_max_bids": 20}}} + {"provider":{"providers":[]}} + {"cert":{"certificates":[]}} + {"audit":{"attributes":[]}} + {"escrow":{"accounts":[],"payments":[]}}' > new_genesis.json

12. 최종 생성 JSON의 SHA256을 확인합니다.

$ jq -S -c -M '' new_genesis.json | shasum -a 256

HASH: TBA

13. akash에 대한 새 홈 디렉토리 만들기

$ akash init <moniker> --chain-id akashnet-2

14. config.toml에서 빠른 동기화 옵션을 v2로 업데이트하십시오.

version = "v2"

15. app.toml에서 다음과 같이 변경하십시오.

# 상태 동기화 스냅 샷을 사용하면 기록을 재생하지 않고도 다른 노드가 네트워크에 빠르게 참여할 수 있습니다.

# 블록 대신 주어진 높이에서 애플리케이션 상태의 스냅 샷을 다운로드하고 적용합니다.

[상태 동기화]

# snapshot-interval은 로컬 상태 동기화 스냅 샷이 생성되는 블록 간격을 지정합니다.

# 취함 (사용하지 않으려면 0). pruning-keep-every의 배수 여야합니다.

스냅 샷 간격 = 500

# snapshot-keep-recent는 유지하고 제공 할 최근 스냅 샷 수를 지정합니다 (모두 유지하려면 0).

스냅 샷 유지 최근 = 2

16. 노드와 priv_val_key 및 새 제네시스를 새 홈 디렉토리에 복사 (컨센서스 키에 파일 기반 FilePV 구현을 사용하는 사용자에게만 해당)

$ cp .akashd/config/node_key.json .akash/config/node_key.json

$ cp .akashd/config/priv_validator_key.json .akash/config/priv_validator_key.json

$ cp new_genesis.json .akash/config/genesis.json

17. .akash / config / config.toml에 피어 추가

18. systemd 업데이트

akashd 대신 akash를 사용하도록 systemd 파일을 편집하고 서비스 파일의 이름을 akash로 변경하십시오.

19. 유효성 검사기 시작

sudo service akash start

참고 : 니모닉을 사용하여 키 마이그레이션 또는 복구 (원장이 아닌 모든 사용자의 경우)

akashctl keys export <keyname>

akash keys import <key_name> <key_file_json>

or

akash keys add <key-name> --recover

참고자료

Homepage : https://akash.network/

Twitter : https://twitter.com/akashnet_

Telegram : https://t.me/AkashNW

Discord : https://discord.com/invite/DxftX67

Facebook : https://www.facebook.com/akashnw

Instagram : https://www.instagram.com/akash.network/

Reddit : https://www.reddit.com/r/akashnetwork/

Whitepaper : https://akash.network/whitepapers/

<투자유의 사항>

1. 가상 자산에 투자는 높은 변동성의 위험이 있어 투자 손실이 발생 할 수 있습니다.

​2. 해당 포스팅은 투자관련하여 단순히 정보 공유에 관한 글입니다.

3. 해당 포스팅을 통하여 투자를 하셔도 개인 투자는 본인의 판단에 따라 투자 하실 것을 권해드리며, 손실에 대한 어떠한 책임도 지지 않습니다. 내용은 참고만 하시기 바랍니다.

@ 본 게시글은 소정의 수수료를 받고 작성 하였습니다.