솔리디티 및 블록체인 23

솔리디티 11. 두개 이상 상속

실습 - fatherMoney에는 100만원 / motherMoney에는 500만원을 넣어줌.- getFatherName을 누르면 KimJung / getMotherName을 누르면 Leesol이 return 됨.- 아래 contract Son is Father,Mother을 두개 이상 상속받을 때 overriding을 해줘야 함. > virtual 추가.  - son을 배포하면 아래와 같이 fatherMoney 100과 motherMoney 500을 상속받아 600의 getMoney했다는 것을 알 수 있음.

솔리디티 11. overriding

오버라이딩이란?- 덮어 씌우기 실습 - 저번주에 실습했던 코드의 getMoney를 오버라이딩화 시켜 아들 부분에 적용.  - 오버라이딩 해야 할 부분 즉, getMoney 함수에 virtual을 추가.- 오버라이딩은 아버지한테 진짜 받았으며 안에 내용만 다른기 때문에 getMoney function을 복붙 후 override 명시.- 아들의 재산은 일을 해서 번 earning도 있기에 money + earning 값으로 return.  - son을 배포하면 getMoney가 나옴.  - work를 누르면 work + 아버지에게 상속받은 getMoney와 합산되어 나옴.

솔리디티 10. 상속

상속- 아무 대가 없이 주는 것. 상속하는 자- getFamilyName : 성을 얻는 함수- getGivenName : 이름을 얻는 함수- getMoney : 머니를 얻는 함수 상속받는 자- 상속해야 할 스마트 컨트랙을 작성. - 아들이 상속받았기에 아들을 deploy 해줘야 함.- 아들을 배포했는데도 상속을 받았기에 모두 접근 가능. if- 컨트랙에 constractor가 있다고 가정한다면 해당 constractor까지 상속을 받을 수 있는지- 아들의 이름을 James로 변경. - 이름은 변경되어 변경되는 것으로 확인 가능.

솔리디티 10. instance2 - constructor

constructor- 변수 값을 초기화 할 때 사용.- 인스턴스화 할 때 A값이 있다면 해당 값의 초기값을 정의. - name : alice / age : 52 로 설정.- Get function을 통해 name, age 다 return.- B에서 A contract를 불러옴.- change 함수를 사용하여 name, age 변경시켜 b에서 change 접근.- change 함수에 name , age 파라미터 적용.- 이름에 Bob, 나이에 39 입력하여 pop 함.- instance A에 change 함수를 사용하여 age : 123 / name : ABC로 대충 설정하여 배포해도 instance B는 변하지 않음.  > B와 A가 독립적으로 진행하는 것을 알 수 있음. - B안에 A라는 스마트 컨트..

솔리디티 08. String

솔리디티 저장 방식storage 메모리콜데이터스택 storage- 변수, 함수 저장- a,a2는 storage에 저장되고 a2의 함수 안에 b는 stroage에 저장 불가.- storage에 저장이 되면 영속적으로 저장됨.- 영속적으로 저장됨에 따라 사용자들은 모든 노드를 다운받아야 함.이에 따라 사용하는 가격이 비싸짐가스 비용도 비싸짐 메모리- storage와 정반대- 함수 안의 값, 함수의 파라미터, 리턴 값, 레퍼런스 타입을 사용할 때 사용.- b는 메모리에 저장. 만약에 파라미터도 존재한다면 파라미터도 메모리에 저장.- 메모리는 이 함수가 작동할 때만 유효하기에 영속성은 없음.- storage보다 가스 비용이 덜 나감. 콜데이터- 주로 external function 파라미터에서 사용. 스택- 이..

솔리디티 07. View와 Pure

- 지난 실습에서 getA라는 function에 view가 들어 있음을 알 수 있음.- view 자리에 pure로도 대체 가능. view- function 밖의 변수들을 읽을 수 있음.- function 밖의 변수들의 변경이 불가능할 때 사용. - 배포를 하면 a는 1 read_a는 3으로 결과 나옴.- a를 계속 눌러도 1, 즉 변하지 않는다는 것을 확인할 수 있음. pure- function 밖의 변수들을 읽지 못하고 변경도 불가능할 때 사용.- function 내에서만 쓸 수 있는 변수들로만 구성. - read_a2는 7로 나옴.- function 내에 변수들로만 사용  view와 pure 둘 다 명시를 안 할 경우- function 밖의 변수들을 읽어서 변경해야 함.- read_a3는 13로 나옴..

솔리디티 06. function 2

public- 모든 곳에 접근 가능 externel- public 처럼 모든 곳에서 접근 가능하나,  externel이 정의된 자기 자신 contract 내에서 접근 불가. private- 오직 private이 정의된 자기 contract에서만 접근 가능.- private이 정의된 contract를 상속 받은 자식도 불가능. internal- private 처럼 오직 internal이 정의된 자가 자기 contract에서만 사용 가능. 관련 실습 - 배포한 것은 스마트 contract 내가 아니라 밖이라 a2는 접근 불가능.- public 만 접근 가능. - public_example2에서 public_example을 사용하기 위해서는 instance를 사용해야 함.[public_example deplo..

솔리디티 05. Function 1 - 정의

함수 정의- fucntion 이름() public / private / internal / external파라미터와 리턴 값이 없는 경우파라미터는 있고 리턴 값이 없는 경우파라미터와 리턴 값이 있는 경우 파라미터와 리턴 값이 없는 경우- 배포를 하면 a는 초기값 3이 나옴.- 하지만 changeA1을 누르면 function을 통해서 a는 5가 대입됨. 파라미터는 있고 리턴 값이 없는 경우- 파라미터, 리턴 값 모두 없는 경우와 똑같으나 함수를 정의할 때 어떤 type으로 넣을 지와 파라미터 변수 이름을 수정.- 처음에 a를 누르면 3이 출력됨 이후 값을 입력하여 changeA2를 입력한 후 a를 누르면 내가 넣은 값이 출력됨.- changeA2에 넣은 값으로 계속 변화함. 파라미터와 리턴 값이 있는 경우..

솔리디티 04. Ether/GWei/wei 그리고 Gas

Ether1 ether = 10^9 Gwei = 10^18 wei0.01 ehter = 10^16wei Gas- 스마트 컨트랙을 사용할 때 지불하는 비용- 스마트 컨트랙 길이 만큼 가스 소비- 디도스 공격을 방지 가능.- 행동을 반복하여 블록체인 네트워크를 과부하시키는 스마트 컨트롤을 만든다면 계속 gas를 요구하기 때문에 디도스 공격 방지 가능. Ethereum Yellow Paper- 무엇을 썼을 때 가스가 얼마나 소비되는지 정의 Ether/GWei/wei- 10^18 / 1 / 10^9 결과가 나옴.- value를 누를 때마다 gas가 소비됨을 알 수 있음.- 배포를 할 때도 gas가 소비됨.