CARA MEMBANGUN SMART CONTRACT PADA BLOCKCHAIN NEAR MENGGUNAKAN JAVASCRIPT

NEAR Indonesia
4 min readMar 9, 2024

Dalam jaringan NEAR, akun dapat menyimpan program yang dikenal sebagai smart contract. Smart contract dapat menyimpan data dan mengekspos metode agar pengguna lain dan kontrak lain dapat berinteraksi dengan mereka.

Dalam tutorial pendahuluan ini, kami akan memandu Anda dalam membuat smart contract pertama Anda di testnet NEAR.

PERSYARATAN AWAL

Sebelum memulai, pastikan Anda telah menginstal hal-hal berikut:

  1. Node.js, untuk menggunakan alat scaffolding kami.
  2. NEAR CLI, untuk melakukan deployment dan berinteraksi dengan kontrak.

EASY INSTALL

  • NEAR-CLI: Install near-cli tools using
npm i -g near-cli

AKUN TESTNET

Tidak perlu memiliki akun testnetuntuk mengikuti tutorial ini.

Namun, jika Anda ingin membuat satu, Anda dapat melakukannya melalui wallet, dan menggunakannya dari near-clidengan near login.

Membuat Kontrak
Buat smart contract dengan menjalankan create-near-appseperti menu dibawah.

npx create-near-app@latest
create-near-app in action

Struktur folder hasilnya akan sedikit berbeda tergantung pada bahasa yang dipilih. Berikut adalah struktur umum yang dapat Anda harapkan:

├── sandbox-ts      # sanbox testing
│ ├── src
│ ├── └── main.ava.ts
│ ├── ava.config.cjs
│ └── package.json
├── src
│ └── contract.ts # contract's code
├── package.json # package manager
├── README.md
└── tsconfig.json

Kontrak

Smart contract baru Anda menyimpan greeting: string atribut string di dalam statusnya, dan mengekspos dua metode untuk berinteraksi dengannya (set_greeting, get_greeting).
contract-ts/src/contract.ts

@NearBindgen({})
class HelloNear {
greeting: string = "Hello";
  @view({}) // This method is read-only and can be called for free
get_greeting(): string {
return this.greeting;
}
@call({}) // This method changes the state, for which it cost gas
set_greeting({ greeting }: { greeting: string }): void {
near.log(`Saving greeting ${greeting}`);
this.greeting = greeting;
}
}

See full example on GitHub

Ada 3 hal penting yang perlu diperhatikan:

  1. Metode get_greeting adalah metode tampilan (view method), yang berarti hanya membaca dari kontrak dan dapat dipanggil secara gratis oleh siapa pun.
  2. Secara default, kontrak diinisialisasi dengan atribut greeting diatur ke "Hello".
  3. Metode set_greetingadalah metode change, yang berarti mengubah status kontrak dan memerlukan pengguna untuk menandatangani transaksi agar dapat dieksekusi.

BUILD AND TEST
Membangun dan menguji kontrak sama mudahnya seperti menjalankan dua perintah.

npm run build
npm run test

# Expected:
# returns the default greeting ✅
# changes the greeting ✅

Tes gagal?

Jika tes gagal, pastikan Anda menggunakan node v16 dan toolchain v1.69 didalamrust. Anda selalu bisa menggunakannya.

  • nvm use 16 to switch to node v16
  • rustup default 1.68 to switch to toolchain v1.69

perintah ini memanggil alat pembangunan untuk setiap bahasa dan memanggil Sandbox tests dari sandbox-ts/rs directory.

SANDBOX
Menguji kontrak dalam sebuah Sandbox memungkinkan Anda memahami bagaimana kontrak akan berperilaku setelah dideploy ke jaringan sambil memiliki kontrol total atas pengujian.

Buat Akun Testnet

Sekarang kita sudah tahu bahwa kontrak berhasil melewati tes, mari buat akun testnet di mana kita akan mendeploy kontrak.

Meskipun ada berbagai cara untuk create accounts di NEAR, dalam quickstart ini kita akan menggunakan alat cargo-near untuk membuat akun dengan nama acaknamed account.

# Create a new testnet account
# Replace <created-account> with a custom name
near create-account <created-account> --useFaucet

Contoh Hasil

> near create-account lovely-event.testnet --useFaucet
# Console response
New account "lovely-event.testnet" created successfully. # Response

TIPS

Di sini kita sedang membuat akun acak karena kita tidak peduli dengan nama akunnya. Ingatlah bahwa Anda dapat membuat akun bernama melalui dompet apa pun (i.e. MyNearWallet) dan kemudian menggunakannya dari near-cli by invoking near login.

Deploy the Contract

Setelah akun dibuat, anda sekarang dapat menerapkan kontrak ke dalamnya:

near deploy <created-account> build/release/hello.wasm

Selamat! Kontrak anda sekarang lives di NEAR testnet network.

Berinteraksi dengan Kontrak​

Untuk berinteraksi dengan smart contract yang sudah didaftarkan, Anda dapat memanggil metodenya menggunakan alat near-cli atau near-cli-rs.

Get Greeting

Metode get_greeting adalah metodeview , yang berarti hanya membaca dari status kontrak, dan oleh karena itu dapat called secara gratis.

near-cli

> near view <created-account> get_greeting

"Hello" # Response

near-cli-rs

> near contract call-function as-read-only <created-account> get_greeting json-args {} network-config testnet now

"Hello" # Response

Set Greeting

Metode set_greeting adalah metodechange, berarti mengubah status kontrak, dan oleh karena itu memerlukan pengguna untuk menandatangani transaksi agar dapat dieksekusi.

near-cli

> near call <created-account> set_greeting '{"greeting": "Hola"}' --accountId <created-account>

Log: Saving greeting "Hola" # Response

Dalam kasus ini, kita meminta akun yang menyimpan kontrak untuk memanggil metode kontraknya sendiri (--accountId <created-account>).

near-cli-rs

> near contract call-function as-transaction <created-account> set_greeting json-args '{"greeting": "Hola"}' prepaid-gas '100.0 Tgas' attached-deposit '0 NEAR' sign-as <created-account> network-config testnet sign-with-keychain send

Log: Saving greeting "Hola" # Response

Dalam kasus ini, kita meminta akun yang menyimpan kontrak untuk memanggil metode kontraknya sendiri (sign-as <created-account>).

Moving Forward

Itulah tutorial quickstart-nya. Anda sekarang telah melihat sebuah kontrak yang sepenuhnya fungsional dengan minimal interface and testing.

Happy coding!

--

--

NEAR Indonesia

Komunitas NEAR Protocol di Indonesia. Mengedukasi tentang blockchain #nearprotocol dan ekosistemnya.