📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有97部Youtube影片,追蹤數超過1萬的網紅LIVIGRACE. CO,也在其Youtube影片中提到,新聞來源: https://www.theverge.com/2021/5/30/22460946/instagram-making-changes-algorithm-censoring-pro-palestinian-content https://www.bbc.com/news/techno...
「algorithm教學」的推薦目錄:
algorithm教學 在 資策會創新學習中心 Facebook 的最佳貼文
讓世界看見臺灣🇹🇼,我們不再是隱形冠軍🏆 #78家智慧學習業者報名參加,🫂近百名業界先進專家同時在線觀看👀【2021 METAEDU MEETUP 第一季產業交流會】圓滿成功🎉
🏫在教育的議題上,我們從不停下腳步👣,時刻超前佈局,為突如其然的衝擊,迅速提出解方💊,透過教育現場線上線下融合、數位行銷策略、參與國際競賽以及與全球最大科研調查機構Holon IQ合作等方式,繼續大步向前邁進🏃♀️🏃
【第一季產業交流會】重點摘要筆記📝
⭕️加入『METAEDU』教育科技產業整合平台:✅建立台灣學習產業的品牌形象✅連結國際教育科技組織✅擴展數位媒體通路✅整合產業資訊✅表揚優良企業與產品
⭕️整合教室學習與線上學習優勢,搭配數位科技發展『OMO虛實融合』,將為教育市場帶來新契機
⭕️將新興科技融合教學,提升學習成效:💫XR→真實訓練情境加深學習印象💫xAPI→完整記錄、追蹤與分析學習過程💫Big Data&Algorithm→推薦適性化課程💫MOOC→學習者輟學率預測
⭕️參與國際競賽獲獎鏈結全球,擴大行銷露出
簡報下載連結:https://reurl.cc/Q7b7kp
精彩回放不錯過 筆記記起來🎬各場次上映時間與特別感謝單位:
2/5(五)競賽動態:國際競賽活動資訊分享
2/9(二)政策趨勢:放眼2021國際教育市場
🧨新年假期 新的一年智慧學習產業團隊繼續為大家哞~福利🧧
2/17(三)躍升全球:國際教育智庫HolonIQ大數據蒐集
2/19(五)專題演講:NEXT主戰場『OMO』模式
#力宇教育事業股份有限公司
2/22(一)技術分享:教育資料模式識別技術
2/24(三)專家論壇:線上學習平台的下一步
Hi家教 在家學外語、 樂學網、 南一‧幸福升學!
2/26(五)國際連線:智慧教育市場商機情報
UNIVERSITAS TRISAKTI、#AdvantechCorporation (Thailand)、National Economics University、De La Salle University-Dasmariñas, Cavite's Premier University 、Sabah Chinese High School 巴華中學
algorithm教學 在 資策會創新學習中心 Facebook 的最讚貼文
#雙倍能量一次到位 由2位博士帶大家一同掌握 #關鍵趨勢 與 #技術核心 🌍#METAEDUMEETUP第一季產業交流會 #0203 14:00線上見👓
根據UNESCO聯合國教科文組織最新數據顯示,新冠疫情使全球15億學生受到影響、超過8億學生👬面臨教育中斷⏸️ 這只強烈透露一件事☝️全球教育市場的版圖與商業模式👉不得不變!
〖政策趨勢〗放眼2021國際教育市場
❍#資策會數位教育研究所 創新學習中心 莊芳甄主任 帶您從 #國際 #技術 #創新 3個構面,為2021國際教育市場的三角習題🔼提出解方!
〖技術分享〗教育資料模式識別技術
❍#資策會數位教育研究所 教育科技研發中心 游函諺副主任 則要帶領想像未來教育現場的樣態。AI來襲,🖥電腦不再只會選土豆,💫XR、💫xAPI、💫Big Data&Algorithm等,科技融入後教學後,線上整合線下的學習都要更適性,幫助學生學習成效🆙🆙
📅活動時間:110年2月3日 (三) 14:00-16:40
🎦火速報名👉https://ievents.iii.org.tw/EventS.aspx?t=0&id=1169
您將收到主辦單位上線連結信件;或請自行關注 經濟部工業局與 資策會創新學習中心的消息
🌟 主辦單位保留活動議程與名單最終修改權利 🌟
algorithm教學 在 LIVIGRACE. CO Youtube 的精選貼文
新聞來源:
https://www.theverge.com/2021/5/30/22460946/instagram-making-changes-algorithm-censoring-pro-palestinian-content
https://www.bbc.com/news/technology-57306800
數據來源:
https://www.businessofapps.com/data/instagram-statistics/
? 免費資源
//【 !!必看!! 60分鐘限時免費教學: IG快速增粉→6位數字收入】 https://masterclass.livigrace.online/
//【免費下載:INSTAGRAM創業-新手必讀手冊】 https://livigrace.online/free/
// 更多IG漲粉+創業的影片,拉到下面
================================
?跟我做朋友
// Instagram找我: IG創業 @livigrace.co 吃學玩樂@livigrace.online 學院@livigrace.academy
// 面書群組,互相支持 http://bit.ly/thebosssquadhk
// 了解更多 https://livigrace.online/
// 合作聯繫 support@livigrace.co
================================
?重點影片
//5 個步驟:創業新手如何利用Instagram推廣生意, 增加客人,提升收入
https://youtu.be/G0DwSHOC5TA
// 我的創業故事 (朝9晚6小資女必看)
https://youtu.be/s1YYlpeN7iQ
//如何IG天然增粉2倍- (真人粉絲,賺真錢!)
https://youtu.be/84MszvXeY5s
//1天內製作30天高質IG帖文(天天發帖文,不再擔心沒靈感了!)
https://youtu.be/MUkMH39MAjA
// Instagram Tips 增加客流量+暴光 實用5招
https://youtu.be/lKuTTeI43Sw
// Niche 如何設定 "明確"目標客群
https://youtu.be/gIuV_WV5zog
// IG愈多followers =愈多生意?(想用 IG 賺錢的人注意)
https://youtu.be/pT6x2cxr6Es
// IG followers又升又跌點算好?如個破解?
https://youtu.be/CQg3MOFzupQ
================================
?自覺好用,誠心推薦
// 我上過覺得好用的課程 https://livigrace.online/tools/
// Canva - 最愛的造圖工具(Youtube thumbnail, IG帖文限動都可)
用此連結有額外積分喔➡ https://livigrace.online/tools/
// Tubebuddy - 經營YouTube好幫手
https://livigrace.online/tools/
//【 SPARKSINE 精選閱讀APP】- 發帖文沒靈感?別再"參考"別人的IG了!
高質有價值的IG帖文好幫手
https://livigrace.online/tools/
➡ 以節扣碼「LIVIGRACE」年費訂閱即減HKD30
---
免責聲明:以上部分工具已參與聯盟營銷計劃。
當閣下購買時LIVIGRACE.CO將會因此賺取佣金。
================================
#instagramtips2021 #ig漲粉 #創業 #投資理財 #副業 #朝9晚6 #增加收入 #businesscoaching #instagram創業 #instagram创业 #instagram涨粉
algorithm教學 在 LIVIGRACE. CO Youtube 的最佳解答
? 免費資源
//【 !!必看!! 60分鐘限時免費教學: IG快速增粉→6位數字收入】 https://masterclass.livigrace.online/
//【免費下載:INSTAGRAM創業-新手必讀手冊】 https://livigrace.online/free/
// 更多IG漲粉+創業的影片,拉到下面
================================
?跟我做朋友
// Instagram找我: IG創業 @livigrace.co 吃學玩樂@livigrace.online 學院@livigrace.academy
// 面書群組,互相支持 http://bit.ly/thebosssquadhk
// 了解更多 https://livigrace.online/
// 合作聯繫 support@livigrace.co
================================
?重點影片
//5 個步驟:創業新手如何利用Instagram推廣生意, 增加客人,提升收入
https://youtu.be/G0DwSHOC5TA
// 我的創業故事 (朝9晚6小資女必看)
https://youtu.be/s1YYlpeN7iQ
//如何IG天然增粉2倍- (真人粉絲,賺真錢!)
https://youtu.be/84MszvXeY5s
//1天內製作30天高質IG帖文(天天發帖文,不再擔心沒靈感了!)
https://youtu.be/MUkMH39MAjA
// Instagram Tips 增加客流量+暴光 實用5招
https://youtu.be/lKuTTeI43Sw
// Niche 如何設定 "明確"目標客群
https://youtu.be/gIuV_WV5zog
// IG愈多followers =愈多生意?(想用 IG 賺錢的人注意)
https://youtu.be/pT6x2cxr6Es
// IG followers又升又跌點算好?如個破解?
https://youtu.be/CQg3MOFzupQ
================================
?自覺好用,誠心推薦
// 我上過覺得好用的課程 https://livigrace.online/tools/
// Canva - 最愛的造圖工具(Youtube thumbnail, IG帖文限動都可)
用此連結有額外積分喔➡ https://livigrace.online/tools/
// Tubebuddy - 經營YouTube好幫手
https://livigrace.online/tools/
//【 SPARKSINE 精選閱讀APP】- 發帖文沒靈感?別再"參考"別人的IG了!
高質有價值的IG帖文好幫手
https://livigrace.online/tools/
➡ 以節扣碼「LIVIGRACE」年費訂閱即減HKD30
---
免責聲明:以上部分工具已參與聯盟營銷計劃。
當閣下購買時LIVIGRACE.CO將會因此賺取佣金。
================================
#instagramtips2021 #ig漲粉 #創業 #投資理財 #副業 #朝9晚6 #增加收入 #businesscoaching #onlinebusiness #digitalnomad #銷售 #onlinecourse #businessowner
https://youtu.be/NyPTL3lczFI
algorithm教學 在 LIVIGRACE. CO Youtube 的最讚貼文
? 免費資源
//【 !!必看!! 60分鐘限時免費教學: IG快速增粉→6位數字收入】 https://masterclass.livigrace.online/
//【免費下載:INSTAGRAM創業-新手必讀手冊】 https://livigrace.online/free/
// 更多IG漲粉+創業的影片,拉到下面
================================
?跟我做朋友
// Instagram找我: IG創業 @livigrace.co 吃學玩樂@livigrace.online 學院@livigrace.academy
// 面書群組,互相支持 http://bit.ly/thebosssquadhk
// 了解更多 https://livigrace.online/
// 合作聯繫 support@livigrace.co
================================
?重點影片
//5 個步驟:創業新手如何利用Instagram推廣生意, 增加客人,提升收入
https://youtu.be/G0DwSHOC5TA
// 我的創業故事 (朝9晚6小資女必看)
https://youtu.be/s1YYlpeN7iQ
//如何IG天然增粉2倍- (真人粉絲,賺真錢!)
https://youtu.be/84MszvXeY5s
//1天內製作30天高質IG帖文(天天發帖文,不再擔心沒靈感了!)
https://youtu.be/MUkMH39MAjA
// Instagram Tips 增加客流量+暴光 實用5招
https://youtu.be/lKuTTeI43Sw
// Niche 如何設定 "明確"目標客群
https://youtu.be/gIuV_WV5zog
// IG愈多followers =愈多生意?(想用 IG 賺錢的人注意)
https://youtu.be/pT6x2cxr6Es
// IG followers又升又跌點算好?如個破解?
https://youtu.be/CQg3MOFzupQ
================================
?自覺好用,誠心推薦
// 我上過覺得好用的課程 https://livigrace.online/tools/
// Canva - 最愛的造圖工具(Youtube thumbnail, IG帖文限動都可)
用此連結有額外積分喔➡ https://livigrace.online/tools/
// Tubebuddy - 經營YouTube好幫手
https://livigrace.online/tools/
//【 SPARKSINE 精選閱讀APP】- 發帖文沒靈感?別再"參考"別人的IG了!
高質有價值的IG帖文好幫手
https://livigrace.online/tools/
➡ 以節扣碼「LIVIGRACE」年費訂閱即減HKD30
---
免責聲明:以上部分工具已參與聯盟營銷計劃。
當閣下購買時LIVIGRACE.CO將會因此賺取佣金。
================================
#instagramtips2021 #ig漲粉 #創業 #投資理財 #副業 #朝9晚6 #增加收入 #businesscoaching #onlinebusiness #digitalnomad #銷售 #onlinecourse #businessowner
algorithm教學 在 演算法海牛 的必吃
關於演算法海牛 我們是由專業的程式競賽選手組成的團隊,致力於運算思維養成、中學生程式競賽(NPSC, TOI, 資訊學科能力競賽)及檢定培訓(APCS, CPE),以競程選手的 ... ... <看更多>