Menyiapkan jaringan lokal
Memutar jaringan lokal
Prasyarat
Namada harus diinstal dari sumber untuk menjalankan jaringan lokal.
Ada skrip yang telah ditulis khusus untuk tujuan ini, yang dapat ditemukan scripts
di repositori Namada(terbuka di tab baru).
Menginstal dependensi skrip
Skrip memiliki beberapa dependensi yang harus diinstal agar dapat dijalankan dengan sukses:
python3 harus diinstal.
toml perpustakaan pip Python https://pypi.org/project/toml/(terbuka di tab baru)harus dipasang.
Skrip ini memerlukan file konfigurasi genesis, yaitu file TOML yang menentukan parameter jaringan. Contoh file tersebut dapat ditemukan di repo anoma-network-config(terbuka di tab baru)di templates
direktori.
Memodifikasi file konfigurasi genesis
Agar skrip dapat dijalankan dengan sukses, semua bagian validators
harus dihapus dari toml
file. Hal ini karena skrip akan menghasilkan sekumpulan validator baru untuk jaringan.
Blok kode di bawah ini menunjukkan contoh file konfigurasi genesis yang telah dimodifikasi untuk menghapus validators
bagian tersebut.
# Editing genesis config steps
# Developer network
genesis_time = "2021-12-20T15:00:00.00Z"
native_token = "NAM"
- # 3 genesis validators.
- [validator.validator-1]
- # Validator's token balance at genesis.
- tokens = 100000
- # Amount of the validator's genesis token balance which is not staked.
- non_staked_balance = 100000
- # VP for the validator account
- validator_vp = "vp_validator"
- # Commission rate for rewards
- commission_rate = 0.05
- # Maximum change per epoch in the commission rate
- max_commission_rate_change = 0.01
- # Public IP:port address
- net_address = "52.210.23.30:26656"
-
- [validator.validator-2]
- # Validator's token balance at genesis.
- tokens = 100000
- # Amount of the validator's genesis token balance which is not staked.
- non_staked_balance = 100000
- # VP for the validator account
- validator_vp = "vp_validator"
- # Commission rate for rewards
- commission_rate = 0.05
- # Maximum change per epoch in the commission rate
- max_commission_rate_change = 0.01
- # VP for the staking reward account
- staking_reward_vp = "vp_user"
- # Public IP:port address
- net_address = "63.32.203.239:26656"
-
- [validator.validator-3]
- # Validator's token balance at genesis.
- tokens = 100000
- # Amount of the validator's genesis token balance which is not staked.
- non_staked_balance = 100000
- # VP for the validator account
- validator_vp = "vp_validator"
- # Commission rate for rewards
- commission_rate = 0.05
- # Maximum change per epoch in the commission rate
- max_commission_rate_change = 0.01
- # VP for the staking reward account
- staking_reward_vp = "vp_user"
- # Public IP:port address
- net_address = "54.195.72.213:26656"
# Some tokens present at genesis.
[token.NAM]
address = "atest1v4ehgw36x3prswzxggunzv6pxqmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvfsg5erg3fkl09rg5"
vp = "vp_token"
[token.NAM.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
[token.BTC]
address = "atest1v4ehgw36xdzryve5gsc52veeg5cnsv2yx5eygvp38qcrvd29xy6rys6p8yc5xvp4xfpy2v694wgwcp"
vp = "vp_token"
[token.BTC.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
[token.ETH]
address = "atest1v4ehgw36xqmr2d3nx3ryvd2xxgmrq33j8qcns33sxezrgv6zxdzrydjrxveygd2yxumrsdpsf9jc2p"
vp = "vp_token"
[token.ETH.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
[token.DOT]
address = "atest1v4ehgw36gg6nvs2zgfpyxsfjgc65yv6pxy6nwwfsxgungdzrggeyzv35gveyxsjyxymyz335hur2jn"
vp = "vp_token"
[token.DOT.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
[token.Schnitzel]
address = "atest1v4ehgw36xue5xvf5xvuyzvpjx5un2v3k8qeyvd3cxdqns32p89rrxd6xx9zngvpegccnzs699rdnnt"
vp = "vp_token"
[token.Schnitzel.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
[token.Apfel]
address = "atest1v4ehgw36gfryydj9g3p5zv3kg9znyd358ycnzsfcggc5gvecgc6ygs2rxv6ry3zpg4zrwdfeumqcz9"
vp = "vp_token"
[token.Apfel.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
[token.Kartoffel]
address = "atest1v4ehgw36gep5ysecxq6nyv3jg3zygv3e89qn2vp48pryxsf4xpznvve5gvmy23fs89pryvf5a6ht90"
public_key = ""
vp = "vp_token"
[token.Kartoffel.balances]
atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3 = 9223372036854
# Some established accounts present at genesis.
[implicit.faucet]
address = "atest1v4ehgw36gc6yxvpjxccyzvphxycrxw2xxsuyydesxgcnjs3cg9znwv3cxgmnj32yxy6rssf5tcqjm3"
vp = "vp_user"
[established.masp]
address = "atest1v4ehgw36xaryysfsx5unvve4g5my2vjz89p52sjxxgenzd348yuyyv3hg3pnjs35g5unvde4ca36y5"
vp = "vp_masp"
# Wasm VP definitions
# Implicit VP
[wasm.vp_implicit]
filename = "vp_implicit.wasm"
# Default user VP in established accounts
[wasm.vp_user]
# filename (relative to wasm path used by the node)
filename = "vp_user.wasm"
# Validator VP
[wasm.vp_validator]
filename = "vp_validator.wasm"
# Token VP
[wasm.vp_token]
filename = "vp_token.wasm"
# MASP VP
[wasm.vp_masp]
filename = "vp_masp.wasm"
# General protocol parameters.
[parameters]
# Minimum number of blocks in an epoch.
min_num_of_blocks = 5
# Maximum expected time per block (in seconds).
max_expected_time_per_block = 11
# Implicit VP WASM name
implicit_vp = "vp_implicit"
# Expected number of epochs per year (also sets the min duration of an epoch in seconds)
epochs_per_year = 262800 # ~120 sec epoch duration (60*60*24\*365 / 120)
# The P gain factor in the Proof of Stake rewards controller
pos_gain_p = 0.1
# The D gain factor in the Proof of Stake rewards controller
pos_gain_d = 0.1
# The wrapper tx fixed fees
wrapper_tx_fees = "5"
# The max size of blocks in bytes
max_proposal_bytes = 5242880
vp_whitelist = []
tx_whitelist = []
max_public_key_per_account = 15
#Maximum number of signatures required per transaction
max_signature_per_tx = 15
# Proof of stake parameters.
[pos_params]
# Maximum number of active validators.
max_validator_slots = 128
# Pipeline length (in epochs). Any change in the validator set made in
# epoch 'n' will become active in epoch 'n + pipeline_len'.
pipeline_len = 2
# Unbonding length (in epochs). Validators may have their stake slashed
# for a fault in epoch 'n' up through epoch 'n + unbonding_len'.
unbonding_len = 4
# Votes per fundamental staking token (namnam)
tm_votes_per_token = 1.0
# Reward for proposing a block.
block_proposer_reward = 0.125
# Reward for voting on a block.
block_vote_reward = 0.1
# Maximum inflation rate per annum (10%)
max_inflation_rate = 0.1
# Targeted ratio of staked tokens to total tokens in the supply
target_staked_ratio = 0.6667
# Portion of a validator's stake that should be slashed on a duplicate
# vote.
duplicate_vote_min_slash_rate = 0.001
# Portion of a validator's stake that should be slashed on a light
# client attack.
light_client_attack_min_slash_rate = 0.001
cubic_slashing_window_length = 1
# Governance parameters.
[gov_params]
# minimum amount of xan token to lock
min_proposal_fund = 100
# proposal code size in kibibytes (KiB)
max_proposal_code_size = 300000
# min proposal period length in epochs
min_proposal_period = 3
# max proposal period length in epochs
max_proposal_period = 6
# maximum number of characters in the proposal content
max_proposal_content_size = 10000
# minimum epochs between end and grace epoch
min_proposal_grace_epochs = 0
MEMPERLUAS
Membangun wasm
Skrip juga akan memerlukan semua wasm
file untuk membuat transaksi. Hal ini dapat dilakukan dengan menjalankan perintah berikut (saat berada di direktori namada):
make build-wasm-scripts
Menjalankan skrip
Script dipanggil build_network.sh
dan dapat dijalankan dengan perintah berikut:
# Ensure you are in the root of the namada repository directory
./scripts/build_network.sh <config_toml> <namada_dir> <OPTIONAL: base_dir>
Lebih khusus lagi, skrip ini mengambil tiga argumen:
config_toml
: jalur ke file konfigurasi genesis ( bebas validator ).namada_dir
: path ke direktori binari Namada . Jika binari dibuat menggunakanmake build-release
ini berartinamada/target/release
direktori. Jika tidak, jika dibuat menggunakanmake build
itu akan menjadinamada/target/debug
direktori.base_dir
: (argumen opsional) jalur ke direktori BASE_DIR, tempat semua data rantai disimpan. Ini hanya diperlukan jika BASE_DIR bukan default yang diberikan olehnamadac utils default-base-dir
perintah.
Misalnya, pengguna MacOS akan menjalankan sesuatu seperti:
./scripts/build_network.sh \
~/anoma-network-config/templates/edited_genesis_config.toml \
./target/release # Assuming the binaries were built using `make build-release`
Menjalankan buku besar
Setelah skrip dijalankan, proses python akan dimulai di latar belakang. Buku besar dapat dijalankan melalui perintah yang sudah dikenal:
target/release/namada ledger # Assuming the binaries were built using `make build-release`
Membersihkan
Setelah jaringan lokal memenuhi tujuannya, jaringan tersebut dapat dibersihkan dengan menjalankan perintah berikut yang terdapat dalam fungsi pembersihan skrip:
pkill -f ".hack/chains"
rm -r .hack/chains
rm local.*.tar.gz
Last updated