콜데이터
정의
Calldata는 이더리움에서 스마트 계약과 상호 작용할 때 트랜잭션과 함께 전송되는 읽기 전용 데이터 유형입니다. 여기에는 스마트 계약이 함수를 실행하는 데 필요한 지침과 입력 값이 포함되지만, 계약에 의해 수정되거나 영구적으로 저장될 수는 없습니다.
간단히 말해, calldata는 스마트 계약에 무엇을 어떤 정보로 수행해야 하는지 알려주는 메시지입니다.
Calldata는 무엇에 사용되나요?
Calldata는 주로 스마트 계약에 정보를 전달하는 데 사용됩니다. 여기에는 다음이 포함됩니다.
- 호출할 함수
- 해당 함수를 실행하는 데 필요한 매개변수
- 사용자 또는 애플리케이션의 인코딩된 트랜잭션 데이터
calldata는 계약 Storage에 저장되지 않으므로 영구 Storage보다 저렴하여 실행 중에 임시 데이터를 공급하는 효율적인 방법입니다.
Calldata 작동 방식
사용자가 스마트 계약에 트랜잭션을 제출하면 트랜잭션에는 수행할 작업을 지정하는 calldata가 포함됩니다. 이더리움 가상 머신(EVM)은 이 데이터를 읽고 요청된 함수를 실행한 다음 실행이 완료되면 calldata를 폐기합니다.
예를 들어, 사용자가 분산형 거래소에서 토큰을 스왑할 때 트랜잭션의 calldata에는 토큰 주소, 스왑되는 금액, 수신자 주소와 같은 세부 정보가 포함됩니다. 스마트 계약은 이 정보를 읽고 스왑을 완료하며, 그 후에는 calldata를 보관하지 않습니다.
이더리움 확장성에서의 Calldata
Calldata는 이더리움 확장성, 특히 롤업에 중요한 역할을 합니다. 롤업은 calldata를 사용하여 압축된 트랜잭션 데이터를 이더리움에 게시하여 필요할 경우 누구나 오프체인 트랜잭션을 확인할 수 있도록 합니다.
그러나 많은 양의 데이터가 게시될 때 calldata는 비용이 많이 들 수 있습니다. 이것이 데이터 블롭 및 외부 데이터 가용성 계층과 같은 새로운 솔루션이 비용을 줄이기 위해 개발되는 이유입니다.
Calldata vs Storage 및 Memory
Calldata는 이더리움의 다른 데이터 위치와 다릅니다.
Calldata : 읽기 전용, 임시, 함수 입력에 사용됨.
Memory : 임시, 실행 중에 수정 가능.
Storage : 블록체인에 저장되는 영구 데이터이며 사용 비용이 가장 비쌉니다.
왜 중요한가요?
calldata를 이해하면 사용자와 개발자가 스마트 계약이 지침을 받는 방법과 트랜잭션 비용이 다른 이유를 파악하는 데 도움이 됩니다. 또한 롤업이 투명성을 위해 calldata에 의존하는 이유와 데이터 사용 최적화가 이더리움의 확장성에 중요한 이유를 설명합니다.
Calldata는 대부분의 사용자에게는 보이지 않을 수 있지만, 이더리움에서 스마트 계약 및 확장 솔루션이 작동하는 방식의 핵심 구성 요소입니다.