window.ethereum이란?

molly·2023년 2월 21일
0

Web3

목록 보기
2/2
post-thumbnail

window.ethereum은 메타마스크에서 제공하는 자바스크립트 객체로, 이더리움 블록체인과 상호작용하는 데 사용한다.

Dapp이 메타마스크 지갑(이더리움 지갑)과 연결하고 계정 관리, 트랜잭션 서명, 스마트 계약 상호 작용과 같은 기능에 액세스할 수 있는 주요 인터페이스 역할을 한다.

window.ethereum 객체를 통해 개발자는 사용자의 이더리움 계정에 액세스하고 사용자의 계정 잔액을 확인하며 이더리움 네트워크로 트랜잭션을 전송할 수 있는 사용자 권한을 요청할 수 있다. 전체 노드나 기본 프로토콜을 완전히 이해할 필요 없이 이더리움 네트워크와 상호 작용할 수 있는 편리한 방법을 제공한다. 이는 본질적으로 이더리움 블록체인과 웹 애플리케이션 사이의 가교 역할을 하며, 둘 사이의 원활하고 안전한 상호 작용을 가능하게 한다.

이번 리서치를 진행하면서 chatGPT로 리서치를 진행했는데 확실히 많은 시간을 단축시켜주고 정확도 또한 매우 높은 정확도를 보여서 다시 한 번 감탄하게 되었고 앞으로의 리서치에 많은 도움이 될 거 같다.

window.ethereum 개체 목록

window.ethereum._events

window.ethereum 개체에서 내보낸 이벤트 목록에 액세스하는 데 사용한다.
이벤트에는 네트워크 및 계정 정보의 변화와 같은 이더리움 블록체인과의 다양한 상호작용, 이더리움 네트워크 연결, 거래 승인, 메시지 서명 등 다양한 사용자 행동이 포함될 수 있다.

window.ethereum._eventsCount

window.ethereum 개체에서 내보낸 이벤트 수를 추적하는 데 사용한다.
이벤트가 전송될 때마다 _eventsCount는 1씩 증가하고 이 속성은 window.ethereum 개체로 작업할 때 메모리 및 리소스를 관리하는 데 사용할 수 있다.

window.ethereum._handleAccountsChanged

사용자가 Dapp과 함께 사용할 다른 계정을 선택하거나 새 계정을 추가하거나 제거하는 경우와 같이 Dapp에 대해 사용자가 권한을 부여한 이더리움 계정의 변경 사항을 처리에 사용한다.
_handleAccountsChanged 메서드는 인증된 계정의 변경을 감지할 때 window.ethereum 개체에 의해 내부적으로 호출한다.
_handle AccountsChanged 메서드는 권한이 부여된 계정이 변경되면 계정 변경 이벤트를 발생시켜 응용 프로그램의 다른 부분이 권한이 부여된 계정의 변경에 대응할 수 있도록 한다.

window.ethereum._handleChainChanged

사용자가 다른 네트워크로 전환하는 경우와 같이 현재 선택된 이더리움 네트워크 체인의 변경 사항을 처리하는 데 사용한다.
_handleChainChanged 메서드는 선택한 네트워크 체인의 변경을 감지할 때 window.ethereum 개체에 의해 내부적으로 호출한다.
선택한 네트워크 체인이 변경되면 _handleChainChanged 메서드는 chainChanged 이벤트를 방출하여 네트워크 체인의 변경에 애플리케이션의 다른 부분이 반응할 수 있도록 한다.

window.ethereum._handleConnect

사용자가 처음으로 응용 프로그램을 열거나 페이지를 새로 고칠 때와 같이 응용 프로그램과 이더리움 노드 사이의 새로운 연결 시작을 처리하는 데 사용된다.
_handleConnect 메서드는 새 연결 이벤트를 탐지할 때 window.ethereum 개체에 의해 내부적으로 호출된다.
새 연결이 설정되면 _handleConnect 메서드는 연결 이벤트를 발생시켜 응용 프로그램의 다른 부분이 새 연결에 반응할 수 있도록 한다.

window.ethereum._handleDisconnect

