Base Account는 이더리움 Provider JavaScript API(EIP-1193에 상세히 설명)를 구현하고 계정 추상화를 위한 ERC-4337 표준을 따릅니다. 이는 Base Account와 상호작용하는 앱이 일반적인 이더리움 가상 머신(EVM) 계정처럼 동작할 것으로 기대할 수 있음을 의미합니다. 그러나 비호환성 또는 보안상의 이유로 Base Account에서 지원되지 않는 일부 호출이 있습니다. 다음은 지원되지 않는 호출 목록입니다:Documentation Index
Fetch the complete documentation index at: https://daehan-base.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
- 셀프 호출: 앱이 사용자의 계정을 사용하여 자기 자신을 호출하는 기능을 말합니다.
- CREATE: 앱이
CREATEOPCODE를 사용하여 새로운 컨트랙트를 생성하는 기능을 말합니다.
셀프 호출
보안상의 이유로, 제3자 앱이 사용자 자신의 Base Account 주소에 호출하는 것을 허용하지 않습니다. 이는 앱이 소유자를 변경하거나, 사용자 계정을 업그레이드하거나, 기타 문제를 일으킬 수 있습니다.CREATE
이것은 ERC-4337 표준 및 스마트 계정의 제한 사항입니다. 현재 스마트 컨트랙트 배포를 위한CREATE opcode를 지원하지 않습니다.
Base Account의 향후 버전에서는 이를 지원할 수 있습니다.
Solidity의 내장 transfer 함수
transfer 함수는 ETH를 주소로 전송하는 데 사용할 수 있는 Solidity의 address 타입의 내장 멤버입니다. Base Account 지갑은 이 함수를 사용하여 ETH를 받을 수 없습니다.
이 함수는 Solidity 커뮤니티에서 오래 전부터 call을 선호하여 더 이상 사용하지 않는 것으로 간주되었지만, 일부 오래된 컨트랙트에서는 여전히 사용하고 있습니다.
이유는 transfer가 transfer 호출에 단 2300 가스만 전달하기 때문인데, 이는 재진입 공격을 방지하기 위해 콜러에게 재진입할 수 있는 스마트 컨트랙트에서 사용 가능한 가스량을 제한하도록 설계된 보호 메커니즘입니다.
현대의 스마트 컨트랙트 지갑(Base Account 포함)에서는 이것이 스마트 컨트랙트의 receive 또는 fallback 함수가 작업을 완료하기에 충분하지 않은 경우가 많아 트랜잭션이 되돌아갑니다.
영향받는 알려진 컨트랙트
- WETH9 컨트랙트는
transfer를 사용하여 사용자 지갑에 ETH를 전송하므로 Base Account는 해당 컨트랙트에서 직접 ETH를 언래핑할 수 없습니다.