Pockie Provider API
사용자가 방문한 웹사이트에 window.pockie
provider 객체를 통해 전역 JavaScript API를 주입합니다. 이 API를 사용하면 웹사이트가 사용자의 EVM 계정을 요청하고, 사용자가 연결된 블록체인에서 데이터를 읽을 수 있도록 하며, 메시지와 트랜잭션에 서명하도록 제안할 수 있습니다.
디앱에서는 해당 provider의 속성, 메서드 및 이벤트를 사용할 수 있습니다. 개발 환경을 설정한 후 시작할 수 있습니다.
Properties
window.pockie.isPockie
사용자가 포키를 설치했는지 여부를 확인하는 데 사용됩니다.
MetaMask 지원 기능을 활성화하면 window.ethereum.isMetaMask
속성을 true 로 설정하여 디앱 에게 메타마스크로 인식시킬 수 있습니다.
Methods
window.pockie.isConnected()
현재 provider가 체인에 연결되어 있는 경우 true
를 반환합니다.
만약 provider가 연결되어 있지 않은 경우, 페이지를 다시 로드하여 연결을 다시 설정해야 합니다. 더 많은 정보는 connect
및 disconnect
이벤트를 참고해주세요.
window.pockie.request(args)
포키를 사용하여 네트워크에 RPC API 요청을 제출하려면 이 메서드를 사용합니다. 이 메서드는 RPC 메서드 호출의 결과를 반환하는 프로미스를 반환합니다.
매개변수와 반환 값은 RPC 메서드에 따라 다릅니다. 실제로 매개변수를 사용하는 경우 대부분이 Array<any> 형식입니다.
요청이 실패하면 프로미스는 오류와 함께 거부됩니다.
다음은 window.pockie.request(args)
를 사용하여 eth_sendTransaction
을 호출하는 예시입니다.
Events
포키 provider는 Node.js EventEmitter API를 사용하여 이벤트를 발생시킵니다. 다음은 accountsChanged 이벤트를 수신하는 예시입니다. 이벤트 수신이 끝난 후에는 (예: React에서 컴포넌트가 unmount될 때) 리스너를 제거해야 합니다.
accountsChanged
provider는 eth_accounts
RPC 메서드의 반환 값이 변경될 때 이벤트를 발생시킵니다. eth_accounts
는 빈 배열이나 호출자가 액세스할 수 있는 가장 최근에 사용된 계정 주소를 포함하는 배열을 반환합니다. 호출자는 URL 원본으로 식별되며, 동일한 원본을 가진 모든 사이트는 동일한 권한을 공유합니다.
이는 provider가 사용자의 노출된 계정 주소가 변경될 때 accountsChanged
이벤트를 발생시킨다는 것을 의미합니다. 이벤트를 수신하여 계정을 처리하세요.
chainChanged
provider는 현재 연결된 체인이 변경될 때 이벤트를 발생시킵니다. 이벤트를 수신하여 사용자의 네트워크를 감지하세요.
connect
provider가 체인에 대한 RPC 요청을 최초로 제출할 수 있는 상태가 되면 해당 이벤트가 발생합니다. provider가 연결되었는지 여부를 결정하기 위해 이벤트를 수신하고 window.pockie.isConnected()
provider 메서드를 사용하는 것을 권장합니다.
disconnect
provider는 체인에 대한 RPC 요청을 제출할 수 없게 되면 이벤트를 발생시킵니다. 일반적으로 이는 네트워크 연결 문제나 예기치 않은 오류로 인해 발생합니다.
provider가 해당 이벤트를 발생시키면 체인과의 연결이 재설정될 때까지 새로운 요청을 받지 않습니다. 따라서 사용자는 페이지를 다시 로드해야 합니다. provider가 연결이 끊어졌는지 여부를 결정하기 위해 window.pockie.isConnected()
provider 메서드를 사용할 수도 있습니다.
Errors
포키 provider가 반환하는 모든 오류는 다음 인터페이스를 따릅니다:
window.pockie.request(args)
provider 메소드는 오류를 발생시킵니다. 요청이 실패한 이유를 확인하려면 오류 코드 속성을 사용할 수 있습니다. 일반적인 코드와 그 의미는 다음과 같습니다:
4001
- 사용자가 요청을 거부했습니다.-32602
- 매개변수가 잘못되었습니다.-32603
- 내부 오류가 발생했습니다.
모든 오류 목록은 EIP-1193 및 EIP-1474를 참고해주세요.
Last updated