WEPIN Developer Documentation
WepinBlogContact
한국어
한국어
  • 시작하기
    • 소개
  • 위핀
    • 특징
    • 아키텍처
      • 키 생성
      • 서명
      • 키 백업
    • 워크스페이스
      • 앱 등록 및 키 발급
      • 네트워크 및 자산 추가
      • 위젯 디자인
    • 지원 블록체인
    • 계정 추상화
  • 로그인
    • 개요
    • 소셜 로그인 인증 프로바이더
      • Email/Password
      • Google
      • Apple
      • Discord
      • Naver
      • Facebook
      • Line
      • Kakao
    • 사용자 인터페이스
    • 로그인 일원화
    • 리소스
  • 위젯 연동
    • 사전 준비
    • Web: JavaScript SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
      • 프로바이더
        • Ethereum Provider
        • Kaia Provider
        • Solana Provider
        • Wagmi Connector
      • 월렛 어댑터
        • Solana Wallet Adapter
    • Android: Java & Kotlin SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
    • iOS: Swift SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
    • Flutter SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
    • React Native SDK
      • 로그인
        • 설치
        • 초기화
        • 메서드
    • Unity SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • Compose Multiplatform SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
  • API
    • 개요
    • 등록 절차
    • 로그인
    • 지갑 생성 및 관리
    • 토큰 및 NFT 조회
    • 트랜잭션
  • Deprecated
    • Web: JavaScript SDK
      • SDK
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
      • 프로바이더
        • Ethereum Provider
      • Wagmi Connector
    • Android: Java & Kotlin SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • iOS: Swift SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • Flutter SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • React Native SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
      • 프로바이더
        • EVM 호환
  • 기타
    • 로고 & 브랜드 가이드라인
Powered by GitBook
On this page
  • 지원 네트워크
  • 설치(Install)
  • 초기화하기
  • init
  • Parameters
  • Return value
  • Example
  • isInitialized
  • Parameters
  • Return value
  • Example
  • changeLanguage
  • Parameters
  • Return value
  • Example
  • 메서드(Method)
  • getProvider
  • Parameters
  • Return value
  • Example
  • finalize
  • Parameters
  • Return value
  • Example
  • request
  • connect
  • signTransaction
  • signAndSendTransaction
  • signAllTransactions
  • signMessage
  • changeNetwork
  • 기타 메서드 예제
  • getAccountInfo
  • getBalance
  • getLatestBlockhash
  • getTokenAccountsByOwner
  • getTokenAccountBalance

Was this helpful?

  1. 위젯 연동
  2. Web: JavaScript SDK
  3. 프로바이더

Solana Provider

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

지원 네트워크

Chain ID
Network Name
Network Variable

solana:mainnet

Solana Mainnet

solana

solana:devnet

Solana Devnet

solana-devnet

설치(Install)

npm install @wepin/provider-js
yarn add @wepin/provider-js

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

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

