📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有3部Youtube影片,追蹤數超過53萬的網紅วรัทภพ รชตนามวงษ์ WARATTAPOB,也在其Youtube影片中提到,?แจกหนังสือฟรี?" เงิน มา ง่ายๆ" เขียนโดย อ.วรัทภพ รชตนามวงษ์ มีเนื้อหามากถึง 357 หน้า รับหนังสือฟรี! กดลิงก์นี้ด่วน ของมีจำนวนจำกัด ? https://get.mon...
「worst case scenario」的推薦目錄:
- 關於worst case scenario 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於worst case scenario 在 Dr. Kayla Teh Facebook 的最讚貼文
- 關於worst case scenario 在 Technews 科技新報 Facebook 的最佳貼文
- 關於worst case scenario 在 วรัทภพ รชตนามวงษ์ WARATTAPOB Youtube 的精選貼文
- 關於worst case scenario 在 新大 寶可夢遊戲實況 Youtube 的最佳貼文
- 關於worst case scenario 在 prasertcbs Youtube 的最佳貼文
- 關於worst case scenario 在 CORSAIR - "Worst case scenario, you die... but who knows 的評價
worst case scenario 在 Dr. Kayla Teh Facebook 的最讚貼文
Fiber-reinforced Bridge…do you know what that is?🤔
When you lost a tooth or teeth, you have a few options to replace it: denture, bridge, implant, braces or more.
She first came in with loose denture replacing her two front teeth. Denture is a good replacement option for missing teeth but with time, it tend to become loosen due to bone resorption (“bone thinning”). Loose denture can be troublesome as it falls out easily (no one wants their teeth falling out during a presentation!😱) and food often get stuck underneath it.
If you ask me, implant is the best option to replace this patient’s missing teeth. However, implants (and not forgetting bone graft) placement can be costly and she is not financially ready for it. Having the option for a new denture or a fiber-reinforced bridge, she decided to choose the latter whilst preparing for her implant budget.
The challenge in this case is the total buildup of the tooth with composite, estimating it’s size/shape/shade and not forgetting occlusion. This is a non-prep case as the patient is biting rather incisally on the anteriors while having good posterior occlusion(thus made her a good candidate for this long span FRB case).
Most of it has to be done chair-side, thus a lot of clinical time has been spent. Note that the 11,21 are shortened as well although I would LOVE to give her a perfect smile arch, due to concerns of her anterior guidance.
Patient was super happy she has semi-permanent teeth inside her mouth and don’t have to worry about her denture falling out anymore. (We both still look forward to the day implants can be placed tho!🙈)
Case selection is important in FRB treatment. It is not for patients who want an easy way out, but for patients who clearly understand ALL the pros and cons of their treatment options and are willing to accept the worst-case scenario.
Okay that’s all, I know I talk a lot but I just wanted to share some of the stuff I’ve learned through this case. 😆 Have a great day y’all!
worst case scenario 在 Technews 科技新報 Facebook 的最佳貼文
除了船運受到嚴重影響外,怕受到貿易戰波及,不少美國廠商正考慮撤出中國!
#中國供應鏈 #航運 #中美貿易戰
worst case scenario 在 วรัทภพ รชตนามวงษ์ WARATTAPOB Youtube 的精選貼文
?แจกหนังสือฟรี?" เงิน มา ง่ายๆ" เขียนโดย อ.วรัทภพ รชตนามวงษ์ มีเนื้อหามากถึง 357 หน้า รับหนังสือฟรี! กดลิงก์นี้ด่วน ของมีจำนวนจำกัด ? https://get.moneyeasybook.com/
คนทำธุรกิจมักจะตั้งเป้าหมาย โดยคาดหวังยอดขายและกำไร ให้เป็นไปตามเป้า แต่ว่าความจริงนั้นอาจเจอสถานกาณ์ที่คุณคาดไม่ถึง ก็คือ Worst Case Scenario หรือ สถานการณ์ที่ย่ำแย่ที่สุด ซึ่ง ทุกๆธุรกิจของผมที่ผ่านมา ก็ตั้ง Worst Case ไว้ตลอด ซึ่งคิดว่า น่าจะเหมาะสมแล้ว แต่สุดท้าย Worst Case ที่ผมคิด กลับไม่ใช่...จึงทำให้เกิดปัญหาตามมามากมาย
คลิปนี้ผมจะ แชร์และแนะนำการ ตั้ง Worst Case Scenario ที่ถูกต้อง ว่าควรตั้งยังไง จะได้ไม่ผิดพลาดครับ
เชิญฟังในคลิปนี้ครับ
? พบกับวิดีโอใหม่ทุกวัน ? ถ้าคุณอยากประสบความสำเร็จและรวย "เร็วขึ้น"
จากประสบการณ์การทำธุรกิจไทย-จีน มาแล้ว 14 ธุรกิจของผม
? คลิกลิงก์แล้วกด “SUBSCRIBE - ติดตาม และกดกระดิ่งแจ้งเตือน ตอนนี้เลย!! ?
https://www.youtube.com/channel/UC6GkGouzOitA6vUzOEBEqwA?sub_confirmation=1
—
// ดูวิดีโอของ "วรัทภพ" ตามเพลย์ลิสต์
? คลิปใหม่ล่าสุด (มีคลิปใหม่ทุกวัน) https://bit.ly/2OCDdvb
========================
?ลงทุนอะไรดี https://bit.ly/2kH0Lm0
?วิธีขายของ LAZADA https://bit.ly/2TUxuRn
?วิธีขายของ SHOPEE https://bit.ly/2lJ5LHe
?วิธีสั่งสินค้าจากจีน https://bit.ly/2IERdmE
?วิธีส้รางรายได้บน YOUTUBE https://bit.ly/2NT8l8L
?การทำตลาดจีน และส่งออกจีน https://bit.ly/2GWdITq
?วิธีขายสินค้าแบบ ดรอปชิป https://bit.ly/2x2sOPf
?WARATTAPOB PODCAST https://bit.ly/2SBlrHR
?วิธีทำธุรกิจให้ประสบความสำเร็จ https://bit.ly/2lRZuZn
?วิธีปลดหนี้ https://bit.ly/2PKNplE
========================
??VLOG IN CHINA ชีวิตในจีนของผม https://bit.ly/2AqaFNB
??VLOG IN THAILAND ชีวิตในไทยของผม https://bit.ly/2AUvnWf
========================
?แกะคำคม ข้อคิด นักปราชญ์ และนักธุรกิจ https://bit.ly/2SDzHjh
?5 นาที หาเงินแบบมหาเศรษฐี https://bit.ly/2k9oyuu
?รีวิวหนังสือที่ผมชอบ http://bit.ly/2lRZJnf
?วิธีเริ่มต้นธุรกิจ ในปัจจุบัน https://bit.ly/2ChCNT7
?ความรู้ หาเงิน เพิ่มรายได้ ที่จะทำให้คุณรวยเร็วขึ้น https://bit.ly/2CR2Jqc
?เคล็ดลับ การตลาดและการขาย https://bit.ly/2M8P7cV
?ไอเดียธุรกิจเงินล้าน https://bit.ly/2TrY2IT
?พัฒนาตัวเอง เพื่อความสำเร็จในด้านที่ต้องการ https://bit.ly/2LTPms2
?แรงบันดาลใจและกำลังใจ ในการใช้ชีวิต https://bit.ly/2TKQAbW
?รีวิว ธุรกิจจีนและเศรษฐกิจจีน https://bit.ly/2M8Phkx
?ความรู้ไทย-จีน อื่นๆ http://bit.ly/2kIZaMn
—
// วรัทภพ รชตนามวงษ์ คือ ใคร?
ผม "วรัทภพ รชตนามวงษ์" เป็นคนไทย เกิดที่จังหวัดเชียงใหม่
เป็นผู้ประกอบการที่ทำธุรกิจมาแล้ว 14 ธุรกิจ
ทั้งในประเทศไทย และ จีน ตั้งแต่ปี พ.ศ.2545 จนถึงปัจจุบัน
ผมตั้งใจทำสื่อเพื่อแบ่งปันความรู้และประสบการณ์
ให้คนรุ่นใหม่ที่อยากประสบความสำเร็จในชีวิตและรวย “เร็วขึ้น”
?คุณสามารถดูคลิปจากลิงก์ล่างนี้ ว่าผมมีประสบการณ์ธุรกิจอะไรบ้าง?
http://bit.ly/2kHDgt4
—
// ติดตาม วรัทภพ รชตนามวงษ์ เพิ่มเติมได้ที่
Website : https://www.warattapob.com
?SOCIAL
Instagram : https://www.instagram.com/warattapob_rachatanamwong
Facebook : https://fb.me/WarattapobRachatanamwong
YouTube: https://www.youtube.com/c/WarattapobRachatanamwong
Line official : http://line.me/ti/p/~@warattapob
Twitter : https://twitter.com/warattapob
Tiktok : https://www.tiktok.com/@warattapob
?PODCAST
--สำหรับ Android
Soundcloud : https://bit.ly/2QjfVYm
Spotify : https://spoti.fi/2Jcwh6Y
--สำหรับ iOS
Apple Podcast : https://apple.co/2QjW5fM
—
#WARATTAPOB #การพัฒนาตนเอง #วิธีหาเงิน
วิดีโอนี้เกี่ยวกับ ความจริงของ สถานการณ์ที่แย่ที่สุด | วิธีหาเงินและทำธุรกิจให้ประสบความสำเร็จ EP16
LINK https://youtu.be/lILr9i3irQE
LINK https://youtu.be/lILr9i3irQE
worst case scenario 在 新大 寶可夢遊戲實況 Youtube 的最佳貼文
莫非定律:
非定律的原句是:如果有兩種或兩種以上的方式去做某件事情,而其中一種選擇方式將導致災難,則必定有人會做出這種選擇。在科學和演算法方面,與英文所謂的「worst-case scenario(最惡劣的情況)」同義,數學上用大O符號來表示。例如,對插入排序來說,最惡劣的情形即是要排序的陣列完全倒置,必須進行 n*(n-1) 次的置換才能完成排序。在實驗上,證明了最惡劣的情況不會發生,並不代表比它輕微的情形就不可能,除非能夠很有信心的推論事件的概率分布是線型的。在文化方面,它就代表著一種近似反諷的幽默,當作對日常生活中不滿的排解。
-------------------------------------------------------------------------------------------------
Thank you for watching ! if you like this video, subscribe me.
🎏 粉絲專頁:http://bit.ly/XinDa13
🎏 歐付寶贊助:http://bit.ly/donatexinda
📩 聯繫方式請私訊粉專或來信
xindaplaygame@gmail.com
#寶可夢劍盾 #色違寶可夢 #PokemonShiny
worst case scenario 在 prasertcbs Youtube 的最佳貼文
เทคนิคการสร้างกราฟเส้นโดยให้มี dynamic band เช่น หากต้องการแสดงประมาณการกำไรทั้ง 12 เดือน โดยแสดง Base case โดยใช้กราฟเส้น และแสดง band เพื่อคลุมค่า Worst case และ Best case
นอกจากนี้เรายังสามารถแสดงกราฟลักษณะเช่นนี้กับอุณหภูมิได้ โดยใช้เส้นแสดงค่าเฉลี่ย และ band เพื่อคลุมค่าอุณหภูมิต่ำสุดและสูงสุด
==ดาวน์โหลดไฟล์ตัวอย่างได้ที่ https://goo.gl/E71cwh
============
playlist การสร้างกราฟ แผนภูมิแบบต่าง ๆ ด้วย Excel
https://www.youtube.com/playlist?list=PLoTScYm9O0GExxZ3nlVmleu0wvlhGfs3j
============
playlist การสร้างกราฟ แผนภูมิแบบใหม่ใน Excel 2016
https://www.youtube.com/watch?v=0brII3eyaW8&list=PLoTScYm9O0GHkvWn5LVlo0ZXYMGmOCcEx
============
playlist สอน Excel
https://www.youtube.com/playlist?list=PLoTScYm9O0GEMj5LpqxaxWWnanc55Epnt
============
playlist สอนการใช้งาน PivotTable
https://www.youtube.com/playlist?list=PLoTScYm9O0GFFdZwK6437TxMXYf7Hrd4I
============
playlist สอนการเขียน Excel VBA และ Macro
https://www.youtube.com/watch?v=InS56wNCUfw&list=PLoTScYm9O0GHgpbmyNuXP39OUcb0BheaE
============
playlist สอนการใช้งาน Excel สำหรับการเงิน
https://www.youtube.com/playlist?list=PLoTScYm9O0GHcen0YDAIIbXewc-621buW
============
playlist ความสามารถใหม่ใน Excel 2016
https://www.youtube.com/watch?v=0brII3eyaW8&list=PLoTScYm9O0GEL6uJG7K1o99mtkKZLmTYb
============
playlist สอนเทคนิคการใช้งาน Word
https://www.youtube.com/watch?v=hSa7e5UkWGU&list=PLoTScYm9O0GG5QrQtl8hmVbg0o8fCCaJT
============
playlist สอนเทคนิคการใช้งาน PowerPoint
https://www.youtube.com/watch?v=pXWyMULdRvA&list=PLoTScYm9O0GEG5JELOjSGqigFN669d5IK
============
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่
https://www.youtube.com/subscription_center?add_user=prasertcbs
worst case scenario 在 CORSAIR - "Worst case scenario, you die... but who knows 的推薦與評價
"Worst case scenario, you die... but who knows, maybe you wont." Beautiful build (and Destiny statue!) by: Kevin G. ... <看更多>