본문 바로가기
프로그래밍/Block Chain

[Block Chain] 그라운드X 클레이튼 강의 정리 2

by YuminK 2023. 11. 4.

10. 트랜잭션
External Account: 사용자가 사용하는 어카운트
Contract Account: 스마트 컨트랙트를 표현하는 어카운트

실제 상태를 만들고, 실질적으로 처리를 하는 것은 External Account

트랜잭션의 목적은 '블록체인 상태의 변경'
보내는 사람과 받는 사람이 지정되어 있음.

트랜잭션을 검증하고 블록에 넣기까지 연산비용이 필요하다. (GAS)
클레이튼은 가스비를 적어낼 수 없음. 사용자끼리 경쟁X

11. 트랜잭션과 서명
트랜잭션은 서명과 함께 한다. 
센더에게 필요한 가스비가 있는지 파악. (balance)

12. 블록체인별 트랜잭션
클레이튼 트랜잭션 
논스: 어카운트가 몇 번째 트랜잭션을 보내는지
from: sender
to: 받는 사람
value: 몇 개의 토큰을 전송

type: 어떤 트랜잭션인지
vrs: 서명 정보
gasPrice는 고정값.

13. 트랜잭션의 이동
트랜잭션을 만들어서 노드에 전달. 
노드는 유저에게 영수증을 전달(트랜잭션이 체결되었는지 알려주는 정보, 컨트랜트가 배포된 주소)

사용자와 노드는 같은 프로토콜로 통신해야 한다. 

13. 스마트컨트랙트, 솔리디티 
특정 주소에 배포되어 있는 tx로 실행 가능한 코드
블록체인의 상태를 바꾸는 것은 트랜잭션이다.

스마트컨트랙트는 함수와 상태의 개념이 있다.
함수에는 상태를 바꾸는 함수와 그렇지 않은 함수가 있다.

솔리디티는 포인터의 개념이 없음. account 주소다. 이 주소에 있는 컨트랙트를 실행해주세요.

14. 솔리디티 예제 1~2
address 타입은 이더리움에서 사용하는 160bit 주소
mapping은 해시맵
event는 솔리디티 내에서 이벤트를 처리해주기 위한 키워드
require는 assert 같은 느낌이다. 어떤 조건이 만족하지 않으면 revert 처리
message의 센더: 최조의 실행자

15. 솔리디티 컴파일링
솔리디티 소스코드는 EVM에서 돌아갈 수 있도록 컴파일 해줘야 한다. 

abi: 컨트랙트 함수를 json 형태로 표현한 정보로 EVM이 컨트랙트 함수를 실행할 때 필요하다.
컨트랙트 함수를 실행하는 사람은 ABI 정보를 노드에 제공한다.


binary: 컨트랙트를 배포할 때 블록체인에 저장하는 정보로 EVM이 이해할 수 있는 형태로 변환한 것이다.
컨트랙트 배포시 HEX로 표현된 bytecode를 tx에 담아 노드에 전달. 

16. 클레이튼 SDK
구글과 애플의 정책상 블록체인을 결제수단으로 쓰는 경우 막아놓은 분위기가 있었다.
그래서 웹을 중심으로 많이 발달했다. 

바오밥을 쓰면 된다. (테스트넷)
klay.accounts.wallet => 인메모리 월렛

트랜잭션을 만들고, 서명해서 전송.

17. BApp
블록체인 어플리케이션은 블록체인을 사용하는 어플리케이션
기존에 풀기 어려웠던 문제를 블록체인 기술로 풀어내는 것. 

불변성, 투명성
 - 한번 기록된 정보는 변경할 수 없다
 - 정해진 규칙에 따라 상태를 변경한다.
 - 기록의 내역이 블록에 공개되어 있어 정보의 진실 여부를 확인 가능하다.
 
18. BApp이 블록체인을 사용할 때
As a Payment Channel: 결제 수단으로 인식
As a Storage: 저장소로 인식
As a World Computer: 어느 한 노드에 의존하지 않고 탈중화된 구조로 인식

완벽하게 탈중화된 형태
 - 사용자가 직접 블록체인과 통신

장점: 높은 투명성, 설치형 bapp의 경우 관리 비용 낮음.
단점: 사용자 책임 증가, 로직 변경 어려움, 

Semi-decentralized with centralized proxy
클라이언트가 블록체인과 통신하기 위해 중개서버와 통신
블록체인 기반으로 만들어진 서비스가 있고 그 서비스를 사용자들이 사용하는 형태

사용자가 블록체인과 직접 통신할 필요가 없음. 로직 변경 비교적으로 쉬움.

19. BApp 개발 방법
프론트엔드, 앱 개발 + 백엔드 개발

20. 월렛
지갑은 키를 관리하느 프로그램이다.
브라우저 플러그인, 디앱브라우저 내장 지갑... 클라우드 지갑

타겟팅에 따라서 어떠한 월렛을 구현할 것인지가 핵심이다.

댓글