๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Hello NEAR ๐Ÿ‘‹

์•ˆ๋…•ํ•˜์„ธ์š”! NEAR: Hello NEAR์—์„œ ์ฒซ ๋ฒˆ์งธ ํƒˆ์ค‘์•™ํ™” ์•ฑ(dApp)์„ ์‹œ์ž‘ํ•˜๊ณ , ์•ฑ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

Hello NEAR๋Š” ๋‘ ๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ์นœ๊ทผํ•œ dApp์ž…๋‹ˆ๋‹ค.

  1. ์ธ์‚ฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ
  2. ์ธ์‚ฌ๋ง์„ ํ‘œ์‹œํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์›น ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ

Create NEAR Appโ€‹

If you already have Node.js installed, simply run:

  npx create-near-app@latest

Use the interactive menu to set up your first project folder, we recommend you to use javascript.

Once the folder is ready, check the README. It will show you how to build and deploy the smart contract, and start the frontend.

  npm run build
npm start
Test it online with Gitpod

์ƒˆ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์ด ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ์—ด๋ฆฌ๊ณ , ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ํŒ์—… ์ฐฝ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(ํŒ์—… ์ฐฝ์ด ์ฐจ๋‹จ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”).

๐ŸŒ JavaScript๐Ÿฆ€ Rust
Open in GitpodOpen in Gitpod

Hello NEAR์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•โ€‹

์•ฑ์ด ์‹คํ–‰๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด์ œ NEAR ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์„ธ์š”. ์—†๋Š” ๊ฒฝ์šฐ ์ฆ‰์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

img Hello NEAR์˜ ํ”„๋ก ํŠธ์—”๋“œ

๋กœ๊ทธ์ธํ•œ ํ›„, ์ธ์‚ฌ๋ง์„ ๋ณ€๊ฒฝํ•˜๊ณ  Hello NEAR ์•ฑ์ด ์–ด๋–ป๊ฒŒ ์ธ์‚ฌํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”!


dApp์˜ ๊ตฌ์กฐโ€‹

์ด์ œ dApp์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ–ˆ์œผ๋ฏ€๋กœ, ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋Š” /frontend ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ฝ”๋“œ๋Š” /contract ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ปดํŒŒ์ผ๋œ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋Š” /out/main.wasm์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ๋ฐฐํฌ๋œ ๊ณ„์ •์˜ ์ด๋ฆ„์€ /neardev/dev-account์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํŠธ๋ž™ํŠธโ€‹

์ปจํŠธ๋ž™ํŠธ์—๋Š” set_greeting๊ณผ get_greeting์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์ปจํŠธ๋ž™ํŠธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ message์— String์„ ์ €์žฅํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ์ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปจํŠธ๋ž™ํŠธ๋Š” "Hello"๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

contract/src/contract.ts
loading...

Testingโ€‹

When writing smart contracts it is very important to test all methods exhaustively. ์ด ํ”„๋กœ์ ํŠธ์—๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(unit test)์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(integration test)๊ฐ€ ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค. Before digging in their code, go ahead and execute them using the command npm run test.

๋‹จ์œ„ ํ…Œ์ŠคํŠธโ€‹

๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ๊ฐ ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์™€ ๋™์ผํ•œ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋ž™ํŠธ๊ฐ€ Rust๋กœ ์ž‘์„ฑ๋œ ๊ฒฝ์šฐ, ๊ฐ .rs ํŒŒ์ผ์˜ ๋งจ ์•„๋ž˜์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

contract/src/lib.rs
loading...

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธโ€‹

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” Javascript์™€ Rust๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒŒ๋“œ๋ฐ•์Šค์— ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๊ทธ ์œ„์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ํ˜„์‹ค์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค ์ƒ์—์„œ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. integration-tests/์—์„œ hello-near์— ๋Œ€ํ•œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

integration-tests/src/main.ava.ts
loading...

๋” ์•Œ์•„๋ณด๊ธฐโ€‹

์ฒซ ๋ฒˆ์งธ ๋น ๋ฅธ ์‹œ์ž‘ ํŠœํ† ๋ฆฌ์–ผ์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค. You have now seen a fully functional contract with a minimal user interface and testing.

Go ahead and check other examples or proceed straight to the Develop section to know how to write your own contract.

์งˆ๋ฌธ์ด ์žˆ์œผ์‹œ๋ฉด ์ฃผ์ €ํ•˜์ง€ ๋งˆ์‹œ๊ณ  Discord์—์„œ ์ €ํฌ์™€ ํ•จ๊ป˜ ํ•˜์„ธ์š”. ์ €ํฌ๋Š” ์Œ์„ฑ ์ฑ„๋„์— ์ฐธ์—ฌํ•˜๊ณ  ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” Office Hours๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๊ฐœ์ตœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ๊ฑฐ์šด ์ฝ”๋”ฉ ์‹œ๊ฐ„ ๋˜์„ธ์š”!