First Transaction

This is a guide on how to send your first transaction in Pontem network using Move.

Let's try to send basic coin transfer transactions between two accounts.

If you still don't have accounts, please create two accounts using UI or CLI.

Use FAUCET to fund one of your accounts.


To send coins between accounts just perform following steps:

  1. Navigate to "Accounts" in the header menu.


  2. Click on "send" button near account which sends funds.

  1. Choose an account you want to send coins, for example 5CAbdS5gefECWhvYUb12wYZL7vXWXAV1uPTa9N2Yx39cb2wn.

  2. Put the amount you want to send, e.g. 1 PONT.

  3. Click on "Make Transfer" button.

  4. Click on "Sign and Submit" button on new modal.

Send Form.

Done! Once your transaction is confirmed, balances will be updated.


To send tokens from CLI use the following command:

polkadot-js-api tx.balances.transfer <recipient> 10000000000 --seed "<seed>" --types ./types.json --ws wss:// # Send 1 PONT.

🧙‍♂️ Read more about types file.


  • <recipient> - address of recipient, replace with actual one.

  • <seed> - account seed. Can be replaced with "//Bob" or "//Alice" in case of local dev nodes.

  • The parameter 10000000000 is 1 PONT token, as PONT has 10 decimals.

Replace <recipient> with your actual address.

After you execute the command, the new transaction will be approved and the recipient will receive the tokens.

Transfer coins via script

🧙‍♂️ Install Dove before continue with this tutorial.

Let's make your first smart contract in Move language, we will transfer coins using Move script.

We recommend you install our IDE extension so you can easily work with the Move language:

dove new transfer_tokens --dialect pont --address <address>

Replace address with the sender address.

  1. Create a new script:

touch ./scripts/transfer.move
  1. Insert the following code inside:

script {
use 0x1::PONT::PONT;
use 0x01::DiemAccount;
fun transfer(sender: signer, payee: address, amount: u64) {
// Withdraw tokens from sender account.
let pont_tokens = DiemAccount::pnt_withdraw<PONT>(&sender, amount);
// Transfer PONT tokens to payee balance.
DiemAccount::pnt_deposit<PONT>(payee, pont_tokens);

This code transfers PONT coins between accounts, from a sender account to payee receiving address.

  1. Let's create a script transaction using dove:

dove tx 'transfer(<recipient>, <amount>)'

🧙‍♂️ IT'S IMPORTANT: your sender account should match account_address from Dove.toml, otherwise you will get a bad signer error.

Before running command replace:

  • <recipient> - address of recipient, replace with actual one.

  • <amount> - coins amount to send, e.g. 10000000000.

  • See built artifacts:

ls -la ./artifacts/transactions
  1. Use transfer.mvt to send transaction, see how to do it on UI or CLI:

  2. Using UI

  3. Using CLI

After the transaction is confirmed and added to the block, you will see how balances changed. Congrats!

In the next sections we explain our Polkadot Parachain architecture, addresses, how to launch local nodes, and iterate with UI/CLI.

If you are interested in first learning more about the Move language or Pallet skip to these sections: