WEMIX3.0
Search…
JavaScript SDK
이 페이지에서는 dApp 에서 WEMIX Wallet 과 연동하기 위한 JavaScript SDK 를 설명합니다.

  • NPM 을 이용하는 경우 : Node 10 이상 권장

별도의 가입 절차 없이 기본적으로 HTTP(s) 통신이 가능한 환경에서 동작이 가능합니다.

npm 또는 yarn 을 이용하여 설치를 합니다.
npm install @wemix3/wallet-sdk
또는
yarn add @wemix3/wallet-sdk
설치 후 다음과 같이 ES module import 방식으로 사용합니다.
import wemixSDK from '@wemix3/wallet-sdk'

다운로드 에서 SDK 를 다운로드를 받은 후, 다운로드 받은 파일을 repository 에 복사합니다. HTML 파일에 다음과 같이 스크립트 태그를 삽입합니다.
<script src="./lib/wemixSDK.js"></script>

필요한 경우 네트워크를 변경할 수 있습니다. 기본 네트워크는 Mainnet이지만 현재 사용할 수 없습니다.
반드시 Testnet으로 설정하십시오.
wemixSDK.setBaseURL("https://a2a.test.wemix.com/api/v1/a2a");

Example 을 실행하기 위해서는 NPM 환경과 parcel 설치가 필요합니다.

npm install -g parcel-bundler
예제 실행
npm run example

JavaScript SDK에서 App2App 요청은 크게 Proposal, Request, Result의 순서로 진행이 됩니다.
  • Proposal 은 dApp에서 실행할 작업을 요청하는 단계로 총 5가지 종류의 요청이 존재합니다.
  • Request 는 QRCode 로 WEMIX Wallet 을 실행하여 서명 프로세스를 진행합니다.
  • Result 는 함수 호출을 통해 결과값을 받고 확인합니다.

wemixSDK.proposal(metaData, transaction) 를 사용하며 transaction 에 따라 5가지 요청을 제공합니다.
  • null : 지갑주소 요청
  • SendWemix : WEMIX 전송 요청
  • SendToken : TOKEN 전송 요청
  • SendNFT : NFT 전송 요청
  • ContractExecute : Contract 실행 요청

Proposal 을 요청하기 위해서는 dApp의 정보가 필요합니다. dApp 의 정보는 METADATA interface 로 제공되어야 합니다.

Property
Type
Value
Required
name
string
dApp 이름
true
description
string
요청 설명. Reserved
false
url
string
dApp 대표 URL. Reserved
false
icon
string
dApp 로고 이미지 URL. Reserved
false
const metaData = {
name: "WEMIX test dApp",
description: "Test Proposal",
url: "https://test-dApp.wemix.com",
icon: "https://test-dApp.wemix.com/logo.png"
};

사용자 지갑을 인증하는 요청이며 인증 완료 시 사용자 지갑의 주소를 확인할 수 있습니다.
Example
wemixSDK.proposal(metaData).then((res) => {
if (res.error) {
// 에러 처리
} else if (res.requestId) {
// requestId 보관 및 처리
}
})

사용가 보유한 WEMIX 특정 주소로 전송하는 요청입니다. 요청에 대해 사용자 승인이 완료되면 해당 요청의 transactionHash 를 확인할 수 있습니다.

Parameter
Type
Value
from
string
전송자의 주소. 지갑 사용자가 맞는지 확인용
to
string
받는 사용자의 주소
value
string
보낼 WEMIX 수량 (단위 wei)
Example
// send 1 WEMIX to 0xFb0... from 0x9a...
const transaction = new SendWemix('0x9a...', '0xFb0...', '1000000000000000000');
wemixSDK.proposal(metaData, transaction).then((res) => {
if (res.error) {
// 에러 처리
} else if (res.requestId) {
// requestId 보관 및 처리
}
});

사용자가 보유한 토큰을 특정 주소로 전송하는 요청입니다. 요청에 대해 사용자 승인이 완료되면 해당 요청의 transactionHash 를 확인할 수 있습니다.

Parameter
Type
Value
from
string
전송자의 주소. 지갑 사용자가 맞는지 확인용
to
string
받는 사용자의 주소
value
string
보낼 토큰 수량 (decimal 포함)
contract
string
토큰 contract 주소

// 0xa8b.. contract 에서 0x9a... 부터 0xFb0... 으로 1 token 전송. (decimal 이 0인 경우)
const transaction = new SendToken('0x9a...', '0xFb0...', '1', '0xa8b...');
wemixSDK.proposal(metaData, transaction).then((res) => {
if (res.error) {
// 에러 처리
} else if (res.requestId) {
// requestId 보관 및 처리
}
});

사용가 보유한 NFT를 특정 주소로 전송하는 요청입니다. 요청에 대해 사용자 승인이 완료되면 해당 요청의 transactionHash 를 확인할 수 있습니다.

Parameter
Type
Value
from
string
전송자의 주소. 지갑 사용자가 맞는지 확인용
to
string
받는 사용자의 주소
contract
string
토큰 contract 주소
tokenId
string
전송하려는 NFT token Id

// 0xa8b.. contract 에서 0x9a... 부터 0xFb0... 으로 tokeId 12 를 전송.
const transaction = new SendNFT('0x9a...', '0xFb0...', '0xa8b...', '12');
wemixSDK.proposal(metaData, transaction).then((res) => {
if (res.error) {
// 에러 처리
} else if (res.requestId) {
// requestId 보관 및 처리
}
});

사용자가 특정 컨트랙트의 함수를 실행하도록 하는 요청입니다. 요청에 대해 사용자 승인이 완료되면 해당 요청의 transactionHash 를 확인할 수 있습니다.

Parameter
Type
Value
from
string
전송자의 주소. 지갑 사용자가 맞는지 확인용
contract
string
contract 주소
abi
string
함수의 abi (json object)
params
string
함수의 파라미터 (json array)

// 0xa8b.. contract 에서 transfer 함수 실행.
const transaction = new ContractExecute(
'0x9a...',
'0xa8b...',
JSON.stringify({
constant: false,
inputs: [
{ name: "_to", type: "address" },
{ name: "_value", type: "uint256" },
],
name: "transfer",
outputs: [{ name: "success", type: "bool" }],
payable: false,
type: "function"
}),
JSON.stringify(["0xcad9042cf49684939a2f42c2d916d1b6526635c2",5000000000000000000])
);
wemixSDK.proposal(metaData, transaction).then((res) => {
if (res.error) {
// 에러 처리
} else if (res.requestId) {
// requestId 보관 및 처리
}
});

Proposal 에서 전달 받은 request id 로 앱을 호출할 수 있는 Scheme을 생성하고 QRCode 또는 scheme호출으로 WEMIX Wallet 앱에 요청을 할수 있습니다.

wemix://wallet?requestId={request_id}
Example
wemix://wallet?requestId=569308f1-5d21-4ffc-abc5-1c3f4fcd12b7

요청에 대해 사용자가 승인 이후 requestId로 요청에 대한 결과를 확인합니다.

Request
Parameter
Type
Value
requestId
string
Proposal 시 전달받은 request id
Response
Key
Type
Value
status
string
상태 유형 • proposal (실행 요청) • completed (실행 완료) • canceled (실행 취소) • expired (시간 만료)
address
string
인증된 지갑 주소.
wemixSDK.auth 요청시에만반환됨.
tx_hash
string
요청 결과에 대한 트랜잭션 해시.
wemixSDK.txConstructor.(SendWemix | SendToken | SendNFT | ContractExecute)
요청시에만 반환됨
Example
wemixSDK.getResult(requestId).then((res) => {
if (res.error) {
// 에러 처리
} else if (res.status && res.status === 'completed') {
// res.address <= Only Auth
// res.tx_hash
}
});
Copy link
On this page
요구 사항
환경 설정
NPM 을 이용하는 경우
파일 다운로드 받아 사용하는 경우
네트워크 설정
Example 실행
API
개요
Proposal
MetaData
Auth
SendWemix
SendToken
SendNFT
ContractExcute
Request
Result