Kaia Provider

Ethers.js 또는 Web3.js를 Wepin Provider와 함께 사용하면 EVM 계열의 블록체인과 상호작용 할 수 있습니다.

지원 네트워크

목록에 필요한 블록체인이 없나요? 위핀 팀에 요청하여 별도의 비용 없이 블록체인을 추가할 수 있습니다.

Chain ID
Network Name
Network Variable

8217

Kaia Mainnet

klaytn

1001

Kaia Kairos Testnet

klaytn-testnet

설치(Install)

npm install @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: 위젯 기본 언어 설정, 기본 값은 ko입니다. 현재 지원하는 언어는 en, ko, ja 3가지 입니다.

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

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

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

Return value

  • Promise<BaseProvider> - A EIP-1193 provider

Example

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

finalize

WepinProvider 사용을 종료합니다.

wepinProvider.finalize()

Parameters

  • <void>

Return value

  • <void>

Example

wepinProvider.finalize()

request

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

kaia prefix method 는 버전0.0.31 이부터 지원합니다.

eth_accounts / klay_accounts / kaia_accounts

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

Parameters

  • void

Returns

  • Promise<Array<string>> - 사용자의 주소 목록을 반환합니다.

Example

const accounts = await wepinProvider.request({
      method: 'kaia_accounts',
      params: []
})

eth_signTransaction / klay_signTransaction / kaia_signTransaction

주어진 매개변수로 트랜잭션을 구성하고 사용자의 개인키로 트랜잭션에 서명합니다.

Supported Tx Type

TxType
Support Fee Delegateed
Version

TxTypeLegacy

false

TxTypeValueTransfer

true

≥ v.0.0.31

TxTypeValueTransferMemo

true

≥ v.0.0.31

TxTypeSmartContractExecution

true

≥ v.0.0.31

Parameters

TxTypeLegacyTransaction 은 기존에 Kaia(Klaytn)에 존재했던 거래 유형을 나타냅니다.

  • from <string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.

  • to <string> - 트랜잭션의 수신자 주소 (컨트랙트 주소 또는 일반 계정 주소)

  • gas <string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.

  • gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.

  • value <string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.

  • data <string> - 실행할 스마트 컨트랙트의 데이터 또는 빈 값. 일반 전송의 경우 0x

Returns

  • Promise<Object>

    • raw <string> - 직렬화된 트랜잭션

    • tx <Object> - 서명이 포함된 트랜잭션 오브젝트.

Example

const params = {
      typeInt: 49,       //TxTypeFeeDelegatedSmartContractExecution
      from: senderAddress,
      to: '0x4dbccb64e9f7b4df4263d8e3b93c89ae406fd8e5',
      input: '0x45773e4e'
      gas: '0x15f90',
      gasPrice: '0x5d21dba00',
      feePayer: feePayerAddress,
}

const {raw, tx} = await wepinProvider.request({
      method: 'kaia_signTransaction',
      params: [params]
})


const decodedTx = caver.transaction.decode(raw)
const signedTx = await caver.wallet.signAsFeePayer(
      feePayerAddress,
      decodedTx as FeeDelegatedTransaction
)
const txId = await caver.rpc.klay.sendRawTransaction(
      signedTx.getRawTransaction()
)

eth_sendTransaction / klay_sendTransaction / kaia_sendTransaction

주어진 매개변수로 트랜잭션을 구성하고 사용자의 개인키로 트랜잭션에 서명하여 네트워크에 전송합니다.

sendTransaction 은 FeeDelegated 를 지원하지 않습니다.

Supported Tx Type

TxType
Version

TxTypeLegacy

TxTypeValueTransfer

≥ v.0.0.31

TxTypeValueTransferMemo

≥ v.0.0.31

TxTypeSmartContractExecution

≥ v.0.0.31

Parameters

TxTypeLegacyTransaction 은 기존에 Kaia(Klaytn)에 존재했던 거래 유형을 나타냅니다.

  • from <string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.

  • to <string> - 트랜잭션의 수신자 주소 (컨트랙트 주소 또는 일반 계정 주소)

  • gas <string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.

  • gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.

  • value <string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.

  • data <string> - 실행할 스마트 컨트랙트의 데이터 또는 빈 값. 일반 전송의 경우 0x

Returns

  • Promise<string> - 트랜잭션 해시

Example

const params = {
      typeInt: 8,       //TxTypeValueTransfer
      from: senderAddress,
      to: toAddress,
      value: '0x1234'
      gas: '0x15f90',
      gasPrice: '0x5d21dba00'
}

const txId = await wepinProvider.request({
      method: 'kaia_sendTransaction',
      params: [params]
})

eth_sign / klay_sign / kaia_sign

EIP-191 방식으로 message 를 서명합니다.

Parameters

  • <array>

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

    • <string> - sign 하려는 message

Returns

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

Example

const message = 'Hello World'

const signature = await wepinProvider.request({
      method: 'kaia_sign',
      params: [signerAddress, message]
})

personal_sign

EIP-191 방식으로 message 를 서명합니다.

Parameters

  • <array>

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

    • <string> - sign 하려는 message

Returns

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

Example

const message = 'Hello World'

const signature = await wepinProvider.request({
      method: 'personal_sign',
      params: [signerAddress, message]
})

eth_signTypedData_v1 / klay_signTypedData_v1

EIP-712 v1 형식의 데이터를 서명합니다.

Parameters

  • <array>

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

    • <string> - sign 하려는 message

Returns

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

Example

const signature = await wepinProvider.request({
      method: 'kaia_signTypedData_v1',
      params: [signerAddress, msgParamsV1 ]
})

eth_signTypedData_v3 / klay_signTypedData_v3

EIP-712 v3 형식의 데이터를 서명합니다.

Parameters

  • <array>

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

    • <string> - sign 하려는 message

Returns

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

Example

const signature = await wepinProvider.request({
      method: 'kaia_signTypedData_v3',
      params: [signerAddress, msgParamsV3 ]
})

eth_signTypedData_v4 / klay_signTypedData_v4

EIP-712 v4 형식의 데이터를 서명합니다.

Parameters

  • <array>

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

    • <string> - sign 하려는 message

Returns

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

Example

const signature = await wepinProvider.request({
      method: 'kaia_signTypedData_v4',
      params: [signerAddress, msgParamsV4 ]
})

그 외 Kaia 네트워크의 자세한 내용은 아래 링크를 참고하세요.

Last updated

Was this helpful?