You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GitHub Discussion이 번역을 지원하기 때문에 한국어로 적었습니다. 문제가 있다면 영어로 적겠습니다.
NCIP로 적어야 되는 일수도 있지만 일단 편한 형태로 Discussion으로 적습니다.
제가 잘못 이해하고 적은 부분이 있을 수 있습니다. 편히 알려주세요 🙏🏻
본 제안이 필요 없을 수도 있습니다.
현재 마켓
현재 마켓은 아래 액션들과 함께 돌아갑니다.
RegisterProduct → 새로운 상품을 등록.
BuyProduct → 등록된 상품을 구매.
CancelProductRegistration → 등록된 상품을 내림. (취소함)
RegisterProduct 액션에서 Guid IRandom.GenerateRandomGuid()로 productId 를 만들어 사용합니다. 그리곤 BuyProduct 에서 물건을 구매할 때 사용합니다.
그리고 판매한 상품들은 ProductsState 에 productId 를 담아 저장하고 구매할 때 제거합니다.
개인적으로 느끼는 문제점
마켓 웹 서비스를 만들려고 했는데 판매 및 구매 방식이 비효율적이라고 느낍니다. AP 포션을 개당 X NCG 가격으로 팔고 싶다고 생각해도 그것이 어렵습니다. 개당 X NCG로 동일한 AP 포션 상품 묶음을 N개 만들어야 합니다. 묶음 단위가 커지게 되면 비싸게 되므로 자연스레 적은 수의 묶음으로 팔게 되고 많은 액션을 실행해야 하니 트랜잭션 수수료도 많이 필요하고 시간도 자연스레 많이 소모됩니다. 블록 스토리지를 많이 소모하는 것은 물론이고 상태도 N배 만큼 증가합니다.
더욱이 ProductsState에 productId를 쌓고 있는데 많은 물품을 팔게 되면 이 상태의 크기가 커집니다. 이는 불필요한 성능 저하를 유발할 수 있다고 생각합니다.
구매하는 입장에서도 A 유저가 올려놓은 개당 X NCG인 AP 포션 묶음의 productId들을 수집하여 구매해야 합니다.
위와는 문맥이 다르지만 액션을 확인하다 보니 ProductReceipt는 달리 사용되는 곳이 없지만 영구적으로 남고 있습니다. (GitHub Code Search)
드래프트
기존 구현을 대체해야만 한다고 생각하는 건 아니고, 새로운 거래 방식이 되어도 좋다고 생각합니다. 다만 구현 유지보수 비용이 발생하니 하나만 채택하는게 좋지 싶습니다.
목표는 아래 처럼 거래할 수 있는 것입니다:
판매자는 아이템을 X 가격에 N개의 수량을 판매대에 올려놓을 수 있다.
구매자는 판매자가 X 가격에 판매대에 올려놓은 아이템을 임의로 M개 만큼 구매할 수 있다. (꼭 N개를 모두 구매할 필요가 없습니다).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Warning
Note
현재 마켓
현재 마켓은 아래 액션들과 함께 돌아갑니다.
RegisterProduct
→ 새로운 상품을 등록.BuyProduct
→ 등록된 상품을 구매.CancelProductRegistration
→ 등록된 상품을 내림. (취소함)RegisterProduct
액션에서Guid IRandom.GenerateRandomGuid()
로productId
를 만들어 사용합니다. 그리곤BuyProduct
에서 물건을 구매할 때 사용합니다.그리고 판매한 상품들은
ProductsState
에productId
를 담아 저장하고 구매할 때 제거합니다.개인적으로 느끼는 문제점
마켓 웹 서비스를 만들려고 했는데 판매 및 구매 방식이 비효율적이라고 느낍니다. AP 포션을 개당 X NCG 가격으로 팔고 싶다고 생각해도 그것이 어렵습니다. 개당 X NCG로 동일한 AP 포션 상품 묶음을 N개 만들어야 합니다. 묶음 단위가 커지게 되면 비싸게 되므로 자연스레 적은 수의 묶음으로 팔게 되고 많은 액션을 실행해야 하니 트랜잭션 수수료도 많이 필요하고 시간도 자연스레 많이 소모됩니다. 블록 스토리지를 많이 소모하는 것은 물론이고 상태도 N배 만큼 증가합니다.
더욱이
ProductsState
에productId
를 쌓고 있는데 많은 물품을 팔게 되면 이 상태의 크기가 커집니다. 이는 불필요한 성능 저하를 유발할 수 있다고 생각합니다.구매하는 입장에서도 A 유저가 올려놓은 개당 X NCG인 AP 포션 묶음의 productId들을 수집하여 구매해야 합니다.
위와는 문맥이 다르지만 액션을 확인하다 보니
ProductReceipt
는 달리 사용되는 곳이 없지만 영구적으로 남고 있습니다. (GitHub Code Search)드래프트
기존 구현을 대체해야만 한다고 생각하는 건 아니고, 새로운 거래 방식이 되어도 좋다고 생각합니다. 다만 구현 유지보수 비용이 발생하니 하나만 채택하는게 좋지 싶습니다.
목표는 아래 처럼 거래할 수 있는 것입니다:
기대하는 장점은:
액션 인자 초안:
RegisterFungibleItem(itemId, price, amount)
RegisterNonFungibleItem()
BuyFungibleItem(avatarAddress, itemId, price, amount)
BuyNonFungibleItem()
Beta Was this translation helpful? Give feedback.
All reactions