@metaplex-foundation/mpl-token-metadata
패키지의 Metadata.fromAccountInfo(accountInfo, 0)[0]
코드를 활용하던 중에 다음과 같은 에러가 발생했다.
[Nest] 19781 - 05/18/2022, 3:26:17 PM ERROR [ExceptionsHandler] The value of "offset" is out of range. It must be >= 0 and <= 78. Received 1653705784
RangeError: The value of "offset" is out of range. It must be >= 0 and <= 78. Received 1653705784
at new NodeError (node:internal/errors:371:5)
at boundsError (node:internal/buffer:86:9)
at Buffer.readUInt32LE (node:internal/buffer:220:5)
at Object.read (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/beets/numbers.ts:54:16)
at Object.toFixedFromData (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/beets/string.ts:58:21)
at fixBeetFromData (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/beet.fixable.ts:29:17)
at FixableBeetArgsStruct.toFixedFromData (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/struct.fixable.ts:96:40)
at fixBeetFromData (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/beet.fixable.ts:29:17)
at FixableBeetStruct.toFixedFromData (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/struct.fixable.ts:96:40)
at FixableBeetStruct.deserialize (/home/gus/beet--metaplex-foundation-beet-0.1.0/beet/src/struct.fixable.ts:62:17)
오픈소스 프로젝트이기 때문에, 정식 배포된 버젼의 소스코드에 버그가 있으리라고 생각은 안했지만, 내가 받아온 depenedency 들의 버젼의 문제가 있을 수도 있다고 생각되어 우선은 에러가 발생한 @metaplex-foundation/beet
패키지의 소스코드를 디버깅해보았다.
디버깅 하는 방법은 node_modules 로컬 파일 바라보기 포스팅에서 소개한 yarn link 기능을 통해 위에서 호출한 function 들 속에서 console.log 를 열심히 찍어보았다.
로그를 살펴보니 Buffer 에 담긴 정보를 cursor 를 이동해가며 deserialize 하여 NFT 의 metadata 정보들을 읽어와야하는데, cursor 가 0 -> 33 -> 65 식으로 증가하다가 말도안되게 큰 값인 1653705784 로 설정되면서 Buffer 에서 수용 가능한 offset 을 초과하여 애러가 발생했다.
솔라나의 모든 PubKey 는 같은 SystemProgram 에 의해 생성되지만 어떤 프로그램에게 전가된 주소냐에 따라 다른 정보 (data = buffer) 를 가지고 있게 된다. 필자가 입력한 Pubkey 에는 Metadata.fromAccountInfo(accountInfo, 0)[0]
함수에서 기대하는 정보가 담겨있지 않아서 위 같은 애러가 발생하게 된다.
해당 함수에 NFT 의 mint 주소를 입력했어야 했는데, token 주소를 입력하여 에러가 발생했다.
'블록체인 > 솔라나' 카테고리의 다른 글
팬텀 지갑 제공 정보 (0) | 2022.06.14 |
---|---|
서명 검증 함수 소개 (0) | 2022.05.23 |
sendAndConfirmTransaction 서명 오류 (0) | 2022.05.16 |
솔라나 Generative Art 생성 방법 (0) | 2022.04.28 |
솔라나 NFT on-chain metadata "tokenStandard" (0) | 2022.04.26 |