Create Development Accounts

What is an account?

An account is a collection of authorizations, stored on the blockchain, and used to identify a sender/recipient. It has a flexible authorization structure that enables it to be owned either by an individual or group of individuals depending on how permissions have been configured. An account is required to send or receive a valid transaction to the blockchain.

Step 1: Create Accounts

In section 1.4 Create Development Wallet, you created a development key pair. Now, create new account in VEXANIUM blockchain.

NOTE

Follow the tutorials here for a simple way of creating account on VEXANIUM blockchain.

Throughout these tutorials the accounts [YOUR_VEX_ACCOUNT_1] and [YOUR_VEX_ACCOUNT_2] are used. Create accounts using below command.

INFO

Before you do action to the blockchain, there are two options by start nodeos or endpoint. If you want to push action without run nodeos, you can add --url configuration after cleos command like below.

cleos --url https://explorer.vexanium.com:6960 system newaccount --transfer [CREATORACC] [NEWACC] --buy-ram "0.0500 VEX" --stake-net "0.0000 VEX" --stake-cpu "0.0001 VEX" [YOUR_PUBLIC_KEY]
cleos --url https://explorer.vexanium.com:6960 system newaccount --transfer belajarsc1111 belajarsc222 --buy-ram "0.1000 VEX" --stake-net "0.0000 VEX" --stake-cpu "0.0001 VEX" VEX8ZcARNPyCfoez2ooUPWzykh94FzYbNSftk5Ri3Lj6DUsA4QPoP

You should then see a confirmation message similar to the following for each command that confirms that the transaction has been broadcast.

executed transaction: 10953eb9368082f816e80a4905024e626b454623c7f9987d728fa5a81ffb6850  344 bytes  1559 us
#       vexcore <= vexcore::newaccount          {"creator":"belajarsc111","name":"belajarsc111","owner":{"threshold":1,"keys":[{"key":"VEX8ZcARNPyCf...
#       vexcore <= vexcore::buyram              {"payer":"belajarsc111","receiver":"belajarsc111","quant":"0.1000 VEX"}
#       vexcore <= vexcore::delegatebw          {"from":"belajarsc111","receiver":"belajarsc111","stake_net_quantity":"0.0000 VEX","stake_cpu_quanti...
#     vex.token <= vex.token::transfer          {"from":"belajarsc111","to":"vex.ram","quantity":"0.0995 VEX","memo":"buy ram"}
#     vex.token <= vex.token::transfer          {"from":"belajarsc111","to":"vex.ramfee","quantity":"0.0005 VEX","memo":"ram fee"}
#     vex.token <= vex.token::transfer          {"from":"vex.ramfee","to":"vex.rex","quantity":"0.0005 VEX","memo":"transfer from vex.ramfee to vex....
#  belajarsc111 <= vex.token::transfer          {"from":"belajarsc111","to":"vex.ram","quantity":"0.0995 VEX","memo":"buy ram"}
#       vex.ram <= vex.token::transfer          {"from":"belajarsc111","to":"vex.ram","quantity":"0.0995 VEX","memo":"buy ram"}
#  belajarsc111 <= vex.token::transfer          {"from":"belajarsc111","to":"vex.ramfee","quantity":"0.0005 VEX","memo":"ram fee"}
#    vex.ramfee <= vex.token::transfer          {"from":"belajarsc111","to":"vex.ramfee","quantity":"0.0005 VEX","memo":"ram fee"}
#    vex.ramfee <= vex.token::transfer          {"from":"vex.ramfee","to":"vex.rex","quantity":"0.0005 VEX","memo":"transfer from vex.ramfee to vex....
#       vex.rex <= vex.token::transfer          {"from":"vex.ramfee","to":"vex.rex","quantity":"0.0005 VEX","memo":"transfer from vex.ramfee to vex....
#     vex.token <= vex.token::transfer          {"from":"belajarsc111","to":"vex.stake","quantity":"0.0001 VEX","memo":"stake bandwidth"}
#  belajarsc111 <= vex.token::transfer          {"from":"belajarsc111","to":"vex.stake","quantity":"0.0001 VEX","memo":"stake bandwidth"}
#     vex.stake <= vex.token::transfer          {"from":"belajarsc111","to":"vex.stake","quantity":"0.0001 VEX","memo":"stake bandwidth"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]

Step 2: Public Key

Note in cleos command a public key is associated with account alice. Each VEX account is associated with a public key.

Be aware that the account name is the only identifier for ownership. You can change the public key but it would not change the ownership of your VEXANIUM account.

Check which public key is associated with belajarsc222 using cleos get account

cleos --url http://explorer.vexanium.com:8080 get account belajarsc222

You should see a message similar to the following:

created: 2023-03-23T21:39:18.000
permissions:
     owner     1:    1 VEX8ZcARNPyCfoez2ooUPWzykh94FzYbNSftk5Ri3Lj6DUsA4QPoP
        active     1:    1 VEX8ZcARNPyCfoez2ooUPWzykh94FzYbNSftk5Ri3Lj6DUsA4QPoP
memory:
     quota:     5.735 KiB    used:     3.365 KiB

net bandwidth:
     staked:          0.0000 VEX           (total stake delegated from account to self)
     delegated:       0.0000 VEX           (total staked delegated to account from others)
     used:                 0 bytes
     available:            0 bytes
     limit:                0 bytes

cpu bandwidth:
     staked:          0.0001 VEX           (total stake delegated from account to self)
     delegated:       0.0000 VEX           (total staked delegated to account from others)
     used:                 0 us
     available:           10 us
     limit:               10 us

producers:     <not voted>

Notice that actually belajarsc222 has both owner and active public keys. VEXANIUM has a unique authorization structure that has added security for your account. You can minimize the exposure of your account by keeping the owner key cold, while using the key associated with your active permission. This way, if your active key were ever compromised, you could regain control over your account with your owner key.

In term of authorization, if you have a owner permission you can change the private key of active permission. But you cannot do so other way around.

USING DIFFERENT KEYS FOR ACTIVE/OWNER ON A PRODUCTION NETWORK

In this tutorial we are using the same public key for both owner and active for simplicity. In production network, two different keys are strongly recommended

Troubleshooting

If you get an error while creating the account, make sure your wallet is unlocked

cleos wallet list

You should see an asterisk (*) next to the wallet name, as seen below.

Wallets:
[
  "default *"
]

What's Next?

Hello World: The Hello World of VEXANIUM! Learn how to set up your environment and deploy your first smart contract.

Last updated