📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有5部Youtube影片,追蹤數超過24萬的網紅Gavinchiu趙氏讀書生活,也在其Youtube影片中提到,趙氏曾任教於美國Bryant University 、北京理工大學珠海學院、深圳大學、香港樹仁大學、臺灣中央研究院近史所等多間學府,歷任助理教授、副教授、研究員、客座教授、高級訪問學者; 2018年獲中國經濟思想史優秀(一等)著作獎,研究題目包括經濟思想、經濟史、政治經濟學,出版著作二十一部,論文...
專欄新文 在 去倫敦上插畫課 Facebook 的最佳貼文
專欄新文章小前言
在跟人進行議題交流時,常會遇到跟自己見解不同的人,其實我還蠻享受這種想法碰撞的過程,與不同閱歷的人交流,宛如透過他的視窗引導,讓我看到世界的另一個面貌,使我的眼界更開闊,更提升了自我反思的能力,明確或修正自己的觀點。
但是偶爾會遇上愛擺譜,發表見解時總不忘一再強調自己高人一等的學經閱歷或人脈,自我拉抬自己的見解份量者,甚至會以高姿態言語,直斷式糾正或否定其他人的見解。當下的我會覺得生氣,卻不想做模糊議題與之爭論,因為那不是我的性格,也不是加入交流的初衷,更可能我還沒有膽量做這樣的事,也還不具備判斷這樣做好或不好的智慧。沉澱下來想想,這其實也是一股激活自我反思的能量!也提供了我,促成寫這篇主題的動機!
https://www.marieclaire.com.tw/community/opinion/60236?atcr=d8037
專欄新文 在 幣圖誌Bituzi Facebook 的最佳貼文
【畢德歐夫】上週的道瓊難得出現比較多的跌點,
單週下跌761點,約2.15%,也讓指數跌破季線,
不過QQQ與SPY都還算穩定,指標股之一的蘋果(代號:AAPL),
在上周五美國法院的判決下,可能會暫時失去一些服務收入,
因為法官表示蘋果不得限制APP開發商,
引導用戶透過第三方支付平台消費,
此舉可能讓蘋果App Store的抽成制度成為過去式。
週一美股專欄新文章:
《道瓊難得單週出現明顯下挫,科技股依舊強勢,唯蘋果出現大量轉折?
法院的判決結果真能影響後續服務收入?長期空手者不應該問是否會繼續跌,
應該要擔心更重要的事》
https://www.bituzi.com/2021/09/blog-post.html
祝大家工作都順心,美好的一週。
專欄新文 在 Gavinchiu趙氏讀書生活 Youtube 的精選貼文
趙氏曾任教於美國Bryant University 、北京理工大學珠海學院、深圳大學、香港樹仁大學、臺灣中央研究院近史所等多間學府,歷任助理教授、副教授、研究員、客座教授、高級訪問學者;
2018年獲中國經濟思想史優秀(一等)著作獎,研究題目包括經濟思想、經濟史、政治經濟學,出版著作二十一部,論文三十餘篇。英國權威出版社 Routledge給予 "中國和西方頂尖學者(leading Chinese and Western scholar)" 的評價。
《趙氏讀書生活》,一個歷史學者的視頻,分享學術、社會、政治經濟觀察
收費平台可獲參考資料和專欄分享,請以每月5元或更多的美元支持:https://www.patreon.com/Chiusreading
或於YOUTUBE 上按加入成為會員,可獲影片的參考資料
https://www.youtube.com/channel/UCmi1257Mo7v4ors9-ekOq1w/join
https://www.facebook.com/drgavinchiu/
PayPal.me/chiusreading
工作洽談:higavinchiu@gmail.com
#彭斯川普
#拜登
#美國總統
專欄新文 在 親子天下 Youtube 的最佳貼文
最有梗的物理先修課,符合素養導向學習的最佳理科課外讀物!
趣味科學史故事X物理知識X影片演繹
讓偉大科學家帶你一次看懂物理原理的重要性、掌握物理關鍵概念!
《科學史上最有梗的20堂物理課》由長期致力解決於臺灣教育落差問題的「LIS科學教材研發團隊」與知名兒童科普作家胡妙芬聯手創作,藉由書中角色「LIS」老師及嚴八、魯芙兩位學生的討論與互動,帶領孩子一同回溯漫長的科學史發展脈絡,介紹20個物理關鍵理論的緣起、演進與論證,同時也一併認識眾多科學家的人物故事與研究歷程,並補充課本中沒有說的那些與現代息息相關的觀念。
◎本系列五大特色
特色1 LIS科學教材研發團隊X知名兒童科普作家胡妙芬的超強組合
特色2 結合科學史、科學理論演進、科學家人物傳記的創新文本
特色3 套書搭配可延伸收看的40部線上影片,快速掃除學習痛點
特色4 好讀好懂的「快問快答」專欄,解答生活中物理相關的疑難雜症
特色5 內附十二年國教自然領域課綱對應表,學習無縫接軌
【各大通路販售中】
博客來:https://www.books.com.tw/products/0010867976?sloc=main
親子天下Shopping:https://shopping.parenting.com.tw/product/10517199
金石堂:https://www.kingstone.com.tw/basic/2013300051885
讀冊:https://www.taaze.tw/goods/11100916310.html
誠品:http://www.eslite.com/product.aspx?pgid=1003276712867849
【同場加映:科學史上最有梗的20堂化學課】
博客來:https://www.books.com.tw/products/0010814442
親子天下:https://shopping.parenting.com.tw/product/4584777
誠品:http://www.eslite.com/product.aspx?pgid=1003276712745579
金石堂:https://www.kingstone.com.tw/basics/basics.asp?kmcode=2015233121369
讀冊:https://www.taaze.tw/goods/11100869978.html
更多LIS精彩影片,可點閱Youtube 頻道訂閱連結:https://bit.ly/2E1SF0J
影片企劃|陳雅婷、LIS 情境科學教材
影片製作|LIS 情境科學教材
📍立刻訂閱親子天下YouTube頻道:https://cplink.co/aokHX5fY
...................................................................
✔ 親子天下官網:https://cplink.co/103epuyo
✔ 親子天下粉專:http://on.fb.me/1Kkng6j
✔ 親子天下Shopping:https://cplink.co/2z71hMR2
✔ 親子天下Shopping 粉專:http://on.fb.me/2dpFvHK
專欄新文 在 親子天下 Youtube 的最佳貼文
新學期開始,「科學史研究社」來了一位浪漫捲髮名叫LIS的科青老師,據說擅長用故事講解科學,還自行配備KUSO搞笑影片。好奇心超強的魯芙拉了同學嚴八一起加入。
究竟LIS老師會準備哪些有趣的科學故事和影片,燃起嚴八和魯芙的學習熱情,讓他們從此愛上化學呢?
● 關於《科學史上最有梗的20堂化學課》
知名科學教材研發團隊LIS首度跨入童書領域的代表作,第一套扣中小學自然課綱。
結合科學史、科學理論與科學家人物故事的創新文本,並搭配40部線上影片可延伸收看,是國小中高年級與國中生學習化學時的最佳課外讀物。
【本書超強特色】
特色1 LIS科學教材研發團隊X知名兒童科普作家胡妙芬的超強組合
特色2 結合科學史、科學理論演進、科學家人物傳記的創新文本
特色3 套書搭配可延伸收看的40部線上影片,快速掃除學習痛點
特色4 好讀好懂的「快問快答」專欄,解答生活化學的疑難雜症
特色5 內附十二年國教自然領域課綱對應表,學習無縫接軌
博客來:https://www.books.com.tw/products/0010814442
親子天下:https://shopping.parenting.com.tw/product/4584777
誠品:http://www.eslite.com/product.aspx?pgid=1003276712745579
金石堂:https://www.kingstone.com.tw/basics/basics.asp?kmcode=2015233121369
讀冊:https://www.taaze.tw/goods/11100869978.html
【有梗推薦】
怪奇事物所所長∣知識網紅、年度百大暢銷作家
林文偉∣國立臺灣師範大學化學系主任
周芳妃∣臺北市立第一女子高級中學化學科老師
洪振方∣國立高雄師範大學教育暨環境教育研究所所長
陳竹亭∣國立臺灣大學化學系名譽教授、遠哲科學教育基金會董事長
陳昭錦∣國立臺灣師範大學附屬高級中學化學科教師
啾啾鞋∣冷知識化學人 Youtuber
【推薦摘錄】
_ 國立高雄師範大學教育暨環境教育研究所所長 洪振方
「LIS團隊從化學史出發,用故事呈現化學家的想法,不僅能將教材活潑化,提高學生學習興趣,也能使學生經歷化學家面對問題時的思考或實驗探究的歷程,有助於學生領悟解決問題的方法、瞭解化學家創造的過程、理解化學知識的內涵,並協助學生更瞭解化學的本質。」
影片製作:周映璇
...................................................................
親子天下官網 http://www.parenting.com.tw
親子天下Shopping http://Shopping.parenting.com.tw
親子天下「嚴選部落客」 http://best.parenting.com.tw
親子天下「翻轉教育」http://flipedu.parenting.com.tw
粉絲頁:
親子天下 http://on.fb.me/1Kkng6j
親子天下Baby http://on.fb.me/1KQQAkP
親子天下悅讀 http://on.fb.me/1Sryt7P
親子天下育兒好物 http://on.fb.me/2dpFvHK
翻轉教育 http://on.fb.me/1QgVd3O
嚴選部落客 http://on.fb.me/1R3XbYD
專欄新文 在 網劇「我的中國芯」想幫習近平圓造芯夢卻在開播前臨時喊卡彭 ... 的推薦與評價
網劇「我的中國芯」想幫習近平圓造芯夢卻在開播前臨時喊卡彭博 專欄 披露中企也迎合向銀行貸款大買設備打造幽靈工廠幫習墊高GDP|鏡轉全球#鏡 新聞. ... <看更多>