-
MetaMask Docs (Methods &&Events)블록체인 2023. 3. 24. 17:37
MetaMask Docs
1. ethereum.isConnected()
ethereum.isConnected(): boolean; /** If the provider is not connected, the page will have to be reloaded in order for connection to be re-established. Please see the connect and disconnect events for more information. */
2. ethereum.request(args)
interface RequestArguments { method: string; params?: unknown[] | object; //The params and return value will vary by RPC method. //If a method has any params, they are almost always of type Array<any>. } ethereum.request(args: RequestArguments): Promise<unknown>; // Metamask는 가장 기본적인 이더리움 RPC 메서드를 지원함. 다른 지갑에서는 지원하지 않는 // https://docs.metamask.io/guide/rpc-api.html 여기에서 메타마스크 디테일 확인
eg)
params: [ { from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567', gas: '0x76c0', // 30400 gasPrice: '0x9184e72a000', // 10000000000000 value: '0x9184e72a', // 2441406250 data: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675', }, ]; ethereum .request({ method: 'eth_sendTransaction', params, }) .then((result) => { // This method will return a transaction hash hexadecimal string on success. }) .catch((error) => { // If the request fails, the Promise will reject with an error. });
3. Event
interface ConnectInfo { chainId: string; } interface ProviderMessage { type: string; data: unknown; } ethereum.on('message', handler: (message: ProviderMessage) => void); // 메시지의 종류는 type 에 의해 분류됨 ethereum.on('accountsChanged', (accounts) => { // "accounts" 는 배열이거나 비었음 // 가장 최근에 사용된 계정의 주소를 리턴함 }); ethereum.on('chainChanged', (chainId) => { // 합당한 이유 있는거 아니면 window.location.reload() 를 수행하길 추천함 // All RPC requests are submitted to the currently connected chain. // Therefore, it's critical to keep track of the current chain ID by listening for this event. }); ethereum.on('connect', handler: (connectInfo: ConnectInfo) => void); //ethereum.isConnected() 메서드를 수행하는 것보다 connect를 더 추천함 ethereum.on('disconnect', handler: (error: ProviderRpcError) => void); ethereum.removeListener('accountsChanged', handleAccountsChanged); // 리스닝 끝났다면 listeners 제거하는거 잊지말아라 // 두번째 인자로 오는 함수는 ethereum.on 에 대한 event 를 다루는 함수 이름과 같아야함.
4. Error
interface ProviderRpcError extends Error { message: string; code: number; data?: unknown; } // 4001: user에 의해 req가 거절됨 //-32602: 파라미터가 유효하지 않음 //-32603: 내부 에러
'블록체인' 카테고리의 다른 글
[블록체인] 용어 정리 (ing) (1) 2023.03.13 [블록체인] Ether.js provider, signer (0) 2023.03.13 [블록체인] Web3.js vs Ether.js (0) 2023.03.13