📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有611部Youtube影片,追蹤數超過1,920的網紅艾蛙媽 VS. 達樂哥Aiwa Hu,也在其Youtube影片中提到,...
smart super 在 Q Taymee Facebook 的最讚貼文
เปิดตัว realme C25s
สัมผัสชิปเซ็ต Helio G85 เต็มตากับกล้อง AI Triple 48MP
พร้อมแบตเตอรี่ 6,000 มิลลิแอมป์ในราคาเพียง 5,499 บาท
Helio G85 ชิปเซ็ตประสิทธิภาพสูงเพื่อเหล่าเกมเมอร์
realme C25s มาพร้อมชิปเซ็ตทรงพลังอย่าง Helio G85 พร้อมมอบประสบการณ์การเล่นเกมที่ลื่นไหลผ่านการอัพเกรดประสิทธิภาพเพื่อตอบโจทย์คอเกมทุกระดับ ด้วยพลังการทำงานระดับ 12nm Octa-core มอบความเร็วสูงสุด 2.0 GHz ผสานตัวโปรเซสเซอร์ Arm Cortex-A75 CPU ทรงพลังร่วมกันถึงสองตัวสามารถทำงานที่ความเร็วสูงสุด 2GHz และโปรเซสเซอร์ Cortex-A55 อีกหกตัวที่ทำงานความเร็วสูงสุด 1.8GHz ด้วยระบบการประมวลผลขั้นสูงที่ออกแบบมาเพื่อการเล่นเกมโดยเฉพาะ เมื่อเปรียบเทียบกับสมาร์ตโฟนรุ่นอื่นๆ ในกลุ่มเดียวกัน ทำให้ realme C25s ทำคะแนนความเร็วสูงกว่าได้อย่างชัดเจน
AI Triple Camera ความละเอียด 48MP เก็บทุกความทรงจำให้คมชัดในทุกสีสันและรายละเอียด
ด้วยความละเอียดกล้องสูงสุด 48MP จึงเก็บภาพความละเอียดสูงสุดถึง 6000x8000 พิกเซล โดยสามารถซูมดูรายละเอียดต่าง ๆ ได้อย่างเต็มตา ฟีเจอร์กล้องถ่ายภาพใน realme C25s ยังมีโหมด Super Nightscape ช่วยให้การถ่ายภาพยามค่ำคืนหรือในที่แสงน้อยได้อย่างสว่างสดใส เก็บทั้งรายละเอียดและสีสันของภาพได้ดียิ่งขึ้น นอกจากนี้ ยังมีเลนส์มาโครเพื่อการเก็บภาพวัตถุระยะใกล้ให้เห็นทุกรายละเอียดที่ต้องการได้อย่างชัดเจน realme C25s มีกล้องหน้าความละเอียด 8MP พร้อมโหมด AI Beauty, HDR และโหมดแนวตั้ง ช่วยให้การถ่ายภาพเซลฟี่ได้อย่างสวยสมบูรณ์แบบ
แบตเตอรี่ขนาดใหญ่ 6,000 มิลลิแอมป์ เพื่อการใช้งานต่อเนื่องตลอดวัน พร้อมระบบชาร์จเร็ว 18 วัตต์
realme C25s สามารถคุยโทรศัพท์ได้ต่อเนื่องถึง 43.17 ชั่วโมง หรือเล่นเกม MLBB ได้ถึง 9.78 รอบ ให้คุณดู YouTube อย่างจุใจนานต่อเนื่อง 25 ชม. หรือฟัง Spotify ได้นาน 115 ชม. คุณจึงสนุกสนานกับไลฟ์สไตล์ในยุคดิจิทตัลได้อย่างเต็มที่โดยไม่ต้องกังวลเรื่องแบตเตอรี่อีกต่อไป นอกจากนี้ ยังติดตั้งซอฟต์แวร์ App Quick Freeze เพื่อตรวจจับและปิดการทำงานแอปพลิเคชันที่ไม่ได้ใช้งานบ่อยแบบอัตโนมัติเพื่อประหยัดแบตเตอรี่
ทางด้านระบบชาร์จอัจฉริยะ Smart Night Charge Guardian ของ realme C25s จะลดอัตราการชาร์จไฟเมื่อแบตเตอรี่ใกล้เต็มในตอนกลางคืน ช่วยปกป้องแบตเตอรี่ในระยะยาวและยืดอายุการใช้งานให้ยาวนานขึ้น
realme UI 2.0 ทำงานบน Android 11 ทำงานอย่างรวดเร็ว ลื่นไหล และปลอดภัยยิ่งขึ้น
realme C25s มาพร้อมกับ realme UI 2.0 ที่ทำงานบน Android 11 ให้คุณสามารถออกแบบ UI ได้ตามสไตล์ของตัวเอง โดย realme UI 2.0 ยังสามารถปกป้องข้อมูลส่วนบุคคลของคุณไม่ให้รั่วไหลไปยังแอปพลิเคชันอื่น ๆ ได้ด้วยการระบุเลข ID เปล่าในแอปนั้น ๆ
จอแสดงผลระดับ HD+ mini-drop ขนาด 6.5 นิ้ว รองรับการปลดล็อกด้วยลายนิ้วมือที่รวดเร็วยิ่งขึ้น
realme C25s มาพร้อมกับจอแสดงผลที่มีขนาดใหญ่ที่สุดในช่วงราคาเดียวกัน โดยใช้จอระดับ HD+ ขนาด 6.5 นิ้ว พร้อมอัตราส่วนหน้าจอต่อตัวเครื่องสูงถึง 89.5% นอกจากนี้ ยังมีช่องเสียบการ์ดแบบสามช่อง รองรับช่องใส่ซิมคู่และการ์ด SD ความจุสูงสุด 256GB ทั้งยังสามารถปลดล็อกด้วยลายนิ้วมือได้รวดเร็วเป็นพิเศษ พร้อมระบบตรวจจับใบหน้าเพื่อช่วยปกป้องความเป็นส่วนตัวของคุณได้อย่างมั่นใจ
realme C25s แรม 4GB และหน่วยความจำ 64GB มาด้วยกัน 2 โทนสี ได้แก่ Water Blue และ Water Grey ในราคา 5,499 บาท โดยสามารถดูสินค้าได้ที่ realme Official Store บนช่องทางออนไลน์ ดังนี้
· Lazada : https://bit.ly/3EEPfLY
· Shopee : https://bit.ly/3EFnjb7
· JD Central : https://bit.ly/3hV5VFu
smart super 在 Momybowy Beauty Facebook 的最佳解答
EVEANDBOY X URBANDECAY SUPER GRAND LAUNCH ✨
โปรแรงแถมดุรับเพิ่มของแถมทุกออเดอร์โปรโมชั่นสุดพิเศษเฉพาะทางออนไลน์เท่านั้น!!
🗓️ตั้งแต่วันที่ 21 ก.ย. 64 – 27 ก.ย. 64
✨เพียงช้อป Urban Decay ใดๆรับทันที All Nighter Setting Smart Spray 2ml X 2 ชิ้นมูลค่ารวม 400 บ.
✨โปรโมชั่นสุดพิเศษเฉพาะวันที่ 21 ก.ย. 64 สำหรับลูกค้า 20 ท่านแรกที่ช้อปครบ 2,000 บ.ขึ้นไป รับเพิ่ม Naked Flushed Palette มูลค่า 1,350 บ.
✨โปรโมชั่นสุดพิเศษเฉพาะวันที่ 22 ก.ย. 64 - 27 ก.ย. 64 สำหรับลูกค้า 30 ท่านแรกที่ช้อปครบ 2,000 บ.ขึ้นไป รับเพิ่ม Moondust Lipstick คละสี มูลค่า 900 บ.
✨พบกับ Naked Palette ลดสูงสุดกว่า 30%
เพื่อนๆสามารถเลือกซื้อสินค้าของ EVEANDBOY ผ่านทางออนไลน์ได้แล้ว!
👉🏻https://bit.ly/3zswh7w
เด็ดทุกตัวค่ะบอกเลยยิ่งพาเลตบรัชแอนด์ไฮไลท์นี่ซื้อซ้ำมา3อันละ สีสวยมากกก แม่ก็ชอบ -- ตำนานใช้จนเป็นหลุม555
Eveandboy Urban Decay Cosmetics #eveandboy #UrbanDecayThailand #thaiblogger #beautyblogger #bownewitem #bowyreview2021 #makeup #cosmetics #skincare #momybowy
smart super 在 艾蛙媽 VS. 達樂哥Aiwa Hu Youtube 的精選貼文
smart super 在 邦尼幫你 Youtube 的最佳解答
蘋果 Apple iPhone 13 / iPhone 13 Pro / iPhone 13 mini / iPhone 13 Pro Max 開箱短評測實測、評價、推薦、值不值得買。除了告訴你 iPhone 13 Pro 系列 外,蘋果也帶來了全新的 ProMotion 120Hz 螢幕。
#DEVILCASE 官網: http://s.isbonny.com/DEVILCASE13
iPhone 13 Pro 支援全鏡頭夜間模式、Deep Fusion , Smart HDR 4,支援 5G , 採用 Ceramic Shield 超瓷晶盾。iPhone 13 Pro 採用三鏡頭相機 F1.5 1200 萬主鏡頭,支援 Sensor Shift 感光元件位移式穩定功能 、F1.8 120 度超廣角鏡頭、F2.8 3 倍光學變焦長焦鏡頭 支援 OIS,以及 LiDAR 。iPhone 13 Pro 也是首款支援電影級拍攝功能的 iPhone,可以在錄影後重新運算散景效果。支援 4K 60fps Dolby Vision HDR 錄影,擁有120 度超廣角相機,我們也將於後續帶來日拍、夜拍、錄影實測,iPhone 12 Pro / iPhone 12 Pro Max 分別搭載 6.1 / 6.7 吋 Super Retina XDR 螢幕,1200 尼特的峰值亮度,支援 ProMotion 120Hz 螢幕更新率,支援 Dolby Vision 杜比視界、 HDR10 顯示效果、DCI-P3 ,音效上搭載雙喇叭,效能上搭載 A15 Bionic ;盒裝不再隨附充電器及耳機,支援 MagSafe 磁吸無線充電 , Qi 無線充電 , 支援 5G , Wi-Fi 6 , Face ID , IP68 水下六公尺防水,請持續追蹤邦尼獲取第一手實際進行快充效能等超完整實機實際測評。
這次邦尼手機的購買點為 傑昇通信 特別感謝~
立即加入邦尼頻道會員計畫:https://www.youtube.com/c/isbonny/join
(#你的恐龍會隨著你的會員等級一起成長哦!)
邦尼社團:https://fb.com/groups/isbonny
------
- 邦尼找重點:
0:00 邦尼幫你 開場
00:34 外盒包裝
00:54 外觀設計 & 實機顏色
01:52 iPhone 13 系列配件實測
03:00 120Hz 螢幕實測 & 對比
05:23 iPhone 13 系列 & iPhone 13 Pro 系列螢幕顯示差異對比
05:56 綠螢幕實測 / 螢幕黑化改變
06:24 螢幕亮度實測
06:44 Face ID 實測 / 口罩能否解鎖
07:05 雙喇叭 / iPhone 13 & iPhone 13 Pro 喇叭實測
07:45 拍照實測對比 (iPhone 13 Pro & Galaxy S21 Ultra)
08:27 夜拍實測對比 (iPhone 13 Pro & Galaxy S21 Ultra)
09:03 A15 Bionic 效能實測 / 跑分數據結果 / 散熱溫度表現
10:55 iPhone 13 系列初步上手感想
12:10 選購建議 / 總結
邦尼幫你官網:https://www.isbonny.com
歡迎加入【邦尼】討論區:
【邦尼】專屬社團:https://www.fb.com/groups/isbonny/
【蘋果】專屬: https://www.fb.com/groups/isapple/
【三星】專屬: https://www.fb.com/groups/issamsung/
【Sony】 專屬: https://www.fb.com/groups/issony/
【Google】 專屬: https://www.fb.com/groups/isgoogle/
【小米】 專屬: https://www.fb.com/groups/isxiaomi/
【華碩 / ROG】 專屬: https://www.fb.com/groups/isasus/
【vivo】 專屬: https://www.fb.com/groups/isvivo/
【OPPO】 專屬: https://www.fb.com/groups/isoppo/
【realme】 專屬: https://www.fb.com/groups/isrealme/
【OnePlus】 專屬: https://www.fb.com/groups/isoneplus/
【HTC】專屬: https://www.facebook.com/groups/ishtc/
#邦尼評測:超深入 3C 科技使用體驗
#邦尼LOOK:3C 科技產品開箱快速動手玩
你訂閱了這麼多頻道,就是少了一個幫你評測幫你了解科技生活的科技頻道,立即訂閱「邦尼幫你」吧!
訂閱邦尼幫你:https://lnk.pics/isbonnyYT
邦尼社團:https://fb.com/groups/isbonny
邦尼幫你 FB:https://www.fb.me/isbonny
邦尼幫你 IG:https://www.instagram.com/isbonny/
邦尼 Telegram:https://t.me/isbonny
邦尼Line官方帳號:@isbonny(http://line.me/ti/p/%40isbonny )
邦尼信箱:service@iwaishin.com
(邦尼信箱:service@iwaishin.com)邦尼評測(產品合作):[email protected]
(邦尼評測(產品合作):me@iwaishin.com)快來找我們玩!!!!
本期卡司:
出演:iPhone 13 / 13 Pro 系列
主謀(製作人):邦尼
內容創造者:威信
影像創造者:驢子
麥聲人:歐登
內容夥伴:IWAISHIN 愛威信 3C 科技生活
特別感謝:DEVILCASE & 一個看影片的「你」
我們是邦尼幫你:
以「邦尼幫你」為出發點,秉持著「科技很簡單,新奇可以好好玩」的初衷,以更多實境使用場景及戲劇內容豐富以往艱澀難懂的科技資訊,回歸消費者角度思考產品價值,並以「幫你玩、幫你測、幫你試」等實測內容給予產品評價,此外更期許能夠成為「更貼近消費者觀點」的內容創作者及具有媒體影響力的科技內容創造團隊。
smart super 在 邦尼幫你 Youtube 的精選貼文
初步上手影片來啦!https://www.youtube.com/watch?v=o_oN3B4fC-k
蘋果 Apple iPhone 13 / iPhone 13 Pro / iPhone 13 mini / iPhone 13 Pro Max 發表會重點、懶人包總整理,不開箱不評測實測、評價、推薦、值不值得買。除了告訴你 iPhone 13 Pro 系列 外,蘋果也帶來了全新的評價 iPad , iPad mini 以及 Apple Watch Series 7 以及大家期待很久的 ProMotion 120Hz 螢幕。
#CASETiFY 專屬優惠(限時 85 折):http://s.isbonny.com/CASETiFY (需要透過此連結進入,才能套用優惠)
iPhone 13 Pro 支援全鏡頭夜間模式、Deep Fusion , Smart HDR 4,支援 5G , 採用 Ceramic Shield 超瓷晶盾。iPhone 13 Pro 採用三鏡頭相機 F1.5 1200 萬主鏡頭,支援 Sensor Shift 感光元件位移式穩定功能 、F1.8 120 度超廣角鏡頭、F2.8 3 倍光學變焦長焦鏡頭 支援 OIS,以及 LiDAR 。iPhone 13 Pro 也是首款支援電影級拍攝功能的 iPhone,可以在錄影後重新運算散景效果。支援 4K 60fps Dolby Vision HDR 錄影,擁有120 度超廣角相機,我們也將於後續帶來日拍、夜拍、錄影實測,iPhone 12 Pro / iPhone 12 Pro Max 分別搭載 6.1 / 6.7 吋 Super Retina XDR 螢幕,1200 尼特的峰值亮度,支援 ProMotion 120Hz 螢幕更新率,支援 Dolby Vision 杜比視界、 HDR10 顯示效果、DCI-P3 ,音效上搭載雙喇叭,效能上搭載 A15 Bionic ;盒裝不再隨附充電器及耳機,支援 MagSafe 磁吸無線充電 , Qi 無線充電 , 支援 5G , Wi-Fi 6 , Face ID , IP68 水下六公尺防水,請持續追蹤邦尼獲取第一手實際進行快充效能等超完整實機實際測評。
立即加入邦尼頻道會員計畫:https://www.youtube.com/c/isbonny/join
(#你的恐龍會隨著你的會員等級一起成長哦!)
邦尼社團:https://fb.com/groups/isbonny
------
- 邦尼找重點:
0:00 邦尼幫你 開場
00:17 13 Pro & 13 Pro Max 外觀設計 / 螢幕材質 / IP68
00:48 13 Pro & 13 Pro Max 感光元件 & 鏡頭規格升級
02:01 iPhone 13 系列配件 / 邦尼觀眾專屬優惠
03:11 13 Pro & 13 Pro Max 鏡頭規格 / 攝影風格
04:35 13 Pro & 13 Pro Max 錄影 / 電影模式
05:17 13 Pro & 13 Pro Max 螢幕規格 / 支援 ProMotion / 120Hz
06:39 13 Pro & 13 Pro Max 螢幕亮度 / FaceID
07:03 A15 Bionic / iPhone 13 & iPhone 13 Pro GPU 差異
07:30 支援 20W 有線充電 / 15W MagSafe / 7.5W Qi 無線充電
07:41 iPhone 13 & iPhone 13 mini 螢幕規格
08:16 iPhone 13 & iPhone 13 mini 相機規格 & 差異 / IP68
08:53 價格 & 顏色
09:43 iPad & iPad mini 規格特點 / 價格
10:27 Apple Watch Series 7 簡介
10:53 總結
邦尼幫你官網:https://www.isbonny.com
歡迎加入【邦尼】討論區:
【邦尼】專屬社團:https://www.fb.com/groups/isbonny/
【蘋果】專屬: https://www.fb.com/groups/isapple/
【三星】專屬: https://www.fb.com/groups/issamsung/
【Sony】 專屬: https://www.fb.com/groups/issony/
【Google】 專屬: https://www.fb.com/groups/isgoogle/
【小米】 專屬: https://www.fb.com/groups/isxiaomi/
【華碩 / ROG】 專屬: https://www.fb.com/groups/isasus/
【vivo】 專屬: https://www.fb.com/groups/isvivo/
【OPPO】 專屬: https://www.fb.com/groups/isoppo/
【realme】 專屬: https://www.fb.com/groups/isrealme/
【OnePlus】 專屬: https://www.fb.com/groups/isoneplus/
【HTC】專屬: https://www.facebook.com/groups/ishtc/
#邦尼評測:超深入 3C 科技使用體驗
#邦尼LOOK:3C 科技產品開箱快速動手玩
你訂閱了這麼多頻道,就是少了一個幫你評測幫你了解科技生活的科技頻道,立即訂閱「邦尼幫你」吧!
訂閱邦尼幫你:https://lnk.pics/isbonnyYT
邦尼社團:https://fb.com/groups/isbonny
邦尼幫你 FB:https://www.fb.me/isbonny
邦尼幫你 IG:https://www.instagram.com/isbonny/
邦尼 Telegram:https://t.me/isbonny
邦尼Line官方帳號:@isbonny(http://line.me/ti/p/%40isbonny )
邦尼信箱:service@iwaishin.com
邦尼評測(產品合作):me@iwaishin.com
快來找我們玩!!!!
本期卡司:
出演:iPhone 13 / 13 Pro 系列
主謀(製作人):邦尼
內容創造者:威信
影像創造者:驢子
麥聲人:歐登
內容夥伴:IWAISHIN 愛威信 3C 科技生活
特別感謝:CASETiFY & 一個看影片的「你」
我們是邦尼幫你:
以「邦尼幫你」為出發點,秉持著「科技很簡單,新奇可以好好玩」的初衷,以更多實境使用場景及戲劇內容豐富以往艱澀難懂的科技資訊,回歸消費者角度思考產品價值,並以「幫你玩、幫你測、幫你試」等實測內容給予產品評價,此外更期許能夠成為「更貼近消費者觀點」的內容創作者及具有媒體影響力的科技內容創造團隊。