// 2. 초기화
const WepinProvider = new WepinProvider({
    appId: 'your-wepin-app-id',
    appKey: 'your-wepin-app-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에 해당하는 프로바이더를 반환합니다.

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

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

Parameters

  • <void>

Return value

  • Promise<object>

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

Example

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

signTransaction

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

Parameters

  • <object>

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

Return value

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

Example

import { Transaction, SystemProgram, PublicKey } from '@solana/web3.js'

const transaction = new Transaction()
const { value } = await getBlock()
transaction.add(
  SystemProgram.transfer({
    fromPubkey: new PublicKey(selectedAccount),
    toPubkey: new PublicKey(toAddress),
    lamports: parseFloat(toAmount) * 1000000000,
  })
)

transaction.recentBlockhash = value.blockhash
transaction.feePayer = new PublicKey(selectedAccount.value)

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

signAndSendTransaction

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

Parameters

  • <object>

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

Return value

  • Promise <object>

    • signature <TransactionSignature> - 성공적으로 전송된 트랜잭션의 고유 서명(signature) 을 반환합니다.

Example

import { Transaction, SystemProgram, PublicKey } from '@solana/web3.js'

const transaction = new Transaction()
const { value } = await getBlock()
transaction.add(
  SystemProgram.transfer({
    fromPubkey: new PublicKey(selectedAccount),
    toPubkey: new PublicKey(toAddress),
    lamports: parseFloat(toAmount) * 1000000000,
  })
)

transaction.recentBlockhash = value.blockhash
transaction.feePayer = new PublicKey(selectedAccount.value)

await wepinProvider.request({
    method: 'signAndSendTransaction',
    params: { transaction: _toHexString(transaction.serializeMessage()) },  //transaction.serializeMessage() 의 return 값은 Buffer 로 hex string 으로 변환해야 합니다.
})

signAllTransactions

직렬화된 여러개의 트랜잭션을 한번에 서명합니다. 입력으로 hex string으로 변환된 트랜잭션 배열을 받고, 서명된 트랜잭션 배열을 반환합니다.

Parameters

  • <object>

    • transactions <Array<string>> - 직렬화된 트랜잭션 데이터 배열. 각 트랜잭션은 Solana의 Transaction 또는 VersionedTransaction 객체를 직렬화 한 후, 해당 데이터를 Hexadecimal(16진수) 문자열로 변환한 값입니다.

Return value

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

Example

import { Transaction, SystemProgram, PublicKey } from '@solana/web3.js'

const transaction = new Transaction()
const { value } = await getBlock()
transaction.add(
  SystemProgram.transfer({
    fromPubkey: new PublicKey(selectedAccount),
    toPubkey: new PublicKey(toAddress),
    lamports: parseFloat(toAmount) * 1000000000,
  })
)

transaction.recentBlockhash = value.blockhash
transaction.feePayer = new PublicKey(selectedAccount.value)

await wepinProvider.request({
    method: 'signAndSendTransaction',
    params: { transactions: _toHexString(transaction.serializeMessage()) },  //transaction.serializeMessage() 의 return 값은 Buffer 로 hex string 으로 변환해야 합니다.
})

signMessage

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

Parameters

  • <array>

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

    • <string> - sign 하려는 message

Return value

  • Promise <string> - 서명 값(hex string)

Example

await wepinProvider.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.request({
    method: 'changeNetwork',
    params: [{ chainId: 'solana:devnet' }],
})

기타 메서드 예제

위핀에서 제공하는 메서드 외에 Solana RPC HTTP Methods 도 사용 가능합니다.

Parameter 로 들어온 Pubkey 와 연결된 모든 계정의 정보를 반환합니다.

Parameters

  • PubKey <string> - 조회할 계정의 주소 (base-58로 인코딩 된 PubKey)

  • <object>

    • commitment <string> optional

      • Default Commitment - finalize

      • processed - node가 처리한 가장 최신 블록을 조회. 이 블록은 아직 확정되지 않았으며, 변경될 가능성이 있음

      • confirmed - 클러스터의 과반이 승인한 최신 블록을 조회

      • finalized - 클러스터의 과반이 최종적으로 확정한 최신 블록

    • encoding <string> optional

      • Account data 의 인코딩 형식

      • base58, base64, base64+zstd, jsonParsed

    • dataSlice <object> optional - base58, base64, base64+zstd 인코딩일 때만 사용 가능

      • length <usize> - 반환할 바이트 수

      • offset <usize> - 읽기를 시작할 바이트 offset

    • minContextSlot <number> optional

      • 요청을 실행할 수 있는 최소 슬롯

Return value

  • context <object>

    • apiVersion <string> - solana-core version

    • slot <number> - 작업이 실행된 slot

  • value <object> nullable

    • lamports <u64> - 계정 잔액

    • owner <string> - 해당 계정을 소유하고 관리하는 프로그램의 주소 (base-58로 인코딩 된 PubKey)

    • data <[string, encoding] | object> - 계정과 관련된 데이터

    • executable <boolean> - 계정에 프로그램이 포함되어있는지(읽기전용 여부포함) 나타내는 불리언 값

    • rentEpoch <u64> - 이 계정이 다음 스토리지 비용을 지불해야 하는 epoch

    • size <u64> - 계정 데이터의 크기

Example

await wepinProvider.request({
    method: 'getAccountInfo',
    params: [
        "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
    ],
})
//return data
{
  "context": {
    "apiVersion": "2.0.14",
    "slot": 338510838
  },
  "value": {
    "data": "",
    "executable": false,
    "lamports": 14000000000,
    "owner": "11111111111111111111111111111111",
    "rentEpoch": 18446744073709552000,
    "space": 0
  }
}

계정의 잔액을 반환합니다.

Parameters

  • Pubkey <string> - 잔액을 조회할 계정의 주소 (base-58로 인코딩 된 PubKey)

  • <object>

    • commitment <string> optional

      • Default Commitment - finalize

      • processed - node가 처리한 가장 최신 블록을 조회. 이 블록은 아직 확정되지 않았으며, 변경될 가능성이 있음.

      • confirmed - 클러스터의 과반이 승인한 최신 블록을 조회.

      • finalized - 클러스터의 과반이 최종적으로 확정한 최신 블록.

    • minContextSlot <number> optional

      • 요청을 실행할 수 있는 최소 슬롯

Return value

  • context <object>

    • apiVersion <string> - solana-core version

    • slot <number> - 작업이 실행된 slot

  • value <number> - 계정의 잔액

Example

await wepinProvider.request({
    method: 'getAccountInfo',
    params: [
        "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
    ],
})
//return data
{
  "context": {
    "apiVersion": "2.0.14",
    "slot": 338529622
  },
  "value": 14000000000
}

가장 최신 블록해시를 반환합니다.

Parameters

  • <object> optional

    • commitment <string> optional

      • Default Commitment - finalize

      • processed - node가 처리한 가장 최신 블록을 조회. 이 블록은 아직 확정되지 않았으며, 변경될 가능성이 있음

      • confirmed - 클러스터의 과반이 승인한 최신 블록을 조회

      • finalized - 클러스터의 과반이 최종적으로 확정한 최신 블록

    • minContextSlot <number> optional

      • 요청을 실행할 수 있는 최소 슬롯

Return value

  • context <object>

    • apiVersion <string> - solana-core version

    • slot <number> - 작업이 실행된 slot

  • value <object>

    • blockhash <string> - base-58로 인코딩 된 해시 값

    • lastValidBlockHeight <number> - 해당 블록 해시가 유효한 마지막 블록 높이

Example

await wepinProvider.request({
    method: 'getAccountInfo',
    params: [
        "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
    ],
})
//return data
{
    "context": {
        "apiVersion": "2.0.14",
        "slot": 338534308
    },
    "value": {
        "blockhash": "8uJtPoFrdEqxFCA4zaBxBQXosZKvWWQYcWb9kZbF2hDW",
        "lastValidBlockHeight": 326729023
    }
}

계정의 모든 SPL Token 계정 정보를 반환합니다.

Parameters

  • PubKey <string> - SPL Token Account 의 Owner 주소 (base-58로 인코딩 된 PubKey)

  • <object> - 조회할 SPL 토큰 계정에 대한 필터. mint 와 programId 중 하나만 있으면 됨

    • mint <string> - base-58로 인코딩 된 특정 토큰의 Mint Address

    • programId <string> - base-58로 인코딩 된 특정 프로그램의 ID

  • <object>

    • commitment <string> optional

      • Default Commitment - finalize

      • processed - node가 처리한 가장 최신 블록을 조회. 이 블록은 아직 확정되지 않았으며, 변경될 가능성이 있음

      • confirmed - 클러스터의 과반이 승인한 최신 블록을 조회

      • finalized - 클러스터의 과반이 최종적으로 확정한 최신 블록

    • minContextSlot <number> optional

      • 요청을 실행할 수 있는 최소 슬롯

    • encoding <string> optional

      • Account data 의 인코딩 형식

      • base58, base64, base64+zstd, jsonParsed

    • dataSlice <object> optional - base58, base64, base64+zstd 인코딩일 때만 사용 가능

      • length <usize> - 반환할 바이트 수

      • offset <usize> - 읽기를 시작할 바이트 offset

Return value

  • context <object>

    • apiVersion <string> - solana-core version

    • slot <number> - 작업이 실행된 slot

  • value <Array<object>>

    • pubkey <string> - 조회 된 계정의 주소

    • account <object> - 해당 계정의 정보

      • lamports <u64> - 계정 잔액

      • data <object> - 해당 계정과 연결된 Token state data

        • parsed <object>

          • info <object> - 계정 정보

            • isNative <boolean> - 네이티브 계정 여부 표시. 일반적으로 false

            • mint <string> - 해당 토큰 계정과 연결된 특정 토큰의 주소

            • owner <string> - 해당 토큰 계정을 통제하는 사용자의 Solana 지갑 주소

            • state <string> - 토큰 계정의 상태

            • tokenAmount <object> - 토큰 계정의 잔액 정보

              • amount <string> - 계정 내 보유량을 나타내는 숫자

              • decimals <number> - 해당 토큰의 소수점 자수

              • uiAmount <number> - 소수 형태의 토큰 잔액. DEPRECATED

              • uiAmountString <string> - 문자열로 표시된 소수 형태의 토큰 잔액

          • type <string> - info 의 유형. 이 경우 account

        • program <string> - 해당 계정이 속한 프로그램

        • space <number> - 계정 데이터의 크기. 바이트 단위로 표시

      • executable <boolean> - 해당 계정이 실행 가능한지 여부

      • owner <string> - 계정을 소유한 프로그램의 주소

      • rentEpoch <u64> - 계정이 현재 임대 상태인 epoch

      • size <u64> - 계정의 데이터 크기

Example

await wepinProvider.request({
    method: 'getTokenAccountsByOwner',
    params: [
      "A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd",
      {
        "mint": "BejB75Gmq8btLboHx7yffWcurHVBv5xvKcnY1fBYxnvf"
      },
      {
        "encoding": "jsonParsed"
      }
    ]
})
//return data
{
    "context": {
      "apiVersion": "2.0.8",
      "slot": 329669901
    },
    "value": [
      {
        "account": {
          "data": {
            "parsed": {
              "info": {
                "isNative": false,
                "mint": "BejB75Gmq8btLboHx7yffWcurHVBv5xvKcnY1fBYxnvf",
                "owner": "A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd",
                "state": "initialized",
                "tokenAmount": {
                  "amount": "10000000000000",
                  "decimals": 9,
                  "uiAmount": 10000,
                  "uiAmountString": "10000"
                }
              },
              "type": "account"
            },
            "program": "spl-token",
            "space": 165
          },
          "executable": false,
          "lamports": 2039280,
          "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
          "rentEpoch": 18446744073709551615,
          "space": 165
        },
        "pubkey": "5HvuXcy57o41qtGBBJM7dRN9DS6G3jd9KEhHt4eYqJmB"
      }
    ]
}

SPL Token 계정의 잔액을 반환합니다.

Parameters

  • PubKey <string> - ATA(Associated Token Account) 주소 ( base-58로 인코딩 된 PubKey)

Return value

  • context <object>

    • apiVersion <string> - solana-core version

    • slot <number> - 작업이 실행된 slot

  • value <object>

    • amount <string> - 해당 토큰 계정의 잔액

    • decimals <number> - 해당 토큰의 소수점 자릿수

    • uiAmount <number> nullable - 소수 형태의 토큰 잔액. DEPRECATED

    • uiAmountString <string> - 문자열로 표시된 소수 형태의 토큰 잔액

Example

await wepinProvider.request({
    method: 'getTokenAccountBalance',
    params: [
        "7fUAJdStEuGbc3sM84cKRL6yYaaSstyLSU4ve5oovLS7"
    ],
})
{
    "context": {
      "slot": 1114
    },
    "value": {
      "amount": "9864",
      "decimals": 2,
      "uiAmount": 98.64,
      "uiAmountString": "98.64"
    }
}

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

PreviousKaia ProviderNextWagmi Connector

Last updated 23 days ago

Was this helpful?

network <string> 위핀이 지원하는 Provider의 Network Variable 값으로, Solana Mainnet의 경우 "solana" 입니다. Network Variable은 소문자로 입력해야 합니다. 전체 목록은 에서 확인하세요.

signAllTransactions을 이용하기 위해서는 사전에 사용 등록이 필요합니다. Wepin에 해주세요. 한번에 sign 할 수 있는 Transaction 개수는 최대 10개 입니다.

문의
getAccountInfo
getBalance
getLatestBlockhash
getTokenAccountsByOwner
getTokenAccountBalance
Solana Provider 지원 네트워크
LogoSolana RPC HTTP Methods | Solana