사용자가 애플리케이션을 닫거나 인터넷 연결이 끊기는 등 이더리움 노드와의 애플리케이션 연결 해제를 처리하는 데 사용된다.
_handleDisconnect 메서드는 연결 해제 이벤트를 감지할 때 window.ethereum 개체에 의해 내부적으로 호출된다.
연결이 끊어지면 _handleDisconnect 메서드는 연결 끊기 이벤트를 발생시켜 응용 프로그램의 다른 부분이 연결 끊기에 반응할 수 있도록 한다.

window.ethereum._handleStreamDisconnect

블록체인 데이터의 실시간 업데이트에 사용되는 웹소켓 스트림을 통해 이더리움 노드에서 애플리케이션의 연결 끊김을 처리하는 데 사용된다.
_handleStreamDisconnect 메서드는 연결 끊김 이벤트를 탐지할 때 window.ethereum 개체에 의해 내부적으로 호출된다.
연결이 끊어지면 _handleStreamDisconnect 메서드는 streamDisconnect 이벤트를 내보내고 이 이벤트를 통해 Dapp의 다른 부분이 연결 해제에 반응할 수 있습니다.

window.ethereum._handleUnlockStateChanged

사용자가 계정 잠금을 해제하거나 계정을 잠글 때와 같은 이더리움 계정 잠금 해제 상태의 변화를 처리하는 데 사용된다.
_handleUnlockStateChanged 메서드는 잠금 해제 상태의 변경을 감지할 때 window.ethereum 개체에 의해 내부적으로 호출한다.
잠금 해제 상태가 변경되면 _handleUnlockStateChanged 메서드는 accountsChanged 이벤트를 발생시켜 응용 프로그램의 다른 부분이 계정 상태 변경에 대응할 수 있도록 한다.

window.ethereum._jsonRpcConnection

HTTP 또는 웹소켓 프로토콜을 통해 JSON-RPC 메시지를 보내고 받는 데 사용되는 인터페이스인 이더리움 JSON-RPC 엔드포인트에 대한 연결을 관리하는 데 사용된다.
_jsonRpcConnection 속성에는 EndPoint url, 사용 중인 전송 프로토콜, 헤더 또는 기타 구성 옵션과 같은 정보가 포함될 수 있다.

window.ethereum._log

HTTP 요청 및 응답, WebSocket 이벤트 및 기타 디버깅 정보와 같은 window.ethereum 개체에 의해 생성된 로깅 정보를 저장하는 데 사용된다.
_log 속성은 코드 문제를 디버깅하거나 window.ethereum 개체의 동작을 최적화하려는 개발자에게 유용함.

window.ethereum._maxListeners

window.ethereum 개체에 연결할 수 있는 최대 이벤트 수신기 수를 관리하는 데 사용된다.
수신기 수가 _maxListeners 임계값을 초과하면 경고 메시지가 콘솔에 인쇄되어 너무 많은 수신기를 연결하여 성능에 영향을 줄 수 있음을 개발자에게 알린다.

window.ethereum._metamask

이더리움 지갑 및 웹3 제공업체인 메타마스크 확장에 대한 정보에 액세스하는 데 사용된다.
_metamask 속성은 메타마스크 확장의 버전과 기능에 대한 정보뿐만 아니라 개발자에게 유용할 수 있는 기타 관련 정보를 제공한다.

window.ethereum._rpcEngine

HTTP 또는 웹소켓 프로토콜을 통해 JSON-RPC 메시지를 송수신하여 이더리움 블록체인과 상호 작용하는 RPC(Remote Procedure Call) 엔진을 관리하는 데 사용된다.
_rpcEngine 속성에는 사용 중인 전송 프로토콜, EndPoint url, 헤더 또는 기타 구성 옵션과 같은 정보가 포함될 수 있다.

window.ethereum._rpcRequest

전송 프로토콜, EndPoint url 및 기타 옵션을 사용하여 이더리움 노드에 JSON-RPC 요청을 전송하는 데 사용된다.
_rpcRequest 메서드는 JSON-RPC 메서드 이름, 필요한 매개 변수 및 응답을 처리하는 선택적 콜백 함수를 인수로 사용된다.

window.ethereum._sendSync

