Solidity

ICO 功能和限制

  • September 24, 2018

我試圖理解的一件事是智能合約的局限性。我正在研究 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();
}

引用自:https://ethereum.stackexchange.com/questions/59308