Solidity
我在哪裡可以在 Solidity 中獲得契約審查?需要多少費用?
基本上,我想部署一個彩票合約,預設情況下它應該非常精確和安全,因為所有餘額都將儲存在合約中,我還必須在那裡跟踪獲勝者的餘額。我已經閱讀了一些安全問題和競爭條件問題,但是從我的腦海中獲得一些評論會很好。
Open Zeppelin和Consensys為智能合約提供安全審查。
就彩票而言,您可能遇到的最基本問題是“找到”隨機性來選擇彩票中獎者。
要找到隨機性,有以下解決方案:
- 使用前一個塊的雜湊。此方法容易受到阻止預扣攻擊。這意味著 tx 的礦工在執行智能合約時會知道獲勝者。如果抽籤結果對他不利,他可能會選擇不添加已開采的區塊 $$ Source $$.
- 使用隨機智能合約,例如RandDao。還沒有真正使用過它,所以我不確定它提供了什麼安全保證。
- 使用 oracle 服務,例如oraclize。此解決方案在理論上可能是安全的,但您在設計中引入了受信任方。
- 從使用者那裡收集隨機性。這應該是Blum 在電話上擲硬幣的廣義版本。問題是這種方法是協議有兩個階段。各方承諾隨機數的送出階段和各方揭示其隨機性的揭示階段。要設計這樣的方案,您必須考慮各方可能選擇中止協議而不透露他們的送出。此外,該方案基於使用者提供具有足夠高熵的隨機性的能力(字元串 123456 的隨機性如何?)。
一般來說,鏈上隨機性是一個開放性問題。您可以查看 ethereum github 頁面,了解我的回答Ethereum research中未提及的其他解決方案。
PS我不隸屬於上述任何公司。PS希望我的回答有幫助。