📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有9部Youtube影片,追蹤數超過2,160的網紅Tess Chung,也在其Youtube影片中提到,#FlowerbeautyBlushBomb #Honestbeautycreamblush #creamblushtryon #腮紅 don't forget to subscribe and follow me on socials too! http://instagram.com/tes...
「no vacancy」的推薦目錄:
- 關於no vacancy 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於no vacancy 在 經理人月刊MANAGERtoday Facebook 的精選貼文
- 關於no vacancy 在 Dr Mohd Daud Bakar - Shariah Minds - Minda Syariah Facebook 的最讚貼文
- 關於no vacancy 在 Tess Chung Youtube 的最佳解答
- 關於no vacancy 在 BILLbilly01 Youtube 的最佳解答
- 關於no vacancy 在 Hiddie T Youtube 的最佳貼文
- 關於no vacancy 在 OneRepublic - No Vacancy... - 流行英文歌曲(Popular English ... 的評價
- 關於no vacancy 在 No Vacancy by Shilla J (Official Music Video) - YouTube 的評價
no vacancy 在 經理人月刊MANAGERtoday Facebook 的精選貼文
#一分鐘學英文
你們有空房嗎?
你知道「空白、空缺、空虛」的英文怎麼說嗎?
no vacancy 在 Dr Mohd Daud Bakar - Shariah Minds - Minda Syariah Facebook 的最讚貼文
TERBANG BERSAMA MDB (SIRI 76)
Berhijrah ke Dubai (4)
Awfa Amanie belum dapat ke sekolah. Hampir setiap hari saya & Makhtar menanya pihak sekolah. Jawapan standard diberi. "No vacancy. Sorry". Pelik juga tiada kekosongan dalam bidang pendidikan.
Di rumah, saya & isteri mengajar Awfa bahasa English & Matematik. Semua buku latihan kami beli. Latihan bertubi-tubi. Memang Awfa nak belajar sangat. Setiap hari dia bertanya bila dia boleh ke sekolah. Sedih melihat keadaan dirinya. Abangnya Atiqie sudah dapat belajar mulai November 2008. Kakaknya Izzatie pun sudah mendaftar di Universiti Wollongong (cawangan Dubai).
Peringkat kesabaran saya dah nak meletup. Saya letak tekanan ke atas Makhtar juga sebagai teman sekerja saya. Hanya kami berdua yang mengasaskan syarikat Amanie di Dubai. Urusan keluarga kena settle baru kerja lebih lancar. Baru otak tenang.
"If you dont give Awfa a chance to study at your school, we will report to the authority. She has been here for 4 months already waiting for an opportunity. There was not even one interview with her". Inilah kurang lebih skrip dari Makhtar. The most powerful script ever.
Selepas beberapa hari Awfa dipanggil interview bagi Gred 1. Selepas interview, dia dapat Gred 2. Rezeki dia. Dia berjaya mempamerkan kemampuannya sebagai murid Gred 2. Pihak sekolah juga profesional dalam membuat penilaian. Setiap orang dinilai dengan pencapaian masing2 tanpa mengira umur. Personalised solution sudah menjadi amalan di pendidikan barat. Di Malaysia & negara Islam, masih lagi tawaran skrip & cara yang sama bagi semua orang.
Di hari pertama Awfa ke sekolah, nampak sangat wajahnya penuh teruja. Dia malu2 sebagai anak Malaysia tetapi dia berani melangkah masuk disambut seorang guru wanita dari Australia. Beg Awfa diambil & diletakkan di tempat sepatutnya. Awfa dialu2kan macam raja atau permaisuri.
Bertuah Awfa dapat belajar selama 2 tahun di International Meadow School (duduk di barisan hadapan berstokin panjang). Dia mendapat gelombang baru. Kawan baru. Pengalaman pendidikan unik.
"You didn't give up!" komen pendaftar sekolah kepada Makhtar.
(Foto hiasan saya dengan Awfa di padang pasir sempadan Dubai/Oman sekitar tahun 2018).
MDB
no vacancy 在 Tess Chung Youtube 的最佳解答
#FlowerbeautyBlushBomb #Honestbeautycreamblush #creamblushtryon #腮紅
don't forget to subscribe and follow me on socials too!
http://instagram.com/tesschung
tiktok @tesschung
products mentioned
flower beauty blush bomb - pinched/melon $9.99/9g
it's on sale for 6.99 on ulta right now.
https://www.ulta.com/blush-bomb-color-drops?productId=xlsImpprod18981023
honest beauty cream blush - peony pink/rose pink $13/3g
4u2 multi-pipe lip and cheek cream paint 1 $5/6g
colourpop supershock cheek - holiday/no vacancy $8/4.2g
em cosmetics serum blush - venetian rose $25/10g
my base combo today
colourpop hyaluronic acid tinted moisturizer - light 6w
flower beauty light illusion concealer - light
no vacancy 在 BILLbilly01 Youtube 的最佳解答
Official BILLbilly01 cover of "I Will Follow You Into The Dark" by Death Cab For Cutie.
Subscribe to BILLbilly01: http://bit.ly/subBILL
Follow BILLbilly01 on:
Facebook: http://facebook.com/BILLbilly01page
Twitter: http://twitter.com/BILLbilly01
Instagram: http://instagram.com/BILLbilly01
SoundCloud: https://soundcloud.com/billy-chuchat
Watch more BILLbilly01:
Covers: http://bit.ly/CoversBILL
Popular Videos: http://bit.ly/PopularVidsBILL
Latest Uploads: http://bit.ly/LatestVidsBILL
Watch More by Mood: http://bit.ly/MoodBILL
Listen to BILLbilly01 on:
iTunes: http://bit.ly/iTunesBILLbilly01
Spotify: http://bit.ly/spotifyBILLbilly01
GooglePlay: http://bit.ly/googleBILLbilly01
-------------------------------------------------
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
☆┌─┐ ┌─┐☆
│▒│ /▒/
│▒│/▒/
│▒ /▒/─┬─┐
│▒│▒|▒│▒│
┌┴─┴─┐-┘─┘
│▒┌──┘▒▒▒│
└┐▒▒▒▒▒▒┌┘
└┐▒▒▒▒┌┘
-------------------------------------------------
"Death Cab For Cutie - I Will Follow You Into The Dark" Lyrics:
Love of mine, someday you will die
But I'll be close behind and I'll follow you into the dark
No blinding light or tunnels to gates of white
Just our hands clasped so tight, waiting for the hint of a spark
If heaven and hell decide that they both are satisfied
And illuminate the no's on their vacancy signs
If there's no one beside you when your soul embarks
Then I'll follow you into the dark
In Catholic school as vicious as Roman rule
I got my knuckles bruised by a lady in black
And I held my tongue as she told me,
Son, fear is the heart of love, so I never went back
You and me we've seen everything to see
From Bangkok to Calgary and the soles of your shoes
Are all worn down
The time for sleep is now
But it's nothing to cry about
'Cause we'll hold each other soon in the blackest of rooms
no vacancy 在 Hiddie T Youtube 的最佳貼文
讓大家久等了!為了打這個中文字幕的確花了很多時間。看完喜歡請不要忘了給個讚及訂閱我的頻道啊!Thankyou so much for watching and Love you all~~ xoxo
如果你想我的影片有更多人看到的話可捐獻字幕啊,萬分感激~xx
*麻煩大家一下*
記住繼續幫我投票呀,每日都可以投我三票直至6月14號架。同埋今晚會有新片upload。多謝晒各位!?❤️?❤️
https://faceawards.nyxcosmetics.hk/
*Friendly reminder*
Plz don't forget to vote for me, you can give me 3 votes everyday until 14/6. Also I'm uploading a new video tonite. Thankyou so much! ?❤️?❤️
https://faceawards.nyxcosmetics.hk/
♥ Follow me ♥
Instagram: @hiddie http://www.instagram.com/hiddie/
SnapChat: @hiddietse
Facebook: http://facebook.com/hiddietmakeup
Blogspot: http://hiddietmakeup.blogspot.com/
Weibo: http://weibo.com/hiddie
Product mentioned:
Laura Mercier Hydrating Primer
*Max Factor Healthy Skin Harmony Foundation No.40
https://www.youtube.com/watch?v=yNpuLupTtfw
Charlotte Tilbury Air-Brush Flawless Finish Skin-Perfecting Micro-Powder - 01 Fair
Colourpop x Kathleenlights Dream Street Palette
*Benefit Gold Rush Blush
La Roche Posay Uvidea XL
Fenty Beauty Match Stix Shimmer Skinstick - Yacht Lyfe
Anastasia Beverly Hills x Amrezy Highlighter
*Charlotte Tilbury Hollywood Beauty Light Wand Highlighter
Tom Ford Lip Lacquer Liquid Patent - No Vacancy
*MAC Versicolour Stain - Optix Orange
Kat Von D Brow Pomade - Medium Brown
Kat Von D Brow Brush No.70
Drunk Elephant TLC Sukari Babyfacial
Drunk Elephant Marula Oil
Drunk Elephant TLC Framboos Glycolic Night Serum
(*sent by PR)
This is not a sponsored video.
no vacancy 在 No Vacancy by Shilla J (Official Music Video) - YouTube 的推薦與評價
Provided to YouTube by Kaban Music Production (KMP) Sdn BhdSong : No VacancyArtist : Shilla JComposer : Lewelyn Lawas JulinLyric : Lewelyn ... ... <看更多>
no vacancy 在 OneRepublic - No Vacancy... - 流行英文歌曲(Popular English ... 的推薦與評價
OneRepublic - No Vacancy 遲來的新歌~ 滿心期待聽完感覺是... 怎麼連OneRepublic 也變得好流行風格>"< 還是只有y小邊有這樣的錯覺中英對照歌詞翻譯請參考: 章魚鯉魚 ... ... <看更多>