티스토리 뷰
https://app.buildspace.so/projects/CO961ddb5f-f428-4608-9949-a9a2f461eb3f
메마 지갑 연결, 트젝, 펀딩등을 해보았으니 nft민팅 차례이다
이과제는 3단계로 이루어졌다.
1. NFT 로직관련 스마트 컨트랙트 짜기
2. 스마트컨트랙트 deploy
3. 프론트에 컨트랙트 연결하기
예제는 오픈제플린 erc721을 사용한다
근데 요새는 아주키가 만든 erc721a를 사용하는게 대세
Solidity 개념
상태변수 (State Variable)
상태 변수는 DB안에 있는 데이터처럼, 컨트랙트 저장소(이더리움 블록체인)에 영구적으로 저장되는 변수를 의미한다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 1;
}
tokenUri 는 links to a JSON file called the metadata
오픈씨 기준을 맞출것
컨트랙/오픈씨/레리블 테스트 조회
- Head to rinkeby.rarible.com.
- Create this url: https://rinkeby.rarible.com/token/INSERT_DEPLOY_CONTRACT_ADDRESS_HERE:INSERT_TOKEN_ID_HERE.
json 바로 디코딩해서 nft 보여주는사이트
https://nftpreview.0xdev.codes/
NFT데이터 저장법
1. url - 쿨캣이 이렇게하지만 json/이미지 서버에 문제가 생기면 내려감
2. on chain - Loot가 이렇게함. 이더리움체인이 사는한 영원하나 저용량만 가능
온체인시 SVG를 사용한다
json 데이터는 링크 대신 base64 인코딩을한다
data:application/json;base64,베이스64인코딩내용
_setTokenURI(newItemId, "data:application/json;base64,ewogICAgIm5hbWUiOiAiRXBpY0xvcmRIYW1idXJnZXIiLAogICAgImRlc2NyaXB0aW9uIjogIkFuIE5GVCBmcm9tIHRoZSBoaWdobHkgYWNjbGFpbWVkIHNxdWFyZSBjb2xsZWN0aW9uIiwKICAgICJpbWFnZSI6ICJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSEJ5WlhObGNuWmxRWE53WldOMFVtRjBhVzg5SW5oTmFXNVpUV2x1SUcxbFpYUWlJSFpwWlhkQ2IzZzlJakFnTUNBek5UQWdNelV3SWo0TkNpQWdJQ0E4YzNSNWJHVStMbUpoYzJVZ2V5Qm1hV3hzT2lCM2FHbDBaVHNnWm05dWRDMW1ZVzFwYkhrNklITmxjbWxtT3lCbWIyNTBMWE5wZW1VNklERTBjSGc3SUgwOEwzTjBlV3hsUGcwS0lDQWdJRHh5WldOMElIZHBaSFJvUFNJeE1EQWxJaUJvWldsbmFIUTlJakV3TUNVaUlHWnBiR3c5SW1Kc1lXTnJJaUF2UGcwS0lDQWdJRHgwWlhoMElIZzlJalV3SlNJZ2VUMGlOVEFsSWlCamJHRnpjejBpWW1GelpTSWdaRzl0YVc1aGJuUXRZbUZ6Wld4cGJtVTlJbTFwWkdSc1pTSWdkR1Y0ZEMxaGJtTm9iM0k5SW0xcFpHUnNaU0krUlhCcFkweHZjbVJJWVcxaWRYSm5aWEk4TDNSbGVIUStEUW84TDNOMlp6ND0iCn0=")
이렇게 넣으면됨
여기서 랜덤화 하는법
random(string(abi.encodePacked("FIRST_WORD", Strings.toString(tokenId))));
The actual string FIRST_WORD and a stringified version of the tokenId. I combine these two strings using abi.encodePacked and then that combined string is what I use as the source of randomness.
근데 abi.encodePacked(a,b)라는 함수가 진짜 단순해서
b = string(abi.encodePacked("hello", " world"));
// b string: hello world
이정도라 이걸로안됨
ipfs
https://docs.ipfs.io/concepts/what-is-ipfs/#participation
events (솔리디티)
https://docs.soliditylang.org/en/v0.4.21/contracts.html#events
가스
'dev > Solidity' 카테고리의 다른 글
Events (0) | 2022.03.15 |
---|---|
Contract to Contract (0) | 2022.03.15 |
1. Buildspace : Intro to web3 -- build a web3 version of Twitter: (0) | 2022.02.15 |
0. Buildspace 로 솔리디티 공부하기 (0) | 2022.02.09 |
LV.1 crypto zombies - 6 ERC721 & Crypto-Collectibles (0) | 2021.11.30 |