동기화된 JSON-RPC 요청을 이더리움 노드로 전송하고 결과를 반환하는 데 사용된다.
_sendSync 메서드는 JSON-RPC 메서드 이름, 필요한 매개 변수 및 응답을 처리하기 위한 선택적 콜백 함수를 인수로 사용한다.

window.ethereum._sentWarnings

_warnOfDecrecation 메서드를 통해 개발자에게 발생한 경고 메시지를 추적하는 데 사용된다.
경고 메시지가 발행될 때마다 _sentWarnings 배열에 추가되어 동일한 경고 메시지가 반복적으로 발행되지 않도록 한다.

window.ethereum._state

네트워크 ID, 현재 활성 계정, 이더리움 네트워크 연결 상태 등 window.ethereum 개체에 대한 다양한 내부 상태 정보를 저장하는 데 사용한다.
이 정보는 window.ethereum 개체의 동작을 관리하고 최적화하는 데 사용할 수 있다.

window.ethereum._warnOfDeprecation

window.ethereum API에서 사용되지 않는 메서드나 속성을 사용할 때 개발자에게 경고 메시지를 보내는 데 사용한다.
이를 통해 개발자는 향후 API 버전에서 제거되거나 변경될 수 있는 사용되지 않는 기능을 사용하지 않도록 할 수 있다.

window.ethereum.chainId

이 속성은 현재 선택한 이더리움 네트워크 체인 ID를 나타내는 정수를 반환한다.
chainId 속성은 개발자들이 응용 프로그램이 올바른 네트워크 체인과 상호 작용하고 네트워크별 동작 또는 사용자 인터페이스 요소를 제공하기 위해 사용할 수 있다.

window.ethereum.enable

사용자에게 이더리움 계정에 액세스할 수 있는 권한을 요청하고 사용자의 이더리움 계정 주소 배열로 반환한다.
사용자가 권한을 부여하면 반환된 배열에는 하나 이상의 이더리움 계정 주소가 포함되고 사용자가 권한을 거부하면 오류와 함께 거부된다.

window.ethereum.isMetaMask

웹 페이지에 window.ethereum 개체를 주입한 현재 브라우저 확장 또는 지갑이 MetaMask인지 여부를 나타내는 bool 값을 반환한다.
개발자는 isMetaMask 속성을 사용하여 사용자가 메타마스크를 사용하는지 여부를 확인하고 원하는 경우 메타마스크 고유의 동작 또는 사용자 인터페이스 요소를 제공할 수 있다.

window.ethereum.networkVersion

현재 선택한 이더리움 네트워크 ID를 나타내는 문자열을 반환한다.(chaid(hex), networkversion(int))
networkVersion 속성은 개발자가 응용 프로그램이 올바른 네트워크와 상호 작용하고 네트워크별 동작 또는 사용자 인터페이스 요소를 제공하는 데 사용할 수 있다.

window.ethereum.request

현재 선택된 이더리움 제공자에게 JSON-RPC 요청을 보낼 수 있게 한다.

window.ethereum.selectedAddress

이 속성은 현재 선택한 사용자의 이더리움 계정 주소를 반환한다.
사용자는 이더리움 계정을 여러 개 가질 수 있으며, 선택된 주소는 사용자가 현재 애플리케이션과 함께 사용하기 위해 선택한 계정을 나타낸다.

window.ethereum.send

현재 선택된 이더리움 제공자에게 JSON-RPC 요청을 보낼 수 있게 한다.
send 방식은 이더리움 제공자에게 낮은 수준의 인터페이스를 제공하고, requset과 같은 다른 방식이 적합하지 않은 고급 사용 사례에만 사용된다.

window.ethereum.sendAsync

sendSync는 개발자가 JSON-RPC 요청을 현재 선택된 이더리움 제공자에게 직접 전송할 수 있다는 점에서 send유사하다. 그러나 sendAsync는 두 가지 방식으로 다르다.
첫 번째는 JSON-RPC 요청 객체이고, 두 번째는 JSON-RPC 응답 또는 오류로 호출될 콜백 함수이다.
sendAsync는 더 이상 사용되지 않기 때문에 개발자들은 보다 현대적인 Promise 기반 인터페이스를 제공하는 send 메서드를 대신 사용해야 한다.

