Remix_02

atesi·2022년 10월 14일
0

blockchain

목록 보기
4/12

Importing contracts

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을 가져온다.

Inheritance & Overrides

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의 강의를 들으면서 공부한 내용을 정리하기 위해 작성했습니다.

profile
Action!

0개의 댓글