Closed ybuser closed 2 years ago
수정사항 반영 했습니다!
기본 구조는 다음과 같습니다
struct TwitchUser {
string TwitchId; // Users' Twitch ID (user & streamer)
address PublicAddress; // Wallet Public Address
// My Token IDs ([One Wallet --> Many Tokens])
uint256[] RawTokenIds; // Token IDs not minted yet
uint256[] MintedTokenIds; // Minted Token IDs
}
struct OoakToken {
uint256 TokenId; // Token ID
string NameTag; // Token NameTag
string TokenURI; // Token URI for NFT
bool isMinted; // True if Minted, used to find nametag from user efficiently (ex. changeOwnerOfToken)
}
mapping(string => TwitchUser) IdToUser; // Twitch ID to User struct
mapping(address => TwitchUser) AddressToUser; // Public Address to User struct
mapping(uint256 => OoakToken) TokenIdToToken; // (Token ID from Users' MyTokenIds) --> (OoakToken struct)
mapping(string => bool) IsNameTagExist; // True if Name Tag is already used
네 수고하셨습니다 그 뒤부터 제가 할게요
지갑 주소와, ID Tag 를 일대다로 연결할 수 있게 만들었습니다.
solidity 0.8.0 버전 이하에는 ABIEncoder V2가 적용되지 않아서 string array를 사용할 수 없고, pragma experimental ABIEncoderV2 를 적용하면 사용이 가능하지만, 보안 상 취약할 수 있다고 합니다.
그래서 string array로 값을 반환해야되는 getNameTags나 getTokenURIs 를 각각 getNameTagByIndex, getNameTagNumber 와 getTokenURIByIndex, getTokenNumber 두 개의 함수로 나눴습니다.
아직 테스트는 진행해보지 않은 상태입니다.