Ethers.js 또는 Web3.js를 Wepin Provider와 함께 사용하면 EVM 계열의 블록체인과 상호작용 할 수 있습니다.
지원 네트워크
Chain ID
Network Name
Network Variable
설치(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
: 위젯 기본 언어 설정, 기본 값은 ko
입니다. 현재 지원하는 언어는 en
, ko
, ja
3가지 입니다.
defaultCurrency
: T위젯 기본 통화 설정, 기본 값은 KRW
입니다. 현재 지원하는 통화는 USD
, KRW
, JPY
3가지 입니다.
Return value
Example
await wepinProvider.init({
defaultLanguage: 'ko',
defaultCurrency: 'KRW',
})
isInitialized
WepinProvider 가 정상적으로 초기화 되었는지 확인할 수 있습니다.
wepinProvider.isInitialized()
Parameters
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> - A EIP-1193 provider
Example
const provider = await wepinProvider.getProvider('klaytn')
finalize
WepinProvider 사용을 종료합니다.
wepinProvider.finalize()
Parameters
Return value
Example
wepinProvider.finalize()
request
Kaia 블록체인과 상호작용 할 수 있도록 JSON-RPC 요청을 보낼 수 있습니다.
kaia prefix method 는 버전0.0.31 이부터 지원합니다.
eth_accounts / klay_accounts / kaia_accounts
위핀 지갑에 연결하여 사용자의 허가를 받아 계정의 주소를 공유합니다. 연결이 승인되면 애플리케이션은 메세지 서명이나 트랜잭션 요청을 할 수 있습니다.
Parameters
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
TxTypeSmartContractExecution
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>
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
TxTypeSmartContractExecution
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 를 전송할 때 사용되는 트랜잭션입니다.
from
<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.
to
<string> - 트랜잭션의 수신자 주소
gas
<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.
gasPrice
<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.
value
<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.
TxTypeValueTransferMemo 는 사용자가 특정 메세지와 함께KLAY 를 전송할 때 사용되는 트랜잭션 입니다.
from
<string> - 트랜잭션을 보내는 계정의 주소. 실제 서명자의 주소와 다르면 에러 발생.
to
<string> - 트랜잭션의 수신자 주소
gas
<string> - 트랜잭션 실행에 필요한 최대 가스량. Hex string 형식으로 입력.
gasPrice
<string> - 트랜잭션에 지불할 가스 비용. Hex string 형식으로 입력.
value
<string> - 트랜잭션과 함께 전송되는 Klay 값. Hex string 형식으로 입력.
input
<string> - 트랜잭션과 함께 전송되는 메세지. Hex string 형식으로 입력.
TxTypeSmartContractExecution 은 스마트 컨트랙트 실행을 위한 트랜잭션입니다.
from
<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 네트워크의 자세한 내용은 아래 링크를 참고하세요.