NFT 배포시 oversized data 오류

안녕하세요.
baobab network 에서 klaystagram 으로 샘플 만드는 와중에 궁금한점이 있어서 문의드립니다.
https://ko.docs.klaytn.com/dapp/tutorials/klaystagram

truffle 을 이용해서 smart contract 를 생성하고 nft 발행하는데 조금 큰 파일을 배포하니 oversized data 오류가 발생해서 포럼을 검색하다 아래와 같은 글을 찾았습니다.
https://forum.klaytn.foundation/t/topic/191/4
transaction 의 최대 크기를 32KB 이내로 전송해야 하기때문에 만약 파일이 크다면 32KB 이내로 나눠서 여러번 배포해야 한다는 의미로 이해가 됩니다.

파일이 클수록 여러번 배포해야 하기때문에 수수료가 더 많이 부과되는 구조인것 같은데 제가 이해한 내용이 맞나요?

컨트랙트 배포시 oversized 오류가 난것인지, 아니면 컨트랙트 배포 후 민팅 함수 실행시 오류가 난것인지 질문만으로는 이해할수가 없어 답변드리기 힘들것같습니다.

실행하신 명령어 및 에러메시지를 같이 첨부주시면 답변드리는데 도움될것같습니다.

감사합니다.

컨트랙트는 잘 배포했고 사이즈가 작은 파일들은 민팅 후 다시 가져오기도 잘되고 있습니다.
다만 사이즈가 조금 큰 파일(대략 100KB 이상 등등)을 민팅시에 oversized data 오류가 발생하고 있습니다.
민팅시에 사용하는 함수는 klaystagram 을 참조했습니다.

Last login: Tue Mar  1 18:22:16 on ttys001
johnkim@gimjun-uui-MacBookPro 20220301 % node -v
v14.17.3
johnkim@gimjun-uui-MacBookPro 20220301 % npm -v
6.14.13
johnkim@gimjun-uui-MacBookPro 20220301 % yarn -v
1.22.17
johnkim@gimjun-uui-MacBookPro 20220301 % truffle version
Truffle v5.0.26 (core: 5.0.26)
Solidity v0.5.0 (solc-js)
Node v14.17.3
Web3.js v1.0.0-beta.37
johnkim@gimjun-uui-MacBookPro 20220301 % 
const valueTransaction = await nftWorksContract.methods.uploadWorks(hexString, title, location, caption).send({
                from: walletAddress,
                gas: '200000000',
            });

오류가 발생하면 아래와 같은 로그를 출력합니다.

Error: Returned error: oversized data
    at Object.ErrorResponse (/Users/johnkim/WebstormProjects/prototype_api/node_modules/caver-js/packages/caver-core-helpers/src/errors.js:87:16)
    at /Users/johnkim/WebstormProjects/prototype_api/node_modules/caver-js/packages/caver-core-requestmanager/src/index.js:155:44
    at XMLHttpRequest.request.onreadystatechange (/Users/johnkim/WebstormProjects/prototype_api/node_modules/caver-js/packages/caver-core-requestmanager/caver-providers-http/src/index.js:122:13)
    at XMLHttpRequestEventTarget.dispatchEvent (/Users/johnkim/WebstormProjects/prototype_api/node_modules/xhr2-cookies/dist/xml-http-request-event-target.js:34:22)
    at XMLHttpRequest._setReadyState (/Users/johnkim/WebstormProjects/prototype_api/node_modules/xhr2-cookies/dist/xml-http-request.js:208:14)
    at XMLHttpRequest._onHttpResponseEnd (/Users/johnkim/WebstormProjects/prototype_api/node_modules/xhr2-cookies/dist/xml-http-request.js:318:14)
    at IncomingMessage.<anonymous> (/Users/johnkim/WebstormProjects/prototype_api/node_modules/xhr2-cookies/dist/xml-http-request.js:289:61)
    at IncomingMessage.emit (events.js:387:35)
    at endReadableNT (internal/streams/readable.js:1317:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)
Error: Error: Returned error: oversized data
    at Object.uploadWorks (/Users/johnkim/WebstormProjects/prototype_api/modules/klaytn.js:55:19)
    at runNextTicks (internal/process/task_queues.js:60:5)
    at listOnTimeout (internal/timers.js:526:9)
    at processTimers (internal/timers.js:500:7)
    at async Object.deployNft (/Users/johnkim/WebstormProjects/prototype_api/services/nftService.js:75:38)
    at async exports.deployNft (/Users/johnkim/WebstormProjects/prototype_api/controllers/nftController.js:35:9)

아 이미지를 온체인에 업로드 하시는 부분이시군요,
이 부분에 대한 구체적인 설명은 개발팀에서 드려야 할것 같지만.
일단 제가 알고있는 지식선에서 설명드리면

온체인 데이터 기록은 상대적으로 비용이 비싸기 때문에, 제한된 데이터만 일단 업로드가 가능하십니다. 따라서 효율적인 서비스를 위해서는, 이미지 보다는 이미지 경로를 보관하시고, 이미지 자체는 분산화 서버로 운영되는 IPFS 등을 통해 Hashed CID 주소로 mapping하시는 방향이 더 경제적이시리라 생각됩니다.

실제로 NFT의 표준화된 솔리디티 컨트랙트 소스는 온체인 데이터 보다는 이미지 경로 (URI) 형태로 저장되도록 설계가 되어있습니다.

예제에서 이미지 파일을 byte화 해서 업로드 하는 형태는, 일단 데이터 기록 방식에 대한 다양성을 설명하기 위함이 아닐까 생각되며, 튜토리얼을 따라 예지를 수행하는 목적이시면, 용량 허용범위 내에서 진행해보시는게 좋을것 같습니다.

답변이 되셨으면 좋겠습니다. 답변이 안되셨거나 추가 질문있으시면, 개발팀쪽에 답변 도움 요청드리겠습니다.

감사합니다.