EOA로 Tx Action 실행하기
생성된 Restful API에 인증토큰과 필요한 정보들을 입력하고 호출하면 Raw Tx 가 반환됩니다. 반환된 Raw Tx는 직접 서명 후 Signed Tx로 다시 호출해야 합니다.
EOA로 Tx Action을 실행하는 순서는 아래와 같습니다.
  1. 1.
    Tx Action을 생성합니다.
  2. 2.
    Tx Action 실행을 위한 인증 토큰을 발급 받습니다.
  3. 3.
    Raw Tx를 반환하는 API를 호출합니다.
Tx Action Name은 root account내에서 유일하기 때문에 Environment나 컨트렉트를 postfix, 또는 prefix로 넣어 구분하기 쉬운 이름으로 작성하는 것을 추천합니다.
curl -X POST 'https://api.luniverse.io/tx/v2.0/transactions/<YOUR_ACTION_NAME>' \
--header 'Authorization: Bearer <YOUR_API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"txId": "<UUID>",
"from": "<YOUR_EOA_ADDRESS>",
"inputs": {
"<YOUR_PARAMETER_NAME>": "<YOUR_PARAMETER_VALUE>"
}
}'
txId는 UUID 형태로 매번 새로 생성해서 입력해야 합니다.
4. 반환된 Raw Tx에 서명 합니다.
Raw Tx를 서명하기 위한 방법에 제약은 없으며, Javascript/Node.js 환경에서는 ethers.js 사용을 권장합니다.
ethers.js 사용 방법에 대해서는 https://docs.ethers.io 에서 확인할 수 있습니다.
아래는 ethers.js를 사용하는 예제 입니다.
const ethers = require('ethers');
...
const privatekey = '0000000344743f40f2015424000000000000000';
const wallet = new ethers.Wallet(privatekey);
const transaction = {
from: "0x827f92fd506f27f7ba1029f280e12eaa2b362000",
to: "0x2dcf9512d9aebe1bb90b99e5c2b80fd6f9b8c000",
data: "0x42842e0e000000000000000000000000827f92fd506f27f7ba1029f280e12eaa2b3620000000000000000000000000006b0e2f429ab4cf11f7842183bcbeb805eb83b0000000000000000000000000000000000000000000000000000000000000000002111100001111e9a3c0e71736462c262414d27314b0bf0baf2000",
gasLimit: "0x30d400",
gasPrice: "0x15a7b2979400",
nonce: "0x6"
};
// sign and serialize the transaction
const signedTransaction = await wallet.signTransaction(transaction)
Raw TX를 from에 해당하는 Address Private Key로 직접 서명해야 합니다.
모든 Raw Tx 파라미터는 변경되지 않아야 하며, 변경될 경우 Transaction이 정상적으로 실행되지 않을 수 있습니다.
5. 서명한 signed Tx로 API를 호출합니다.
curl -X POST 'https://api.luniverse.io/tx/v2.0/transactions/<YOUR_ACTION_NAME>/signedTx' \
--header 'Authorization: Bearer <YOUR_API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"txId": "<UUID>",
"signedTx": "<YOUR_SIGNED_TX>",
"callbackUrl": "<YOUR_CALLBACK_URL>"
}'
txId는 Raw Tx를 반환받는 API에서 사용한 것과 다른 값을 새로 생성해서 입력해야 합니다.
Transaction 실행 결과는 callbackUrl로 전달한 url에 JSON Body를 응답 객체로하는 POST 요청으로 전송됩니다.
Copy link