First Transaction

Here is guide how to send your first transaction in Pontem network using.

Let's try to send basic coins 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.

UI

To send coins between accounts just do following steps:

  • Open UI.

  • Navigate to "Accounts" in the header menu.

Account
  • Click on "send" button near account which sends funds.

Send
  • Choose an account you want to send coins, for example Bob.

  • Put the amount you want to send.

  • Click on "Make Transfer" button.

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

Send Form.

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

CLI

To send tokens from CLI use next command:

pontem-cli tx.balances.transfer <recipient> 1000 --seed <seed>

Where:

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

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

Replace <recipient> with your actual address.

After your execute command and new transaction will be approved, the recipient will receive 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 to install Idea and extension so you easy work with Move language:

Let's create new project using Dove:

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

Replace address with your sender address.

Create a new script:

touch ./scripts/transfer.move

And put next code inside:

script {
use 0x1::Account;
use 0x1::PONT;
use 0x01::Pontem;
fun transfer(account: &signer, payee: address, amount: u128) {
// To make sure PONT coin registered and known.
Pontem::register_coin<PONT::T>(b"PONT", 12);
// Deposit a sender PONT coins from native balance.
// The function returns PONT balance resource.
let pont = Account::deposit_native<PONT::T>(account, amount);
// Transfer PONT resource to payee balance resource.
Account::deposit<PONT::T>(account, payee, pont);
}
}

This code deposits your native PONT coins into VM space and transfers it to the payee account. You can read more about native balances and VM space into native balances documentation.

Let's create script transaction using dove:

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

Before run command replace:

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

  • <amount> - coins amount to send.

See builded artifacts:

ls -la ./target/transactions

Use 0_transfer.mvt to send transaction, see how:

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

In the next parts we explain what's address, how to launch local nodes, and iterate with UI/CLI.

If you are interesting in Move language or Pallet see next parts: