Kaia Provider
Ethers.js 또는 Web3.js를 Wepin Provider와 함께 사용하면 EVM 계열의 블록체인과 상호작용 할 수 있습니다.
지원 네트워크
8217
Kaia Mainnet
klaytn
1001
Kaia Kairos Testnet
klaytn-testnet
설치(Install)
npm install @wepin/provider-jsyarn 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> optionaldefaultLanguage: 위젯 기본 언어 설정, 기본 값은ko입니다. 현재 지원하는 언어는en,ko,ja3가지 입니다.defaultCurrency: T위젯 기본 통화 설정, 기본 값은KRW입니다. 현재 지원하는 통화는USD,KRW,JPY3가지 입니다.
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,ja3가지 입니다.currency<string> 위젯에 표시될 통화를 지정합니다. 현재 지원하는 통화는USD,KRW,JPY3가지 입니다.
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 요청을 보낼 수 있습니다.
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
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
TxTypeValueTransfer 는 사용자가 KLAY 를 전송할 때 사용되는 트랜잭션입니다.
typeInt<number> - 8(TxTypeValueTransfer) or 9(TxTypeFeeDelegatedValueTransfer) or 10(TxTypeFeeDelegatedValueTransferWithRatio)from<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.to<string> - 트랜잭션의 수신자 주소gas<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.value<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.feePayer<string> - 수수료를 대납할 계정의 주소. typeInt 가 9 또는 10 일 때 필요.feeRatio<string> - 수수료 대납자의 수수료 비율. 1~99 사이의 값을 HexString 형식으로 입력. typeInt가 10 일 때 필요.
TxTypeValueTransferMemo 는 사용자가 특정 메세지와 함께KLAY 를 전송할 때 사용되는 트랜잭션 입니다.
typeInt<number> - 16(TxTypeValueTransfer) or 17(TxTypeFeeDelegatedValueTransfer) or 18(TxTypeFeeDelegatedValueTransferWithRatio)from<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.to<string> - 트랜잭션의 수신자 주소gas<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.value<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.input<string> - 트랜잭션과 함께 전송되는 메세지. Hex string 형식으로 입력.feePayer<string> - 수수료를 대납할 계정의 주소. typeInt 가 17 또는 18 일 때 필요.feeRatio<string> - 수수료 대납자의 수수료 비율. 1~99 사이의 값을 HexString 형식으로 입력. typeInt가 18 일 때 필요.
TxTypeSmartContractExecution 은 스마트 컨트랙트 실행을 위한 트랜잭션입니다.
typeInt<number> - 48(TxTypeValueTransfer) or 49(TxTypeFeeDelegatedValueTransfer) or 50(TxTypeFeeDelegatedValueTransferWithRatio)from<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.to<string> - 트랜잭션의 수신자 주소 (컨트랙트 주소)gas<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.value<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.input<string> - 트랜잭션과 함께 전송되는 데이터. Hex string 형식으로 입력.feePayer<string> - 수수료를 대납할 계정의 주소. typeInt 가 49 또는 50 일 때 필요.feeRatio<string> - 수수료 대납자의 수수료 비율. 1~99 사이의 값을 HexString 형식으로 입력. typeInt가 50 일 때 필요.
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
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
TxTypeValueTransfer 는 사용자가 KLAY 를 전송할 때 사용되는 트랜잭션입니다.
typeInt<number> - 8from<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.to<string> - 트랜잭션의 수신자 주소gas<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.value<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.
TxTypeValueTransferMemo 는 사용자가 특정 메세지와 함께KLAY 를 전송할 때 사용되는 트랜잭션 입니다.
typeInt<number> - 16from<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.to<string> - 트랜잭션의 수신자 주소gas<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.value<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.input<string> - 트랜잭션과 함께 전송되는 메세지. Hex string 형식으로 입력.
TxTypeSmartContractExecution 은 스마트 컨트랙트 실행을 위한 트랜잭션입니다.
typeInt<number> - 48from<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.to<string> - 트랜잭션의 수신자 주소 (컨트랙트 주소)gas<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.gasPrice<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.value<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.input<string> - 트랜잭션과 함께 전송되는 데이터. Hes string 형식으로 입력.
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?