Skip to content

Commit

Permalink
Polkadot local and adder-collator examples (#1533)
Browse files Browse the repository at this point in the history
* Add keys, add polkadot-local example

Signed-off-by: kamilsa <[email protected]>
  • Loading branch information
kamilsa authored Mar 20, 2023
1 parent 3e5d05a commit bc68c71
Show file tree
Hide file tree
Showing 67 changed files with 1,061 additions and 13 deletions.
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

0 comments on commit bc68c71

Please sign in to comment.