# Start infra-keychain and infra-node

## NOTE - You can skip this step and use the InfraBlockchain-Antelope testnet instead of a local testnet

## Step 1: Boot Node and Wallet

### Step 1.1: Start infra-keychain

First let us start infra-keychain:

```
infra-keychain &
```

You should see some output that looks like this:

```
info  2018-11-26T06:54:24.789 thread-0  wallet_plugin.cpp:42          plugin_initialize    ] initializing wallet plugin
info  2018-11-26T06:54:24.795 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/keosd/stop
info  2018-11-26T06:54:24.796 thread-0  wallet_api_plugin.cpp:73      plugin_startup       ] starting wallet_api_plugin
info  2018-11-26T06:54:24.796 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/wallet/create
info  2018-11-26T06:54:24.796 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/wallet/create_key
info  2018-11-26T06:54:24.796 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/wallet/get_public_keys
```

Press enter to continue

### Step 1.2: Start infra-node

Start infra-node now:

```
infra-node -e -p eosio \
--plugin eosio::producer_plugin \
--plugin eosio::producer_api_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::http_plugin \
--plugin eosio::history_plugin \
--plugin eosio::history_api_plugin \
--filter-on="*" \
--access-control-allow-origin='*' \
--contracts-console \
--http-validate-host=false \
--verbose-http-errors >> infra-node.log 2>&1 &
```

These settings accomplish the following:

1. Run i**nfra-node. This** command loads all the basic plugins, set the server address, enable CORS and add some contract debugging and logging.
2. Enable CORS with no restrictions (\*) and development logging

{% hint style="warning" %}
In the above configuration, CORS is enabled for `*` **for development purposes only**, you should **never** enable CORS for `*` on a node that is publicly accessible!
{% endhint %}

### Troubleshooting

If in the previous step, after starting `infra-node`, you see an error message similar to "Database dirty flag set (likely due to unclean shutdown): replay required" try to start `infra-node` with `--replay-blockchain`. More details on troubleshooting `infra-node`

## Step 2: Check the installation

### Step 2.1: Check that infra-node is Producing Blocks

Run the following command

```
tail -f infra-node.log
```

You should see some output in the console that looks like this:

```
1929001ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366974ce4e2a... #13929 @ 2018-05-23T16:32:09.000 signed by eosio [trxs: 0, lib: 13928, confirmed: 0]
1929502ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366aea085023... #13930 @ 2018-05-23T16:32:09.500 signed by eosio [trxs: 0, lib: 13929, confirmed: 0]
1930002ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366b7f074fdd... #13931 @ 2018-05-23T16:32:10.000 signed by eosio [trxs: 0, lib: 13930, confirmed: 0]
1930501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366cd8222adb... #13932 @ 2018-05-23T16:32:10.500 signed by eosio [trxs: 0, lib: 13931, confirmed: 0]
1931002ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366d5c1ec38d... #13933 @ 2018-05-23T16:32:11.000 signed by eosio [trxs: 0, lib: 13932, confirmed: 0]
1931501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366e45c1f235... #13934 @ 2018-05-23T16:32:11.500 signed by eosio [trxs: 0, lib: 13933, confirmed: 0]
1932001ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366f98adb324... #13935 @ 2018-05-23T16:32:12.000 signed by eosio [trxs: 0, lib: 13934, confirmed: 0]
1932501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 00003670a0f01daa... #13936 @ 2018-05-23T16:32:12.500 signed by eosio [trxs: 0, lib: 13935, confirmed: 0]
1933001ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 00003671e8b36e1e... #13937 @ 2018-05-23T16:32:13.000 signed by eosio [trxs: 0, lib: 13936, confirmed: 0]
1933501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000367257fe1623... #13938 @ 2018-05-23T16:32:13.500 signed by eosio [trxs: 0, lib: 13937, confirmed: 0]
```

Press `ctrl + c` to close the log

### Step 2.2: Check the Wallet

Open the shell and run the `infra-cli` command to list available wallets. We will talk more about wallets in the future. For now, we need to validate the installation and see that the command line client `infra-cli` is working as intended.

```
infra-cli wallet list
```

You should see a response with an empty list of wallets:

```
Wallets:
[]
```

From this point forward, you'll be executing commands from your local system (Linux or Mac)

### Step 2.3: Check infra-node endpoints

This will check that the RPC API is working correctly, pick one.

1. Check the `get_info` endpoint provided by the `chain_api_plugin` in your browser: <http://localhost:8888/v1/chain/get_info>
2. Check the same thing, but in the console on your **host machine**

```
curl http://localhost:8888/v1/chain/get_info
```

## What's Next?

* [Create Test Accounts](/infrablockchain-antelope/for-developers/developer-guides-infrablockchain-antelope-native/development-environment-infrablockchain-antelope-native/create-test-accounts.md): Learn how to create test accounts in the InfraBlockchain-Antelope along with troubleshooting steps.&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.infrablockchain.net/infrablockchain-antelope/for-developers/developer-guides-infrablockchain-antelope-native/development-environment-infrablockchain-antelope-native/start-infra-keychain-and-infra-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
