Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Polkadot local and adder-collator examples #1533

Merged
merged 5 commits into from
Mar 20, 2023
Merged
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
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

[![CodeFactor](https://www.codefactor.io/repository/github/soramitsu/kagome/badge)](https://www.codefactor.io/repository/github/soramitsu/kagome)
[![codecov](https://codecov.io/gh/soramitsu/kagome/branch/master/graph/badge.svg)](https://codecov.io/gh/soramitsu/kagome)
[![Netlify Status](https://api.netlify.com/api/v1/badges/ad6fa504-99d6-48fb-9a05-869ba1d9a7c3/deploy-status)](https://app.netlify.com/sites/kagome/deploys)
[![](https://img.shields.io/twitter/follow/Soramitsu_co?label=Follow&style=social)](https://twitter.com/Soramitsu_co)

## Intro
Expand Down Expand Up @@ -61,7 +60,7 @@ make debug_docker
make clear
```

### Executing KAGOME node
### Using KAGOME

#### Obtaining database snapshot (optional)

Expand Down Expand Up @@ -120,6 +119,9 @@ kagome --validator --chain localchain.json --base-path base_path

This command executes a KAGOME full node with an authority role.

#### Run KAGOME with collator

Read [this](./examples/adder-collator) tutorial

### Configuration Details
To run a KAGOME node, you need to provide it with a genesis config, cryptographic keys, and a place to store db files.
Expand Down
4 changes: 2 additions & 2 deletions core/application/impl/app_configuration_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ namespace {
const std::optional<kagome::primitives::BlockId> def_block_to_recover =
std::nullopt;
const auto def_offchain_worker = "WhenValidating";
const uint32_t def_out_peers = 25;
const uint32_t def_in_peers = 25;
const uint32_t def_out_peers = 75;
const uint32_t def_in_peers = 75;
const uint32_t def_in_peers_light = 100;
const auto def_lucky_peers = 4;
const uint32_t def_random_walk_interval = 15;
Expand Down
32 changes: 32 additions & 0 deletions examples/adder-collator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# How to run rococo-local with parachains on KAGOME

> Note that for this tutorial, the rococo-local chainspec has been modified to make the epochs six minutes long. Original rococo-local chainspec could be obtained by typing `polkadot build-spec --chain rococo-local.json --raw --disable-default-bootnode > rococo-local.json`

> This tutorial is based on the [original tutorial](https://github.com/paritytech/polkadot/tree/1d05f779b25e01a1d54dbf98a82662d12a8320f9/parachain/test-parachains/adder/collator) from Polkadot repo


## Start kagome

### Run KAGOME network

Open two terminals and run a unique instance of KAGOME validator in each of them
```
kagome --chain rococo-local-raw.json --validator --alice --port 50551 --ws-port 9944 --node-key f6830f530f4fa0249357b56575162180f4c6822ee6e59e9081d8001cb200b66c --tmp
kagome --chain rococo-local-raw.json --validator --bob --port 50552 --ws-port 9945 --node-key 15ed5bd565a9d0a3afb8f65a6b27795fef17247b03d0af1ce271f33504090e10 --tmp
```

### Run adder collator

First build `adder-collator` binary from [Polkadot](https://github.com/paritytech/polkadot) repo by running `cargo build --release`. Binary will appear in `target/release/` folder.

```
adder-collator --tmp --chain rococo-local-raw.json --port 50553 --ws-port 9947
```

Adder collator will print genesis state and wasm code which you should store in `genesis.state` and `adder.wasm` files correspondingly (or simply use files that are already in current folder).

### Register parachain

1. Go to https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944#/parachains/parathreads in your browser.
2. Add new para id using Alice account
3. Register parathread using `adder.wasm`and `genesis.state` as parameters
1 change: 1 addition & 0 deletions examples/adder-collator/adder.wasm

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions examples/adder-collator/genesis.state
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000011b4d03dd8c01f1049143cf9c4c817e4b167f1d1b83e5c6f0f10d89ba1e7bce
167 changes: 167 additions & 0 deletions examples/adder-collator/rococo-local-raw.json

Large diffs are not rendered by default.

167 changes: 167 additions & 0 deletions examples/adder-collator/rococo-local.json

Large diffs are not rendered by default.

34 changes: 25 additions & 9 deletions examples/network_x4/hints.txt → examples/network_x4/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
# make chain spec template
# How to run KAGOME validators

## Make chain spec template

```
> substrate build-spec --chain local > testchain.json
```

# get Sr25519 key-pair for needed accounts
## Get Sr25519 key-pair for needed accounts

```
> substrate key inspect --scheme Sr25519 //Alice | egrep "seed|key"
Secret seed: 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Public key (hex): 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d
Expand All @@ -20,8 +25,9 @@
Secret seed: 0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Public key (hex): 0x306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20
Public key (SS58): 5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy
```

# use SS58 public keys from previous step as babe authorities
## use SS58 public keys from previous step as babe authorities

"babe": {
"authorities": [
Expand All @@ -31,8 +37,9 @@
"5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy"
],

# get Ed25519 key-pair for needed accounts
## Get Ed25519 key-pair for needed accounts

```
> substrate key inspect --scheme Ed25519 //Alice | egrep "seed|key"
Secret seed: 0xabf8e5bdbe30c65656c0a3cbd181ff8a56294a69dfedd27982aace4a76909115
Public key (hex): 0x88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee
Expand All @@ -49,8 +56,9 @@
Secret seed: 0x771f47d3caf8a2ee40b0719e1c1ecbc01d73ada220cf08df12a00453ab703738
Public key (hex): 0x5e639b43e0052c47447dac87d6fd2b6ec50bdd4d0f614e4299c665249bbd09d9
Public key (SS58): 5ECTwv6cZ5nJQPk6tWfaTrEk8YH2L7X1VT4EL5Tx2ikfFwb7
```

# use SS58 public keys from previous step as grandpa authorities
## Use SS58 public keys from previous step as grandpa authorities

"grandpa": {
"authorities": [
Expand All @@ -61,8 +69,9 @@
]
},

# get Ed25519 key-pair related with needed accounts. There is used accounts + //libp2p for determinity. In general, any Ed25519 key-pair can be used.
# Get Ed25519 key-pair related with needed accounts. There is used accounts + //libp2p for determinity. In general, any Ed25519 key-pair can be used.

```
> substrate key inspect --scheme Ed25519 //Alice//libp2p | egrep "seed|hex"
Secret seed: 0x95d11fd8fc41db64f8f90fecccc1420af9a3ff8dacef6d6a96c3679177860516
Public key (hex): 0x63e6f7d528e1a626418c31a7112faeb080eb89bb495fc06642d4b0e96684ade8
Expand All @@ -75,25 +84,31 @@
> substrate key inspect --scheme Ed25519 //Dave//libp2p | egrep "seed|hex"
Secret seed: 0xe0d0ba382d0c82b8e1bffc23e316bb9dac07a63408b83480402aee1499515c72
Public key (hex): 0x2fe8747165fea10fd37ef52837a5e3291d1d9e71aca1135e7679eeac5b69865e
```

# use public keys from previous step to make peer ids (multihash)
## use public keys from previous step to make peer ids (multihash)

```
12D3KooWGYLoNGrZn2nwewBiPFZuKHZebPDL9QAF26cVgLxwuiTZ
12D3KooWFxLPKkB2vLvTFau7wu26YJAXkKmvPHvuVZqmYbV43bMD
12D3KooWCUuiJCHFU1zxNZgnyERYYuHxXzBgoGCaGPAyQvz29s7C
12D3KooWD3Nv1qMBSv6xkJwMxDQkUushJnf9cNw2Ey1uYfCcgKau
```

# use peed ids from previous step in address of bootnodes
## use peed ids from previous step in address of bootnodes

```
"bootNodes": [
"/ip4/127.0.0.1/tcp/10001/p2p/12D3KooWGYLoNGrZn2nwewBiPFZuKHZebPDL9QAF26cVgLxwuiTZ",
"/ip4/127.0.0.1/tcp/10002/p2p/12D3KooWFxLPKkB2vLvTFau7wu26YJAXkKmvPHvuVZqmYbV43bMD",
"/ip4/127.0.0.1/tcp/10003/p2p/12D3KooWCUuiJCHFU1zxNZgnyERYYuHxXzBgoGCaGPAyQvz29s7C",
"/ip4/127.0.0.1/tcp/10004/p2p/12D3KooWD3Nv1qMBSv6xkJwMxDQkUushJnf9cNw2Ey1uYfCcgKau"
],
```

# start kagome
## Start kagome

```
DIR=kagome/examples/network_x4
cd $DIR
kagome --chain testchain4v.json --validator --base-path alice --name Alice -p 10001 --rpc-port 11001 --ws-port 12001 --prometheus-port 13001 -lverbose
Expand All @@ -105,3 +120,4 @@ run --bin substrate -- --chain $DIR/testchain4v.json --base-path=~/.local/share/
run --bin substrate -- --chain $DIR/testchain4v.json --base-path=~/.local/share/substrate/bob --bob --port=10002 --rpc-port=11002 --ws-port=12002 --prometheus-port=13002 --node-key=a9c7609d2c48c88f5ca3b147fc946ae0664dae7d824a2549379127ef3eadea35
run --bin substrate -- --chain $DIR/testchain4v.json --base-path=~/.local/share/substrate/charlie --charlie --port=10003 --rpc-port=11003 --ws-port=12003 --prometheus-port=13003 --node-key=f69b297baa6a2a1d2652ee0f72bf07f45fc92c0facc07250679dcc164c53e9a5
run --bin substrate -- --chain $DIR/testchain4v.json --base-path=~/.local/share/substrate/dave --dave --port=10004 --rpc-port=11004 --ws-port=12004 --prometheus-port=13004 --node-key=e0d0ba382d0c82b8e1bffc23e316bb9dac07a63408b83480402aee1499515c72
```
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
106 changes: 106 additions & 0 deletions examples/polkadot-local/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# How to run polkadot-local chain with KAGOME validators

> Note that for this tutorial, the polkadot-local chainspec has been modified to make the epochs six minutes long, and also to have four authorities instead of just two. Original polkadot-local chainspec could be obtained by typing `polkadot build-spec --chain polkadot-local.json --raw --disable-default-bootnode > polkadot-local.json`

## Prepare chainspec

Authorities keys can be generated using the following commands:

### Get Sr25519 key-pairs
```
> polkadot key inspect --scheme Sr25519 //Alice | egrep "seed|key"
Secret seed: 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Public key (hex): 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d
Public key (SS58): 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY
> polkadot key inspect --scheme Sr25519 //Bob | egrep "seed|key"
Secret seed: 0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Public key (hex): 0x8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48
Public key (SS58): 5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty
> polkadot key inspect --scheme Sr25519 //Charlie | egrep "seed|key"
Secret seed: 0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Public key (hex): 0x90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22
Public key (SS58): 5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y
> polkadot key inspect --scheme Sr25519 //Dave | egrep "seed|key"
Secret seed: 0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Public key (hex): 0x306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20
Public key (SS58): 5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy
```

### Get Ed25519 key-pairs

```
> polkadot key inspect --scheme Ed25519 //Alice | egrep "seed|key"
Secret seed: 0xabf8e5bdbe30c65656c0a3cbd181ff8a56294a69dfedd27982aace4a76909115
Public key (hex): 0x88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee
Public key (SS58): 5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu
> polkadot key inspect --scheme Ed25519 //Bob | egrep "seed|key"
Secret seed: 0x3b7b60af2abcd57ba401ab398f84f4ca54bd6b2140d2503fbcf3286535fe3ff1
Public key (hex): 0xd17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae69
Public key (SS58): 5GoNkf6WdbxCFnPdAnYYQyCjAKPJgLNxXwPjwTh6DGg6gN3E
> polkadot key inspect --scheme Ed25519 //Charlie | egrep "seed|key"
Secret seed: 0x072c02fa1409dc37e03a4ed01703d4a9e6bba9c228a49a00366e9630a97cba7c
Public key (hex): 0x439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234f
Public key (SS58): 5DbKjhNLpqX3zqZdNBc9BGb4fHU1cRBaDhJUskrvkwfraDi6
> polkadot key inspect --scheme Ed25519 //Dave | egrep "seed|key"
Secret seed: 0x771f47d3caf8a2ee40b0719e1c1ecbc01d73ada220cf08df12a00453ab703738
Public key (hex): 0x5e639b43e0052c47447dac87d6fd2b6ec50bdd4d0f614e4299c665249bbd09d9
Public key (SS58): 5ECTwv6cZ5nJQPk6tWfaTrEk8YH2L7X1VT4EL5Tx2ikfFwb7
```

### Get Ed25519 key-pairs for libp2p

```
> polkadot key inspect --scheme Ed25519 //Alice//libp2p | egrep "seed|hex"
Secret seed: 0x95d11fd8fc41db64f8f90fecccc1420af9a3ff8dacef6d6a96c3679177860516
Public key (hex): 0x63e6f7d528e1a626418c31a7112faeb080eb89bb495fc06642d4b0e96684ade8
> polkadot key inspect --scheme Ed25519 //Bob//libp2p | egrep "seed|hex"
Secret seed: 0xa9c7609d2c48c88f5ca3b147fc946ae0664dae7d824a2549379127ef3eadea35
Public key (hex): 0x5b30c079ebb0a40b24ab8f9b7019ef846e4a1c937c275577bda9da777c36225c
> polkadot key inspect --scheme Ed25519 //Charlie//libp2p | egrep "seed|hex"
Secret seed: 0xf69b297baa6a2a1d2652ee0f72bf07f45fc92c0facc07250679dcc164c53e9a5
Public key (hex): 0x27971c8d1b663ab17e071bf12274d6edb6dd61983cb159b029b0d49fdf40e01f
> polkadot key inspect --scheme Ed25519 //Dave//libp2p | egrep "seed|hex"
Secret seed: 0xe0d0ba382d0c82b8e1bffc23e316bb9dac07a63408b83480402aee1499515c72
Public key (hex): 0x2fe8747165fea10fd37ef52837a5e3291d1d9e71aca1135e7679eeac5b69865e
```

#### Use public keys from previous step to make peer ids (multihash)

12D3KooWGYLoNGrZn2nwewBiPFZuKHZebPDL9QAF26cVgLxwuiTZ
12D3KooWFxLPKkB2vLvTFau7wu26YJAXkKmvPHvuVZqmYbV43bMD
12D3KooWCUuiJCHFU1zxNZgnyERYYuHxXzBgoGCaGPAyQvz29s7C
12D3KooWD3Nv1qMBSv6xkJwMxDQkUushJnf9cNw2Ey1uYfCcgKau

#### Custom chain spec

Keys that were previously generated were added to `polkadot-local-custom-spec.json` and into folders of corresponding validators (alice, bob, charlie, dave) If you want to make any changes to network's configuration, feel free to modify this file.

> Note, that key files are not compatible with substrate and cannot be used interchangeably

To get chainspec in raw format that could be used by KAGOME, you can run

```
polkadot build-spec --chain polkadot-local-custom-spec.json --raw > polkadot-local.json
```

## Start kagome

### Run KAGOME network

Open four terminals and run a unique instance of KAGOME in each of them
```
kagome --chain polkadot-local-custom.json --validator --base-path alice --name Alice -p 10001 --rpc-port 11001 --ws-port 12001 --prometheus-port 13001
kagome --chain polkadot-local-custom.json --validator --base-path bob --name Bob -p 10002 --rpc-port 11002 --ws-port 12002 --prometheus-port 13002
kagome --chain polkadot-local-custom.json --validator --base-path charlie --name Charlie -p 10003 --rpc-port 11003 --ws-port 12003 --prometheus-port 13003
kagome --chain polkadot-local-custom.json --validator --base-path dave --name Dave -p 10004 --rpc-port 11004 --ws-port 12004 --prometheus-port 13004
```

### Run Polkadot network
```
polkadot --chain polkadot-local-custom.json --base-path=alice-sub --alice --port=10001 --rpc-port=11001 --ws-port=12001 --prometheus-port=13001 --node-key=95d11fd8fc41db64f8f90fecccc1420af9a3ff8dacef6d6a96c3679177860516
polkadot --chain polkadot-local-custom.json --base-path=bob-sub --bob --port=10002 --rpc-port=11002 --ws-port=12002 --prometheus-port=13002 --node-key=a9c7609d2c48c88f5ca3b147fc946ae0664dae7d824a2549379127ef3eadea35
polkadot --chain polkadot-local-custom.json --base-path=charlie-sub --charlie --port=10003 --rpc-port=11003 --ws-port=12003 --prometheus-port=13003 --node-key=f69b297baa6a2a1d2652ee0f72bf07f45fc92c0facc07250679dcc164c53e9a5
polkadot --chain polkadot-local-custom.json --base-path=dave-sub --dave --port=10004 --rpc-port=11004 --ws-port=12004 --prometheus-port=13004 --node-key=e0d0ba382d0c82b8e1bffc23e316bb9dac07a63408b83480402aee1499515c72
```

> Note, you may run network composed of both KAGOME and Polkadot type of validators
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xabf8e5bdbe30c65656c0a3cbd181ff8a56294a69dfedd27982aace4a76909115
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x95d11fd8fc41db64f8f90fecccc1420af9a3ff8dacef6d6a96c3679177860516
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x3b7b60af2abcd57ba401ab398f84f4ca54bd6b2140d2503fbcf3286535fe3ff1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xa9c7609d2c48c88f5ca3b147fc946ae0664dae7d824a2549379127ef3eadea35
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x398f0c28f98885e046333d4a41c19cee4c37368a9832c6502f6cfd182e2aef89
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x072c02fa1409dc37e03a4ed01703d4a9e6bba9c228a49a00366e9630a97cba7c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xf69b297baa6a2a1d2652ee0f72bf07f45fc92c0facc07250679dcc164c53e9a5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xbc1ede780f784bb6991a585e4f6e61522c14e1cae6ad0895fb57b9a205a8f938
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x771f47d3caf8a2ee40b0719e1c1ecbc01d73ada220cf08df12a00453ab703738
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0xe0d0ba382d0c82b8e1bffc23e316bb9dac07a63408b83480402aee1499515c72
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0x868020ae0687dda7d57565093a69090211449845a7e11453612800b663307246
Loading