Biport provider API

Biport은 사용자가 방문한 웹사이트에서 window.biport provider 객체를 통해 전역 JavaScript API를 주입합니다. 이 API를 사용하면 웹사이트가 사용자의 EVM 계정을 요청하고, 사용자가 연결된 블록체인에서 데이터를 읽을 수 있도록 하며, 사용자가 메시지와 트랜잭션에 서명하도록 제안할 수 있습니다.

Dapp에서는 이 공급자의 속성, 메서드 및 이벤트를 사용할 수 있습니다. 개발 환경을 설정한 후 시작할 수 있습니다.

Properties

window.biport.isBiport

사용자가 Biport를 설치했는지 여부를 확인하는 데 사용됩니다.

MetaMask 지원 기능을 활성화하면 window.ethereum.isMetaMask 속성을 true 로 설정하여 DApp 에게 메타마스크로 인식시킬 수 있습니다.

Methods

window.biport.isConnected()

window.biport.isConnected(): boolean;

현재 provider가 현재 체인에 연결되어 있는 경우 true를 반환합니다.

만약 provider가 연결되어 있지 않은 경우, 페이지를 다시 로드하여 연결을 다시 설정해야 합니다. 더 많은 정보는 connectdisconnect 이벤트를 참조하세요.

window.biport.request(args)

interface RequestArguments {
  method: string;
  params?: unknown[] | object;
}

window.biport.request(args: RequestArguments): Promise<unknown>;

Biport를 사용하여 네트워크에 RPC API 요청을 제출하려면 이 메서드를 사용합니다. 이 메서드는 RPC 메서드 호출의 결과를 반환하는 프로미스를 반환합니다.

매개변수와 반환 값은 RPC 메서드에 따라 다릅니다. 실제로 매개변수를 사용하는 경우 대부분이 Array<any> 형식입니다.

요청이 실패하면 프로미스는 오류와 함께 거부됩니다.

다음은 window.biport.request(args)를 사용하여 eth_sendTransaction을 호출하는 예시입니다.

params: [
  {
    from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',
    to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567',
    gas: '0x76c0', // 30400
    gasPrice: '0x9184e72a000', // 10000000000000
    value: '0x9184e72a', // 2441406250
    data:
      '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675',
  },
];

window.biport
  .request({
    method: 'eth_sendTransaction',
    params,
  })
  .then((result) => {
    // The result varies by RPC method.
    // For example, this method returns a transaction hash hexadecimal string upon success.
  })
  .catch((error) => {
    // If the request fails, the Promise rejects with an error.
  });

Events

Biport 공급자는 Node.js EventEmitter API를 사용하여 이벤트를 발생시킵니다. 다음은 accountsChanged 이벤트를 수신하는 예시입니다. 이벤트 수신이 끝난 후에는 (예: React에서 컴포넌트가 unmount될 때) 리스너를 제거해야 합니다.

function handleAccountsChanged(accounts) {
  // Handle new accounts, or lack thereof.
}

window.biport.on('accountsChanged', handleAccountsChanged);

// Later

window.biport.removeListener('accountsChanged', handleAccountsChanged);

accountsChanged

window.biport.on('accountsChanged', handler: (accounts: Array<string>) => void);

provider는 eth_accounts RPC 메서드의 반환 값이 변경될 때 이벤트를 발생시킵니다. eth_accounts는 빈 배열이나 호출자가 액세스할 수 있는 가장 최근에 사용된 계정 주소를 포함하는 배열을 반환합니다. 호출자는 URL 원본으로 식별되며, 동일한 원본을 가진 모든 사이트는 동일한 권한을 공유합니다.

이는 공급자가 사용자의 노출된 계정 주소가 변경될 때 accountsChanged 이벤트를 발생시킨다는 것을 의미합니다. 이벤트를 수신하여 계정을 처리하세요.

chainChanged

window.biport.on('chainChanged', handler: (chainId: string) => void);

provider는 현재 연결된 체인이 변경될 때 이벤트를 발생시킵니다. 이벤트를 수신하여 사용자의 네트워크를 감지하세요.

connect

interface ConnectInfo {
  chainId: string;
}

window.biport.on('connect', handler: (connectInfo: ConnectInfo) => void);

provider가 체인에 대한 RPC 요청을 최초로 제출할 수 있는 상태가 되면 이 이벤트가 발생합니다. provider가 연결되었는지 여부를 결정하기 위해 이벤트를 수신하고 window.biport.isConnected() 공급자 메서드를 사용하는 것을 권장합니다.

disconnect

window.biport.on('disconnect', handler: (error: ProviderRpcError) => void);

provider는 체인에 대한 RPC 요청을 제출할 수 없게 되면 이벤트를 발생시킵니다. 일반적으로 이는 네트워크 연결 문제나 예기치 않은 오류로 인해 발생합니다.

공급자가 이 이벤트를 발생시키면 체인과의 연결이 재설정될 때까지 새로운 요청을 받지 않습니다. 이는 페이지를 다시 로드해야 합니다. 공급자가 연결이 끊어졌는지 여부를 결정하기 위해 window.biport.isConnected() 공급자 메서드를 사용할 수도 있습니다.

Errors

Biport provider가 반환하는 모든 오류는 다음 인터페이스를 따릅니다:

interface ProviderRpcError extends Error {
  message: string;
  code: number;
  data?: unknown;
}

window.biport.request(args) 공급자 메소드는 즉시 오류를 발생시킵니다. 요청이 실패한 이유를 확인하려면 오류 코드 속성을 사용할 수 있습니다. 일반적인 코드와 그 의미는 다음과 같습니다:

  • 4001 - 사용자가 요청을 거부했습니다.

  • -32602 - 매개변수가 잘못되었습니다.

  • -32603 - 내부 오류가 발생했습니다.

모든 오류 목록은 EIP-1193 및 EIP-1474를 참조하세요.

Last updated