📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有155部Youtube影片,追蹤數超過15萬的網紅ロイドごはん,也在其Youtube影片中提到,小倉で見つけたコスパ最高のラーメン店!福岡県北九州市小倉『ろくの家大黒』に伺いました。福岡といえば豚骨ラーメン、豚骨ラーメンには替え玉が付きものですが、今回はこれまでで最安値の10円で替え玉できるお店を見つけました!気になる中身は…⁈早速ご覧ください! *感染対策を徹底して撮影を行っています。 *...
「cost performance」的推薦目錄:
- 關於cost performance 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於cost performance 在 Facebook 的精選貼文
- 關於cost performance 在 Facebook 的最佳解答
- 關於cost performance 在 ロイドごはん Youtube 的最佳解答
- 關於cost performance 在 QuizKnock Youtube 的最佳解答
- 關於cost performance 在 脂身長男チャンネル Youtube 的最佳貼文
- 關於cost performance 在 EZ Talk - #EZTalk #不瞎掰流行語CP值高?真的有這種英文 ... 的評價
- 關於cost performance 在 2021 MIPS Quality and Cost Performance Categories Webinar 的評價
cost performance 在 Facebook 的精選貼文
【I think I’m good enough to get a promotion.】
連假後第一天工作日,來聊聊升遷小故事
升不上去到底哪裡出了錯?
以下為 Sonny 老師第一視角撰寫
Sonny老師的翻譯&教學札記
(故事經歷已經當事人同意後分享)
-
你知道英文寫作的好壞
可能影響你的職涯甚至人生嗎?
去年有位中階主管來找我求救
他在公司的績效很不錯
工作態度積極、待人客氣和善
但申請了很多次升遷或外派
都屢屢碰壁
他說高階主管全是英語人士
懷疑自己的溝通是不是出了問題
我聽完馬上就跟他說:
可以借我看看你寫的 e-mail 嗎?
不看則已,一看差點昏去(台語)
申請升遷的那篇 e-mail 破綻百出
而且 1️⃣ 第一句就有很大的問題:
I think I’m good enough to get a promotion.
除了信件沒有適當的開頭之外
怎麼會用這麼直接的語氣「要求」升遷呢?
於是我開始跟他講解正式信件
寫作時的原則和概念
請他盡量使用:
This letter is to request a promotion from my current role of ______ to the open role of ______. 這樣的句型和語氣
2️⃣ 第二個比較大的問題
是他雖然有良好的績效和表現
卻沒有具體、量化地描述出來
只寫了:
My excellent performance has increased sales since 2018.
於是我建議他改成:
During the past three years, I have boosted product sales by 12%, trained 15 junior employees, and saved departmental cost by 10%.
用「平行結構」(parallelism) 的方式
把自己成就的細節一一描述出來
3️⃣ 最後,他的信件用 Best 來結尾
稍嫌不夠正式
我建議他改成 Sincerely
向他講解完所有信件細節後
我請他下一封 promotion request 就這樣寫
然後祝他好運
就在上週
我收到了他的感謝信
說成功拿到了外派美國的高階職位
負責面試的主管還跟他說
他的 e-mail 寫得很不錯
這讓我覺得非常開心
果然不好的寫作就像一塊 #絆腳石
好的寫作卻像一塊 #敲門磚
可以幫你開啟無限的機會
-
Sonny 老師是台灣浩首席筆譯老師
7 年來,我一路看著老師
如何投入研發心力
打造台灣同學的優質英文寫作課程
老師最近和 Hahow 好學校
合作了「寫作學習計畫」
讓同學到 10/16 23:59 前
都能享 85 折優惠價格
真心大推給想學好英文寫作的你:
https://hahow.in/cr/sonny-eng-writing2
#email真的很重要
#聽說筆譯班的大家都被噹過一波🤫
#不斷注意細節是進步的關鍵
cost performance 在 Facebook 的最佳解答
[有關薪水高低,三個違反常識的事實]
最近有個年輕人來跟我談,他畢業兩年多,剛進公司一年,最近新冠疫情讓公司營運吃緊,聽說公司有裁員的打算,問我要不要開始找工作,我二話不說就是「要」。他看我這麼斬釘截鐵,反而不服氣,好像第一個要砍的是他,沒道理呀!在公司裡,他最基層,薪水最低,若是要動刀,照理說也應該是—
「領高薪的人!」
這是一般人的看法,總認為被辭退的都是高薪的人,因為最常聽說某某總經理走人了﹑某某總監被鬥垮了……比較少聽說哪個小職員被辭,顯然公司是先動高薪的人,高處不勝寒嘛,而且動他們,公司省最大,人事成本可以大幅降低。至於低薪的人反而安全,他們是做事的人,裁了也省不了錢。
事實是,所有的統計都顯示,新冠疫情期間,年紀越輕﹑薪水越低的人是海嘯第一排!跟我們的常理推斷恰恰相反,咦,難道老闆不想省錢嗎?這是典型的員工思維,以為老闆不論開公司或開店,目的是省錢。當然錯了,如果老闆想省錢,不開公司最大,何必創業?老闆開公司的目的是賺錢,不是省錢。因此動刀砍的自然不是高薪的人,而是—
💚讓老闆虧錢的人!
什麼人會讓老闆虧錢?先來看怎麼樣會虧錢,不就是買高賣低嗎?因此那些價格高於價值﹑「CP值」低的人才會被列入黑名單。你在買東西時,你雖然也考量價格,但是更在意「CP值」!結果是未必買最便宜的,反而有可能買最貴的。公司用人也是相同道理,不見得請最低薪的,也不見得留下最低薪的,他們用—
💚幫公司賺錢的人!
而請走的都是公司判定「CP值低的人」,並不是大家所想的高薪的人。那麼在新冠疫情期間,為什麼低薪的年輕人首常其衝,因為公司這時要請這種人:即戰力強,一人抵三人用;至於年輕人,還要訓練才能上手,就會被摒除在外。不過這時候公司也有可能砍掉一兩個高薪高階,圖的不是省錢,而是另有考量:
💚發揮殺雞儆猴之效!
「CP值」的C指的是cost成本,一般人會以為只是在說薪資;至於P指的是performance表現,亦即貢獻值,一般人會以為只是在說產值。但其實薪資並不是這麼一比一的,背後操縱的還有不少黑手。像是有些在公司任職很久的人,遇到問題,大家都喊他來幫忙,因為他最熟悉,卻是薪水通常不高,,因為—
這類庶務型的人才滿街都是,取代性高,換個年輕的訓練一陣子也行。
這在告訴我們一個敘薪的考量,取代性高的人,就算能力強﹑態度好,薪水要拉上去很難。最讓人心酸的還是這種人做越久越危險,容易被資遣,中年之後又求職不易,因為大家都想用年輕的﹑便宜的。這也是我想告訴大家的另一個反常識的事實,一般人以為高薪族群的職涯最危險,其實最危險的反而是—
💚低薪族群!
很多人都知道薪資走向M型化,中間薪資陷落,這個價格帶的人變少;如果再不思進取﹑或適度轉型,原本中間薪的人移動方向不是邁向高薪,而是落入低薪。所以每年政府公布薪資統計,你會看到平均薪資逐年提高,但是中位數跟它的比值越差越多,表示後段班50%的人薪水更落後,同時也顯示低薪人口日益增加。
對此,低薪的人在年輕時可能無感,因為還找得到工作,中年之後就超有感!公司越換越小﹑工作越換越差,然後正職變兼職﹑兼職變時薪﹑時薪變失業。這個向下流動的現象,早在統計數字上明白顯示。低薪的人不是當顏回安貧樂道就好,而是會出現美國社會學家羅伯特莫頓提出的「馬太效應」,也是聖經說的:
「凡有的,還要加給他,叫他有餘;沒有的,連他所有的也要奪過來。」
所以無論如何,一定要搶進高薪族群,因為高薪代表的意義不只是領更多錢而已,也是職涯安全的掛保證,它擁有以下三個好處,同時是違反一般人常識的三個事實:
💚事實1:高薪者的職涯才會安全
💚事實2:高薪者的薪水才會成長
💚事實3:高薪者對未來才有選擇
換句話說,低薪的人隨著年紀增加,日子會更加難過,高薪的人卻是越過越好。所以如果是低薪,千萬不要掉以輕心,以為薪水會隨著資歷而增加,不會的,薪水是看CP值來加,而不是資歷。年紀只跟高薪的人做朋友,不是低薪的人。
怎麼判斷自己是低薪或高薪?不妨上網查看104的薪資報告,但是要再嚴格一點,因為頂尖高薪者不在人力銀行求職。如果要抓個大概,我們以35歲做分水嶺,若是低於台灣平均薪資每月5萬元,請提高警覺;年薪高於100萬元,算是碰觸到高薪蛋白圈焦黑處;其他算是中間薪資。問題是月薪低於5萬元,在台灣逼近6成。
能不能命運翻盤?雖然網路上有不少人批評我說35歲如何如何,但是我仍然要說,根據統計數字,最好抓緊35歲這個年齡,翻身到高薪族群。35歲之後不是不可為,而是挑戰性變高。重要的是有什麼方法?有!我提出三個解方:
💚第一個解方,聰明一點,選擇產值大且成長性的產業
💚第二個解方,努力一點,從後段班企業跳到前段班企業
💚第三個解方,堅持一點,讓職涯不長期中斷,持續發展
講這麼多,最主要是給你集氣,請相信這三件事:
💚1.相信:高薪比低薪對你好
💚2.相信:領高薪不是天注定
💚3.相信:你有辦法領到高薪
至於網路鄉民說:「薪水低不重要,人生過得好才重要。」我只想說,最好都活長一點,就知道人生過得好要不要花錢。
讀了本文受益,請留言+1。
***
歡迎大家加入我的fb社團:「洪雪珍寫作變現」,有三個好處:
1、你投稿,我點評
2、你會看到「從不會寫作到會寫作」的成功案例
3、我會教你寫作招術
至於想要詢問我的課程,包括求職、轉職、加薪、高薪,以及斜槓、寫作,⋯⋯都歡迎加入我的Line@ ID:@ca141719,助教協助你。
圖:Pexels
攝影:Christina Morillo
cost performance 在 ロイドごはん Youtube 的最佳解答
小倉で見つけたコスパ最高のラーメン店!福岡県北九州市小倉『ろくの家大黒』に伺いました。福岡といえば豚骨ラーメン、豚骨ラーメンには替え玉が付きものですが、今回はこれまでで最安値の10円で替え玉できるお店を見つけました!気になる中身は…⁈早速ご覧ください!
*感染対策を徹底して撮影を行っています。
*撮影に際しては、お店の方や周りのお客様に充分配慮して撮影をおこなっています。
The best cost performance ramen shop I found in Kokura! We visited "Roku no Ie Daikoku" in Kokura, Kitakyushu City, Fukuoka Prefecture. Speaking of Fukuoka, tonkotsu ramen and tonkotsu ramen come with tonkotsu ramen, but this time I found a shop where you can get tonkotsu ramen at the lowest price of 10 yen! What you are interested in ...⁈ Please have a look!
* We take thorough measures against infection.
* When shooting, we take the shop and the customers around us into consideration.
いつもありがとうございます!( ´ ▽ ` )
高評価&チャンネル登録もよろしくお願いいたします!
#ラーメン #北九州 #豚骨ラーメン #替え玉 #ロイドごはん #大食い
—————《サブチャンネルもよろしくお願いします!》—————————————
【メロンシートジャーニー】
https://www.youtube.com/channel/UCwNlBAUziFWkJZFY_u3t65A
【フラメンコロイド】
https://www.youtube.com/channel/UCsFJHNg3SR41R2a3vctUInw
—————《instagram》———————————————————-
★ロイドごはん
「フォロワー1万人に向けて“あや”が毎日投稿🔥」
https://www.instagram.com/roidgohan
★メロンシート
https://www.instagram.com/satoshimelo...
🍀 「ロイドごはん」公式LINEにて
タイムラインオリジナル動画を投稿中!
お友だち追加はこちら
https://lin.ee/ow4OdaV
—————《本日の店舗情報》—————————————————
『ろくの家 大黒』
https://tabelog.com/fukuoka/A4004/A400401/40006652/
—————《ロイドごはんオススメの動画! ROIDGOHANs’ Recommended video》———————————
78才おじいちゃん屋台ラーメンの朝『幸っちゃん』夜明けの銀座【飯テロ】Old Style Ramen Stall Yatai Japanese Street Food
https://youtu.be/YHiWYvhxUI4
【家系ラーメン特集!】
https://www.youtube.com/playlist?list=PL6yW17uB9uIVUmOS8qnXrRwcBu8W-uRYZ
神回【ラーメン二郎の貴重映像】全増しが出来るまで一部始終を大公開!【ラーメン二郎 ひばりヶ丘店】ramen
https://youtu.be/mBFcdMHyaxA
—————《オリジナルサイトの情報》—————————————————
★ロイドwalker《人生をドラマチックに彩る旅とグルメと温泉図鑑》
https://ramenjapan.net/
★メロンシート《フラメンコギターの世界一の旅》
https://pordiotama3.xsrv.jp
★フラメンコロイド 《フラメンコロイドの神話と伝説》
https://flamenkoroid.net
—————《twitter》—————————————————————
★ロイドごはん
https://twitter.com/roidgohan
★メロンシート
https://twitter.com/meloncito310
————《関連動画》—————————————————————
【大食いチャレンジ】一蘭で替え玉限界まで食べたら何杯になるのか?
https://youtu.be/xBft9CayOZ0
大食い対決【MAX鈴木】家系ラーメン替玉30分間の死闘【60玉超え】
https://youtu.be/4kCoHnKfGDw
cost performance 在 QuizKnock Youtube 的最佳解答
その合体はさすがにルール違反!?
アウト寸前の合体漢字に挑戦!
今日の一問の答えはこちら↓
記事タイトル:「豆腐皮」の読み方は?漢字→読み仮名で字数が減るぞ!【難読漢字】
https://quizknock.com/kanji-cost-performance
ーーーーーーーーーーーーーーーーーーーー
◆新チャンネル「QuizKnockと学ぼう」はこちら!
https://www.youtube.com/channel/UCuG5vlhQYE5VE-pTTxINi3g
チャンネル登録よろしくお願いします。
◆ゲーム実況チャンネル「GameKnack」(ゲームナック)はこちら!
https://www.youtube.com/channel/UCqfyBJL2SvZ_QqqrpCjcwSA
チャンネル登録よろしくお願いします。
◆QuizKnockサブチャンネル
https://www.youtube.com/channel/UCdvci38aZHC_5qKPyL8BPcA
未公開シーン、質問コーナー、会議のこぼれ話など、ゆるーくやっていきます。
◆Twitter
伊沢拓司@tax_i_ (https://twitter.com/tax_i_)
河村拓哉@kawamura_domo (https://twitter.com/kawamura_domo)
須貝駿貴@Sugai_Shunki (https://twitter.com/Sugai_Shunki)
こうちゃん@Miracle_Fusion (https://twitter.com/Miracle_Fusion)
山本祥彰@quiz_yamamoto (https://twitter.com/quiz_yamamoto)
ふくらP @fukura_p (https://twitter.com/fukura_p)
乾@QK_inui(https://twitter.com/QK_inui)
山上@yamagamiQuiz (https://twitter.com/yamagamiQuiz)
クイズノック@QuizKnock (https://twitter.com/QuizKnock)
◆QuizKnock LINE公式アカウントの「友だち追加」はこちらから↓
https://lin.ee/o7VTBRo
◆お問い合わせはこちら
https://quizknock.com/contact
◆提供
Powered by QuizKnock (https://quizknock.com)
◆素材提供
OtoLogic様→https://otologic.jp
ポケットサウンド様→https://pocket-se.info/
魔王魂様→https://maoudamashii.jokersounds.com/
フリーBGM・音楽素材 MusMus様→http://musmus.main.jp/
PIXTA様→https://pixta.jp/
cost performance 在 脂身長男チャンネル Youtube 的最佳貼文
ご視聴ありがとうございます!^^
#かき氷#美味しい#コスパ最高
【Instagram】【Twitter】やってます!
良かったらフォローして下さいね^^
美味しいものは→【Instagram】whiskey_soda777
脂身長男へのご依頼✉は→【Twitter】@aburami_chounan
チャンネル登録、是非よろしくお願い致します^^
↓ ↓ ↓ ↓ ↓
http://urx.red/YlKI
【他チャンネル関連動画】
【ぼっち】絶品かき氷食べてきた【松井玲奈】
https://www.youtube.com/watch?v=o4Lc1JHF5tY
【夏休み企画スタート!!】第1弾は大人気の『かき氷』を食べました!♡
https://www.youtube.com/watch?v=cyuhHTGpH7U
上白石萌音と、東京のかき氷【MEN'S NON-NO8・9月合併号スペシャルムービー】
https://www.youtube.com/watch?v=0oSA8YrmIj0
【千葉】新感覚な糸状のかき氷!
https://www.youtube.com/watch?v=6B_Fiyqwbpg
ソフトクリームの作り方【混ぜるだけで作れる!超簡単レシピ】
https://www.youtube.com/watch?v=WBQq-wmhLX8
cost performance 在 EZ Talk - #EZTalk #不瞎掰流行語CP值高?真的有這種英文 ... 的推薦與評價
✍CP值高≠ high cost performance ratio = good value = bang for the buck Amy: Wow! You got a long shopping list for the... ... <看更多>