헤데라 스마트 계약 - 추측 게임
Hedera에서 스마트 계약이 어떻게 작동하는지 알아보기 위해 간단한 추측 게임을 만들고 싶었습니다.
저장소는 여기에 있습니다https://github.com/aaronblondeau/guess-it.
저는 견고성이나 스마트 컨트랙트에 대한 지식이 매우 제한적이어서 이 모든 것이 저에게 새로운 영역이었습니다.
다음은 내가 계약에 대해 생각한 것입니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.11;
pragma experimental ABIEncoderV2;
// Compile with:
// npm install -g solc
// solcjs --bin GuessIt.sol
contract GuessIt {
string private secretPhrase;
address public owner;
uint pot = 0;
event GuessAtttempt(address indexed from, string guess, bool success, uint pot);
constructor (string memory _phrase) {
owner = msg.sender;
secretPhrase = _phrase;
}
function setPhrase(string memory _phrase) public {
// Only contract owner can update phrase
require(msg.sender == owner);
secretPhrase = _phrase;
}
function guessPhrase(string memory _guess) public payable returns (bool) {
// Make sure caller has sent at least 5 HBAR
require (msg.value >= 500000000, "insufficient payable");
// Add funds to the pot (why doesn't this show in contract balance on dragonglass?)
pot += msg.value;
if (keccak256(abi.encodePacked((_guess))) != keccak256(abi.encodePacked((secretPhrase)))) {
emit GuessAtttempt(msg.sender, _guess, false, pot);
return false;
}
// Guess was correct, transfer pot to caller
emit GuessAtttempt(msg.sender, _guess, true, pot);
payable(msg.sender).transfer(pot);
pot = 0;
return true;
}
function contractVersion() public pure returns (uint) {
return 9;
}
}
주요 테이크아웃 중 일부는 다음과 같습니다.
이 연습에서 가장 큰 질문 중 하나는 스마트 계약을 개발하는 동안 어떻게 빠르게 반복합니까? 계약을 테스트넷에 반복해서 보내서 디버깅했습니다(죄송합니다 테스트넷). 다음에는 계약을 단위 테스트하는 방법을 알아낼 계획입니다. 그러면 반복 문제가 해결되고 내가 놓친 멋진 버그를 발견할 수 있을 것입니다.
Reference
이 문제에 관하여(헤데라 스마트 계약 - 추측 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aaronblondeau/hedera-smart-contracts-guessing-game-8hb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)