contracts/
SimpleStorage.sol
Remix에서 모든 폴더와 파일을 삭제하고 위와 같이 구성하자.
contracts/SimpleStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;
...
사용할 solidity 버전을 입력 해준다.
^0.8.8
은 0.8.8이상의 버전이 사용가능
>=0.8.7 <0.9.0
0.8.7을 포함하고 0.9.0미만의 버전 사용가능
계약을 정의한다. 좌측아래 compile SimpleStorage.sol버튼을 누르거나 command+s를 이용해 컴파일을 해주면 성공적으로 첫 계약을 작성한것이다.
contracts/SimpleStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;
contract SimpleStorage {
uint256 public favoriteNumber;
struct People {
uint256 favoriteNumber;
string name;
}
People[] public people;
function store(uint256 _favoriteNumber) public {
favoriteNumber = _favoriteNumber;
retrieve();
}
function retrieve() public view returns(uint256){
return favoriteNumber;
}
function addPerson(string memory _name, uint256 _favoriteNumber) public {
people.push(People(_favoriteNumber, _name));
}
People이라는 구조체를 만들었다. 구조체 안에는 favoriteNumber, name 변수들이 들어 있다.
구조체를 이용해서 배열을 생성해준다.
contracts/SimpleStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.8;
contract SimpleStorage {
uint256 favoriteNumber;
mapping(string => uint256) public nameToFavoriteNumber; <- here
struct People {
uint256 favoriteNumber;
string name;
}
People[] public people;
function store(uint256 _favoriteNumber) public {
favoriteNumber = _favoriteNumber;
}
function retrieve() public view returns (uint256){
return favoriteNumber;
}
function addPerson(string memory _name, uint256 _favoriteNumber) public {
people.push(People(_favoriteNumber, _name));
nameToFavoriteNumber[_name] = _favoriteNumber;
}
}
key값의 타입은 string이고 value값의 타입은 uint256이다. 접근제한자는 public 매핑의 이름은 nameToFavoriteNumber이다.값을 확인 해 보자.
Environment를 Remix VM에서 Injected Provider - Metamask로 바꿔준다.
배포를 누르면 Metamask 창이 뜨고 비용을 확인할 수 있다.
확인을 누르고 조금 기다리면 녹색 체크가 뜨면 배포에 성공이다. etherscan에서 상세 내역을 확인할 수 있다.
이 시리즈는 freeCodeCamp.org의 강의를 들으면서 공부한 내용을 정리하기 위해 작성했습니다.