📜 [專欄新文章] Gas Efficient Card Drawing in Solidity
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Assign random numbers as the index of newly minted NFTs
Scenario
The fun of generative art NFT projects depends on randomness. The industry standard is “blind box”, where both the images’ serial number and the NFTs’ index are predetermined but will be shifted randomly when the selling period ends. (They call it “reveal”) This approach effectively solves the randomness issue. However, it also requires buyers to wait until the campaign terminates. What if buyers want to know the exact card right away? We’ll need a reliable onchain card drawing solution.
The creator of Astrogator🐊 isn’t a fan of blind boxes; instead, it thinks unpacking cards right after purchase is more interesting.
Spec
When initializing this NFT contract, the creator will determine the total supply of it. And there will be an iterable function that is randomly picking a number from the remaining pool. The number must be in range and must not collide with any existing ones.
Our top priority is accessibility/gas efficiency. Given that gas cost on Ethereum is damn high nowadays, we need an elegant algorithm to control gas expanse at an acceptable range.
Achieving robust randomness isn’t the primary goal here. We assume there’s no strong financial incentive to cheat, so the RNG isn’t specified. Implementers can bring their own source of randomness that they think is good enough.
Implementation
Overview
The implementation is pretty short and straightforward. Imagine there’s an array that contains all remaining(unsold) cards. When drawIndex() is called, it generates a (uniform) random seed to draw a card from the array, shortens the array, and returns the selected card.
Algorithm
Drawing X cards from a deck with the same X amount of cards is equal to shuffling the deck and dealing them sequentially. It’s not a surprise that our algorithm is similar to random shuffling, and the only difference is turning that classic algo into an interactive version.
A typical random shuffle looks like this: for an array with N elements, you randomly pick a number i in (0,N), swap array[0] and array[i], then choose another number i in (1,N), swap array[1] and array[i], and so on. Eventually, you’ll get a mathematically random array in O(N) time.
So, the concept of our random card dealing is the same. When a user mints a new card, the smart contract picks a number in the array as NFT index, then grabs a number from the tail to fill the vacancy, in order to keep the array continuous.
Tweak
Furthermore, as long as the space of the NFT index is known, we don’t need to declare/initialize an array(which is super gas-intensive). Instead, assume there’s such an array that the n-th element is n, we don’t actually initialize it (so it is an array only contains “0”) until the rule is broken.
For the convenience of explanation, let’s call that mapping cache. If cache[i] is empty, it should be interpreted as i instead of 0. On the other hand, when a number is chosen and used, we’ll need to fill it up with another unused number. An intuitive method is to pick a number from the end of the array, since the length of the array is going to decrease by 1.
By doing so, the gas cost in the worst-case scenario is bound to be constant.
Performance and limitation
Comparing with the normal ascending index NFT minting, our random NFT implementation requires two extra SSTORE and one extra SLOAD, which cost 12600 ~ 27600 (5000+20000+2600) excess gas per token minted.
Theoretically, any instantly generated onchain random number is vulnerable. We can restrict contract interaction to mitigate risk. The mitigation is far from perfect, but it is the tradeoff that we have to accept.
ping.eth
Gas Efficient Card Drawing in Solidity was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有44部Youtube影片,追蹤數超過4萬的網紅NLF賽事精華,也在其Youtube影片中提到,►Facebook聯絡我: https://www.facebook.com/funznlf NLF是英雄聯盟賽事剪輯頻道 這賽季會盡量剪輯我覺得有趣的賽事精華 全場精華 — 即是將Bo3或Bo5的比賽濃縮為20-30分鐘以內的精華,所以剪輯會比較快節奏。 希望喜歡影片的人可以分享留言訂閱 大...
「rng new」的推薦目錄:
- 關於rng new 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於rng new 在 Team SMG Facebook 的最讚貼文
- 關於rng new 在 GamingDose Facebook 的最佳解答
- 關於rng new 在 NLF賽事精華 Youtube 的最讚貼文
- 關於rng new 在 Team Secret Youtube 的最佳貼文
- 關於rng new 在 FERNTUBE (Fernanda Ly) Youtube 的最佳解答
- 關於rng new 在 RNG SUP、CoreJJ、RNG New在PTT/mobile01評價與討論 的評價
- 關於rng new 在 RNG SUP、CoreJJ、RNG New在PTT/mobile01評價與討論 的評價
- 關於rng new 在 c# - Randomize a List
- Stack Overflow 的評價
rng new 在 Team SMG Facebook 的最讚貼文
From all of us at Team SMG, happy new year!
May your 2021 be blessed with good RNG and cooperative MM team mates.
rng new 在 GamingDose Facebook 的最佳解答
ผู้ร่วมทดสอบ Artifact 2.0 Beta กล่าว ตัวเกมในตอนนี้ได้ "เปลี่ยนไปโดยชิ้นเชิง" กติกาใหม่ การ์ดใหม่ รูปแบบการเล่นแบบใหม่ ภาพรวมของเกมเป็นที่น่าพอใจ แต่ยังคงเร็วไปที่จะตัดสินอะไรในตอนนี้
.
โดยที่ Jordan Forward จาก pcgamesn.com ได้พูดถึงตัวเกม Artifact ทั้งตัวก่อนหน้านี้และตัวใหม่ 2.0 ที่เขาได้เล่นอยู่ กล่าวว่า ตัวเขาเองได้เสียเวลาไปกว่า 40 ชม. ใน Artifact เวอร์ชั่นแรก ทำให้เขาคิดว่าตัว 2.0 ก็คงจะไม่ต่างกัน แต่ความรู้สึกนั้นกลับไม่เกิดขึ้น Artifact 2.0 คือความแตกต่างอย่างชัดเจน ทั้ง campaign ใหม่, ability ใหม่ และอะไรอีกหลายอย่างจนนับไม่ถ้วน ทำให้มันเป็นเหมือน "อีกเกม" เลยก็ว่าได้
.
อย่างแรก ระบบ 3 เลนที่ Artifact ตั้งใจทำให้เป็นจุดเด่นของเกมนั้นยังคงอยู่ แต่ตอนนี้สามารถมองทั้ง 3 เลนได้พร้อมกันแล้ว ทำให้รู้สึกเหมือนได้เล่นเกมเดียวอย่างแท้จริง มิใช่เล่น 3 เกมพร้อมกันเหมือนแต่ก่อน Mana ที่ใช้ในการร่ายการ์ดต่าง ๆ ก็ถูกยุบรวมกัน ทำให้ผู้เล่นต้องระมัดระวังและคิดก่อนใช้มากขึ้น ไม่สามารถเก็บไว้เพื่อถล่มใส่ป้อมไหนป้อมหนึ่งได้อีกต่อไป
.
ค่าพลังต่าง ๆ ของการ์ดก็ถูกลดลงอย่างนัยสำคัญ ทำให้ไม่เกิดเด็คหรือคอมโบที่ไร้เทียมทานอีกต่อไป มีการลดระดับของการ RNG ลง คราวนี้ Creep จะเกิดในตำแหน่งและเวลาที่คาดเดาได้ Hero สามารถถูกส่งลงสนามได้ตามสถานการณ์ที่คาดหวังไว้ ซึ่งแต่ก่อน การที่ Creep สุ่มเกิดและสุ่มลูกศรโจมตี ทำให้ผู้เล่นต้องเสี่ยงที่จะสูญเสีย Hero ของพวกเขาตั้งแต่เทรินแรกที่ลงมา ซึ่งมันอาจดูท้าทาย แต่ในความเป็นจริงแล้วมันไม่แฟร์กับผู้เล่นเลยแม้แต่น้อย
.
ตัวอย่างที่ดีในการเปลี่ยนแปลงสำคัญของ Artifact 2.0 คือ ในเกม ผู้เล่นจะส่ง Hero ลงได้ใน 3 เลน ได้แก่ Offlane, Mid lane และ Safe lane ตามลำดับเหมือนใน Dota 2 โดย "Safe" ที่ถูกเรียกแบบนั้นเพราะ คือ Safe lane ของเราก็คือ Offlane ของฝ่ายตรงข้ามนั่นเอง เนื่องจากเราจะได้เห็นการเดินเกมของฝ่ายตรงข้ามก่อน ทำให้สามารถวางแผนรับมือได้อย่างถูกต้อง ซึ่งถือเป็นการประยุกต์เกม MOBA ให้กลายเป็นแบบ CCG ได้อย่างน่าสนใจ
.
ทั้งหมดที่ว่ามานี้ทำให้ Artifact 2.0 ดูเป็นเกมที่มีความหวังมากขึ้น ผู้เล่นจะรู้สึกพอใจไม่ว่าพวกเขาจะจบเกมด้วยผลแบบไหน เราจะไม่รู้สึกว่าแพ้เพราะ "สู้ไม่ได้" อีกต่อไป นี่คือส่วนนหนึ่งที่ Jordan ได้บรรยายไว้ใน Review ของเขา แต่ก็อาจจะเร็วเกินไปที่จะสรุปว่าเกมจะออกมาดีในที่สุดหรือไม่ เพราะหลายอย่างก็ยังไม่เสร็จดี เช่นรูปการ์ดที่น่าวาดส่ง ๆ ด้วยโปรแกรม Paint เป็นต้น (แต่เขาก็ยอมรับว่าชอบงาน art เผา ๆ แบบนี้อยู่เหมือนกัน)
.
Artifact ถือเป็นเกมที่ทั้งโลกจับตามอง เพราะมันเป็นเหมือนภาคต่อตัวแรกของ Dota 2 หนึ่งในสุดยอดเกมด้าน Esports ของโลกในขณะนี้ ตัวเกม 2.0 Beta กำลังเปิดทดสอบแบบจำกัดจำนวนคน ซึ่งคาดว่าจะมีการขยายขนาดของผู้ทดสอบเร็ว ๆ นี้ ซึ่งอาจจะหมายถึงให้ทุกคนเข้าร่วมแบบ Free-to-Play ด้วยก็เป็นได้ ก็ต้องติดตามกันต่อไป
.
ที่มา https://www.pcgamesn.com/artifact/2-0-review
#ข่าวเกม #gamingdose #Artifact
The Co-Tester Artifact 2.0 beta says the game now has " changed by piece new rules, new cards, new play, the overview of the game is satisfying, but still too early to judge anything now.
.
Jordan forward from pcgamesn.com talks about the previous artifact games and 2.0 new ones he has played, said he has wasted over 40 hours. In the first version of artifact, it makes him think that the 2.0 is no difference, but the feeling doesn't happen. Artifact 2.0 is clearly the difference. Both new campaign, new ability and countless things make it like "another game" I think so.
.
First, the 3 Lane system that artifact intended to make the highlight of the game is still here, but now I can see all 3 lanes together. It makes me feel like I have played one game, not playing 3 games together like before. Mana used. To Cast Cards are collapsed. Players to be more careful and think before using. Can't be stored to collapse any fortress anymore.
.
The power of the card has been reduced significantly, no longer an invincible dek or combo. The level of rng is reduced. This time creep will be in position and predictable. Hero can be sent to the field. The expected situation that before the random creep was born and random arrow put players at risk of losing their hero from the first pour, which may seem challenging, but in fact, it's not fair to players at all.
.
A good example of artifact 2.0's important changes is that in the game, players will send hero in 3 Lanes: Offlane, mid lane and safe lane respectively, like in DOTA 2 by "safe" called. Because our safe lane is the opponent's offlane. Since we can see opponent's game walk before making it properly planned, which is an interesting application of moba game to become CCG.
.
All of these makes artifact 2.0 look more promising games. Players will feel satisfied. No matter what kind of results they finish the game, we won't feel lost because "can't fight" anymore. This is the part Jordan has narrated. In his review, but it may be too early to conclude whether the game will finally come out well, because many things are not done, such as nice cards, sent with paint program, etc. (but he admits that he likes this kind of burning art. Same)
.
Artifact is a game that the whole world watches because it is like DOTA 2 first sequel, one of the world's Top Esports games. The 2.0 beta is currently running limited testing, which is expected to be expanding. Testing soon, which might mean everyone to join in free-to-play. Stay tuned.
.
Source https://www.pcgamesn.com/artifact/2-0-review
#ข่าวเกม #gamingdose #ArtifactTranslated
rng new 在 NLF賽事精華 Youtube 的最讚貼文
►Facebook聯絡我: https://www.facebook.com/funznlf
NLF是英雄聯盟賽事剪輯頻道
這賽季會盡量剪輯我覺得有趣的賽事精華
全場精華 — 即是將Bo3或Bo5的比賽濃縮為20-30分鐘以內的精華,所以剪輯會比較快節奏。
希望喜歡影片的人可以分享留言訂閱
大家的支持就是頻道維持下去的動力
rng new 在 Team Secret Youtube 的最佳貼文
Catch the casters and player reaction of Uhigh's insane play against RNG! Follow their journey on the final day of the PUBG Mobile Peace Elite Asia Invitational!
? GET OUR MERCH HERE:
▶️ https://shop.teamsecret.gg
? FOLLOW TEAM SECRET:
▶️ Merch - https://shop.teamsecret.gg
▶️ Twitter - https://twitter.com/teamsecret
▶️ Instagram - https://www.instagram.com/TeamSecret/
▶️ Discord - https://discord.gg/teamsecret
▶️ Facebook - https://www.facebook.com/TeamSecret/
▶️ Website - https://www.TeamSecret.gg
⚔ TEAM SECRET LOL PLAYLIST:
▶️ https://bit.ly/2QKeG7x
? TEAM SECRET FORTNITE PLAYLIST:
▶️ https://bit.ly/33I4oKF
?TEAM SECRET DOTA 2 PLAYLIST:
▶️ https://bit.ly/3bmsuwY
? TEAM SECRET CS:GO PLAYLIST
▶️ https://bit.ly/2y2n3ot
? TEAM SECRET R6 PLAYLIST:
▶️ https://bit.ly/33PU2Z5
#TeamSecret #SecretPUBGM #PEI
rng new 在 FERNTUBE (Fernanda Ly) Youtube 的最佳解答
(Giveaway info is at the bottom)
Today we celebrate 10k subs with a Vivienne Westwood sample sale video that I've been meaning to post 🌟
I may or may not have been waiting for this milestone in order to do so 👀
I previously asked if everyone was open to a giveaway and I'm so excited to hold one now! The names of the prizes are also below in case you want to buy them yourself hahaha
Fun fact: The night before was when I dislocated my knee, but as a big fan and collector of VW I couldn't miss this sale. Pretty sure standing in line is what made my knee worse.... The few weeks in an immobiliser was worth it for this 🤗
I've really enjoyed being on YouTube, so thank you for your support thus far! Tbh I wasn't expecting to keep at it for so long lol
It's been fun learning how to edit videos and images too. I'm aware there are many things I could improve on and things I could nitpick at, but I feel like I've come a long way from my first upload 9 months ago 🥸
Again, thank you so much for your continued support in watching, commenting, and liking my videos. It means the world to me ❤
ーーーーーーー
#ferntube #viviennewestwood #giveaway
✩ Instagram: @warukatta
✩ Email: ferntube22@gmail.com
Please contact my agencies in regards to model work
ーーーーーーー
✩ Songs:
Waves - Fiji Blue (https://thmatc.co/?l=518C9DB2)
Lovely Day - VirgoZilla Beatz (https://thmatc.co/?l=184FE7FC/)
✩ Subtitle file: (https://drive.google.com/file/d/1GHCjMd_s-ciGbpcVa_p1W8XlnsnA0O6s/view?usp=sharing)
*** As Youtube has unfortunately discontinued community contributions, here is the script for anyone still willing to do subs for other languages. If you replace the english text with your language and email me the file, I'll be more than happy to upload it for everyone to see. Thank you for your helpful contributions until now!
✩ FTC: This giveaway is not sponsored by Vivienne Westwood, YouTube, nor any other company and all moneys spent is my own.
ーーーーーーー
Ferntube's 10k Subscriber Giveaway ❤️❤️❤️
Comment to win a pair of Vivienne Westwood earrings in celebration of 10k subs!
I want to share my happiness by giving two(!) subscribers the chance to win a pair of earrings each!
🌎 Giveaway is open worldwide 🌎
PRIZES:
✩✩ Vivienne Westwood 'Sorada' Orb Earrings (Crystal on Rhodium) ✩✩
✩✩ Vivienne Westwood 'Rosemary' Small Earrings (Brass) ✩✩
HOW TO WIN:
Leave a comment on this video
That's it
Please be sure you're subscribed to my YouTube (I'll be checking!)
If you are under 18 years old, please have parental permission before commenting.
Only one entry per person; multiple entries/ comments will not be counted.
I'll use a random number generator to choose two winning comments so everything stays fair ❤️
Giveaway begins 02/03/2021 upon upload and closes midnight (Eastern Standard Time) of 22/03/2021
Winners must message me within 48 hours of contact to claim prizes, if not, I will have the rng choose another comment.
rng new 在 RNG SUP、CoreJJ、RNG New在PTT/mobile01評價與討論 的推薦與評價
RNG SUP在PTT/mobile01評價與討論, 提供CoreJJ、RNG New、RNG SUP就來手搖飲社群資訊站,有最完整RNG SUP體驗分享訊息. ... <看更多>
rng new 在 RNG SUP、CoreJJ、RNG New在PTT/mobile01評價與討論 的推薦與評價
RNG SUP在PTT/mobile01評價與討論, 提供CoreJJ、RNG New、RNG SUP就來手搖飲社群資訊站,有最完整RNG SUP體驗分享訊息. ... <看更多>