Solidity
ICO 功能和限制
我試圖理解的一件事是智能合約的局限性。我正在研究 ICO,我總是問一個問題:
是否可以在不需要使用者呼叫函式的情況下實現“enterICO”函式?
我將嘗試用一個斷章取義的例子來解釋它:
pragma solidity ^0.4.17; contract ICO { string message; /// just assume we have a function which allows us to set a message function enterIco() payable public { if(msg.value == 0.00000001 ether) { return message; } } }
對於這種範例,我們可以假設在前端您將擁有一些 web3js,這將允許您在使用者端連接 MetaMask 並在使用者點擊按鈕時呼叫 enterIco 函式。
當使用者無權訪問按鈕時,我們可以讓這個功能自動執行嗎?例如,使用者在不點擊按鈕的情況下,將乙太坊從自己的錢包發送到合約地址,並自動執行功能。
這個例子可以參考 ICO。使用者可以使用他們的錢包和智能合約地址參與 ICO 嗎?
PS 我知道 ICO 不應該以這種方式實施,因為它們需要 KYC,但是我很想知道它們是否可以或者是否可靠限制了這種行為。
是的,您可以通過備份功能做到這一點。
如果使用空輸入數據呼叫合約,或者使用與合約上的任何函式都不匹配的函式簽名,則會執行回退函式。然後,您可以在該函式中呼叫您想要的任何其他函式,例如:
function() public payable { enterICO(); }