코인보내기 및 스마트 컨트랙트 실행은 지갑 보안 레벨 2 부터 가능합니다.
자세한 내용은 지갑 보안 레벨 항목을 확인하십시오.
Steps
// Sample Usage
let wallet: FncyWallet = try await fncyWallet.getWallet()
// 1. Gas Price 조회
let gas: GasPriceInfo = try await self.fncyWallet.getGasPrice(chainId: 3)
// 2. Ticket 조회
let estimateResult:
FncyTicket = try await fncyWallet.estimateTicket(wid: wallet.wid,
chainId: 3,
signatureType: .assetTransfer,
toAddress: wallet.walletAddress,
assetId: 6)
// 3. Ticket 생성
let ticketUUID = try await fncyWallet.makeTicket(wid: wallet.wid,
chainId: 3,
signatureType: .assetTransfer,
toAddress: wallet.walletAddress,
transferVal: "100000",
txGasPrice: gasPriceInfo.middleGasPrice.description,
assetId: 6)
print("ticketUUID : ", ticketUUID)
// 4. Ticket 전송
let txId = try await fncyWallet.sendTicket(ticketUuid: ticketUUID,
pinNumber: "111111")
// 5. Transaction 결과 확인
print("txID : ", txId)
//txID : 0xc19f68e548c2ed933291aa4cbc9748b4d2b0de4bf1a5516f0b74579fb8e13b54
가스비 조회
체인ID에 해당하는 네트워크(블록체인)의 현재 네트워크 사용료(가스비) 정보를 가져옵니다.
let gas: GasPriceInfo = try await fncyWallet.getGasPrice(chainId: 3)
See Also
getGasPrice
GasPriceInfo
티켓 정보 조회
전송 티켓을 생성하기 전에 실제 전송 가능여부 및 트랜잭션의 Nonce, GasLimit를 확인할 수 있습니다.
전송하는 자산 유형 혹은 WalletConnect를 통한 전송 여부에 따라 올바른 티켓 타입을 선택해야 합니다.
SmartContract : Token전송 및 Contract 실행
WalletConnect : WalletConnect연결 시에 사용
See Also
estimateTicket
FncyTicket
TicketType
Coin 전송
let ticketData: FncyTicket = try await fncyWallet.estimateTicket(
wid: 10000, //지갑 ID
chainId: 3, // bsc: 1, eth: 2, fncy: 3
signatureType: TicketType.assetTransfer,
toAddress: "0x1234...", //코인을 받을 주소
transferVal: "1000000000000000000", //보낼 수량 (단위: wei)
txGasPrice: "10000000000", //Gas Price (단위: wei)
assetId: 6, //보낼 자산 asset ID
maxPriorityPerGas: nil, //ETH 전송일 경우 사용
maxFeePerGas: nil // ETH전송일 경우 사용
)
Token 전송(Contract 실행)
let ticketData: FncyTicket = try await fncyWallet.estimateTicket(
wid: 10000, //지갑 ID
chainId: 3, // bsc: 1, eth: 2, fncy: 3
signatureType: TicketType.smartContract, //
toAddress: "0x1234...", //코인을 받을 주소
transferVal: "0", //보낼 수량 (단위: wei)
txGasPrice: "10000000000", //Gas Price (단위: wei)
contractAddress: "0x1234...", //Contract Address
txInput: "0x123456....", //Data
assetId: 6, //보낼 자산 asset ID
maxPriorityPerGas: nil, //ETH 전송일 경우 사용
maxFeePerGas: nil // ETH전송일 경우 사용
)
WalletConnect
let ticketData: FncyTicket = try await fncyWallet.estimateTicket(
wid: 10000, //지갑 ID
chainId: 3, // bsc: 1, eth: 2, fncy: 3
signatureType: TicketType.walletConnect, //
toAddress: "0x1234...", //코인을 받을 주소
transferVal: "1000000000000000000", //보낼 수량 (단위: wei)
txGasPrice: "10000000000", //Gas Price (단위: wei)
contractAddress: "0x1234...", //Contract Address
txInput: "0x123456....", //Data
assetId: 6, //보낼 자산 asset ID
maxPriorityPerGas: nil, //ETH 전송일 경우 사용
maxFeePerGas: nil // ETH전송일 경우 사용
)
티켓 생성
네트워크에 전송할 티켓(트랜잭션 정보)을 서버에 등록하고, 해당 티켓의 티켓UUID(TicketUUID)를 가져옵니다.
티켓 생성에 실패할 경우 TicketUUID는 반환되지 않습니다.
See Also
makeTicket
TicketType
Coin 전송
let ticketUUID: String = try await fncyWallet.makeTicket(
wid: 10000, //지갑 ID
chainId: 3, // bsc: 1, eth: 2, fncy: 3
signatureType: TicketType.assetTransfer,
toAddress: "0x1234...", //코인을 받을 주소
transferVal: "1000000000000000000", //보낼 수량 (단위: wei)
txGasPrice: "10000000000", //Gas Price (단위: wei)
assetId: 6, //보낼 자산 asset ID
maxPriorityPerGas: nil, //ETH 전송일 경우 사용
maxFeePerGas: nil, // ETH전송일 경우 사용
txGasLimit: 21000 // Gas Limit
)
Token 전송(Contract 실행)
let ticketUUID: String = try await fncyWallet.makeTicket(
wid: 10000, //지갑 ID
chainId: 3, // bsc: 1, eth: 2, fncy: 3
signatureType: TicketType.smartContract, //
toAddress: "0x1234...", //코인을 받을 주소
transferVal: "0", //보낼 수량 (단위: wei)
txGasPrice: "10000000000", //Gas Price (단위: wei)
contractAddress: "0x1234...", //Contract Address
txInput: "0x123456....", //Data
assetId: 6, //보낼 자산 asset ID
maxPriorityPerGas: nil, //ETH 전송일 경우 사용
maxFeePerGas: nil, // ETH전송일 경우 사용
txGasLimit: 21000 // Gas Limit
)
WalletConnect
let ticketUUID: String = try await fncyWallet.makeTicket(
wid: 10000, //지갑 ID
chainId: 3, // bsc: 1, eth: 2, fncy: 3
signatureType: TicketType.walletConnect, //
toAddress: "0x1234...", //코인을 받을 주소
transferVal: "1000000000000000000", //보낼 수량 (단위: wei)
txGasPrice: "10000000000", //Gas Price (단위: wei)
contractAddress: "0x1234...", //Contract Address
txInput: "0x123456....", //Data
assetId: 6, //보낼 자산 asset ID
maxPriorityPerGas: nil, //ETH 전송일 경우 사용
maxFeePerGas: nil, // ETH전송일 경우 사용
txGasLimit: 21000 // Gas Limit
)
티켓 정보 확인
발행된 티켓UUID를 사용하여 해당 티켓 정보를 조회할 수 있습니다.
티켓UUID를 얻는 방법은 티켓 생성을 확인하십시오.
let ticket: FncyTicket = try await fncyWallet.getTicketInfo(ticketUuid: "ticketUUID")
See Also
getTicketInfo
FncyTicket
티켓 전송
티켓 전송은 서버에 등록된 티켓 정보를 사용하여 실제 트랜잭션 실행을 요청합니다.
티켓 전송이 성공하면 해당 트랜잭션 이력은 블록체인에 영구적으로 포함되며 변경하거나 취소할 수 없습니다.
발행된 티켓UUID와 지갑 비밀번호를 전달하여 티켓에 해당하는 트랜잭션을 실행시킵니다.
티켓UUID를 얻는 방법은 티켓 생성을 확인하십시오.
let txId: String = try await fncyWallet.sendTicket(
ticketUuid: "ticketUuid", // Ticekt UUID
pinNumber: "000000" // 지갑 비밀번호
)
트랜잭션 결과 확인
반환된 txId를 FncyScan에서 조회
let txId = try await fncyWallet.sendTicket(ticketUuid: "ticketUuid"
pinNumber: "000000")
print(txId)
// 0xc19f68e548c2ed933291aa4cbc9748b4d2b0de4bf1a5516f0b74579fb8e13b54
// FncyScan(Testnet): https://fncyscan-testnet.fncy.world/tx/0xc19f68e548c2ed933291aa4cbc9748b4d2b0de4bf1a5516f0b74579fb8e13b54