개요
Signature와 원본 메시지, 공개키를 비교하여 해당 Signature를 특정 주소가 서명한 것이 맞는지 검증합니다.
서명 당시의 prefix와 검증에 쓰일 prefix가 동일해야만 Signature 복구 시 서명자의 값이 일치합니다.
Android: 서명자임을 검증할 공개키(fromAddress)가 Signature의 실제 서명자가 아니라면, 서명자와 다른 공개키를 반환합니다.
iOS: 변수로 전달받은 Signature와 새롭게 서명한 Signature를 비교합니다(단말기에 개인키 필요). 일치하지 않으면 오류를 반환합니다.(ex: “서명이 일치하지 않습니다.”)
prefix에 지정한 값으로만 '검증'이 가능합니다.
즉, 'NFT 홀더인증(서명)'에 사용한 prefix를 'NFT 홀더인증(검증)' prefix 매개변수에 그대로 넣어야 문제없이 검증됩니다.
Parameters
Response
example
// parameters
val network = "ethereum"
val signature = "f0a0d0f1489fd22..."
val fromAddress = "0x..."
val collection_id = "0x..."
val token_id = "1"
val prefix = "singOK"
val getSignerAddressFromSignature = getSignerAddressFromSignature(network,
signature,
fromAddress,
collection_id,
token_id,
prefix)
println(getSignerAddressFromSignature)
/**
* {
"result" : "OK",
"value" : [
{"address" : "0x.."}
]
}
*/
Parameters
Response
example
// parameters
let network = "ethereum"
let signature = "f0a0d0f1489fd22..."
let fromAddress = "0x..."
let collection_id = "0x..."
let token_id = "1"
let prefix = "singOK"
let getSignerAddressFromSignature = try await getSignerAddressFromSignature(
network:network,
signature:signature,
fromAddress:fromAddress,
collection_id:collection_id,
token_id:token_id,
prefix:prefix)
print(getSignerAddressFromSignature)
/**
* {
"result" : "OK",
"value" : [
{"address" : "0x.."}
]
}
*/
RequestURL
Parameters
Response
value (array of object)
example
{
"network": ["ethereum"],
"account": "0x...",
"collection_id": "0x...",
"token_id": 1,
"signature": "0x..."
}
let nfts = await nft.getNFTsByWallet(network, account, collection_id, token_id, signature);
/**
* {
"result" : "OK",
"value" : [
{"address" : "0x.."}
]
}
*/