no image
상속4 - super, 상속의 순서
super는 함수를 오버라이딩할 때 사용하며, 원래의 함수를 가져오는 역할을 한다. // SPDX-License-Identifier: GPL-3.0pragma solidity >= 0.7.0 여러 번 출력을 위해 emit FatherName("KimDaeho");를 여러 번 입력할 필요 없이 super를 사용된다.위와 같이 super를 사용하면 father name을 자체로 갖고 오는 것을 알 수 있다. 컴파일을 하고 son을 배포하면 두 개의 이벤트가 출력된 것을 확인할 수 있다. 상속의 순서를 통해 super가 어떻게 작동하는지 알아본다.// SPDX-License-Identifier:GPL-30pragma solidity >= 0.7.0 Father와 Mother를 상속받는 Son이 존재한다.Fat..
2024.06.11
no image
event2 - indexed
indexed는 event의 키워드이다. 이벤트 내에서만 사용할 수 있는 키워드인데 이 indexed는 특정한 이벤트의 값들을 들고 올 때 사용된다.  // SPDX-License-Identifier: MITpragma solidity >=0.7.0 코드에서는 두 개의 이벤트가 존재한다. 이 이벤트들은 똑같은 파아미터 값을 받아 출력하지만 numberTracker2에 indexed가 있다는 것이다. 즉, numberTracker2는 num을 통해 특정 이벤트 값들을 갖고 올 수 있다는 것이다. PushEvent 함수는 string 타입인 str을 받아서 numberTracker와 numberTracker2를 출력한다.출력이 된 후에 num은 1이 오르고 다른 값을 출력할 때 오른 값으로 출력하게 된다. ..
2024.06.04
no image
event1- 정의
솔리디티에는 print가 없고 대신 이벤트를 통해서 값을 출력할 수 있다.이벤트로 값을 출력할 때 값은 블록 안에 저장되고, 이것을 언제든지 꺼내서 쓸 수 있다.  이벤트를 정의하기 위해서는 아래와 같이 사용하면 된다.event키워드 이벤트명 출력값  // SPDX-License-Identifier: MITpragma solidity >=0.8.0 해당 코드에서는 info라는 이벤트를 생성했고 string name, uint256 money라는 두 개의 값들을 출력하려고 한다.그리고 sendMoney라는 돈을 보낼 때 사용하는 함수를 생성했다.이 함수는 돈을 보냈을 때 누가 보냈는지에 대한 기록을 하기 위해 사용하고 info에 이름과 값을 전달하여 출력하려고 한다.이 값들이 출력이 되면 블록체인 안에 있..
2024.06.04
no image
상속3 - 두개 이상 상속하기
두 개 이상의 스마트 컨트랙의 상속을 받았을 때 어떤 식으로 구현하는지에 대해 학습한다. Father, Mother, Son 스마트 컨트랙이 존재한다.  Son 스마트 컨트랙이 Father과 Mother의 스마트 컨트랙을 상속받는 것을 구현한다.Father과 Mother의 스마트 컨트랙에 기능을 똑같이 적용한다.이 두 스마트 컨트랙을 Son 스마트 컨트랙에 상속시킨다. 위와 같이 간단하게 상속을 시킬 수 있는데 오류가 발생한다.이 오류는 getMoney가 Mother과 Father에 똑같은 이름으로 존재하기 때문에 발생한다.따라서 오버라이딩을 해야 한다. 두 개 이상의 스마트 컨트랙을 상속받을 때, 두 개 스마트 컨트랙의 함수가 같을 때 상속받는 스마트 컨트랙에서 오버라이딩을 해야 한다.  // SPDX..
2024.05.28
no image
상속2 - overriding 오버라이딩
솔리디티(Solidity)에서의 오버라이딩(Overriding)은 상속 관계에 있는 컨트랙트에서 사용되는 개념이다. 자식 컨트랙트가 부모 컨트랙트로부터 상속받은 함수를 재정의(override)하여 자신의 로직으로 대체하는 것을 말한다.간단하게 덮어 씌우기라고 생각하면 된다. contract Father에서 오버라이딩해야 할 부분에 virtual을 작성하면 된다. 그리고 이 함수를 contract Son에도 위와 같이 작성한다.override와 virtual을 써야 오버라이딩이 됐음을 솔리디티에게 알려주는 형태이다.여기서 earnig은 아들이 일을 했을 때 버는 돈이다. 일해서 번 돈과 아버지에게 상속받은 돈이 더해져서 결과를 출력하게 된다. 컴파일을 하고 Son을 배포한다.getMoney를 누르면 ear..
2024.05.28
no image
상속1 - 정의
상속은 자신의 재산을 다른 사람에게 아무 대가 없이 주는 것이다.이처럼 스마트 컨트랙 내에서도 다른 스마트 컨트랙에게 상속시킬 수 있다.  // SPDX-License-Identifier:GPL-30pragma solidity >= 0.7.0 현재 Father 스마트 컨트랙에는 3개의 변수가 있다.getFamilyName은 성을 얻는 함수이고, getGivenName은 이름을 얻는 함수이고, getMoney는 money를 얻는 함수이다.이 함수들과 변수들을 Son 컨트랙에 상속시킨다. contract Son is Father{ }상속하는 방법자식 컨트랙에 is를 쓰고 상속해야 할 스마트 컨트랙을 작성한다.→ 자식 컨트랙을 배포했을 때 함수들과 변수들에 접근이 가능해진다. Son 컨트랙을 배포한다.따..
2024.05.22
no image
instance2 - constructor
생성자는 변수의 값을 초기화할 때 주로 사용한다.스마트 컨트랙이 처음 생성되거나 인스턴스화될 때 이 초기 변수의 파라미터 값을 받고 생성된다.→ 생성자는 어떠한 컨트랙을 인스턴스화할 때 초기값을 넣어주게 만드는 것  // SPDX-License-Identifier:GPL-30pragma solidity >= 0.7.0 construct를 정의해서 name과 age라는 변수의 값들을 입력해주는 것을 알 수 있다.construct를 사용하기 위해 B에서 A를 인스턴스화를 시킨다.get 함수는 name과 age를 리턴한다.*function은 여러 개의 리턴 값을 반환할 수 있다.  B를 Deploy하면 위와 같은 결과를 얻을 수 있다.  다음으로 function을 통해 name과 age 값을 변경해본다.  /..
2024.05.22
no image
instance 1 - 정의
Instance는 하나의 컨트랙에서 다른 컨트랙을 접근할 때 사용한다.예를 들어, 하나의 컨트랙에만 모든 코드를 넣지 않고 여러 컨트랙을 만든다. 이러한 여러 컨트랙이 이어져야 할 때 사용한다. // SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.0 A와 B 컨트랙이 있을 때 B컨트랙에 A 컨트랙을 연결하기 위해 Instance를 사용한다. change 함수는 입력받은 파라미터 값을 a 변수에 대입시킨다. 그리고 B에서 A에 접근해야 하기 때문에 인스턴스를 정의한다.인스턴스를 정의할 때는컨트랙이름 인스턴스이름 = new키워드 컨트랙이름()형식을 사용한다. get_A 함수는 A컨트랙의 a 변수를 리턴하는 함수이다. change_A 함수는 a 변수를 변경하는..
2024.05.14
no image
function 4 - String
솔리디티의 영역storage : 대부분의 변수, 함수들이 저장되며, 영속적으로 저장이 되어 가스 비용이 비쌈memory: 함수의 파라미터, 리턴값, 레퍼런스 타입이 주로 저장이 됩니다.그러나, storage 처럼 영속적이지 않고, 함수 내에서만 유효하기에 storage보다 가스 비용이 쌈Colldata : 주로 external function 의 파라미터에서 사용stack:  EVM (Ethereum Virtual Machine) 에서 stack data를 관리할 때 쓰는 영역인데 1024Mb 제한적String은 기본 데이터 타입이 아닌 레퍼런스에 들어간다고 볼 수 있다.따라서 파라미터, 리턴값 등을 사용할 때 memory라는 키워드를 붙여야 한다. // SPDX-License-Identifier: GP..
2024.05.14
Prev 1 2 Next
반응형