반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- html5글자효과
- PostgresSQL
- html5디자인예제
- html5웹디자인
- 솔라나cookbook
- html5포트폴리오예제
- NFT솔라나
- NFT개발
- HTML5
- html5웹디자인예제
- pgpool
- 솔라나
- 웹예제
- 웹디자인
- 솔라나NFT
- NFT
- solanaNFT
- 서버
- 포트폴리오예제
- html5배경만들기
- html5기초
- 포트폴리오
- 이중화
- html5예제
- 웹디자인예제
- nft예제
- html5popup
- grpc
- html5기초예제
- 솔라나개발
Archives
- Today
- Total
Scikit Web
Solana sign and verify messages with wallets - 솔라나 지갑 정보로 메세지 사인 본문
NFT/Solana(솔라나)
Solana sign and verify messages with wallets - 솔라나 지갑 정보로 메세지 사인
Keun0 2022. 6. 21. 21:56728x90
반응형
솔라나에서 메세지를 tweetnacl 이라는 라이브러리를 이용하여 encode, decode 를 하고 있다.
솔라나가.. cookbook 에서 알려주는 예제 하고.. 메타플렉스 개발문서에서 알려주는 것 하고 차이가 좀 있어서..
문서 2개를 다 같이 확인해야 한다.. 관련 예제가 솔라나 쿡북, 메타플렉스 개발문서 둘 다 있었으나.. 사용하기 더 쉽고 좋아보이는 cookbook 예제를 사용하여 예제를 만들었다.
cookbook 예제와 다른점은 메세지를 JSON Object로 사용하는 것과 signature 의 경우 Uint8Array 형태로 주는 결과를
encodeBase64를 이용하여 보기 좋게 변경한 것이다.
import { Keypair } from "@solana/web3.js";
import nacl from "tweetnacl";
import { decodeBase64, decodeUTF8, encodeBase64 } from "tweetnacl-util";
async function main() {
(async () => {
const keypair = Keypair.fromSecretKey(
Uint8Array.from([
174, 47, 154, 16, 202, 193, 206, 113, 199, 190, 53, 133, 169, 175, 31,
56, 222, 53, 138, 189, 224, 216, 117, 173, 10, 149, 53, 45, 73, 251,
237, 246, 15, 185, 186, 82, 177, 240, 148, 69, 241, 227, 167, 80, 141,
89, 240, 121, 121, 35, 172, 247, 68, 251, 226, 218, 48, 63, 176, 109,
168, 89, 238, 135,
])
);
const message = JSON.stringify({
publicKey: "hello world",
message: "hello",
});
const messageBytes = decodeUTF8(message);
const signature = nacl.sign.detached(messageBytes, keypair.secretKey);
console.log("signature ", encodeBase64(signature));
const result = nacl.sign.detached.verify(
messageBytes,
signature,
keypair.publicKey.toBytes()
);
console.log(result);
})();
}
// We recommend this pattern to be able to use async/await everywhere
// and properly handle errors.
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
728x90
반응형
'NFT > Solana(솔라나)' 카테고리의 다른 글
Comments