Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ dist
build
contract_Uni_V2_Address.yaml
contract_Uni_V3_Address.yaml
bls*
keys*
net*
17 changes: 8 additions & 9 deletions k8s-deploy/KHALANI-TESTNET.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,15 @@ git clone git@github.com:axonweb3/axon.git
cd axon
```

### Build the axon project
### Install the axon binary in your path
```shell
cd axon
cargo build
cargo install --path ./ --locked --force
```

### Generate 4 keypairs and save them to `keys.json`
```shell
cd axon
./target/debug/axon-keypair --number 4 > keys.json
cd ../axon-devops/k8s-deploy/k8s/axon/axon-config/
axon generate-keypair -n 1 -p . > keys.json
```

### Create AWS Secrets Manager object `khalani/testnet/nodes-private-keys`
Expand Down Expand Up @@ -90,10 +89,10 @@ export PEER_4=$(cat keys.json | jq -r ".keypairs[3].peer_id")
for i in {1..4}; do
node_toml="node_$i.toml"

sed -i "" "s/multi_address = \"\/dns4\/axon1\/.*\"/multi_address = \"\/dns4\/axon1\/tcp\/8001\/p2p\/$PEER_1\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon2\/.*\"/multi_address = \"\/dns4\/axon2\/tcp\/8001\/p2p\/$PEER_2\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon3\/.*\"/multi_address = \"\/dns4\/axon3\/tcp\/8001\/p2p\/$PEER_3\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon4\/.*\"/multi_address = \"\/dns4\/axon4\/tcp\/8001\/p2p\/$PEER_4\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon-1\/.*\"/multi_address = \"\/dns4\/axon-1\/tcp\/8001\/p2p\/$PEER_1\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon-2\/.*\"/multi_address = \"\/dns4\/axon-2\/tcp\/8001\/p2p\/$PEER_2\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon-3\/.*\"/multi_address = \"\/dns4\/axon-3\/tcp\/8001\/p2p\/$PEER_3\"/g" ${node_toml}
sed -i "" "s/multi_address = \"\/dns4\/axon-4\/.*\"/multi_address = \"\/dns4\/axon-4\/tcp\/8001\/p2p\/$PEER_4\"/g" ${node_toml}
done
```

