# Dncli

**dncli** (dfinance node CLI) is a CLI application developed to work with **dnode**. With dncli you can query blockchain data, post transactions, and query network status.

It comes as binary application and can be downloaded from [GitHub release page](https://github.com/dfinance/dnode/releases). Alternatively you can [build it from sources](https://github.com/dfinance/dnode).

## Usage

After installing **dncli**, it should be configured:

```bash
dncli config chain-id dn-testnet
dncli config output json
dncli config indent true
dncli config trust-node true
dncli config compiler tcp://127.0.0.1:50051
dncli config node http://127.0.0.1:26657
dncli config keyring-backend file
```

After configuring, you can try it:

```
dncli version
dncli --help
```

**dncli** contains multiple commands for each **dnode** module.

There are two types of commands in **dncli**: `transaction` and `query`. Transaction commands start with `tx` prefix, query commands start with `query` prefix. Difference between them is that `tx` commands imply building and broadcasting transaction, whereas `query` simply queries data from dnode.

You can try it yourself and see available commands:

```bash
dncli tx --help
dncli query --help

dncli q --help # Short version of query.
```

You can use `--help` option for any command, e.g.:

```bash
dncli tx vm --help
dncli tx vm execute --help

dncli q vm --help
dncli q vm compile --help
```

In case, your VM transaction contains an error, you always can query detailed information about the happened error, check next command:

```bash
dncli q vm tx [txId]
```

## Mainnet configuration

**dncli** by default connects to local **dnode** (at localhost:26657) and **compiler** (inside **dvm**) (at localhost:50051). To connect to remote node or launched mainnet, change these configuration settings:

```bash
dncli config compiler tcp://pub.dfinance.co:50051
dncli config node https://rpc.dfinance.co:443
```

Also, **compiler** address could be passed as `--compiler` option during execution of command requiring compilation, this is:

```bash
# use --help to see full list of options
dncli q vm compile <file> <account>
```


---

# 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.dfinance.co/architecture/dncli.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.
