This simple example will demonstrate how to integrate a smart contract into a decentralized application, and how to store and retrieve information to and from the NEAR blockchain with call and view methods.
To clone run:
git clone https://github.com/near-examples/hello-near-js.gitenter the folder with:
cd hello-near-jsTo download dependencies run:
yarnor
npm iThe Smart Contract consists of two methods available for the user to call.
@call
// Public method - accepts a greeting, such as "howdy", and records it
set_greeting({ message }: { message: string }) {
near.log(`Saving greeting ${message}`)
this.message = message;
}
@view
// Public method - returns the greeting saved, defaulting to DEFAULT_MESSAGE
get_greeting(): string {
return this.message;
}A call method stores or modifies information that exists in state on the NEAR blockchain. Call methods do incur a gas fee. Call methods return no values
A view method retrieves information stored on the blockchain. No fee is charged for a view method. View methods always return a value.
NearBindgen is a decorator that exposes the state and methods to the user.
To build your smart contract run
yarn build
or
npm run buildThis build script will build and deploy your smart contract onto a dev account. Check the terminal logs t ofind the name of the dev account it was deployed to.
example:
dev-1659899566943-21539992274727
It will also initialize your smart contract for you.
This will store the string "hi user" onto the NEAR blockchain using the change method defined earlier
near call <dev account> set_greeting '{"message":"hi user"}' --accountId <your-account-name.testnet>This will return and display your stored message
near view <dev account> get_greeting '{}' --accountId <your-account.testnet>
To spin up the frontend run
yarn startor
npm run startFrom there you should be able to modify the greeting.
This example repo comes with integration tests written in rust and assembly type script.
To run tests run the following in your terminal:
yarn testor
npm run testIntegration tests are generally written in javascript. They automatically deploy your contract and execute methods on it. In this way, integration tests simulate interactions from users in a realistic scenario. You will find the integration tests for hello-near in integration-tests/.