동전 던지기
동전 던지기는 플레이어가 동전 던지기의 결과를 추측하는 게임입니다. 이는 난수를 구현하는 가장 간단한 컨트랙트 중 하나입니다.
게임 시작하기
예제를 시작하는 두 가지 옵션이 있습니다.
- 권장: Gitpod(웹 기반 대화형 환경)를 통해 앱 사용
- Clone the project locally.
Gitpod | Clone locally |
---|---|
https://github.com/near-examples/coin-flip-examples.git |
Gitpod를 선택하면 새 브라우저 창이 코드와 함께 자동으로 열립니다. 잠시 기다리면 프론트엔드가 팝업됩니다(팝업 창이 차단되지 않았는지 확인).
If you are running the app locally, you should build and deploy a contract (JavaScript or Rust version) and a client manually.
게임과 상호 작용하기
계속해서 NEAR 계정으로 로그인하십시오. 계정이 없는 경우 즉시 만들 수 있습니다. 로그인한 후 tails
와 heads
버튼을 통해 다음 동전 던지기 결과를 추측해 보세요.
게임의 프론트엔드
dApp의 구조
이제 dApp이 무엇을 하는지 이해했으므로 그 구조를 자세히 살펴보겠습니다.
- 프론트엔드 코드는
/frontend
폴더에 있습니다 - The smart contract code in Rust is in the
/contract-rs
folder. - The smart contract code in JavaScript is in the
/contract-ts
folder.
Both Rust and JavaScript versions of the contract implement the same functionality.
컨트랙트
컨트랙트는 flip_coin
과 points_of
의 두 가지 메서드를 가지고 있습니다.
- 🌐 Javascript
- 🦀 Rust
Loading...
Loading...
Running the Frontend
To start the frontend you will need to install the dependencies and start the server.
cd frontend
yarn
yarn dev
Understanding the Frontend
The frontend is a Next.JS project generated by create-near-app. Check _app.js
and index.js
to understand how components are displayed and interacting with the contract.
- _app.js
- index.js
Loading...
Loading...
Testing
스마트 컨트랙트를 작성할 때 모든 메서드를 철저하게 테스트하는 것이 매우 중요합니다. In this project you have integration tests. Before digging into them, go ahead and perform the tests present in the dApp through the command yarn test
for the JavaScript version, or ./test.sh
for the Rust version.
통합 테스트
Integration tests can be written in both Rust and JavaScript. 이는 자동으로 컨트랙트를 배포하고, 메서드를 실행합니다. 이러한 방식으로 통합 테스트는 현실적인 시나리오에서 사용자의 상호 작용을 시뮬레이션합니다. You will find the integration tests for the coin-flip
in contract-ts/sandbox-ts
(for the JavaScript contract) and contract-rs/tests
(for the Rust contract).
- 🌐 Javascript
- 🦀 Rust
Loading...
Loading...
A Note On Randomness
Randomness in the blockchain is a complex subject. 그것에 대해 읽고 조사하는 것이 좋습니다. You can start with our security page on it.
At the time of this writing, this example works with the following versions:
- near-cli:
4.0.13
- node:
18.19.1
- rustc:
1.77.0