Solana Provider

@solana/web3.js를 Wepin Provider와 함께 사용하면 Solana 블록체인과 상호작용 할 수 있습니다.

지원 네트워크

Chain IDNetwork NameNetwork Variable

solana:mainnet

Solana Mainnet

solana

solana:devnet

Solana Devnet

solana-devnet

설치(Install)

npm install @wepin/provider-js

설치가 완료되면 앱 등록 후 할당받은 앱 ID와 앱 키를 사용하여 아래와 같이 WepinProvider 인스턴스를 초기화합니다. 이렇게 하면 WepinProvider 를 사용할 수 있게 됩니다.

// 1. 패키지 import
import { WepinProvider } from '@wepin/provider-js'

// 2. 초기화
const WepinProvider = new WepinProvider({
    appId: 'your-wepin-app-id',
    appKey: 'your-wepin-api-key',
})

초기화하기

Wepin Provider를 초기화하는 방법입니다.

init

await wepinProvider.init(attributes?)

Parameters

  • attributes <object> optional

    • defaultLanguage: 위젯의 기본 설정 언어. 현재 지원하는 언어는 en, ko , ja입니다.

    • defaultCurrency: 위젯의 기본 통화 설정. 현재 지원하는 통화는 USD, KRW, JPY 입니다.

Return value

  • Promise<void>

Example

await wepinProvider.init({
    defaultLanguage: 'ko',
    defaultCurrency: 'KRW',
})

isInitialized

WepinProvider 가 정상적으로 초기화 되었는지 확인할 수 있습니다.

wepinProvider.isInitialized()

Parameters

  • <void>

Return value

  • <boolean> init이 정상적으로 잘 된 경우 true , 실패한 경우 false 를 반환합니다.

Example

if(wepinProvider.isInitialized()) {
  console.log('wepinProvider is initialized!')
}

changeLanguage

위젯의 언어와 통화를 변경할 수 있습니다.

wepinProvider.changeLanguage(attributes)

Parameters

  • attributes <object>

    • language <string> 위젯에 표시될 언어를 지정합니다. 현재 지원하는 언어는 en, ko, ja 3가지 입니다.

    • currency <string> 위젯에 표시될 통화를 지정합니다. 현재 지원하는 통화는 USD, KRW, JPY 3가지 입니다.

Return value

  • <boolean> init이 정상적으로 잘 된 경우 true , 실패한 경우 false 를 반환합니다.

Example

if(wepinProvider.isInitialized()) {
  console.log('wepinProvider is initialized!')
}

메서드(Method)

Wepin Provider 초기화 후에 메소드를 사용할 수 있습니다.

getProvider

Network에 해당하는 Provider를 반환합니다.

await wepinProvider.getProvider(network)

Parameters

Return value

  • Promise<BaseProvider> - solana provider

Example

const provider = await wepinProvider.getProvider('solana')

finalize

WepinProvider 사용을 종료합니다.

wepinProvider.finalize()

Parameters

  • <void>

Return value

  • <void>

Example

wepinProvider.finalize()

request

Solana 블록체인과 상호작용할 수 있도록 JSON-RPC 요청을 보낼 수 있습니다.

connect

Wepin Wallet에 연결하여 사용자의 허가를 받아 계정의 주소(Public Key)를 공유합니다. 연결이 승인되면 애플리케이션은 메시지 서명이나 트랜잭션 요청을 할 수 있습니다.

Parameters

  • <void>

Return value

  • Promise<object>

    • publicKey<string> - Solana 계정의 Address(Public Key)

Example

await wepinProvider.value?.request({
    method: 'connect',
    params: [],
})

signTransaction

직렬화된 트랜잭션을 서명합니다. 입력으로 hex string으로 변환된 트랜잭션을 받고, 서명된 트랜잭션을 반환합니다.

Parameters

  • <object>

    • message <string> - 직렬화된 트랜잭션을 hex string으로 변환한 값

Return value

  • Promise <Transaction> - 서명이 포함된 Transaction

Example

await wepinProvider.value?.request({
    method: 'signTransaction',
    params: { message: _toHexString(transaction.serializeMessage()) },
})

signAndSendTransaction

직렬화된 트랜잭션에 서명하고 Solana 네트워크에 제출합니다. 트랜잭션의 서명(Tx ID)을 반환합니다.

Parameters

  • <object>

    • message <string> - 직렬화된 트랜잭션을 hex string으로 변환한 값

Return value

  • Promise <object>

    • signature <TransactionSignature> - 트랜잭션의 서명

Example

await wepinProvider.value?.request({
    method: 'signAndSendTransaction',
    params: { message: _toHexString(transaction.serializeMessage()) },
})

signMessage

특정 계정의 주소(Public Key)와 메시지에 서명합니다. 입력으로 계정 주소와 서명할 메시지를 받습니다.

Parameters

  • <array>

    • <string> - sign 하는 계정의 주소(Public Key)

    • <string> - sign 하려는 message

Return value

  • Promise <Transaction> - 서명이 포함된 트랜잭션

Example

await wepinProvider.value?.request({
    method: 'signMessage',
    params: [selectedAccount, data],
})

changeNetwork

네트워크를 변경합니다. Solana Mainnet 또는 Devnet으로 전환할 수 있으며, 변경된 네트워크의 주소, 네트워크 이름 및 chain ID를 반환합니다.

Parameters

  • <object>

    • chainId <string> - 변경할 network 의 chainId. solana chain(solana:mainnet, solana:devnet) 만 가능

Return value

  • Promise <object>

    • address <string> - 변경된 네트워크의 계정 주소 (Public Key)

    • network <string> - 변경된 네트워크의 이름

    • chainId <string> - 변경된 네트워크의 chain ID

Example

await wepinProvider.value?.request({
    method: 'changeNetwork',
    params: [{ chainId: 'solana:devnet' }],
})

그 외 Solana 네트워크 프로바이더의 자세한 내용은 아래 링크를 참고하세요.

Last updated