contracts/
SimpleStorage.sol
StorageFactory.sol
StorageFactory.sol 생성
contracts/StorageFactory.sol
// SPDX-License-Identifier: MiT
pragma solidity 0.8.8;
import "./SimpleStorage.sol";
contract StorageFactory {
SimpleStorage public simpleStorage;
function createSimpleStorageContarct() public {
simpleStorage = new SimpleStorage();
}
}
위와 같이 import "...";
를 통해 사용가능하다.
contracts/StorageFactory.sol
// SPDX-License-Identifier: MiT
pragma solidity 0.8.8;
import "./SimpleStorage.sol";
contract StorageFactory {
SimpleStorage[] public simpleStorageArray;
function createSimpleStorageContarct() public {
SimpleStorage simpleStorage = new SimpleStorage();
simpleStorageArray.push(simpleStorage);
}
function sfStore(uint256 _simpleStorageIndex, uint256 _simpleStorageNumber) public {
simpleStorageArray[_simpleStorageIndex].store(_simpleStorageNumber);
}
function sfGet(uint256 _simpleStorageIndex) public view returns (uint256){
return simpleStorageArray[_simpleStorageIndex].retrieve();
}
}
SimpleStorage[] public simpleStorageArray;
방금 가져온 SimpleStorage() 계약 유형을 사용하여 simpleStorage()라는 public 배열을 만든다. 이 배열에는 SimpleStorage계약만이 포함된다.
createSimpleStorageContract
은 두가지 일을한다. 변수 simpleStorage
를 만들고 new
키워드로 수행. 두번째 줄에서는 새 계약을 배열로 푸시한다.
sfStore
는 두개의 인자를 취하고 인덱스와 favoriteNumber
을 가져온다.
contracts/
SimpleStorage.sol
StorageFactory.sol
ExtraStorage.sol
contracts/ExtraStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./SimpleStorage.sol";
contract ExtraStorage is SimpleStorage{
}
상속받을 계약을 is 다음에 명시해준다.
contracts/ExtraStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./SimpleStorage.sol";
contract ExtraStorage is SimpleStorage{
function store(uint256 _favoriteNumber) public override {
favoriteNumber = _favoriteNumber +5;
}
}
store 함수에 오버라이드 하기 위해 접근제한자 뒤에 override를 명시해준다.
contracts/SimpleStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.8;
contract SimpleStorage {
...
function store(uint256 _favoriteNumber) public virtual {
favoriteNumber = _favoriteNumber;
}
...
}
부모에게 가서 virtural을 명시 해준다.
ExtraStorage.sol에서 배포후 5를 store하면 10이 retrieve된 것을 확인할 수 있다.
이 시리즈는 freeCodeCamp.org의 강의를 들으면서 공부한 내용을 정리하기 위해 작성했습니다.