# Deploy, Issue & Transfer Tokens

The InfraBlockchain network uses the built-in contract applied to the core without deploying the token contract. The `sys.tokenabi` account contains the ABI of the Built-in Contract.&#x20;

Every account can use `transfer`, `issue`, `retire`, `settokenmeta`, `txfee` action

```
infra-cli get abi sys.tokenabi
```

## Step 1: Create the Token

To create a new token, call `create` action with the correct parameters. This action accepts 1 argument, it consists of:

* An issuer that is an eosio account. In this case, it's `systoken.a`. This issuer will be the one with the authority to call `issue` and/or perform other actions such as closing accounts or retiring tokens.
* An `asset` type composed of two pieces of data, a floating-point number sets the maximum supply and a `symbol` in capitalized alpha characters which represents the symbol. For example, "4,DUSD".

Below is a concise way to call this method, using positional arguments:

```
infra-cli push action systoken.a settokenmeta '{"sym":"4,DUSD","url":"http://sysdepo-a.org","desc":"system depository a"}' -p systoken.a@activeve
```

## Step 2: Issue Tokens

The issuer `systoken.a` can now issue new tokens. As mentioned earlier only the issuer can do so, therefore, `-p systoken.a@active` must be provided to authorize the `issue` action.

```
infra-cli push action systoken.a issue '[ "systoken.a", "100000000.0000 DUSD", "memo" ]' -p systoken.a@active
```

```
executed transaction: d1466bb28eb63a9328d92ddddc660461a16c405dffc500ce4a75a10aa173347a  128 bytes  205 us
#   systoken.a <= systoken.a::issue           {"to":"systoken.a","quantity":"100000000.0000 DUSD","memo":"memo"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]
```

This time the output contains several actions: one `issue` action and three `transfer` actions. While the only action signed was `issue`, the `issue` action performed an `inline transfer` and the `inline transfer` notified the sender and receiver accounts. The output indicates all the action handlers that were called, the order they were called in, and whether any output was generated by the action.

## Step 3: Transfer Tokens

Now that account systoken.a has been issued tokens, transfer some of them to account `bob`.

```
infra-cli push action systoken.a transfer '[ "systoken.a", "bob", "25.0000 DUSD", "m" ]' -p systoken.a@active
```

```
executed transaction: 800835f28659d405748f4ac0ec9e327335eae579a0d8e8ef6330e78c9ee1b67c  128 bytes  1073 us
#   systoken.a <= systoken.a::transfer        {"from":"systoken.a","to":"bob","quantity":"25.0000 DUSD","memo":"m"}
#           bob <= systoken.a::transfer        {"from":"systoken.a","to":"bob","quantity":"25.0000 DUSD","memo":"m"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]
```

Now check if `bob` received the tokens using `infra-cli get token balance`&#x20;

```
infra-cli.sh get token balance systoken.a bob
```

```
25.0000 DUSD
```

Check `systoken.a`'s balance. Notice that tokens were deducted from the account.

```
infra-cli.sh get token balance systoken.a systoken.a
```

```
99999975.0000 SYS
```

Excellent! Everything adds up.

## What's Next?

* [Understanding ABI Files](/infrablockchain-antelope/for-developers/developer-guides-infrablockchain-antelope-native/smart-contract-development/understanding-abi-files.md): Introduction to Application Binary Files (ABI) and how the ABI file correlates to the `eosio.token` contract.


---

# 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/smart-contract-development/deploy-issue-and-transfer-tokens.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.
