일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 페이스북유니버시티 #마케팅교육 #마케팅캠프
- 미쉬킨의화폐와금융 #미쉬킨 #화폐금융론 #화폐와금융 #경제학 #교양 #경제지식 #경제공부
- vp #vc #did #신원인증 #블록체인
- html #js #parsing
- 자료구조 #알고리즘
- #국제채권시장 #유로본드 #유로커런시 #유로달러 #외국채 #금융중개기관 #간접금융 #거래비용#다우존스공업평균지수 #나스닥종합지수 #FTSE100 #DAX #CAC40 #straittimes #항생지수 #거래비용 #유동성 #위
- 블록체인 #layer2 #레이어2 #이더리움스케일링
- #경제상식 #화폐 #금융 #화폐금융론 #경제학 #경제기본 #경제지식 #경제근육 #투자지식 #경제공부 #경제학전공 #금융이란 #화폐란 #금융시장 #금융시장역할 #화폐역할 #화폐역기능 #금융역기능 #
- Today
- Total
평행우주 : world 1
[블록체인이론] 컨트랙트 계정 및 외부 소유 계정(EOA) 본문
외부 소유 계정(EOA) 및 컨트랙트
외부 소유 계정(EOA)
메타마스크 지갑에서 생성한 계정의 유형
개인키가 있는 계정
개인키를 갖는다는 건, 자금 또는 컨트랙트에 대한 접근을 제어한다는 뜻
컨트랙트 (계정)
이더리움 컨트랙트는 EVM이라고 하는 가상 시스템에서 실행되는 돈을 제어하는 프로그램이다
단순한 EOA가 가질 수 없는 스마트 컨트랙트 코드가 있다
컨트랙트 계정은 개인키가 없다
대신, 컨트랙트 계정은 스마트 컨트랙트 코드의 로직으로 제어한다
EOA와 마찬가지로 주소가 있고, 이더를 주고받을 수 있다
트랜잭션 목적지가 컨트랙트 주소일 때 트랜잭션과 트랜잭션 데이터를 입력으로 사용하여, 컨트랙트가 EVM에서 실행된다
이더 외에도 트랜잭션에는 실행할 컨트랙트 특정 함수와 해당 함수에 전달할 파라미터를 나타내는 데이터가 포함될 수 있다
이렇게해서 트랜잭션은 컨트랙트 내의 함수를 호출할 수 있다
컨트랙트 계정은 개인키가 없으므로 트랜잭션을 시작할 수 없다
EOA만 트랜잭션을 시작할 수 있지만,
컨트랙트는 복잡한 실행 경로를 구축하여 다른 컨트랙트를 호출해서 컨트랙트에 반응할 수 있다
(이것을 사용하는 전형적인 방식은 다중 서명 스마트 트랜잭션 지갑에 지급요청 트랜잭션을 전송하여 일부 이더를 다른 주소로 보내는 것. 일반적인 댑 프로그래밍 패턴은 컨트랙트 A가 컨트랙트B를 호출하게 하는 것인데, 이렇게 하면 컨트랙트 A 사용자들 간에 공유된 상태를 유지할 수 있게 된다)
+)
한 컨트랙트에는 하나의 스토리지가 생기는데 다른 컨트랙트를 캐스팅해서 함수를 실행시키면, 두 개의 컨트랙트가 하나의 스토리지를 공유하는 것처럼 쓸 수 있어서 공유된 상태라고 쓴 게 아닐까?
+)
https://solidity-by-example.org/app/multi-sig-wallet/
컨트랙트는 블록체인에 바이트 코드를 등록하는 특별한 트랜잭션에 의해 생성
컨트랙트가 블록체인에서 생성되면 지갑과 마찬가지로 이더리움 주소를 갖게 된다
누군가 컨트랙트 주소로 트랜잭션을 보낼 때마다 그 트랜잭션을 입력값으로 하여 컨트랙트가 EVM에서 실행된다
컨트랙트 주소로 보내지는 트랜잭션에는 이더, 데이터 또는 둘 다를 포함할 수 있다
트랜잭션이 이더를 포함하면, 이는 컨트랙트 잔액에 '예치된다'
데이터가 포함되어 있으면 데이터에서는 컨트랙트에서 명명된 함수를 지정하고 호출하여 함수에 인수를 전달할 수 있다.
EOA는 어떤 코드도 가지고 있지 않기 때문에
이 계정에서 메시지를 보내기 위해서는 새로운 트랜잭션을 만들고 서명해야 한다
CA는 이러한 메시지를 받을 때마다 자신의 코드를 활성화 시키고
이 활성화된 코드에 따라 메시지를 읽거나 내부 저장공간에 기록하고 다른 메시지들을 보내거나 컨트랙트를 생성한다
CA는 컨트랙트를 생성할 수 없고 EOA가 만든 컨트랙트만 실행하는 구조
예시)
메타마스크 지갑에서 withdraw_amount 인수 0.1이더를 사용하여 withdraw 함수를 호출하는 데이터 명형어가 포함된 트랜잭션을 보낸 경우,
이 트랜잭션으로 컨트랙트가 EVM내부에서 실행된다
EVM이 컨트랙트의 withdraw 함수를 실행함에 따라 먼저 require함수를 호출하고
우리 금액이 0.1이더의 최대 허용 출금보다 작거나 같음을 확인한다
그 다음 transfer 함수를 호출해 이더를 보낸다
transfer 함수를 실행하면 내부 트랜잭션이 생성되어 0.1이더가 컨트랙트 잔액에서 우리 지갑 잔액으로 들어온다
+) 스마트 컨트랙트 코드
컨트랙트 계정 생성 시 이더리움 블록체인에 기록되고 EVM에 의해 실행되는 소프트웨어 프로그램
'텃밭 1 : BlockChain > 이론' 카테고리의 다른 글
[블록체인이론] dApp특징, 사례, 방향성 (0) | 2022.03.15 |
---|---|
[블록체인이론] 풀노드 사용의 필요성 논의와 장단점 (0) | 2022.03.13 |
[블록체인이론] 합의 개괄 : PoW와 PoS (0) | 2022.03.08 |
[블록체인이론] 코인베이스 거래 구조와 데이터 (0) | 2022.03.07 |
[블록체인이론] 블록에 거래 추가 Workflow (0) | 2022.03.07 |