Skip to main content

Deploying to Testnet

In the previous sections we saw how a simple auction smart contract is implemented, and checked its correctness using sandbox testing.

The time has come to release it on the actual blockchain and interact with it! In this section, we will show you how to create a simple testnet account, deploy the contract and interact with it from the CLI.

Networks

NEAR has two main networks for you to use: testnet and mainnet. The testnet network behaves exactly as the main network, but uses test tokens with no real value


Testnet Account

To deploy a contract, you need a testnet account. If you don't have one, you can create one using the following command:

# create-account using near-cli (contractId has end with .testnet)
near create <contractId> --useFaucet

Replace <contractId> with the name you want to give to your account, and make sure it ends with .testnet.

The account will be created with 10 NEAR (these are test tokens).

Testnet Faucet

Notice that we are using the --useFaucet flag to automatically request test tokens from the NEAR faucet.

The faucet is only available on the testnet network - which is the default network for the CLI


Deploying the Contract

To deploy the contract, you need to compile the contract code into WebAssembly (WASM) and then deploy it to the network

# compile the contract
npm run build

# deploy the contract
near deploy <contractId> ./build/auction.wasm

# initialize the contract, it finishes in 2 minutes
MINUTE_FROM_NOW=$(date -v+2M +%s000000000)
near call <contractId> init '{"end_time": "'$MINUTE_FROM_NOW'"}' --accountId <contractId>

Now that the contract is deployed and initialized we can send transactions to it using the CLI.

Interactive CLI

NEAR's CLI is interactive meaning you can type near and click through all the possible options without having to remember certain commands


Interacting with the Contract

We are now ready to start bidding by calling the bid function on the contract. We recommend you to create two new accounts to simulate different bidders.

# call the contract to bid 
near call <contractId> bid --accountId <bidderId> --amount 1

# get the highest bid
near view <contractId> get_highest_bid

Notice that we call the bid function without arguments, but attach 1 NEAR to the transaction. This is the amount we are bidding.

For the get_highest_bid function, we don't need to specify which user is calling it, as it is a view function and does not require gas to be executed.


Conclusion

We have now seen how to deploy a contract to testnet and interact with it using the NEAR CLI.

A word of advice before moving forward. When people learn how to use the CLI, they get lazy and start testing new contract features directly on the testnet. While this is tempting, it is not recommended.

Do not use testnet as your only way to test contracts. Always test your contracts on the sandbox environment first, and only deploy to the testnet when you are confident that everything is working as expected.

Frontend

Generally you will use the CLI only to deploy and initialize the contract. After, all interactions will be made from a frontend

We will cover this topic in the future, after we have finished adding more features to the auction contract

Was this page helpful?