Solidity - Constructor

심재원·2023년 12월 28일
0

Constructor
: 배포될 때 실행됨

constructor(string memory _a, uint _b) {
        a = _a;
        b = _b;
    }

: A와 B가 중요한 정보고, 특정 초기값이 설정되어야 함.

ex) 해당 스마트컨트랙트를 배포한 사람이 owner다. 이 경우 constructor 사용해 owner로 집어넣으면 됨.

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.8.2 <0.9.0;

contract CONSTRUCTOR {
    uint a;
    uint b;

    constructor() {
        a = 5;
        b = 7;
    }

    function getAB() public view returns(uint, uint) {
        return (a, b);
    }
}

contract CONSTRUCTOR2 {
    string a;
    uint b;

    constructor(string memory _a, uint _b) {
        a = _a;
        b = _b;
    }

    function getAB() public view returns(string memory, uint) {
        return (a, b);
    }
}

contract CONSTRUCTOR3 {
    struct teacher {
        string name;
        uint number;
    }

    teacher T;

    struct Student {
        string name;
        uint score;
        string grade;
    }

    Student[] students;

    constructor(string memory _name, uint _number) {
        T = teacher(_name, _number);
    }

    function getTeacher() public view returns(teacher memory) {
        return T;
    }
}

contract CONSTRUCTOR4 {
    bytes32 pw;

    // Constructor 활용해 배포한 순간 비밀번호 설정
    constructor(string memory _pw) {
        pw = keccak256(abi.encodePacked(_pw));
    } // 아무에게나 공개하고 싶진 않고, 인증할 수 있는 사람에게만 넘겨주고 싶을 때 keccak abi 사용하면 됨

    function PW(string memory _pw) public view returns(bool) {
        if(keccak256(abi.encodePacked(_pw)) == pw) {
            return true;
        } else {
            return false;
        }
    }
}

contract CONSTRUCTOR5 {
    bool higherThanTen;
    
    constructor(uint _a) {
        if(_a > 10) {
            higherThanTen = true;
        } else {
            higherThanTen = false;
        }
    }

    function getHigherThanTen() public view returns(bool) {
        return higherThanTen;
    }
}

// Constructor : 특정 변수의 초기값

0개의 댓글