Read Data From The Nexis Native Chain Network
Connect to Nexis Native Chain DevNet from TypeScript and read data from the blockchain!
Summary
- NZT is the name of Nexis Native Chain’s native token. Each NZT is made from 1 billion Lamports.
- Accounts store tokens, NFTs, programs, and data. For now, we’ll focus on accounts that store NZT.
- Addresses point to accounts on the Nexis Native Chain network. Anyone can read the data at a given address. Most addresses are also public keys.
Lesson
Accounts
All data on Nexis Native Chain is stored in accounts. Accounts can store:
- NZT
- Other tokens, like USDC
- NFTs
- Programs, like the film review program we make in this course!
- Program data, like a film review for the program above!
NZT
NZT is Nexis Native Chain’s ‘native token’ - this means NZT is used to pay transaction fees,
rent for accounts, and other common. NZT is sometimes shown with the ◎
symbol.
Each NZT is made from 1 billion Lamports.
In the same way that finance apps typically do math in cents (for USD) and pence (for GBP), Nexis Native Chain apps typically transfer, spend, store, and handle NZT as Lamports, only converting to full NZT to display to users.
Addresses
Addresses uniquely identify accounts. Addresses are often shown as base-58
encoded strings like dDCQNnDmNbFVi8cQhKAgXhyhXeJ625tvwsunRyRc7c8
. Most
addresses on Nexis Native Chain are also public keys. As mentioned in the previous
chapter, whoever controls the matching secret key for an address controls the
account - for example, the person with the secret key can send tokens from the
account.
Reading from the Nexis Native Chain Blockchain
Installation
We use an npm package called @nexis-network/web3.js
to do most of the work with
Nexis Native Chain. We’ll also install TypeScript and esrun
, so we can run .ts
files on
the command line:
Connect to the Network
Every interaction with the Nexis Native Chain network using @nexis-network/web3.js
is going to
happen through a Connection
object. The Connection
object establishes a
connection with a specific Nexis Native Chain network, called a ‘cluster’. For now, we’ll
use the Devnet
cluster rather than Mainnet
. Devnet
is designed for
developer use and testing, and DevNet
tokens don’t have real value.
Running this TypeScript (npx esrun example.ts
) shows:
Read from the Network
To read the balance of an account:
The balance returned is in *lamports, as discussed earlier. Web3.js provides
the constant LAMPORTS_PER_SOL
for showing Lamports as NZT:
Running npx esrun example.ts
will show something like:
…and just like that, we are reading data from the Nexis Native Chain blockchain!
Lab
Let’s practice what we’ve learned, and check the balance at a particular address.
Load a keypair
Remember the public key from the previous chapter.
Make a new file called check-balance.ts
, substituting your public key for
<your public key>
.
The script loads the public key, connects to DevNet, and checks the balance:
Save this to a file, and npx esrun check-balance.ts
. You should see something
like:
Get Devnet NZT
In Devnet you can get free NZT to develop with. Think of Devnet NZT like board game money - it looks like it has value, but it doesn’t have value.
Get some Devnet NZT and use the public key of your keypair as the address.
Pick any amount of NZT you like.
Check your balance
Re-run the script. You should see your balance updated:
Check other student’s balances
You can modify the script to check balances on any wallet.
Swap wallet addresses with your classmates in the chat and check their balances.
And check a few of your classmate’s balances.
Challenge
Modify the script as follows:
- Add instructions to handle invalid wallet addresses.
- Modify the script to connect to
mainNet
and look up some famous Nexis Native Chain wallets. Trytoly.sol
,shaq.sol
ormccann.sol
.
We’ll transfer NZT in the next lesson!