Expand Down
48 changes: 24 additions & 24 deletions k8s-deploy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
- [axon 部署](#axon-部署)
- [目录结构](#目录结构)
- [axon 目录.](#axon-目录)
- [axon1-statefulset.yaml](#axon1-statefulsetyaml)
- [axon2-statefulset.yaml](#axon2-statefulsetyaml)
- [axon3-statefulset.yaml](#axon3-statefulsetyaml)
- [axon4-statefulset.yaml](#axon4-statefulsetyaml)
- [axon-1-statefulset.yaml](#axon-1-statefulsetyaml)
- [axon-2-statefulset.yaml](#axon-2-statefulsetyaml)
- [axon-3-statefulset.yaml](#axon-3-statefulsetyaml)
- [axon-4-statefulset.yaml](#axon-4-statefulsetyaml)
- [axon-chain.yaml](#axon-chainyaml)
- [deploy.sh](#deploysh)
- [axon config 目录](#axon-config-目录)
Expand Down Expand Up @@ -52,10 +52,10 @@ k8s-deploy
| |____node_3.toml
| |____node_4.toml
| |____axon-chain.yaml
| |____axon1-statefulset.yaml
| |____axon2-statefulset.yaml
| |____axon3-statefulset.yaml
| |____axon4-statefulset.yaml
| |____axon-1-statefulset.yaml
| |____axon-2-statefulset.yaml
| |____axon-3-statefulset.yaml
| |____axon-4-statefulset.yaml
| |____deploy.sh
| |___ benchmark
| |____configmap
Expand Down Expand Up @@ -85,37 +85,37 @@ k8s-deploy
|____node_3.toml
|____node_4.toml
|____axon-chain.yaml
|____axon1-statefulset.yaml
|____axon2-statefulset.yaml
|____axon3-statefulset.yaml
|____axon4-statefulset.yaml
|____axon-1-statefulset.yaml
|____axon-2-statefulset.yaml
|____axon-3-statefulset.yaml
|____axon-4-statefulset.yaml
|____deploy.sh

```

<a id="markdown-axon1-statefulset.yaml" name="axon1-statefulset.yaml"></a>
### axon1-statefulset.yaml
<a id="markdown-axon-1-statefulset.yaml" name="axon-1-statefulset.yaml"></a>
### axon-1-statefulset.yaml
k8s axon node1 部署文件.

[axon1-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon1-statefulset.yaml)
[axon-1-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon-1-statefulset.yaml)

<a id="markdown-axon2-statefulset.yaml" name="axon2-statefulset.yaml"></a>
### axon2-statefulset.yaml
<a id="markdown-axon-2-statefulset.yaml" name="axon-2-statefulset.yaml"></a>
### axon-2-statefulset.yaml
k8s axon node2 部署文件.

[axon2-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon2-statefulset.yaml)
[axon-2-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon-2-statefulset.yaml)

<a id="markdown-axon3-statefulset.yaml" name="axon3-statefulset.yaml"></a>
### axon3-statefulset.yaml
<a id="markdown-axon-3-statefulset.yaml" name="axon-3-statefulset.yaml"></a>
### axon-3-statefulset.yaml
k8s axon node3 部署文件.

[axon3-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon3-statefulset.yaml)
[axon-3-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon-3-statefulset.yaml)

<a id="markdown-axon4-statefulset.yaml" name="axon4-statefulset.yaml"></a>
### axon4-statefulset.yaml
<a id="markdown-axon-4-statefulset.yaml" name="axon-4-statefulset.yaml"></a>
### axon-4-statefulset.yaml
k8s axon node4 部署文件.

[axon4-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon4-statefulset.yaml)
[axon-4-statefulset.yaml](https://github.com/axonweb3/axon-devops/blob/main/k8s-deploy/k8s/axon/axon-4-statefulset.yaml)

<a id="markdown-axon-chain.yaml" name="aaxon-chain.yaml"></a>
### axon-chain.yaml
Expand Down
2 changes: 1 addition & 1 deletion k8s-deploy/k8s/axon/axon-chain.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
labels:
app: axon-chain
name: axon-chain
namespace: axon
namespace: axon-trial
spec:
ports:
- name: axon-chain
Expand Down
87 changes: 87 additions & 0 deletions k8s-deploy/k8s/axon/axon-config/chain-spec.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#
# Data of the genesis block.
#

[genesis]
timestamp = 1680249207
base_fee_per_gas = "0x539"
# Chain ID is 10012.
chain_id = 0x271C
hardforks = []

#
# Accounts since the genesis block.
#
# WARNING: The following accounts are publicly known, DO NOT USE them in any production environment.
# Generated with the mnemonic "test test test test test test test test test test test junk".

[[accounts]]
address = "0xD30aa839D127637DeE3814A0a6721100512CB717"
balance = "04ee2d6d415b85acef8100000000"

[[accounts]]
address = "0xE266d1D66dA1d308Fd9C088126cecF39149A3892"
balance = "04ee2d6d415b85acef8100000000"

[[accounts]]
address = "0x3a60574Bb0CcD0Cc60cd5F4c4A75ec9c664DEB31"
balance = "04ee2d6d415b85acef8100000000"

[[accounts]]
address = "0x77691AA8c3B9dFf9741aB7cEE62657a4308dB57A"
balance = "04ee2d6d415b85acef8100000000"

# WARNING! Sam's Account. Take out for production
[[accounts]]
address = "0xe7d5869FE1955F2500987B9eCCFF0a9452c164cf"
balance = "04ee2d6d415b85acef8100000000"


#
# Parameters which make the chain to be unique.
#

[params]
epoch = 0

[params.version]
start = 1
end = 100000000

[params.consensus_config]
propose_ratio = 15
prevote_ratio = 10
precommit_ratio = 10
brake_ratio = 10
tx_num_limit = 20000
max_tx_size = 409600000
gas_limit = 4294967295000
interval = 3000

[[params.verifier_list]]
bls_pub_key = "0xaacb29fd17e60c478ea7a9620dde7209babc8aa67a17305cdb9add98181f95106c583a4070a27ec880ee2dab61b446f2"
pub_key = "0x0384df696abdb699fbf320926ba3da9e333c1db8a6c13bc327eca3afd3a77e6c69"
address = "0xD30aa839D127637DeE3814A0a6721100512CB717"
propose_weight = 1
vote_weight = 1

[[params.verifier_list]]
bls_pub_key = "0xa4072a8381333506986130b894f6269b97c6eed3afbddd60436469f5bf68b306fc87c1de70a8085bcdc635c70a0d6734"
pub_key = "0x02fe18bba6618b5b102ee4648fb2032b85ffb66b7ace8b9b8bdee5f3b669840aad"
address = "0xE266d1D66dA1d308Fd9C088126cecF39149A3892"
propose_weight = 1
vote_weight = 1

[[params.verifier_list]]
bls_pub_key = "0x850a3e1f3225cb8d79f1b79171bf47911a7a031a616afe669467de7a5f69b23169c64b46443f865561877b354c22482b"
pub_key = "0x03ae46bd3339ce5a7297e040e8f1784add68cd2f434f417c255ec77497b3a6884e"
address = "0x3a60574Bb0CcD0Cc60cd5F4c4A75ec9c664DEB31"
propose_weight = 1
vote_weight = 1

[[params.verifier_list]]
bls_pub_key = "0xb23834d7d95557ab36e71de88867a79692016aa8c801b3098f69c88abedf2cae30e19d3fe5d0dabe65b974d943063f79"
pub_key = "0x02aa862f5c6eb775c3c42448970dfb923791e56bc448f2362c154b0fad5d6b1322"
address = "0x77691AA8c3B9dFf9741aB7cEE62657a4308dB57A"
propose_weight = 1
vote_weight = 1
29 changes: 29 additions & 0 deletions k8s-deploy/k8s/axon/axon-config/generate_config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash
set -ex

# generate keys.json
axon generate-keypair -n 4 -p . > keys.json

# Update chain-spec.toml
# Replace bls_pub_key, pub_key, and address with values from keys.json
# Replace verifier_list with the updated values
for ((i=0; i<4; i++)); do
bls_pub_key=$(jq -r ".keypairs[$i].bls_public_key" keys.json)
pub_key=$(jq -r ".keypairs[$i].public_key" keys.json)
address=$(jq -r ".keypairs[$i].address" keys.json)
sed -i "s/bls_pub_key = \"null\"/bls_pub_key = \"$bls_pub_key\"/g" chain-spec.toml
sed -i "s/pub_key = \"null\"/pub_key = \"$pub_key\"/g" chain-spec.toml
sed -i "s/address = \"null\"/address = \"$address\"/g" chain-spec.toml
done



# Update multi_address in node_n.toml files
# Replace multi_address with peer ids from keys.json
# Use keys at index 0 for the first occurrence, index 1 for the second occurrence, and so on
for ((i=1; i<=4; i++)); do
for ((j=0; j<4; j++)); do
peer_id=$(jq -r ".keypairs[$j].peer_id" keys.json)
sed -i "s|multi_address = \"/dns4/axon-$i/tcp/8001/p2p/[^\\\"]*\"|multi_address = \"/dns4/axon-$i/tcp/8001/p2p/$peer_id\"|g" node_$i.toml
done
done
46 changes: 16 additions & 30 deletions k8s-deploy/k8s/axon/axon-config/node_1.toml
Original file line number Diff line number Diff line change
@@ -1,51 +1,38 @@
# crypto
privkey = "NODE_PRIVATE_KEY_1"
net_privkey_file = "/app/devtools/chain/k8s/net_0.key"
bls_privkey_file = "/app/devtools/chain/k8s/bls_0.key"

# db config
data_path = "./devtools/chain/data1"

# This is unused by Axon.
wckb_contract_address = "0x0000000000000000000000000000000000000000"

[[accounts]]
# KMS key: alias/khalani-axon-key-0
address = "0x1fabea80cc0d328eae0c8f7376935124cf23cc7f"
balance = "04ee2d6d415b85acef8100000000"

[[accounts]]
# KMS key: alias/khalani-axon-key-1
address = "0x78266f4e5590f8f20ac4cbdd15ce479cac64689a"
balance = "04ee2d6d415b85acef8100000000"

[[accounts]]
# KMS key: alias/khalani-axon-key-2
address = "0x1bba69b930b140be5ab7979e556db5a506538020"
balance = "04ee2d6d415b85acef8100000000"
data_path = "./devtools/chain/data/node_1"

[rpc]
http_listening_address = "0.0.0.0:8000"
ws_listening_address = "0.0.0.0:8010"
maxconn = 25000
max_payload_size = 1048576
max_payload_size = 10_485_760

[web3]
max_gas_cap = 50_000_000
log_filter_max_block_range = 25000

[network]
listening_address = "/ip4/0.0.0.0/tcp/8001"
rpc_timeout = 10

[consensus]
[synchronization]
sync_txs_chunk_size = 5000

[[network.bootstraps]]
multi_address = "/dns4/axon1/tcp/8001/p2p/QmNk6bBwkLPuqnsrtxpp819XLZY3ymgjs3p1nKtxBVgqxj"
multi_address = "/dns4/axon-1/tcp/8001/p2p/QmSwz4L59f71zr4dMJijiZAJkiyQUxwrVUsZoLNnFy1u2Z"

[[network.bootstraps]]
multi_address = "/dns4/axon2/tcp/8001/p2p/QmaHBJqULbLGDn7Td196goNebH6XMTMMu2sKNNP2DiX9S2"
multi_address = "/dns4/axon-2/tcp/8001/p2p/QmSNMdjXJBFzSttHhngkti5zEuWVi3og1ZcD2HgawvCDz7"

[[network.bootstraps]]
multi_address = "/dns4/axon3/tcp/8001/p2p/QmQLufVVmBuHKoYhdDCqUFYVtLYs1quryoaA1mkQYQdWkn"
multi_address = "/dns4/axon-3/tcp/8001/p2p/QmRQ76FGezaEQj9xSZmMuedJFFxEjXkvXGAu7sThD36h8L"

[[network.bootstraps]]
multi_address = "/dns4/axon4/tcp/8001/p2p/QmXoSkz4zkHHiFZqmDZQ4gFYtJ72uqtp4m6FX373X4VkRq"
multi_address = "/dns4/axon-4/tcp/8001/p2p/QmaryZALkj67xyX4JkK1NaQWjZSvUzdW5bkLHGC8aQCiRR"

[mempool]
timeout_gap = 20
Expand All @@ -54,23 +41,22 @@ broadcast_txs_size = 200
broadcast_txs_interval = 200

[executor]
light = false
triedb_cache_size = 500
triedb_cache_size = 200

[logger]
filter = "info"
log_to_console = true
console_show_file_and_line = false
log_path = "logs/node_1/"
log_to_file = true
file_size_limit = 1073741824 # 1 GiB
file_size_limit = 1073741824 # 1 GiB
metrics = true
# you can specify log level for modules with config below
# modules_level = { "overlord::state::process" = "debug", core_consensus = "error" }

[rocksdb]
max_open_files = 64
cache_size = 200
cache_size = 100
# Provide an options file to tune RocksDB for your workload and your system configuration.
# More details can be found in [the official tuning guide](https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide).
options_file = "default.db-options"
Loading