📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有167部Youtube影片,追蹤數超過40萬的網紅SLSMusic,也在其Youtube影片中提到,This song was chosen to be one of the soundtrack played at #tokyoolympics and I'm so impressed. Hope you like my piano solo version. ↓ More info down ...
「you are the chosen one」的推薦目錄:
- 關於you are the chosen one 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於you are the chosen one 在 A Happy Mum Facebook 的最讚貼文
- 關於you are the chosen one 在 Jessie Chung锺潔希 Facebook 的最佳解答
- 關於you are the chosen one 在 SLSMusic Youtube 的最讚貼文
- 關於you are the chosen one 在 BrandonTan91 Youtube 的精選貼文
- 關於you are the chosen one 在 Freeyon Chung 鍾君揚 Youtube 的最讚貼文
- 關於you are the chosen one 在 you are the chosen one! - Mobile01 的評價
- 關於you are the chosen one 在 Star Wars 'You were the chosen one!' - YouTube 的評價
- 關於you are the chosen one 在 “YOU WERE THE CHOSEN ONE!” - YouTube 的評價
- 關於you are the chosen one 在 You Are the Chosen One - YouTube 的評價
- 關於you are the chosen one 在 Smash Into Pieces - The Chosen One (Official Lyric Video) 的評價
- 關於you are the chosen one 在 THE CHOSEN ONE! | 這發牌想不吃都難! 的評價
- 關於you are the chosen one 在 You were the chosen one! It was said that you would destroy ... 的評價
- 關於you are the chosen one 在 Publika - Congratulations! You are the chosen one. For others ... 的評價
- 關於you are the chosen one 在 You were the chosen one. - 梗圖板 - Dcard 的評價
you are the chosen one 在 A Happy Mum Facebook 的最讚貼文
*Congratulations to Selena Lim for winning and thanks to everyone who joined the giveaway! More goodies to share soon so stay tuned!*
{Giveaway} Calling all chocolate 🍫 lovers, you are gonna love this too!
While exam revision is important, it is also equally important to relax, eat and be happy! The big girl loves chocolate so I surprised her with this signature Chocolate Mousse Dome from 1more.bite and we were blown away by how delicious it tasted.
Made of 55% Belgium dark chocolate mousse coated with a chocolate mirror glaze and sprinkled with gold flakes, this was the perfect choice for our tea break. The mousse is rich, moist and chocolatey with just the right amount of sweetness. While the filling contains raspberry, the bottom chocolate sponge has chocolate nibs which make every bite of the dome not just tasty but interesting too.
Her reaction was "Yummy, 很好吃!" as her eyes lit up and she took bite after bite. Yup, we definitely love this and give it a thumbs up! Hopefully she has more motivation to carry on studying for her PSLE after the yummy treat, woohoo!
Good news, I am now giving away 2 sets of this Chocolate Mousse Dome! To join,
🍫 Follow A Happy Mum and 1more.bite.
🍫 Like and share this post.
🍫 Comment on why you would like to win and tag at least 3 friends, 1 in each comment. Each counts as an entry.
This giveaway ends on 26 Sep 2359hrs. Note that winners have to self-collect their prizes from the east. One winner will be chosen from FB and the other from IG. This giveaway is not endorsed by or affiliated with FB or IG. Good luck!
#ahappymum #chocolatelovers #chocolatemousse #soyummy #cakelovers #review #yummy #teatime #takeabreak #chocolatemakeseverythingbetter
you are the chosen one 在 Jessie Chung锺潔希 Facebook 的最佳解答
小帮手:
【云剧场🤩线上观剧】✨✨✨
✨Cloud Theatre, enjoy theatre online!✨
🌟星音符为您诚意打造《红楼梦》话剧,根据史实与原著改编
——让您深刻体验古典名著的艺术魅力🤩13场演出场场满座,好评如潮!
💝演出购票处 Cloud Theatre :
https://www.cloudtheatre.com/my/shows/the-bream-of-red-mansions/
此次在云剧场上演,票券收入100%捐作抗疫物资❤️
🌹中国古代四大名著之首《红楼梦》话剧🌹
💥必看10大重点💥
✨《红楼梦》在大马首度以话剧演出
✨《红楼梦》根据史实和原著改编
✨知名艺人锺洁希与多位资深演员同台,演员阵容多达26人
✨男主角为全球万里挑一的林霆坚,为寻找贾宝玉剧组发动了全球《寻找贾宝玉》的活动
✨最新3D科技绝美LED背景视觉影像
✨星音符特邀美籍音乐制作人为《红楼梦》话剧操刀,由女主角锺洁希演唱插曲《黑夜将残的炉光》,并与男主角林霆坚深情对唱主题曲《心念》
✨逼真的音效与专业背景音乐配搭
✨精致的古风道具布置
✨精美雅致大气有诚意的古代服装
✨《红楼梦》话剧票券收入100%捐作抗疫物资
🌷由锺洁希领衔主演女主角——出淤泥而不染的林黛玉,💘男主角为全球万里挑一,犹如贾宝玉再现的——林霆坚。为您演绎一场刻骨铭心、至真至爱、荡气回肠的爱情故事❤
📅演出日期:
🤩『第一场』18/09/2021 (六) 8:00p.m. (GMT+8) 【供48小时内观看】
🤩『第二场』27/09/2021 (一) 8:00p.m. (GMT+8) 【供48小时内观看】
🗨 [ 此剧语言为中文,备有中英文字幕]
📲【询问联络】03-55690139 (Ann) https://bit.ly/3yyzYJk
《红楼梦》话剧——谁为情种?
❤眼空蓄泪泪空垂,暗洒闲抛却为谁~
Cloud Theatre, enjoy theatre online! ✨✨✨
The play “The Dream of Red Mansions” was met with overwhelming response, selling out tickets to 13 full houses!
Ticketing platform: Cloud Theatre
https://www.cloudtheatre.com/my/shows/the-bream-of-red-mansions/
🤩100% of the proceeds from the tickets will be donated as Covid-19 medical supplies. Together, let’s do our part and show our love!
🌹 “The Dream of Red Mansions”, an adaptation of the most celebrated classical Chinese novel! 🌹
💥10 reasons why you must watch: 💥
✨This marks the first public performance of the stage play “The Dream of Red Mansions” in Malaysia.
✨ “The Dream of Red Mansions” is based on the original historical novel.
✨Well-known artist Jessie Chung takes the stage with 26 experienced actors.
✨Lead actor Terry Lim, a one-in-a-million actor who portrays Jia Baoyu, was chosen through a worldwide search for a Jia Baoyu lookalike.
✨Stage backdrops created through the latest 3D technology for stunning, lifelike environments.
✨Symphony Theatre invited an American composer to create the soundtrack for “The Dream of Red Mansions,” while lead actress Jessie Chung performed the soundtrack song “A Dying Light in the Dark” and the theme song, “Hearts Apart”—an emotional duet—with lead actor Terry Lim.
✨Accompanied by realistic sound effects and professional background music.
✨Stage design incorporates exquisite ancient Chinese elements and props.
✨Actors wear elegant, refined, majestic and authentic period costumes.
✨100% of the proceeds from the tickets will be donated as Covid-19 medical supplies. Together, let’s do our part and show our love!
🌷Jessie Chung takes the stage as lead actress, portraying the pure and unadulterated Lin Daiyu, while Terry Lim, the lead actor, was chosen out of a ton of applicants from around the world. Come and enjoy a performance of an unforgettable, passionate, and heart-rending love story.
📅Performance Dates:
🤩 First performance:
Saturday, September 18, 2021, 8:00 p.m. (GMT+8)
🤩 Second performance:
Monday, September 27, 2021, 8:00 p.m. (GMT+8)
🗨 (Performed in Mandarin, with Mandarin and English subtitles available.)
📲 Contact us: 03-55690139 (Ann) https://bit.ly/3yyzYJk
“The Dream of Red Mansions,” calling all lovers…❤
“Vain are all these idle tears, tears shed secretly—for whom?”
you are the chosen one 在 SLSMusic Youtube 的最讚貼文
This song was chosen to be one of the soundtrack played at #tokyoolympics and I'm so impressed. Hope you like my piano solo version.
↓ More info down below ↓
💬SLSTalk
"Song of the Ancients" is one of the most famous soundtracks from NieR series. It appears at so many games including NieR Replicant, NieR Gestalt, NieR Automata, and FFXIV YorHa: Apocalypse. There are so many versions of arrangement from those OST albums, I highly recommend you to hear them out.
🟧Support us on Patreon and Get Rewards!
► https://www.patreon.com/slsmusic
🎁Get MP3, Sheet Music, Exclusive Contents
📖Sheet Music
🎼https://www.mymusicsheet.com/slsmusic/41887
🎼https://slsmusic.gumroad.com/l/UVOUQ
✨Synthesia Video
Patreon► https://www.patreon.com/posts/54586181
YT Member► https://youtu.be/ooR2hCMcdJw
🎧Find SLSMusic on Spotify, iTunes, Apple Music, Amazon, Deezer and more
All► https://li.sten.to/slsmusic
Spotify► http://bit.ly/SLSMusicSpotify
iTunes► http://bit.ly/SLSiTunes
🎤Social Media
Website: https://www.slsmusic.net
Instagram: https://www.instagram.com/slsmusictw
Twitter: https://twitter.com/slsmusictw
Facebook: https://www.facebook.com/slsmusictt
🥁Direct Donation
PayPal► https://www.paypal.me/SLSMusic
歐付寶► https://www.bit.ly/DonateSLS
🙏THANKS YOU FOR SUPPORTING SLSMusic
🔵Patreon "Grand Piano"
Kater of Glencoe、Lyra Mao、かず K・、阿夜、清艵宮、Mikael Mazareth、Zythian
🟢Patreon "Piano"
Deemo Harlos、LitGrass Chou、Judy Tseng、Joyce Ninomiya、Kezeranix
🔴YouTube Sponser
交替的白晝與黑夜・阿夜・Chia-Chi Chang・清艵宮・Kater
🎧 Playlists
Official Playlist
https://www.youtube.com/playlist?list=PLqY5-xxyprjtckllGMQK4XljIu_5csx3z
Game Music
https://www.youtube.com/playlist?list=PLqY5-xxyprjvKpCZTmMQZ6wwnveFBjoUj
🔧Equipment
●Piano / Nord Piano 3
●Speakers / ADAM A7X
●Audio Interface / Yamaha AG06
●Camera / Panasonic GH5
●Studio Desk / Wavebone HEADQUARTER
■──────────────────■
#NieRReplicant #NieRAutomata
you are the chosen one 在 BrandonTan91 Youtube 的精選貼文
The weekly spotlight hour is here again with Shuppet as this week’s featured Pokemon. As Halloween is around the corner, Shuppet seems to be a great Pokemon to be chosen as the spotlight Pokemon. We decided to focus on raiding Giratina instead as shiny Shuppet has bee around for awhile and we have gotten ourselves the shiny form ever since it was released back in 2018.
Join me as I travel, eat and play Pokémon GO the way a local trainer would in their own country and city. Visiting one country and one city at at time through Pokémon GO.
Subscribe if you would like to watch my Pokémon GO travel adventure as I visit different countries, cities and communities, https://tinyurl.com/y65jruw2
Social:
Instagram: https://www.instagram.com/brandontan91/
TWITTER: https://twitter.com/brandontan91
Vlogging Set-Up:
Camera - Sony RX 100 Mark 7
Mic - Rode VideoMicro
Screen Recorder - iPad Mini 5
Pokémon is Copyright Gamefreak, Nintendo and The Pokémon Company 2001-2016
All images and names owned and trademarked by Nintendo, Niantic, The Pokémon Company, and Gamefreak are property of their respective owners.
you are the chosen one 在 Freeyon Chung 鍾君揚 Youtube 的最讚貼文
Juliette and I met a couple of years back when we were both exploring performance opportunities in Hong Kong, but we are actually both from Toronto. I knew she was talented in many areas of performance and recently, we talked about the idea of doing a duet and this one was the chosen one haha
High School Musical was something that I actually connected with a lot while I was in school as I was also an athlete who sings. I still remember the year I sang a duet from HSM at the school talent show and it was also the day of my Track & Field competition. Fortunately, my events were earlier in the day and I made it back to school in time (I was wearing my team jersey during the performance haha).
Special thanks to OneManBlend for helping with the audio production :)
#HighSchoolMusical #WhatIveBeenLookingFor #FreeyonMusic
~~~~~~~
Follow Me On Instagram:
https://www.instagram.com/FreeyonC
Find Me On TikTok:
https://vt.tiktok.com/r28tqY/
Subscribe To My YouTube Channel:
http://www.youtube.com/FreeyonChungKwanYeung
Like My Facebook Page:
https://www.facebook.com/FreeyonChung
~~~~~~~
It's hard to believe
That I couldn't see
You were always there beside me
Thought I was alone
With no one to hold
But you were always right beside me
And this feelings like no other
I want you to know
I've never had someone
That knows me like you do
The way you do
I've never had someone
As good for me as you
No one like you
So lonely before I finally found
What I've been looking for
you are the chosen one 在 Star Wars 'You were the chosen one!' - YouTube 的推薦與評價
Years after the onset of the Clone Wars, the noble Jedi Knights lead a massive clone army into a galaxy-wide battle against the Separatists. ... <看更多>
you are the chosen one 在 “YOU WERE THE CHOSEN ONE!” - YouTube 的推薦與評價
It was said that you would destroy the Sith, not join them!#Kenobi #Anakin #RevengeOfTheSithDISCLAIMER:All of the content in this video ... ... <看更多>
you are the chosen one 在 you are the chosen one! - Mobile01 的推薦與評價
you are the chosen one ! - 歐比王這句話讓我覺得好難過啊還有艾米達拉對安納金說:Anakin , you are breaking my heart.也是讓人感到十分心痛這次 ... ... <看更多>