window.ethereum.eventNames

window.ethereum 개체에 등록된 모든 이벤트의 이름을 나타내는 문자열 배열을 반환한다.
eventNames 메서드는 개발자가 window.ethereum 개체에 현재 등록된 이벤트를 확인할 수 있기 때문에 디버깅 및 검사에 유용하다.
개발자는 이 정보를 사용하여 이벤트 처리 코드가 올바르게 설정되었는지 확인하고 공급자 또는 다른 응용 프로그램에서 등록할 수 있는 다른 이벤트와의 이름 지정 충돌을 방지할 수 있다.

window.ethereum.getMaxListeners

window.ethereum 개체의 이벤트에 대해 등록할 수 있는 MaxListeners 수를 반환합니다. 기본적으로 이 값은 10으로 설정 된다.
getMaxListeners 메서드는 개발자가 최대 수신기 수의 현재 값을 볼 수 있도록 하기 때문에 디버깅과 자기성찰에 유용하고. 개발자는 이벤트 수신기를 등록할 때 이 정보를 사용하여 이 제한을 초과하지 않도록 할 수 있다.
MaxListeners 수를 변경하기 위해 개발자는 setMaxListeners 메서드를 사용할 수 있으며, 이 메서드는 window.ethereum 개체에서도 사용할 수 있다.

window.ethereum.listenerCount

이벤트 이름을 인수로 사용하고 window.ethereum 개체에서 해당 이벤트에 대해 현재 등록된 listenerCount를 반환한다.
listenerCount 메서드는 개발자가 지정된 이벤트에 등록된 listenerCount를 확인할 수 있기 때문에 디버깅 및 자기성찰에 유용하다. 개발자는 이 정보를 사용하여 이벤트 처리 코드가 올바르게 설정되어 있는지 확인하고 단일 이벤트에 너무 많은 listener를 등록하지 않도록 하여 성능 문제로 이어질 수 있다.
window.ethereum 개체에서 이벤트에 대한 새 수신기를 등록하려면 개발자가 on 또는 addListener 메서드를 사용할 수 있다. 수신기를 제거하려면 개발자가 off 또는 removeListener 메서드를 사용할 수 있다.

window.ethereum.listeners

이벤트 이름을 인수로 사용하고 window.ethereum 개체에서 해당 이벤트에 대해 현재 등록된 모든 listener배열을 반환합니다.
window.ethereum 개체에서 이벤트에 대한 새 수신기를 등록하려면 개발자가 on 또는 addListener 메서드를 사용할 수 있다. 수신기를 제거하려면 개발자가 off 또는 removeListener 메서드를 사용할 수 있다.

window.ethereum._initializeState

페이지가 로드될 때 metaMask 지갑이 window.ethereum 개체의 상태를 초기화하기 위해 사용하는 Web3 API의 비공개 메서드이다.
window.etherum 객체가 메타마스크 지갑 및 이더리움 네트워크와 상호 작용하기 위해 의존하는 이벤트 수신기 및 기타 내부 상태를 설정하는 역할을 한다. 메타마스크에 의해 자동으로 호출되며, 개발자가 직접 사용하도록 의도되지 않는다.

window.ethereum.emit

exmit는 자바스크립트에서 주어진 이벤트 이름에 대해 연결된 수신기의 실행을 트리거하는 이벤트 이미터 객체의 메서드이다.

window.ethereum.hasOwnProperty

hasOwnProperty는 객체에 지정된 이름의 속성이 있는지 여부를 확인하는 내장된 JavaScript 메서드이다.

window.ethereum.toString

window.ethereum.toString은 window.ethereum 개체를 문자열로 변환하는 데 사용되는 메서드이다. 이 메서드를 호출하면 개체의 문자열 표현을 반환한다.

window.ethereum.valueOf

valueOf() 메서드는 window.ethereum 개체의 값을 반환하는 데 사용된다.
예를 들어 window.ethereum.valueOf()를 호출하면 이더리움 블록체인과 상호작용하기 위한 웹3 기능을 제공하는 객체인 이더리움 프로바이더 객체가 반환된다.

profile
BlockChain R&D

0개의 댓글