한국어
외부 출금 요청
외부 출금은 비동기로 처리됩니다. 생성 전에 수신 주소와 견적을 검증하고 결과 상태는 별도로 추적합니다.
수신 주소 검증
튜토리얼에서는 외부 테스트넷 주소를 사용합니다. 다른 OOLIN 계정의 입금 주소를 지정하면 내부이체로 분류될 수 있습니다.
bash
export TO_ADDRESS='{valid-testnet-address}'
export WITHDRAW_AMOUNT='1.00'
asset_response="$(
wallet_request GET "/assets/by-type-network?asset_type_id=$ASSET_TYPE_ID&network_id=$NETWORK_ID"
)"
export ASSET_ID="$(printf '%s' "$asset_response" | jq -r '.data.asset_id')"
validate_body="$(jq -nc --arg address "$TO_ADDRESS" '{address:$address}')"
wallet_request POST "/assets/$ASSET_ID/validate-address" "$validate_body" | jqdata.is_valid가 true일 때만 다음 단계로 진행합니다.
출금 견적 요청
bash
quote_body="$(jq -nc \
--argjson account_id "$ACCOUNT_ID" \
--argjson asset_type_id "$ASSET_TYPE_ID" \
--arg amount "$WITHDRAW_AMOUNT" \
--arg to_address "$TO_ADDRESS" \
--argjson network_id "$NETWORK_ID" \
'{account_id:$account_id,asset_type_id:$asset_type_id,amount:$amount,to_address:$to_address,network_id:$network_id}')"
wallet_request POST '/withdrawals/quote' "$quote_body" | jqcan_withdraw: true이고 transfer_type: "EXTERNAL"인지 확인합니다. 고객이 확정하기 전에 수수료, 수령 금액, 최소·최대 한도를 표시합니다.
계정에서 예약·차감되는 금액은 amount + fee_amount이며 receive_amount는 수취 금액입니다. 견적은 잔액 예약이나 출금 성공을 보장하지 않으므로 생성 시 오류도 처리해야 합니다.
외부 출금 생성
전역에서 고유한 client_request_id를 만들고 요청을 전송하기 전에 영구 저장합니다.
bash
export WITHDRAWAL_REQUEST_ID="withdrawal-$(node -e 'process.stdout.write(require("crypto").randomUUID())')"
withdrawal_body="$(jq -nc \
--argjson account_id "$ACCOUNT_ID" \
--argjson asset_type_id "$ASSET_TYPE_ID" \
--arg amount "$WITHDRAW_AMOUNT" \
--arg to_address "$TO_ADDRESS" \
--argjson network_id "$NETWORK_ID" \
--arg client_request_id "$WITHDRAWAL_REQUEST_ID" \
'{account_id:$account_id,asset_type_id:$asset_type_id,amount:$amount,to_address:$to_address,network_id:$network_id,client_request_id:$client_request_id}')"
withdrawal_response="$(wallet_request POST '/withdrawals' "$withdrawal_body")"
printf '%s\n' "$withdrawal_response" | jq
export WITHDRAWAL_ID="$(printf '%s' "$withdrawal_response" | jq -r '.data.withdrawal_id')"응답의 request_type이 EXTERNAL인지 확인합니다. 생성 시 출금액과 수수료가 사용 가능 잔액에서 pending 출금 잔액으로 이동하지만 온체인 처리가 완료된 것은 아닙니다.
생성 응답이 유실되면 새 요청을 만들기 전에 기존 결과를 복구합니다.
bash
wallet_request GET "/withdrawals/client-request/$WITHDRAWAL_REQUEST_ID" | jq복구 응답이 성공하면 반환된 withdrawal_id를 WITHDRAWAL_ID에 저장하고 상태 추적을 진행합니다. 한 번의 WITHDRAWAL_NOT_FOUND로 미처리를 확정하지 않으며 멱등성 가이드에 따라 기존 ID로 복구합니다.
다음: 출금 상태 추적