CARA MEMBANGUN SMART CONTRACT PADA BLOCKCHAIN NEAR MENGGUNAKAN JAVASCRIPT
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:
- Node.js, untuk menggunakan alat scaffolding kami.
- 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 testnet
untuk mengikuti tutorial ini.
Namun, jika Anda ingin membuat satu, Anda dapat melakukannya melalui wallet, dan menggunakannya dari near-cli
dengan near login
.
Membuat Kontrak
Buat smart contract dengan menjalankan create-near-app
seperti menu dibawah.
npx create-near-app@latest
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;
}
}
Ada 3 hal penting yang perlu diperhatikan:
- Metode
get_greeting
adalah metode tampilan (view
method), yang berarti hanya membaca dari kontrak dan dapat dipanggil secara gratis oleh siapa pun. - Secara default, kontrak diinisialisasi dengan atribut
greeting
diatur ke"Hello"
. - Metode
set_greeting
adalah metodechange
, 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 tonode v16
rustup default 1.68
to switch totoolchain 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!